Java기반 Back-End 개발자 & 정보처리산업기사 과정 강의 12일차 정리

클래스

클래스 실습

예시 1. 아래와 같은 요구사항을 가진 은행 프로그램을 만들어보자.

  1. 계좌생성, 입금, 출금, 계좌이체, 잔액확인, 고객리스트, 종료 기능을 갖도록 하는데, 이 중 계좌생성, 입금, 잔액 확인, 고객 리스트, 종료 기능만을 먼저 구현한다.

  2. 계좌 정보로는, 고객 번호/고객 이름/고객 계좌번호/계좌 잔액을 갖는다.

  3. 계좌생성시, 고객 번호는 자동으로 부여한다. (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("종료되었습니다.");

좋은 웹페이지 즐겨찾기