[29] 은행 예제
- 고객 등록과 출력 및 입출금
- public class Account
package kosta.bank;
public class Account {
// 계좌에 돈을 입금하고 출금하는 것.
private String id; // 이름
private long balance; // 잔액
public Account() {}
public Account(String id, long balance) {
super();
this.id = id;
this.balance = balance;
}
// 입금하다.
public void deposit(long amount) {
this.balance += amount;
}
// 출금
public boolean withdraw(long amount) {
if(this.balance < amount) {
// System.out.println("잔액이 부족합니다.");
return false;
}
this.balance -= amount;
return true;
}
// 정보 은닉
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public long getBalance() {
return balance;
}
public void setBalance(long balance) {
this.balance = balance;
}
}
- public class Customer
package kosta.bank;
public class Customer {
// 한 고객을 받기 위한 것.
private String id; // 회원 아이디
private String name; // 회원 이름
private Account account; // 회원이 가지고 있는 계좌. (초기화 했을 때, 객체가 생성된다.)
public Customer() {}
// 회원의 id 및 name 그리고 계좌의 id와 잔액을 초기화
public Customer(String id, String name, long balance) {
super();
this.id = id;
this.name = name;
this.account = new Account(id, balance); // Account 객체를 생성 -> 주소값 할당
}
// 정보 은닉
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
}
- public class MyBank
package kosta.bank;
public class MyBank {
private Customer customers[]; // 회원들
private int customersNum; // 회원의 숫자를 증가시키는 용도 = count와 같다.
public MyBank() {
customers = new Customer[10];
}
// 회원을 추가
public void addCustomer(String id, String name, long balance) {
// Customers는 Account 객체를 포함하고 있다.
this.customers[this.customersNum++] = new Customer(id, name, balance);
System.out.println("회원이 추가 되었습니다.");
}
// 한 명의 회원 찾기
// id값이 넘어오면 customers[]에서 찾아준다.
public Customer getCustomer(String id) {
// 찾지 못하면 null을 출력한다. -> 널포인트익셉션을 방지하기 위해서 초건을 하나 추가한다.
Customer cust = null;
for (int i = 0; i < customersNum; i++) {
if (customers[i].getId().equals(id)) {
cust = customers[i];
// 찾으면 바로 나온다.
break;
}
}
return cust;
}
// 전체 회원 출력
public Customer[] getAllCustomers() {
// 객체를 customersNum에 대해서 생성한다.
Customer newCustomer[] = new Customer[customersNum];
// for (int i = 0; i < customersNum; i++) {
// newCustomer[i] = customers[i];
// }
// API를 사용한 전체회원 출력.
System.arraycopy(customers, 0, newCustomer, 0, customersNum);
return newCustomer;
}
public Customer[] getCustomers() {
return customers;
}
public void setCustomers(Customer[] customers) {
this.customers = customers;
}
public int getCustomersNum() {
return customersNum;
}
public void setCustomersNum(int customersNum) {
this.customersNum = customersNum;
}
}
- public class BankSystem
package kosta.bank;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class BankSystem {
private MyBank myBank; //MyBank
public BankSystem(){
myBank = new MyBank();
showMenu();
}
public void showMenu(){ //show method 만들기
String menu = null;
String id = null;
String name = null;
long balance = 0;
do{
System.out.println("****메뉴를 입력하세요****");
System.out.println("1. 고객등록");
System.out.println("2. 고객보기(1명)");
System.out.println("3. 고객전체보기");
System.out.println("4. 고객예금출금");
System.out.println("5. 고객예금입금");
System.out.println("***끝내기***");
System.out.println("***************");
System.out.print(">>");
menu = readFromKeyboard();
if(menu.equals("1")){ //고객등록
System.out.print("ID를 입력하세요: ");
id = readFromKeyboard();
System.out.print("이름을 입력하세요: ");
name = readFromKeyboard();
System.out.print("잔고를 입력하세요: ");
balance = Long.parseLong(readFromKeyboard());
// 고객을 한 명 생성시킨다.
myBank.addCustomer(id, name, balance);
}
else if(menu.equals("2")){
System.out.print("고객ID를 입력하세요: ");
id = readFromKeyboard();
// id를 넣으면 Customer 객체로부터 구해줘야겠다.
Customer cust = myBank.getCustomer(id);
System.out.println(cust.getId() +":" + cust.getName() + ": "
+ cust.getAccount().getBalance());
}else if(menu.equals("3")){
// 고객이 넘어오면서, 배열의 크기만큼 돌린다.
Customer[] allCust = myBank.getAllCustomers();
for(int i=0;i<allCust.length;i++){
System.out.println(allCust[i].getId() + ": " +
allCust[i].getName() + " :" +
allCust[i].getAccount().getBalance());
}
}
else if(menu.equals("4")){
System.out.print("고객의 ID를 입력하세요.: ");
id = readFromKeyboard();
Customer cust = myBank.getCustomer(id);
if(cust == null){
System.out.println("등록된 고객이 아닙니다.");
}else{
System.out.print("출금액을 입력하세요: ");
balance = Long.parseLong(readFromKeyboard());
// Account는 자신의 balance값을 가지고 있다.
if(cust.getAccount().withdraw(balance)){
System.out.println("정상적으로 출금되었습니다.");
System.out.println("출금후 잔고는 :" + cust.getAccount().getBalance());
}else{
System.out.println("잔고가 부족합니다.");
}
}
}
}while(!menu.equals("q"));
}
public String readFromKeyboard(){
String input = null;
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
input = br.readLine();
}catch(Exception e){
System.out.println(e.getMessage());
}
return input;
}
public static void main(String[] args) {
BankSystem bank = new BankSystem();
}
}
Author And Source
이 문제에 관하여([29] 은행 예제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sanggeun/29저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)