본문 바로가기
❤️‍🔥TIL (Today I Learned)

[TIL] 2022-11-29(22day)

by elicho91 2022. 11. 29.

은행계좌관리 프로그램 만들기(2)


👉 회원등록 / register( )

 public void register() {
        System.out.println("==============================");
        System.out.println("★신규 회원등록★");
        System.out.println("==============================");
        System.out.print("고객님의 성함을 입력해주세요 : ");
        String name = sc.nextLine();
        System.out.print("등록하실 ID를 입력해주세요 : ");
        String id = sc.nextLine();
        System.out.print("등록하실 PW를 입력해주세요 : ");
        String pw = sc.nextLine();
        String ano = createAno();

        UserAccount userAccount = new UserAccount(name, id, pw);
        BankAccount bankAccount = new HanaBankAccount(name, id, pw, getName(), ano, 0L);

        List<BankAccount> list = new ArrayList<>();
        list.add(new HanaBankAccount(name, id, pw, getName(), ano, 0L));
        getIdAccountListMap().put(id, list);
        getUserAccountList().add(userAccount);

        System.out.println("============[가입정보]===========");
        System.out.println("- 성함 : " + bankAccount.getName());
        System.out.println("- 아이디 : " + bankAccount.getId());
        System.out.println("- 계좌번호 : " + bankAccount.getAccountNumber());
        System.out.println(bankAccount.getName() + "님! 하나은행의 회원이 되신걸 환영합니다 :)");
        System.out.println("==============================");
    }


👉계좌 생성 / createAno( )

private String createAno() {

        List<BankAccount> bankAccountList = getBankAccountList();
        int size = bankAccountList.size();

        while (true) {
            int num1 = ((int) (Math.random() * 899)) + 100;
            int num2 = ((int) (Math.random() * 899999)) + 100000;
            int num3 = ((int) (Math.random() * 89999)) + 10000;
            String ano = num1 + "-" + num2 + "-" + num3;

            int i;
            for (i = 0; i < size; i++) {
                if (ano.equals(bankAccountList.get(i).getAccountNumber())) {
                    break;
                }
            }

            if (i == size) {
                return ano;
            }
        }
    }

👉 입금 / deposit( )

public void deposit() {
        System.out.println("==============================");
        System.out.println("★예금★");
        System.out.println("==============================");

        while (true) {
            System.out.print("입금하실 금액을 입력해주세요 : ");
            long money = Long.parseLong(sc.nextLine());
            if (money > 0) {
                long balance = getBalance() + money;
                setBalance(balance);

                ZonedDateTime zonedDateTime = null;
                addTransactionData(new TransactionData(TimeFormatter.format(zonedDateTime), getAccountNumber(), true, money, balance, "Hana Bank"));
                System.out.println("==============================");
                System.out.println(MoneyFormatter.formatToWon(money) + "원이 성공적으로 입금되었습니다.");
                System.out.println("현재잔액 : " + MoneyFormatter.formatToWon(getBalance()) + "원");
                break;
            } else {
                System.out.println("※ 금액을 잘못 입력하셨습니다. 다시 입력해주세요.");
            }
        }
    }


👉 출금 / withdrawl( )

public void withdrawal() {
        System.out.println("==============================");
        System.out.println("★출금★");
        System.out.println("==============================");
        System.out.println("출금가능잔액 : " + MoneyFormatter.formatToWon(getBalance()) + "원");

        while (true) {
            System.out.print("출금하실 금액을 입력해주세요 : ");
            long money = Long.parseLong(sc.nextLine());
            if (money < getBalance() && money > 0) {
                long balance = getBalance() - money;
                setBalance(balance);

                ZonedDateTime zonedDateTime = null;
                addTransactionData(new TransactionData(TimeFormatter.format(zonedDateTime), getAccountNumber(), false, money, balance, "Hana Bank"));
                System.out.println("==============================");
                System.out.println(MoneyFormatter.formatToWon(money) + "원이 성공적으로 출금되었습니다.");
                System.out.println("현재잔액 : " + MoneyFormatter.formatToWon(getBalance()) + "원");
                break;
            } else {
                System.out.println("※ 금액을 잘못 입력하셨습니다. 다시 입력해주세요.");
            }
        }
    }


