계좌생성
, 입금
, 출금
, 계좌이체
, 잔액확인
, 고객리스트
, 종료
기능을 갖도록 하는데, 이 중 계좌생성
, 입금
, 잔액 확인
, 고객 리스트
, 종료
기능만을 먼저 구현한다.
계좌 정보
로는, 고객 번호
/고객 이름
/고객 계좌번호
/계좌 잔액
을 갖는다.
계좌생성
시, 고객 번호
는 자동으로 부여한다. (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; }
BankManager (계좌를 관리할 클래스)
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("종료되었습니다.");