티스토리 뷰
1. 은행은 계좌를 관리한다.
2. 은행은 계좌를 등록한다.
3. 은행은 계좌번호로 계좌를 찾을 수 있다.
4. 은행은 계좌의 소유자명으로 계좌를 찾을 수 있다.
5. 은행은 모든 계좌의 목록을 볼 수 있다.
6. 계좌는 소유자명, 계좌번호, 잔고로 구성된다.
7. 계좌는 입금,출금 기능과 잔고확인 기능이 있다.
8. 계좌에서 잔고의 변화가 있을 때마다 거래내역에 기록된다.
9. 거래내역은 거래일자, 거래시간, 계좌번호, 입금/출금여부, 거래금액, 은행명으로 구성된다.
기타 부수적인 변수와 메소드는 생략하였다.
다음은 실제 자바 코드이다.
BankUI.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class BankUI {
private static int numberOfAccount = 10;
private static Bank bank;
public static void main(String[] args) {
// TODO Auto-generated method stub
bank = new Bank("CBNU", numberOfAccount);
// 은행 이름 및 개설 가능한 계좌 수 초기화(생성자 이용)
while (true) {
showMenu();
if (selectMenu() == true)
break;// 종료 메시지가 반환되면 반복문 종료
}
}
private static void showMenu() {
System.out.println("\n=============MENU=============");
System.out.println("== 1. 새 계좌 개설 ==");
System.out.println("== 2. 계좌 찾기(고객명) ==");
System.out.println("== 3. 계좌 찾기(계좌번호) ==");
System.out.println("== 4. 계좌 목록 ==");
System.out.println("== 5. 나가기 ==");
System.out.println("==============================");
}
private static boolean selectMenu() {
Scanner scan = new Scanner(System.in);
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
try {
switch (in.readLine()) {
case "1":
// 새 계좌 개설
String temp;
System.out.println(" - 새로운 계좌를 개설합니다\n - 이름을 입력해");
temp = scan.next();
System.out.println(" - 계좌번호를 입력해");
bank.addAccount(temp, scan.next());
break;
case "2":
// 고객명으로 계좌 찾기
System.out.println("계좌를 찾습니다 - 고객명으로 조회해");
searchResult(bank.findAccountByName(scan.next()));
break;
case "3":
// 계좌번호로 계좌 찾기
System.out.println("계좌를 찾습니다 - 계좌번호으로 조회해");
searchResult(bank.findAccount(scan.next()));
break;
case "4":
// 계좌 목록
listUp(bank.getAccounts());
break;
case "5":
// 나가기
default:
System.out.println(" 종료합니다...");
return true;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
private static void listUp(Account[] ac) {
// TODO Auto-generated method stub
System.out
.println("======================ACCOUNT LIST======================");
System.out
.println(" No. Name AC no. Bal ");
for (int i = 0; i < bank.getTotalAccount(); i++) {
System.out.printf("%5d %11s %18s %16d\n", i + 1,
ac[i].getCustomerName(), ac[i].getAccountNum(),
ac[i].getBalance());
}
}
private static void searchResult(Account t) {
// TODO Auto-generated method stub
if (t != null) {
System.out
.println("==================Search Result====================");
System.out
.println(" Name AC no. Bal ");
System.out.printf("%9s %18s %16d", t.getCustomerName(),
t.getAccountNum(), t.getBalance());
System.out.println("\n");
transMenu(t);
} else
System.out.print("계좌가 없다.");
}
private static void transMenu(Account t) {
System.out.println("세부메뉴를 보겠나? (Y/N) : ");
Scanner scan = new Scanner(System.in);
String temp = scan.nextLine();
boolean iter = true;
if ("Y".equals(temp) || "y".equals(temp))
while (iter) {
System.out.println("\n=============MENU=============");
System.out.println("== 1. 입금 ==");
System.out.println("== 2. 출금 ==");
System.out.println("== 3. 잔액확인 ==");
System.out.println("== 4. 거래내역 ==");
System.out.println("== 5. 나가기 ==");
System.out.println("==============================");
switch (scan.next()) {
case "1":
System.out.print(t.getCustomerName() + " 고객님의 계좌 : "
+ t.getAccountNum() + "에 ");
System.out.println("입금시킬 금액을 입력해 : ");
t.deposit(scan.nextLong());
break;
case "2":
System.out.print(t.getCustomerName() + " 고객님의 계좌 : "
+ t.getAccountNum() + "에서 ");
System.out.println("출금시킬 금액을 입력해 : ");
t.withdraw(scan.nextLong());
break;
case "3":
System.out.println("고객님의 계좌의 잔액은 " + t.getBalance()
+ "원이다.");
break;
case "4":
System.out.print(t.getCustomerName() + " 고객님의 계좌 : "
+ t.getAccountNum() + "의 ");
System.out.println("거래내역입니다.");
Transaction ts[] = t.getTransaction();
for (int i = 0; i < t.getTotalTrans(); i++) {
System.out.printf("은행 : %5s %15d원 %5s, 거래일자 : %10s 거래시간 : %10s\n",
ts[i].getBankName(), ts[i].getAmount(),
ts[i].getTransType(),
ts[i].getTransactionDate(),
ts[i].getTransactionTime());
}
break;
case "5":
// 나가기
default:
System.out.println(" 종료합니다...");
iter = false;
break;
}
}
}
}
'java,web study > 3주차 (7월 15일 ~21일)' 카테고리의 다른 글
Class (0) | 2013.07.16 |
---|---|
System 클래스 (시간 관련) (0) | 2013.07.16 |
Warpper 클래스, Auto Boxing (0) | 2013.07.16 |
다형성 - 다운캐스팅 실행 에러 (0) | 2013.07.16 |
Buyer, Product 클래스 구현 (자바의정석 7-19) (0) | 2013.07.16 |