본문 바로가기

JAVA

2022.11.25 은행 관리 시스템 거래 내역 기능

 ClientManagement.java - 계좌 정보와 입출금내역 출력 함수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 @Override
    public String toString() {
 
        if(super.getIsDeposit()){  // getIsDeposit() 입금 여부 판별
            return "이름: " + super.getName() + "|" + "은행명: " + super.getBankName() + "|"+ "계좌번호: " + super.getAccountNum().replaceAll(LAST_10_CHAR_PATTERN, "**********")+"|" +
                    "입금액: " + super.getMoney() + "|" + "잔고: " + super.getBalance()+ "| " + super.getTransactionDate();
        } else if (super.getIsWithdrawal()) {  // getIsWithrawal() 출금 여부 판별
            return "이름: " + super.getName() + "|" + "은행명: " + super.getBankName() + "|"+ "계좌번호: " + super.getAccountNum().replaceAll(LAST_10_CHAR_PATTERN, "**********")+"|" +
                    "출금액: " + super.getMoney() + "|" + "잔고: " + super.getBalance()+ "| " + super.getTransactionDate();
        }
        else{
            return null;
        }
 
    }
cs

BankAccount.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
static List<ClientManagement> transactionHistory = new ArrayList<>(); // 거래 내역을 저장할 객체
 
private void clientManagement() { // 계좌 관리
       
        Iterator<ClientManagement> ite = transactionHistory.iterator();
 
        while (ite.hasNext()) {
            System.out.println(ite.next() + " ");
        }
    }
 
private void accountDeposit() { // 예금
        sc.nextLine();
        String account = getStrInput("계좌 번호를 입력하세요. :");
        String tradeDate;
        int money = 0;      // 입금액
        int newBalance = 0// 입금액이 더해질 새로운 잔고
        boolean isDeposit = false;
        boolean isAccountExist;
 
 
        for (int i = 0; i < bankusers.size(); i++) {
 
            if (account.equals(bankusers.get(i).getAccountNum())) { // 입력값과 기존 계좌번호가 동일한지 판별
                money = getNumInput("입금액 입력 :");
                newBalance = Integer.parseInt(bankusers.get(i).getBalance()) + money; // Integer.parseInt(String s) 문자열을 정수 값으로 변환 후
                // 입금 금액 더해 줌
                bankusers.get(i).setTransactionDate(DateTimeFormatter.ofPattern("yyyy년MM월dd일 HH시mm분").format(LocalDateTime.now()));
                bankusers.get(i).setMoney(money);
                bankusers.get(i).setBalance(String.valueOf(newBalance)); // String.valueOf() 숫자 값을 문자열로 변환
                tradeDate = bankusers.get(i).getTransactionDate();
                bankusers.get(i).setTransactionDate(tradeDate);
 
                isDeposit = true;
                bankusers.get(i).setIsDeposit(isDeposit); // 입금여부 true
                bankusers.get(i).setIsWithdrawal(false);  // 출금여부 false
                /*계좌 정보와 입금 내역 추가*/
                transactionHistory.add(new ClientManagement(bankusers.get(i).getName(), bankusers.get(i).getBankName(),
                        account, String.valueOf(newBalance), money, tradeDate, bankusers.get(i).getIsDeposit(), bankusers.get(i).getIsWithdrawal()));
               
                System.out.println(money + "원이 입금되었습니다. 현재 잔액: " + bankusers.get(i).getBalance() + "원 입금날짜 :" + bankusers.get(i).getTransactionDate());
 
                break;
            } else {
                if (i < bankusers.size() - 1) {
                    continue;
                } else {
                    System.out.println("계좌 번호를 확인하세요.");
                }
 
            }
        }
 
 
    }
 
    
 
    private void accountWithdrewal() { // 출금
        sc.nextLine();
        String account = getStrInput("계좌 번호를 입력 :");
        String tradeDate;
        int money = 0;
        int newBalance = 0;
 
        for (int i = 0; i < bankusers.size(); i++) {
 
            if (account.equals(bankusers.get(i).getAccountNum())) { // 입력값과 기존 계좌번호가 동일한지 판별
                money = getNumInput("출금액 입력 :");
                if (Integer.parseInt(bankusers.get(i).getBalance()) > money){
                    newBalance = Integer.parseInt(bankusers.get(i).getBalance()) - money; // Integer.parseInt(String s) 문자열을 정수 값으로 변환 후
                    // 입금 금액 차감
                    bankusers.get(i).setTransactionDate(DateTimeFormatter.ofPattern("yyyy년MM월dd일 HH시mm분").format(LocalDateTime.now()));
 
                    bankusers.get(i).setMoney(money);
                    bankusers.get(i).setBalance(String.valueOf(newBalance)); // String.valueOf() 숫자 값을 문자열로 변환
                    tradeDate = bankusers.get(i).getTransactionDate();
                    bankusers.get(i).setTransactionDate(tradeDate);
 
 
                    bankusers.get(i).setIsDeposit(false);   // 입금여부 false
                    bankusers.get(i).setIsWithdrawal(true); // 출금여부 true
                    /*계좌 정보와 출금 내역 추가*/
                    transactionHistory.add(new ClientManagement(bankusers.get(i).getName(), bankusers.get(i).getBankName(),
                            account, String.valueOf(newBalance), money, tradeDate, bankusers.get(i).getIsDeposit(), bankusers.get(i).getIsWithdrawal()));
                    
                    System.out.println(money + "원이 출금되었습니다. 현재 잔액: " + bankusers.get(i).getBalance() + "원 입금날짜 :" + bankusers.get(i).getTransactionDate());
 
                    break;
                }else{
                    System.out.println("잔액이 부족합니다. 출금 가능액 :" + bankusers.get(i).getBalance() + "원");
                }
 
            } else {
                if (i < bankusers.size() - 1) {
                    continue;
                } else {
                    System.out.println("계좌 번호를 확인하세요.");
                }
 
            }
        }
    }
cs

입출금 시에 입출금 여부를 설정하고 거래 내역을 ClientMangement 객체인 transactionHistory 리스트에 추가한다.

출력 화면