1. 메소드부터 먼저 만들고 마지막에 뷰단을 만드는 것을 권장
2. 오늘 실습코드
** 아직 완성된 코드가 아님, 다음 시간에 완성할 예정 **
1) 은행!
** ATM 메인 클래스 **
package day24;
import java.util.Random;
import java.util.Scanner;
public class ATM {
public static void main(String[] args) {
String msg = "1.신한은행\n2.국민은행\n3.우리은행\n4.나가기";
String menu = "1.계좌개설\n2.입금하기\n3.출금하기\n4.잔액조회\n5.나가기";
String[] bankName = {"신한은행", "국민은행", "우리은행"};
Scanner sc = new Scanner(System.in);
Random r = new Random();
String name = "", pw = "", account = "", temp = "", phone = "";
Bank user = null;
int choice = 0, menu_choice = 0;
while(true) {
System.out.println(msg);
choice = sc.nextInt();
if(choice == 4) {break;}
choice --;
while(true) {
System.out.println(menu);
menu_choice = sc.nextInt();
if(menu_choice == 5) {break;}
switch(menu_choice) {
//계좌 개설
case 1:
Bank[] arBank = {new Shinhan(), new Kookmin(), new Woori()};
while(true) {
account = "" + (r.nextInt(90000) + 10000);
if(Bank.checkDup(account) == null) {break;}
}
arBank[choice].account = account;
System.out.print("예금주 : ");
arBank[choice].name = sc.next();
while(true) {
int i = 0;
System.out.print("핸드폰 번호[ '-' 제외 ] : ");
phone = sc.next();
arBank[choice].phone = phone;
for(i = 0; i < phone.length(); i++) {
if(phone.charAt(i) == '-') {
break;
}
}
if(i == phone.length()) {
break;
}
}
while(true) {
System.out.print("4자리 비밀번호 : ");
pw = sc.next();
if(pw.length() == 4) {break;}
}
arBank[choice].pw = pw;
//사용자가 선택한 은행(행 : choice)에
//arCnt[choice]번째 고객으로
//신규고객(arBank[choice]) 저장
Bank.arrBank[choice][Bank.arCnt[choice]] = arBank[choice];
System.out.println("내 계좌번호 : " + account);
System.out.println("계좌번호는 반드시 기억하세요!");
//사용자가 선택한 은행의 고객 수 1증가
Bank.arCnt[choice]++;
break;
//입금하기
case 2:
System.out.print("계좌번호 : ");
account = sc.next();
System.out.print("비밀번호 : ");
pw = sc.next();
user = Bank.login(account, pw);
if(Bank.bank_num != choice) {
System.out.println(bankName[Bank.bank_num] + "에서 처리 가능합니다.");
continue;
}
if(user != null) {
System.out.print("입금액 : ");
user.deposit(sc.nextInt());
System.out.println("잔고 : " + user.money);
}else {
System.out.println("입금 실패 : 정보 오류");
}
break;
//출금하기
case 3:
System.out.print("계좌번호 : ");
account = sc.next();
System.out.print("비밀번호 : ");
pw = sc.next();
user = Bank.login(account, pw);
if(user != null) {
System.out.print("출금액 : ");
if(user.withdraw(sc.nextInt())) {
System.out.println("잔고 : " + user.money);
}else {
System.out.println("출금 실패 : 잔액 부족");
}
}else {
System.out.println("출금 실패 : 정보 오류");
}
break;
//잔액조회
case 4:
System.out.print("계좌번호 : ");
account = sc.next();
System.out.print("비밀번호 : ");
pw = sc.next();
user = Bank.login(account, pw);
if(user != null) {
user.balance();
}else {
System.out.println("조회 실패 : 정보 오류");
}
break;
}
}
}
}
}
** Bank 클래스 **
package day24;
public class Bank {
static Bank[][] arrBank = new Bank[3][100];
static int[] arCnt = new int[arrBank.length];
String name;
String account;
String phone;
String pw;
int money;
static int bank_num;
public Bank() {}
//중복검사
static Bank checkDup(String account) {
Bank b = null;
for(int i=0; i<arrBank.length; i++) {
for(int j = 0; j < arCnt[i]; j ++) {
if(arrBank[i][j].account.equals(account)) {
bank_num = i;
b = arrBank[i][j];
break;
}
}
}
return b;
}
//로그인
static Bank login(String account, String pw) {
Bank b = checkDup(account);
if(b != null) {
if(!b.pw.equals(pw)) {
b = null;
}
}
return b;
}
//입금
void deposit(int money) {
this.money += money;
}
//출금
boolean withdraw(int money) {
boolean check = false;
if(!(this.money - money < 0)) {
this.money -= money;
check = true;
}
return check;
}
//잔액조회
void balance() {
System.out.println("계좌번호 : " + this.account);
System.out.println("예금주 : " + this.name);
System.out.println("현재 잔액 : " + this.money + "원");
}
}
** Kookmin **
package day24;
public class Kookmin extends Bank{
//출금시 수수료 50%
@Override
boolean withdraw(int money) {
boolean check = false;
if(this.money >= money * 1.5) {
this.money -= money * 1.5;
check = true;
}
return check;
}
}
** Shinhan **
package day24;
public class Shinhan extends Bank{
//입금시 수수료 10%
@Override
void deposit(int money) {
this.money += money * 0.9;
}
}
** Woori **
package day24;
public class Woori extends Bank{
//잔액 조회시 재산 반토막
@Override
void balance() {
super.balance();
this.money *= 0.5;
}
}
'웹_프론트_백엔드 > 단과' 카테고리의 다른 글
[단과_JAVA] 2020.02.18 (0) | 2020.02.18 |
---|---|
[단과_C] 2020.02.17 (0) | 2020.02.17 |
[단과_C] 2020.02.14 (0) | 2020.02.15 |
[단과_JAVA] 2020.02.14 (0) | 2020.02.15 |
[단과_C] 2020.02.13 (0) | 2020.02.14 |