👉 송금 / transfer( )

 public void transfer() {
        System.out.println("==============================");
        System.out.println("★송금★");
        System.out.println("==============================");
        while (true) {
            String bankNumber = BankingSystem.chooseBank();
            if (bankNumber.equals("6")) {
                return;
            }
            Bank toBank = BankingSystem.setDstBank(bankNumber);
            System.out.print(toBank.getName() + "로 송금하실 계좌번호를 입력해주세요 : ");

            String toAno = sc.nextLine();
            BankAccount toBankAccount = toBank.getBankAccount(toAno);

            if (getBalance() > 0) {
                System.out.println("==============================");
                System.out.println("보내시는분 : " + getName() + " / " + getBankName() + " : " + getAccountNumber());
                System.out.println("받으시는분 : " + toBankAccount.getName() + " / " + toBankAccount.getBankName() + " : " + toBankAccount.getAccountNumber());
                System.out.println("==============================");
                System.out.print("위 정보가 맞으시면 1번 아니시면 2번을 눌러주세요 : ");
                int num = Integer.parseInt(sc.nextLine());
                if (num == 1) {
                    System.out.println("==============================");
                    System.out.println("송금가능잔액 : " + MoneyFormatter.formatToWon(getBalance()) + "원");
                    System.out.print("송금하실 금액을 입력해주세요 : ");
                    long money = Long.parseLong(sc.nextLine());
                    long balance = getBalance();

                    if (money > 0 && getBalance() >= money) {
                        balance -= money;
                        toBankAccount.receive(this, toBankAccount, money);
                        setBalance(balance);

                        StringBuilder dstStr = new StringBuilder(toBankAccount.getBankName() + " " + toAno);
                        addTransactionData(new TransactionData(TimeFormatter.format(getCurrentDateTime()), getAccountNumber(), false, money, balance, dstStr.toString()));
                        System.out.println("[" + toBankAccount.getName() + "님께 " + MoneyFormatter.formatToWon(money) + "원 송금이 완료되었습니다.]");
                        break;
                    } else {
                        System.out.println("==============================");
                        System.out.println("[※ 금액을 잘못 입력하셨습니다. 다시 입력해주세요.]");
                        System.out.println("==============================");
                    }
                } else if (num == 2) {
                    System.out.println("[※ 처음부터 다시 입력해주세요.]");
                }
            }
        }
    }


👉 잔액확인 / showBalance( )

    public void showBalance() {
        System.out.println("==============================");
        System.out.println("★잔액확인★");
        System.out.println("==============================");
        System.out.println("현재잔액은 " + MoneyFormatter.formatToWon(getBalance()) + "원입니다.");
    }
}


🏛️ 최종 결과물

은행 관리 프로그램 (i5-bank-management-system)

 

https://github.com/s-jje/i5-bank-management-system

 

GitHub - s-jje/i5-bank-management-system

Contribute to s-jje/i5-bank-management-system development by creating an account on GitHub.

github.com

https://www.notion.so/A-8-65254befbaf34047ba14b7825015ac99

 

A반 8조

i5

www.notion.so


🙋‍♂️ 소감 : 

오늘 2차 미니 프로젝트 발표가 있었다.

최종 결과물은 공통적인 기능의 메서드 통일화 작업 때문에 다르지만,

메인 함수 내에서 작동되는 내가 작성한 코드로 위주로만 정리하였다.

막히는 부분은 팀원 분들의 코드도 참고하면서 최대한 내가 알고 있는 범위 내에서

재 수정하려고 노력하였다.

예상했던 규모보다 객체지향 개념이 확장되면서 프로젝트 규모가 커져서,

개인적으로 구현해야 하는 기능이 늘어나긴 했지만, 덕분에 많은 공부가 되었던 시간이었다.

팀원 중 능력자 분이 계셔서 규모에 비해 순조롭게 진행이 되었지만,

그분께만 해야 할 일들이 너무 과중된 것 같아 마음이 편치만은 않았다. ㅠㅠ

다음 프로젝트에는 맡은 역할 외에 다른 분들께 도움이 될 수 있도록 더 노력해야겠다.

i5 8조 모두 수고하셨습니다 :)

 

😈 아는 내용이라고 그냥 넘어가지 않기! 😈

'❤️‍🔥TIL (Today I Learned)' 카테고리의 다른 글

[TIL] 2022-12-01(24day)  (0) 2022.12.01
[TIL] 2022-11-30(23day)  (0) 2022.11.30
[TIL] 2022-11-28(21day)  (0) 2022.11.28
[TIL] 2022-11-25(20day)  (0) 2022.11.27
[TIL] 2022-11-24(19day)  (0) 2022.11.24

댓글