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.)