본문 바로가기
Study/JAVA

[20210522] 자바 기초 코딩 실습

by 햄리뮤 2021. 5. 22.
반응형

대표이미지 쓰려고 가져옴! [출처] http://catchcode.de/education_programming.html  

▶메인

package may.five;

public class BankMain {
  public static void main(String[] args) {
    BankService bs = new BankService();
    bs.init();
  }
}

▶모델

package may.five;

public class Bank {

  private String accountNo;
  private String name;
  // 소지금액
  private long money;
  // 출금
  private long withdraw;
  // 예금
  private long deposit;

  @Override
  public String toString() {
    return "Lima Bank{" +
        "계좌번호='" + accountNo + '\'' +
        ", 계좌주='" + name + '\'' +
        ", 현재금액=" + money +
        '}';
  }

  public String getAccountNo() {
    return accountNo;
  }

  public void setAccountNo(String accountNo) {
    this.accountNo = accountNo;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public long getMoney() {
    return money;
  }

  public void setMoney(long money) {
    this.money = money;
  }

  public long getWithdraw() {
    return withdraw;
  }

  public void setWithdraw(long withdraw) {
    this.withdraw = withdraw;
  }

  public long getDeposit() {
    return deposit;
  }

  public void setDeposit(long deposit) {
    this.deposit = deposit;
  }
}

▶기능

package may.five;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class BankService {

  private boolean run = true;
  private Scanner scanner = new Scanner(System.in);
  private List<Bank> list = new ArrayList<>();
  private int checkDeposit = 0;

  public void init() {
    while (run) {
      menu();
    }
  }

  private void menu() {
    System.out.println("==== Lima Bank ====");
    System.out.println("1. 계좌 생성");
    System.out.println("2. 계좌 목록");
    System.out.println("3. 예금");
    System.out.println("4. 출금");
    System.out.println("5. 종료");
    System.out.println("===================");
    String input = scanner.next();
    doSwitch(input);
  }

  private void doSwitch(String input) {
    switch (input) {
      case "1":
        createAccount();
        break;
      case "2":
        findAll();
        break;
      case "3":
        doDeposit();
        break;
      case "4":
        doWithdraw();
        break;
      case "5":
        quit();
        break;
    }
  }

  private void createAccount() {
    Bank bank = new Bank();
    System.out.println("==== 계좌 생성 ====");
    System.out.println("계좌 번호: ");
    bank.setAccountNo(scanner.next());
    System.out.println("계좌 주:");
    bank.setName(scanner.next());
    System.out.println("초기 입금액: ");
    bank.setMoney(scanner.nextLong());
    list.add(bank);

    System.out.println("계좌가 생성 되었습니다.");
  }

  private void findAll() {
    System.out.println("==== 계좌 목록 ====");
    list.forEach(System.out::println);
    System.out.println("=================");
  }

  private void doDeposit() {
    System.out.println("==== 입금 =====");
    System.out.println("계좌 번호를 입력해 주세요.");
    String account = scanner.next();

    list.forEach(r -> {
      if (r.getAccountNo().equals(account)) {
        System.out.println("얼마를 입금 하시겠습니까?");
        r.setDeposit(scanner.nextLong());
        r.setMoney(r.getMoney() + r.getDeposit());
        checkDeposit = 1;
        System.out.println("입금이 완료 되었습니다.");
      }
    });

    if (checkDeposit == 0) {
      System.out.println("계좌를 찾을 수 없습니다.");
      System.out.println("메뉴로 돌아갑니다.");
    }
    checkDeposit = 0;
  }

  private void doWithdraw() {
    System.out.println("==== 출금 =====");
    System.out.println("계좌 번호를 입력해 주세요.");
    String account = scanner.next();

    list.forEach(r -> {
      if (r.getAccountNo().equals(account)) {
        System.out.println("얼마를 출금 하시겠습니까?");
        System.out.println("현재 " + r.getName() + "님의 소지금액: " + r.getMoney());
        r.setWithdraw(scanner.nextLong());
        if (r.getWithdraw() > r.getMoney()) {
          System.out.println("***********************************");
          System.out.println("소지하신 금액보다 출금 금액이 더 많습니다.");
          System.out.println("출금하실 수 없습니다.");
          System.out.println("메뉴로 돌아갑니다.");
          System.out.println("***********************************");
        } else {
          r.setMoney(r.getMoney() - r.getWithdraw());
          System.out.println("출금이 완료 되었습니다.");
        }
        checkDeposit = 1;
      }
    });

    if (checkDeposit == 0) {
      System.out.println("계좌를 찾을 수 없습니다.");
      System.out.println("메뉴로 돌아갑니다.");
    }
    checkDeposit = 0;
  }

  private void quit() {
    run = false;
    System.out.println("시스템을 종료합니다.");
  }

}
반응형

'Study > JAVA' 카테고리의 다른 글

[20210530] JAVA 스터디  (0) 2021.05.30
[20210530] 자바 기초 코딩 실습  (0) 2021.05.30
[20210521] Java 스터디  (0) 2021.05.21
[20210516] JAVA 스터디  (0) 2021.05.16
[20210516] 자바 기초 코딩 실습  (0) 2021.05.16

댓글