JavaベースのBack-END開発者と情報処理業界技術者コース12日目まとめ

33832 ワード

カテゴリ


授業実習


例1。次の要件を満たす銀行プログラムを作成します。

  • 계좌생성입금출금계좌이체잔액확인고객리스트・・종료계좌생성機能のみが最初に反映される.
  • 입금羅保有잔액 확인/고객 리스트/종료계좌 정보
  • 고객 번호市、고객 이름自動付与(0、1、2…最大99)
  • BankInfo(アカウントの基本情報クラス)
    private int	clientNum;		// 고객 번호 
    private String clientName;	// 고객 이름 
    private String accountNum;	// 고객 계좌번호
    private int	balance;		// 계좌 잔액
    	
    public int getClientNum() {
    	return clientNum;
    }
    	
    public void setClientNum(int clientNum) {
    	this.clientNum = clientNum;
    }
    	
    public String getClientName() {
    	return clientName;
    }
    	
    public void setClientName(String clientName) {
    	this.clientName = clientName;
    }
    	
    public String getAccountNum() {
    	return accountNum;
    }
    	
    public void setAccountNum(String accountNum) {
    	this.accountNum = accountNum;
    }
    	
    public int getBalance() {
    	return balance;
    }
    	
    public void setBalance(int balance) {
    	this.balance = balance;
    }
    Bank Manager(アカウントを管理するクラス)
    Scanner sc = new Scanner(System.in);
    	
    // 널널하게 BankInfo 객체 100개짜리 배열 선언 
    private BankInfo[] bankList = new BankInfo[100];
    	
    private BankInfo account;
    	
    // 고객 번호를 자동으로 지정해 줄 변수 
    private int count = 0;
    	
    // 메뉴 보여줄 메소드 
    public void showMenu() {
    	System.out.println("=========================================================================");
    	System.out.println("| 1. 계좌생성 | 2. 입금 | 3. 출금 | 4. 계좌이체 | 5. 잔액 | 6. 고객리스트 | 7. 종료 |");
    	System.out.println("=========================================================================");
    	System.out.print("메뉴 선택 : ");
    }
    	
    // 메뉴 숫자 입력받을 때 사용할 메소드 
    public int inputNum() {
    	int input = sc.nextInt();	
    	return input;
    }
    
    // 계좌 생성 메소드 
    public void createAccount() {		
    	// 현재 계좌를 최대한으로 담을 수 있는 배열 크기가 100이므로
    	if (count < 100) {
    		account = new BankInfo();
    			
    		System.out.print("이름 입력 : ");
    		String clientName = sc.next();
    		account.setClientName(clientName);
    			
    		System.out.print("계좌번호 입력 : ");
    		String accountNum = sc.next();
    		account.setAccountNum(accountNum);
    		
    		System.out.print("초기 잔고 입력 : ");
    		int balance = sc.nextInt();
    		account.setBalance(balance);
    			
    		// 고객 번호 부여 
    		account.setClientNum(count);
    			
    		// 고객 계좌정보 배열에 고객 정보 대입  
    		bankList[count] = account;
    			
    		// 고객 번호 1만큼 증가 
    		++count;
    			
    		System.out.println("계좌가 생성되었습니다.");
    	}
    }
    	
    // 고객 리스트 출력 메소드
    public void clientList() {
    		
    	// 고객 배열을 순환하며,
    	for (int i = 0; i < bankList.length; i++) {
    			
    		// 고객 배열의 요소 (고객 정보) 가 있다면 (!= null)
    		if (bankList[i] != null) {
    			System.out.print("고객 번호 : " + bankList[i].getClientNum());
    			System.out.print("| 고객 이름 : " + bankList[i].getClientName());
    			System.out.print("| 계좌 번호 : " + bankList[i].getAccountNum());
    			System.out.println("| 현재 잔액 : " + bankList[i].getBalance());
    		}
    	}
    }
    	
    // 잔액 조회 기능 메소드
    public void balanceCheck() {
    	System.out.println("잔액 확인 메뉴입니다.");
    	System.out.print("계좌번호 입력 : ");
    		
    	// 검색할 계좌번호를 받아온다 
    	String accountNum = sc.next();
    		
    	// 받아온 계좌번호를 인덱스 검색 기능 메소드에 넘기고 index를 받아온다.
    	int index = searchIndex(accountNum);
    		
    	// 만약 해당하는 계좌 번호가 존재한다면, 
    	if (index > -1) {
    			
    		// 해당하는 계좌의 잔액을 출력해준다. 
    		System.out.println("현재 잔액 : " + bankList[index].getBalance());
    		
    	// 찾는 계좌가 존재하지 않는다면, 
    	} else {
    			
    		// 계좌를 찾을 수 없다는 멘트를 출력. 
    		System.out.println("계좌를 찾을 수 없습니다.");
    	}
    }
    	
    // 인덱스 검색 기능 메소드 
    public int searchIndex(String accountNum) {
    		
    	// 계좌를 찾지 못했을 경우, 이 값 그대로 반환  
    	int index = -1;
    		
    	for (int i = 0; i < bankList.length; i++) {
    			
    		// 고객 정보가 존재한다면
    		if (bankList[i] != null) {
    				
    			// 매개 변수로 받은 계좌번호 (검색할 번호)가 존재한다면, (배열 내 고객정보 요소와 일치한다면)
    			if (accountNum.equals(bankList[i].getAccountNum())) {
    					
    				// 해당 요소의 위치를 index에 저장
    				index = i;
    				break;
    			}
    		}
    	}
    		
    	// index값 반환 
    	return index;
    }
    	
    // 입금 기능 메소드 
    public void deposit() {
    	System.out.println("입금 메뉴입니다.");
    	System.out.print("계좌번호 입력 : ");
    		
    	// 계좌번호를 받아오고 
    	String accountNum = sc.next();
    		
    	// 계좌번호가 있는지 검색 
    	int index = searchIndex(accountNum);
    		
    	// 해당하는 계좌정보가 존재한다면 
    	if (index > -1) {
    		System.out.print("입금할 금액 : ");
    			
    		// 입금할 금액을 입력받고, 해당 계좌의 현재 잔액을 불러온다.
    		int deposit = sc.nextInt();
    		int balance = bankList[index].getBalance();
    			
    		// 그리고 현재 잔액에 입금액을 더해준 다음,
    		int result = balance + deposit;
    			
    		// 해당하는 계좌에 합한 금액을 입금한다.
    		bankList[index].setBalance(result);
    			
    		// 입금 완료 메시지 출력
    		System.out.println("입금이 완료되었습니다.");
    		System.out.println("현재 잔액 : " + bankList[index].getBalance());
    		
    	// 계좌를 찾지 못한 경우 
    	} else {
    		System.out.println("계좌를 찾지 못했습니다.");
    	}
    }
    BankMain(実際に動作するMainクラス)
    BankManager bankMgr = new BankManager();
    boolean run = true;
    		
    while (run) {
    	bankMgr.showMenu();
    	int menuSel = bankMgr.inputNum();
    			
    	switch (menuSel) {
    	case 1:
    		// 계좌 생성
    		bankMgr.createAccount();
    		break;
    	case 2:
    		// 입금 기능 
    		bankMgr.deposit();
    		break;
    	case 3:
    				
    		break;
    	case 4:
    				
    		break;
    	case 5:
    		// 잔액 확인
    		bankMgr.balanceCheck();
    		break;
    	case 6:
    		// 고객 리스트 확인
    		bankMgr.clientList();
    		break;
    	case 7:
    		run = false;
    		break;
    		default:
    			System.out.println("잘못된 선택입니다.");
    	}
    }
    		
    System.out.println("종료되었습니다.");