티스토리 뷰

이것이 자바다 1권 6장 확인문제.

  1. 다음은 키보드로부터 계좌정보를 입력받아서, 계좌를 관리하는 프로그램입니다. 실행 결과를 보고, 알맞게 BankApplication 클래스의 메소드를 작성해보세요.

1. getter/setter/toString

package com.self;

public class Account {

    private String ano;
    private String owner;
    private int balance;

    public Account(String ano, String owner, int balance) {
        this.ano = ano;
        this.owner = owner;
        this.balance = balance;
    }

    public String getAno() {
        return ano;
    }

    public void setAno(String ano) {
        this.ano = ano;
    }

    public String getOwner() {
        return owner;
    }

    public void setOwner(String owner) {
        this.owner = owner;
    }

    public int getBalance() {
        return balance;
    }

    public void setBalance(int balance) {
        this.balance = balance;
    }

    @Override
    public String toString() {
        return ano + "   " + owner + "   " + balance + '\n';
    }

}

2. BankApplication Class

package com.self;

import java.util.Scanner;

public class BankApplication {
    private static Account[] accountArray = new Account[100];
    private static Scanner sc = new Scanner(System.in);

    public static void main(String args[]) {
        boolean run = true;

        while (run) {
            System.out.println("----------------------------------------------");
            System.out.println("1. 계좌생성 | 2. 계좌목록 | 3. 예금 | 4. 출금 | 5. 종료");
            System.out.println("----------------------------------------------");
            System.out.println("선택 > ");

            int selectNo = sc.nextInt();

            if (selectNo == 1) {
                createAccount();
            } else if (selectNo == 2) {
                accountList();
            } else if (selectNo == 3) {
                deposit();
            } else if (selectNo == 4) {
                withdraw();
            } else if (selectNo == 5) {
                run = false;
            }
        }
        System.out.println("프로그램 종료");
    }

    private static void circlePrintln01() {

        System.out.println("-------------");
        System.out.println("계좌 생성");
        System.out.println("-------------");

    }

    private static void circlePrintln02() {
        System.out.println("-------------");
        System.out.println("계좌 목록");
        System.out.println("-------------");

    }

    private static void circlePrintln03() {
        System.out.println("-------------");
        System.out.println("예금");
        System.out.println("-------------");
    }

    private static void circlePrintln04() {
        System.out.println("-------------");
        System.out.println("출금");
        System.out.println("-------------");
    }

    // 계좌 생성하기
    private static void createAccount() {

        circlePrintln01();

        System.out.println("계좌번호(000-000형식) : ");
        String accountNum = sc.next();
        System.out.println("계좌주 : ");
        String accountOwner = sc.next();
        System.out.println("초기 입금액 : ");
        int accountBal = sc.nextInt();

        Account newAccount = new Account(accountNum, accountOwner, accountBal);

        for (int i = 0; i < accountArray.length; i++) {
            if (accountArray[i] == null) {
                accountArray[i] = newAccount;
                System.out.println("결과 : 계좌가 생성되었습니다.");
                break;
            }
        }
    }

    // 계좌목록 보기
    private static void accountList() {

        circlePrintln02();

        for (int i = 0; i < accountArray.length; i++) {
            Account account = accountArray[i];
            if (accountArray[i] != null) {
                System.out.println(account.toString());
            }
        }

    }

    // 예금하기
    private static void deposit() {

        circlePrintln03();

        System.out.println("계좌 번호(000-000형식) : ");
        String accountNum = sc.next();
        System.out.println("예금액 : ");
        int accountBal = sc.nextInt();

        Account account = findAccount(accountNum);

        if (account == null) {
            System.out.println("계좌가 존재하지 않습니다.");
            return;
        }
        if (!account.getAno().equals(accountNum)) {
            System.out.println("계좌번호를 잘못 입력하셨습니다.");
            return;
        }

        account.setBalance(account.getBalance() + accountBal);
        System.out.println("예금이 성공되었습니다.");

    }

    // 출금하기
    private static void withdraw() {

        circlePrintln04();

        System.out.println("계좌번호(000-000형식) : ");
        String accountNum = sc.next();
        System.out.println("출금액 : ");
        int accountBal = sc.nextInt();

        Account account = findAccount(accountNum);

        if (account == null) {
            System.out.println("계좌가 존재하지 않습니다.");
            return;
        }
        if (!account.getAno().equals(accountNum)) {
            System.out.println("계좌번호를 잘못 입력하셨습니다.");
            return;
        }
        if (account.getBalance() == 0 || account.getBalance() < accountBal || account.getBalance() - accountBal < 0) {
            System.out.println("잔액이 부족합니다.");
            return;
        }

        account.setBalance(account.getBalance() - accountBal);
        System.out.println("출금이 성공되었습니다.");

    }

    private static Account findAccount(String ano) {

        Account account = null;

        for (int i = 0; i < accountArray.length; i++) {
            if (accountArray[i] != null) {
                String accountNum = accountArray[i].getAno();
                if (accountNum.equals(ano)) {
                    account = accountArray[i];
                    break;
                }
            }

        }
        return account;
    }

}
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
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