본문 바로가기

스파르타코딩클럽(내일배움캠프)

스파르타 코딩 클럽 5주차 1일 후기

728x90

오늘은 계좌 자동 생성 기능과 한도제한 계좌 생성 기능을 추가로 넣었다.

 

전체 소스 코드 : https://github.com/karlema/bankAcount

 

Register.java

import java.util.List;
import java.util.regex.Pattern;

public class Register {
    public String CastString;
    public String accountNumber = null;
    public String name;
    public String pwd;
    public int money;
    public String bankName;
    public boolean limit;
    public String prefix = "356-1100-";

    public void parceChar(List<Account> bankList) {
        int countComma = 0;
        int countTotal = 0;
        int first = 0;
        int flag = 0;
        int last = 0;
        CastString = CastString.replaceAll(" ", "");
        while (true) {
            try {
                if (CastString != null) {
                    countTotal++;
                }

                if (flag == 0) {
                    switch (countComma) {
                        case 1: {
                            if (CastString.toCharArray()[first] == '*') {
                                String tempaccountNumber = "";
                                for (int i = 0; i < 6; i++) {
                                    tempaccountNumber += String.valueOf((int) (Math.random() * 10));
                                }
                                accountNumber = prefix + tempaccountNumber;
                            } else {
                                accountNumber = CastString.substring(first, countTotal - 1);
                                String pattern = "^(\\d{3,6})-?(\\d{2,6})-?(\\d{6,9})$";
                                boolean accountPattern = Pattern.matches(pattern, accountNumber);
                                if (!accountPattern) {
                                    System.out.println("계좌번호 형식이 맞지 않습니다.");
                                    System.out.println("(3~6자리 숫자)-(2~6자리 숫자)-(6~9자리 숫자) 형식으로 입력해주세요");
                                    return;
                                }
                                int count = 0;
                                for (Account acnt : bankList) {
                                    if (accountNumber.equals(bankList.get(count).accountNumber)) {
                                        System.out.println("동일한 계좌번호가 있습니다. 처음 메뉴로 돌아가겠습니다.");
                                        return;
                                    }
                                    count++;
                                }
                            }
                            System.out.println(accountNumber);
                            first = countTotal;
                            flag = 1;
                            break;
                        }
                        case 2: {
                            name = CastString.substring(first, countTotal - 1);
                            System.out.println(name);
                            first = countTotal;
                            flag = 1;
                            break;
                        }
                        case 3: {
                            pwd = CastString.substring(first, countTotal - 1);
                            System.out.println(pwd);
                            first = countTotal;
                            flag = 1;
                            break;
                        }
                        case 4: {
                            money = Integer.parseInt(CastString.substring(first, countTotal - 1));
                            System.out.println(money);
                            first = countTotal;
                            flag = 1;
                            break;
                        }
                        case 5: {

                            // 콤마 앞
                            bankName = CastString.substring(first, countTotal - 1);
                            System.out.println(bankName);
                            first = countTotal;

                            if (CastString.toCharArray()[first] == '1') {
                                limit = true;
                            } else {
                                limit = false;
                            }
                            // 콤마 뒤

                            System.out.println("limit : " + limit);
                            last = 1;
                            flag = 1;
                            break;
                        }
                    }
                }

                if (CastString.toCharArray()[countTotal] == ',') {
                    countComma++;
                    flag = 0;
                }

                if (last == 1) break;
            } catch (Exception e) {
                System.out.println("입력 방법이 틀렸습니다. 처음 메뉴로 돌아가겠습니다.");
                return;
            }
        }
        Account ac = new Account(accountNumber, name, pwd, money, bankName, limit);
        bankList.add(ac);
        if (!limit) {
            System.out.println("계좌번호 : " + accountNumber + " 이름 : " + name + " 비밀번호 : " + pwd + " 입금금액 : " + money + " 은행명 : " + bankName);
        } else {
            System.out.println("(한도제한) 계좌번호 : " + accountNumber + " 이름 : " + name + " 비밀번호 : " + pwd + " 입금금액 : " + money + " 은행명 : " + bankName);
        }

    }

    public Register() {

    }
}
728x90