Java기반 Back-End 개발자 & 정보처리산업기사 과정 강의 12일차 정리
클래스
클래스 실습
예시 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;
}
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("종료되었습니다.");
Author And Source
이 문제에 관하여(Java기반 Back-End 개발자 & 정보처리산업기사 과정 강의 12일차 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@crisine/Java기반-Back-End-개발자-정보처리산업기사-과정-강의-12일차-정리
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
계좌생성, 입금, 출금, 계좌이체, 잔액확인, 고객리스트, 종료 기능을 갖도록 하는데, 이 중 계좌생성, 입금, 잔액 확인, 고객 리스트, 종료 기능만을 먼저 구현한다.
계좌 정보로는, 고객 번호/고객 이름/고객 계좌번호/계좌 잔액을 갖는다.
계좌생성시, 고객 번호는 자동으로 부여한다. (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("종료되었습니다.");
Author And Source
이 문제에 관하여(Java기반 Back-End 개발자 & 정보처리산업기사 과정 강의 12일차 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@crisine/Java기반-Back-End-개발자-정보처리산업기사-과정-강의-12일차-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)