v용하짱v
70
2019-02-12 16:09:08
0
80

[자바]은행atm기기 관련 기능을 만들고있습니다.


반년 전에 자바를 이용하여 만들었던 은행atm서비스를 만들던 도중 중단했다가 마무리 짓고싶어서 


다시 손볼려고하는데 오래전에 만들어서 그런지 기억도 나지않고 실력도 부족했던 때라 너무 힘들어서 이렇게 글을 써봅니다.( 지금도 실력이 좋지않아 전문가분들의 도움을 얻고자 ...이렇게ㅜㅜ)


요구사항으로는 일반 atm기기까지 아니지만 비슷하게 서비스를 구현하고 싶습니다.


Account

package BankAtm;

import java.util.ArrayList;

public class Account {
	// 필드
	private String bankname;	// 은행명
	private String number;		// 계좌번호
	private String name;		// 계좌주
	private String password;	// 비밀번호
	private long balance;		// 잔액
	private long loan;			// 대출 조회
	private long savings;		// 적금
	private Transaction[] transactions;	// 거래내역 참조변수
	private int totalTrans;	// 거래내역 참조변수
	private ArrayList<String> list = new ArrayList<>();	// 거래내역
	static String[] bank = {"농협", "국민", "신한","기업","하나","우리"};		// 은행 선택


	// 생성자
	Account(){}
	
	Account(String bankname, String number, String name, long balance, String password){
		this.setBankname(bankname);
		this.number = number;
		this.name = name;
		this.password = password;
		this.balance = balance;
	}
	
	// getter & setter 메소드
	public long getloan() {
		return loan;
	}
	
	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}

	public String getName() {
		return name;
	}

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

	public long getBalance() {
		return balance;
	}

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

	public String getBankname() {
		return bankname;
	}

	public void setBankname(String bankname) {
		int tmp = Integer.parseInt(bankname);
		System.out.println("tmp : " + tmp);
		switch(tmp) {
		case 1: 
			this.bankname = "농  협";
		case 2:
			this.bankname = "국  민";
		case 3:
			this.bankname = "신  한";
		case 4:
			this.bankname = "기  업";
		case 5:
			this.bankname = "하  나";
		case 6:
			this.bankname = "우  리";
		case 7:
			this.bankname = "카카오  뱅크";
		case 8:
			this.bankname = "기타 특수은행";
		}
	}
	
	public String getpassword() {
		return password;
	}
	
	public void setpassword(String password) {
		this.password = password;
	}

	public long getSavings() {
		return savings;
	}
	
	public ArrayList getList() {
		return list;
	}
	
	public Transaction[] getTransaction() {
		return transactions;

	}

	public int getTotalTrans() {
		return totalTrans;

	}

	public void setTotalTrans(int totalTrans) {
		this.totalTrans = totalTrans;
	}
	
}


BankServer

package BankAtm;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

public class BankServer implements Serializable {

	public BankServer() {}

	public static void main(String args[]) {
		try {
			serverSocket = new ServerSocket(9999);
			System.err.println((new StringBuilder(String.valueOf(getTime()))).append(" ※ 서버 가동").toString());
			System.out.println((new StringBuilder(String.valueOf(getTime()))).append("은행(창구)가 준비되었습니다.").toString());
		} catch (IOException e) {
			e.printStackTrace();
		}
		do
			try {
				System.out.println((new StringBuilder(String.valueOf(getTime()))).append("연결요청을 기다립니다.").toString());
				Socket socket = serverSocket.accept();
				BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
				String str = br.readLine();
				System.out.println(str);
				java.io.OutputStream out = socket.getOutputStream();
				DataOutputStream dos = new DataOutputStream(out);
				System.out.println((new StringBuilder(String.valueOf(getTime()))).append("ATM(Client) ").append(socket.getInetAddress()).append(" IP로부터 연결요청이 들어왔습니다.").toString());
				dos.writeUTF("=========================");
				dos.writeUTF("\n죄송합니다.고객님\n전산문제로 Atm를 이용할 수 없습니다. \n창구에서 이용 부탁드립니다.\n다음 기회에");
				dos.writeUTF("=========================");
				System.out.println((new StringBuilder(String.valueOf(getTime()))).append("Atm기기와 정상적으로 연결되었습니다.").toString());
				dos.close();
				socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			} while (true);
		}

	static String getTime() {
		SimpleDateFormat f = new SimpleDateFormat("[hh:mm:ss]");
		return f.format(new Date());
	}

	public void start() {
		boolean run = true;
		while (run) {
			System.out.println("     ☞    안녕하세요. 무엇을 도와드릴까요?  ☜");
			System.out.println("===========================================");
			System.out.println("[1. 계좌  발급  ]\t[5. 이     체 ]\t[9. 적    금 ]");
			System.out.println("[2. 계좌  조회 ]\t[6. 잔액  조회 ]\t[10. 종  료 ]");
			System.out.println("[3. 예    금 ]\t[7. 거래  내역 ]");
			System.out.println("[4. 출    금 ]\t[8. 대출  조회 ]");
			System.out.println("===========================================");
			System.out.print("메뉴 선택 : \r");
			int MenuSelect = scan.nextInt();
			if (MenuSelect == 1)
				AccountOpening();
			else if (MenuSelect == 2)
				AccountCheck();
			else if (MenuSelect == 3)
				Deporit();
			else if (MenuSelect == 4)
				Withdrawal();
			else if (MenuSelect == 5)
				Transfer();
			else if (MenuSelect == 6)
				CheckBalance();
			else if (MenuSelect == 7)
				TransactionDetails();
			else if (MenuSelect == 8)
				Loan();
			else if (MenuSelect == 9)
				KaKaoSavings();
			else if (MenuSelect == 10)
				run = false;
		}
		System.err.println("※ 프로그램이 종료 되었습니다.");
	}

	private static void AccountOpening() {
		for (int i = 0; i < AccountArray.length; i++)
			if (AccountArray[i] == null) {
				System.out.println("      [ 신규 계좌 등록   ]");
				System.out.println("================================");
				System.out.println("       - 은 행 목 록 -     ");
				System.out.println("[1. 농 협 ]\t[5. 하 나 ]");
				System.out.println("[2. 국 민 ]\t[6. 우 리 ]");
				System.out.println("[3. 신 한 ]\t[7.카카오뱅크 ]");
				System.out.println("[4. 기 업 ]\t[8. 기타 특수은행 ]");
				System.out.println("================================");
				System.out.print("은행 선택 : ");
				String SelectBank = scan.next();
				System.out.print("계좌 번호 :  ");
				String AccountNumber = scan.next();
				if (FindAccount_Nu(AccountNumber) != null) {
					System.err.println("※ 계좌번호가 중복됩니다. ");
					return;
				} else {
					System.out.print("계좌주 : ");
					String AccountName = scan.next();
					System.out.println(
							(new StringBuilder(String.valueOf(AccountName))).append(" 고객의 주민등록번호 : ").toString());
					String ReNumber = scan.next();
					System.out.print("새 비밀번호 : ");
					String Password = scan.next();
					System.out.print("입금 금액 : \r");
					long DepositAmount = scan.nextLong();
					AccountArray[i] = new Account(SelectBank, AccountNumber, AccountName, ReNumber, Password, DepositAmount);
					System.out.println("========================================");
					System.out.println(
							(new StringBuilder("※ ")).append(FindAccount_Nu(AccountNumber).getAccountName()).append("님의 계좌가 정상적으로 개설되었습니다.").toString());
					System.out.println((new StringBuilder("[은행 명 : ")).append(AccountArray[0].getSelectBank()).append("]\n[계좌 주 : ").append(AccountArray[0].getAccountName()).append("]\n[계좌 번호 : ").append(AccountArray[0].getAccountNumber()).append("] 입니다.").toString());
					System.out.println("========================================");
					System.out.println("※ 위 내용을 확인 바랍니다. \r");
					return;
				}
			}

		System.err.println("※ 계좌를 개설 할 수 없습니다.");
	}

	private static void AccountCheck() {
		String AccountName;
		Account account;
		System.out.println("[   계 좌 조 회    ]");
		if (AccountArray[0] == null) {
			System.err.println("※ 등록된 계좌가 없습니다.");
			return;
		}
		System.out.print("조회하실 계좌주 : ");
		AccountName = scan.next();
		account = FindAccount_Na(AccountName);
		if (!AccountName.equals(account.getAccountName())) {
			System.out.println();
			System.err.println("※ 등록된 정보와 일치하지 않습니다.");
			System.err.println("※ 확인 후 다시 이용바랍니다.");
			return;
		} try {
			System.out.print((new StringBuilder(String.valueOf(AccountName))).append(" 고객의 비밀번호 : ").toString());
			String Password = scan.next();
			if (Password.equals(account.getPassword())) {
				for (int i = 0; AccountArray[i] != null; i++)
					if (account.getAccountName().equals(AccountArray[i].getAccountName())) {
						Account AccountCheck = AccountArray[i];
						if (AccountCheck != null) {
							System.out.println("=========================");
							System.out.println((new StringBuilder("     ")).append(AccountCheck.getAccountName()).append(" 님의 계좌 정보").toString());
							System.out.println("-------------------------");
							System.out.println((new StringBuilder("고객의 계좌주\t:")).append(AccountCheck.getAccountName()).toString());
							System.out.println((new StringBuilder(String.valueOf(AccountCheck.getAccountName()))).append(" 님의 은행명\t:").append(AccountCheck.getSelectBank()).toString());
							System.out.println((new StringBuilder(String.valueOf(AccountCheck.getAccountName()))).append(" 님의 계좌번호\t:").append(AccountCheck.getAccountNumber()).toString());
							System.out.println((new StringBuilder(String.valueOf(AccountCheck.getAccountName()))).append(" 님의 잔 액 \t:").append(AccountCheck.getBalance()).append(" 원").toString());
							System.out.println("=========================");
							System.out.println("※ 등록된 계좌 정보를 확인 하였습니다.\r");
						}
					}
			} else if (!Password.equals(account.getPassword())) {
				System.err.println("※ 비밀번호가 일치 하지 않습니다.");
				System.err.println("※ 확인 후 다시 이용 바랍니다.");
				return;
			}
		} catch (Exception e) {
			System.err.println("계좌 정보가 없습니다.\r");
		}
		return;
	}

	private static void Deporit() {
		System.out.println("[  입 금     ]");
		System.out.print("계좌 번호 : ");
		String AccountNumber = scan.next();
		System.out.print("비밀번호 입력 : ");
		String Password = scan.next();
		Account account = FindAccount_NP(AccountNumber, Password);
		if (account != null) {
			if (!Password.equals(account.getPassword())) {
				System.err.println("※ 비밀번호가 일치하지 않습니다.");
				System.err.println("※ 확인 후 이용 바랍니다.");
				System.out.println();
			} else {
				System.out.print("입금 금액 : ");
				long DepositAmount = scan.nextLong();
				System.out.println();
				account.Deporit_Balance(DepositAmount);
				System.out.println((new StringBuilder("※  ")).append(getTime()).append(account.getAccountName()).append("고객의 계좌에 ").append(DepositAmount).append("원이 입금이 완료 되었습니다.").toString());
				System.out.println((new StringBuilder("※  현재 잔고는 ")).append(account.getBalance()).append("원 입니다.\r").toString());
			}
		} else {
			System.err.println("※ 없는 계좌 입니다.");
			System.err.println("※ 계좌번호를 확인 후 다시 이용바랍니다.");
		}
	}

	private static void Withdrawal() {
		System.out.println("[   출 금     ]");
		System.out.print("계좌 번호 : ");
		String AccountNumber = scan.next();
		System.out.print("비밀번호 입력 :");
		String Password = scan.next();
		Account account = FindAccount_NP(AccountNumber, Password);
		if (!Password.equals(account.getPassword())) {
			System.err.println("※ 입력하신 비밀번호가 일치하지 않습니다.");
			System.err.println("※ 확인 후 이용바랍니다.");
		}
		if (account != null) {
			System.out.print("출금 금액 : ");
			long AmountWithdrawal = scan.nextLong();
			if (AmountWithdrawal > account.getBalance()) {
				System.err.println("※ 잔액이 부족하여 출금할 수 없습니다.");
			} else {
				account.Withdrawal_Balance(AmountWithdrawal);
				System.out.println((new StringBuilder("※ ")).append(getTime()).append(account.getAccountName()).append(" 고객의 계좌에 ").append(AmountWithdrawal).append("원이 출금이 완료 되었습니다.").toString());
				System.out.println((new StringBuilder("※ 현재 잔고는 ")).append(account.getBalance()).append(" 원 입니다.%r").toString());
			}
		} else {
			System.err.println("※ 없는 계좌입니다.");
			System.err.println("※ 계좌번호를 다시 확인 바랍니다.");
		}
	}

	private static void Transfer() {
		System.out.print("계좌 번호 : ");
		String AccountNumber = scan.next();
		System.out.print("비밀번호 입력 : ");
		String Password = scan.next();
		Account accountPw = FindAccount_NP(AccountNumber, Password);
		if (!Password.equals(accountPw.getPassword())) {
			System.err.println("※ 입력하신 비밀번호가 일치하지 않습니다.");
			System.err.println("※ 확인 후 이용 바랍니다.");
		}
		System.out.print("보내실 금액 : ");
		long TransferAmount = scan.nextLong();
		System.out.println("받으실 계좌번호 : ");
		String GetAccountNumber = scan.next();
		Account accountN = FindAccount_Nu(GetAccountNumber);
		if (accountBoolean(accountN)) {
			accountN.setBalance(TransferAmount, "입금");
			System.out.println("※ 이체가 정상적으로 완료되었습니다.");
			accountPw.setBalance(TransferAmount, "출금");
			System.out.println((new StringBuilder("※ 이체 후 ")).append(accountPw.getBalance()).append("원 잔액이 남았습니다.").toString());
		}
	}

	private static void CheckBalance() {
		System.out.println("     [   잔 액 조 회    ]");
		System.out.println("=========================");
		System.out.print("계좌 번호 : ");
		String AccountNumber = scan.next();
		Account account = FindAccount_Nu(AccountNumber);
		System.out.println((new StringBuilder("현재 잔액 : ")).append(account.getBalance()).append(" 원 있습니다.").toString());
		System.out.println();
	}

	private static void TransactionDetails() {
		Account ac = new Account();
		List lis = ac.getList();
		System.out.println("     [  거래 내역    ]");
		System.out.print("계좌 번호 : ");
		String AccountNumber = scan.next();
		System.out.print("비밀번호 입력 : ");
		String Password = scan.next();
		Account account = FindAccount_NP(AccountNumber, Password);
		if (accountBoolean(account)) {
			for (int i = 0; i < lis.size(); i++)
				System.out.println(lis.get(i));
		}
		System.err.println("※ 고장!!! 고객님 죄송합니다. 빠른 시일내로 복구하겠습니다.%n※ 아래 연락처로 연락바랍니다.");
		System.err.println("※ 담당자 : 010-677x-xxxx%n");
	}

	private static void Loan() {
		System.out.println("     [   대출 가능 조회(한도)    ]");
		System.out.println("계좌 번호 : ");
		String AccountNumber = scan.next();
		Account account = FindAccount_Nu(AccountNumber);
		long money = 500L;
		if (account.getBalance() > money) {
			System.out.println((new StringBuilder("현재 잔고 : ")).append(account.getBalance()).append("원에서 금리 30(%)이내 가능합니다.").toString());
			long loan = account.getBalance() / 30L;
			System.out.println((new StringBuilder("대출 가능 금액 : ")).append(loan).append(" 원 입니다.%n").toString());
			account.Deporit_Balance(account.getBalance() + loan);
			System.out.println((new StringBuilder("※ ")).append(loan).append("원을 받아 현재 잔고 : ").append(account.getBalance()).append("원이 있습니다.").toString());
			return;
		} else {
			System.err.println((new StringBuilder("※ ")).append(account.getAccountName()).append(" 고객은 대출을 하실 수 없습니다.").toString());
			return;
		}
	}

	private static void KaKaoSavings() {
		System.out.println("     [   카카오 적금    ]");
		System.out.print("적금하시 성명 : ");
		String AccountName = scan.next();
		Account account = FindAccount_Na(AccountName);
		System.out.println((new StringBuilder("▶")).append(AccountName).append("님~ 안녕하세요~%n").append(AccountName).append(" 고객의 계좌가 정상적으로 개설되었습니다.%n ").toString());
		System.out.println("===============");
		System.out.println("[ 카카오뱅크 계좌 계설 ]");
		System.out.println("===============");
		System.out.println("성 명 : ");
		String KakaoName = scan.next();
		System.out.println((new StringBuilder(String.valueOf(KakaoName))).append(" 님의 주민등록번호 입력 : ").toString());
		String KaoReNumber = scan.next();
		System.out.println("     [   타행계좌 인증    ]");
		System.out.println("타행계좌번호 입력 : ");
		String OA_number = scan.next();
		System.out.println("고객님. 죄송합니다.");
		System.out.println("수리 중입니다.");
	}

	private static Account FindPassword_P(String Password) {
		for (int i = 0; AccountArray[i] != null; i++)
			if (AccountArray[i].getPassword().equals(Password))
				return AccountArray[i];
		return null;
	}

	private static Account FindAccount_Nu(String AccountNumber) {
		for (int i = 0; AccountArray[i] != null; i++)
			if (AccountArray[i].getAccountNumber().equals(AccountNumber))
				return AccountArray[i];
		return null;
	}

	private static Account FindAccount_Na(String AccountName) {
		for (int i = 0; AccountArray[i] != null; i++)
			if (AccountArray[i].getAccountName().equals(AccountName))
				return AccountArray[i];
		return null;
	}

	public static boolean accountBoolean(Account Bl) {
		return Bl != null;
	}

	private static Account FindAccount_NP(String AccountName, String Password) {
		for (int i = 0; AccountArray[i] != null; i++)
			if (AccountArray[i].getAccountNumber().equals(AccountName)) {
				if (!AccountArray[i].getPassword().equals(Password)) {
					System.err.println("※ 입력하신 비밀번호가 일치하지 않습니다.");
					System.err.println("※ 확인 후 이용 바랍니다.");
				}
				return AccountArray[i];
			}
		return null;
	}

	public static Account[] getAccountArray() {
		return AccountArray;
	}

	public static void setAccountArray(Account accountArray[]) {
		AccountArray = accountArray;
	}

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

	public int getBalance() {
		return balance;
	}

	private static Account AccountArray[] = new Account[100];
	private static Scanner scan;
	private static ServerSocket serverSocket = null;
	static int balance;
	static int i = 1000;
	static {
		scan = new Scanner(System.in);
	}
}


BankApp

package BankAtm;

import java.util.Scanner;

public class BankApp {
	// private: 단일클래스 내부(클래스 내부에있는 메소드는 모든 멤버에 접근 가능), static: 동일한 클래스 모두 공유하는 필드
	private static Account[] accountArray = new Account[100];
	private Transaction[] transactions;
	private static Scanner scanner = new Scanner(System.in);
	static int money; // 돈
	static int balance; // 잔액
	static int i = 1000; // 왜?

	public static void main(String[] args) {
		boolean run = true;
		while (run) {
			System.out.println("       ☞ 안녕하세요. 무엇을 도와드릴까요? ☜");
			System.out.println("======================================");
			System.out.println("[1.계 좌  등 록]        [5. 이    체]        [9. 적  금 ]");
			System.out.println("[2.계 좌  조회]        [6. 잔액 조회]        [10. 종   료 ]");
			System.out.println("[3. 예      금]        [7. 거래  내역]");
			System.out.println("[4. 출      금]        [8.대출  조 회 ]");
			System.out.println("======================================");
			System.out.print("메뉴 선택: \r");
			int MenuSelect = scanner.nextInt();
			if (MenuSelect == 1) {
				createAccount(); // 계좌등록
			} else if (MenuSelect == 2) {
				accountList(); // 계좌목록
			} else if (MenuSelect == 3) {
				deposit(); // 예금
			} else if (MenuSelect == 4) {
				withdraw(); // 출금
			} else if (MenuSelect == 5) {
				transfer(); // 이체
			} else if (MenuSelect == 6) {
				Check_balance(); // 거래 내역
			} else if (MenuSelect == 7) {
				TDetails(null); // 잔액 조회
			} else if (MenuSelect == 8) {
				loan();// 대출
			} else if (MenuSelect == 9) {
				KakaoSavings(); // 적금
			} else if (MenuSelect == 10) {
				run = false; // 종료
			}
		}
		System.err.println("※프로그램이 종료 되었습니다.");
	} // main메소드 종료
	
	// 계좌등록 
	private static void createAccount() {
		for (int i = 0; i < accountArray.length; i++) {
			if (accountArray[i] == null) {
				System.out.println("        [  신규 계좌 등록     ]");
				System.out.println("=============================");
				System.out.println("        - 은 행 목 록 -");
				System.out.println("[1. 농   협]        [5. 하   나 ]");
				System.out.println("[2. 국   민]        [6. 우   리 ]");
				System.out.println("[3. 신   한]        [7.카카오  뱅크 ] ");
				System.out.println("[4. 기   업]        [8.기타 특수은행] ");
				System.out.println("=============================");
				System.out.print("은행 선택: ");
				String BankSelect = scanner.next();
				System.out.print("계좌 번호: ");
				String AccountNumber = scanner.next();
				if (findAccount(AccountNumber) != null) {
					System.err.println("※계좌번호가 중복됩니다.");
					return;
				}
				System.out.print("계좌 주: ");
				String AccountName = scanner.next();
				System.out.println(AccountName + " 고객의 주민등록번호 :");
				String ReNumber = scanner.next();
				System.out.print("새 비밀번호: ");
				String NewPassword = scanner.next();
				System.out.print("입금 금액: \r");
				long DepositAmount = scanner.nextLong();
				accountArray[i] = new Account(BankSelect, AccountNumber, AccountName, DepositAmount, NewPassword, ReNumber);
				System.out.println("====================================================================");
				System.out.println("※" + findAccount(AccountNumber).getName() + "님의 계좌가 정상적으로 개설되었습니다.");
				System.out.println("[은행 명: " + accountArray[0].getBankname() + "] , [계좌 주: " + accountArray[0].getName() + "] , [계좌 번호: " + accountArray[0].getNumber() + "] 입니다.");
				System.out.println("====================================================================");
				System.out.println("※위 내용을 확인 바랍니다.\r");
				return;
			}
		}
		System.err.println("※계좌를 개설 할 수 없습니다.");
	}

	// 계좌 조회 
	private static void accountList() {
		System.out.println("[  계 좌 조 회   ]");
		if (accountArray[0] == null) {
			System.err.println("※등록된 계좌가 없습니다.");
			return;
		}
		System.out.print("조회하실 계좌주 : ");
		String InquiryName = scanner.next();
		Account account = findAccount2(InquiryName);
		try {
			if (!InquiryName.equals(account.getName())) {
				System.out.println();
				System.out.println("※등록된 정보와 일치하지 않습니다.");
				System.out.println("※확인 후 다시 이용바랍니다.");
				return;
			} else {
				System.out.println(InquiryName + " 고객의 비밀번호 : \r");
				String password = scanner.next();
				if (password.equals(account.getpassword())) {
					for (int i = 0; accountArray[i] != null; i++) {
						Account accountList = accountArray[i];
						if (accountList != null) {
							System.out.println("=====================");
							System.out.println("     " + accountList.getName() + " 님의 계좌 정보");
							System.out.println("=====================");
							System.out.println("고객의  계좌 주 : " + accountList.getName());
							System.out.println(accountList.getName() + " 님의 은행명: " + accountList.getBankname());
							System.out.println(accountList.getName() + " 님의 계좌번호 : " + accountList.getNumber());
							System.out.println(
									accountList.getName() + " 님의  잔  액: " + accountList.getBalance() + "원" + "\r");
							System.out.println("※ 등록된 계좌 정보를 확인 하였습니다.\r");
						}
					}
				} else if (!password.equals(account.getpassword())) {
					System.out.println("※비밀번호가 일치하지 않습니다.");
					System.out.println("※확인 후 다시 이용 바랍니다.");
					return;
				}
			}
		} catch (Exception e) {
			System.out.println("계좌 정보가 없습니다\r");
		}
	}
	
	// 입금 
	private static void deposit() {
		System.out.println("[  입   금     ]");
		System.out.print("계좌 번호: ");
		String number = scanner.next();
		Account account = findAccount(number);
		System.out.println("비밀번호 입력 : ");
		String password = scanner.next();
		if (account != null) {
			if (!password.equals(account.getpassword())) {
				System.err.println("※비밀번호가 일치하지 않습니다.");
				System.err.println("※확인 후 이용 바랍니다.");
				System.out.println();
			} else {
				System.out.print("입금 금액 : ");
				long money = scanner.nextLong();
				System.out.println();
				account.setBalance(account.getBalance() + money);
				System.out.println("※" + account.getName() + " 고객" + money + "원이 입금이 완료 되었습니다.");
				System.out.println("※" + "현재 잔고는 " + account.getBalance() + "원 입니다.\r");
			}
		} else {
			System.err.println("※없는 계좌 입니다.");
			System.err.println("※계좌번호를 확인 후 다시 이용바랍니다.");
		}
	}

	// 출금 
	private static void withdraw() {
		System.out.println("[  출금      ]");
		System.out.print("계좌 번호: ");
		String number = scanner.next();
		Account account = findAccount(number);
		System.out.println("비밀번호 입력 : ");
		String password = scanner.next();
		if (!password.equals(account.getpassword())) {
			System.err.println("※입력하신 비밀번호가 일치하지 않습니다.");
			System.err.println("※확인 후 이용 바랍니다.");
		}
		if (account != null) {
			System.out.print("출금 금액: \r");
			long money = scanner.nextLong();
			if (money > account.getBalance()) {
				System.out.println("※잔액이 부족하여 출금할 수 없습니다.");
			} else {
				account.setBalance(account.getBalance() - money);
				System.out.println("※" + account.getName() + " 님 출금이 완료 되었습니다.");
				System.out.println("※" + "현재 잔고는 " + account.getBalance() + "원 입니다.\r");
			}
		} else {
			System.out.println("※없는 계좌 입니다.");
			System.out.println("※계좌번호를 다시 확인 바랍니다.");
		}
	}

	// 이체 
	private static void transfer() {
		System.out.println("은행 명: ");
		String bankName = scanner.next();
		System.out.print("계좌 번호: ");
		String number = scanner.next();
		Account account = findAccount(number);
		System.out.println("비밀번호 입력 : ");
		String password = scanner.next();
		Account account2 = findAccount(password);
		if (!password.equals(account.getpassword())) {
			System.err.println("※입력하신 비밀번호가 일치하지 않습니다.");
			System.err.println("※확인 후 이용 바랍니다.");
		}
		System.out.println("보내실 금액: ");
		long money3 = scanner.nextInt();
		for (int i = 0; i < accountArray.length; i++) {
			if (accountArray[i].getName().equals(bankName) && accountArray[i].getNumber().equals(number) && accountArray[i].getpassword().equals(password)) {
				accountArray[i].setBalance(accountArray[i].getBalance() - money3);
			}
		}
	}

	// 잔액 조회 
	private static void Check_balance() {
		System.out.println("     [  잔 액 조 회     ]");
		System.out.println("=========================");
		System.out.print("계좌 번호: ");
		String number = scanner.next();
		Account account = findAccount(number);
		System.out.println("현재 잔액: " + account.getBalance() + "원 있습니다.");
		System.out.println();
	}

	// 거래 내역(거래 내역시 필요 개인 정보 가 무엇이 있는지?) 
	private static void TDetails(Account t) {
		System.out.println("[ 거래 내역   ]");
		System.out.print("계좌 번호: ");
		String number = scanner.next();
		Account account = findAccount(number);
		System.out.println(account.getList());
		Transaction[] ts = t.getTransaction();
		for (int i = 0; i < t.getTotalTrans(); i++) {
			System.out.printf("은행: %5s %15d원 %5s, 거래일자 : %10s 거래시간 : 10s\n", ts[i].getBankName(), ts[i].getAmount(), ts[i].getTransType(), ts[i].getTransactionDate(), ts[i].getTransactionTime());
		}
	}

	// 대출 조회 
	private static void loan() {
		System.out.println("[   대출 가능 조회 (한도)    ]");
		System.out.print("계좌 번호: ");
		String number = scanner.next();
		Account account = findAccount(number);
		long money = 500;
		if (account.getBalance() > money) {
			System.out.println("현재 잔고: " + account.getBalance() + "원에서 금리 30(%)이내 가능합니다.");
			long loan = account.getBalance() / 30;
			System.out.println("대출 가능 금액 : " + loan + "원 입니다.\r");
			account.setBalance(account.getBalance() + loan);
			return;
		}
		System.err.println("※" + account.getName() + " 고객은 대출을 하실 수 없습니다.");
	}

	// 카카오 적금( 
	private static void KakaoSavings() {
		System.out.println("[  카카오 적금      ]");
		System.out.println("적금하실 성 명 : ");
		String SavingName = scanner.next();
		Account account = findAccount(SavingName);
		System.out.println(SavingName + "님\n안녕하세요\n" + SavingName + " 고객의 계좌가 정상적으로 개설되었습니다.\n ");
		System.out.println("===============");
		System.out.println("[ 카카오뱅크 계좌 계설 ]");
		System.out.println("===============");
		System.out.println("성 명: ");
		String KaName = scanner.next();
		System.out.println(KaName + " 님의 주민등록번호 입력 : ");
		String KaReNumber = scanner.next();
		System.out.println("핸드폰 번호(인증) : ");
		String KaPhoneNum = scanner.next();
		System.out.println("[타행계좌 인증]");
		System.out.println("타행계좌번호 입력 : ");
		String OA_number = scanner.next();
	}

	// 검색된 비밀번호 객체를 반환하는 메소드 
	private static Account findAccount2(String password) {
		for (int i = 0; accountArray[i] != null; i++) {
			if (accountArray[i].getName().equals(password)) {
				return accountArray[i];
			}
		}
		return null;
	}

	// 검색된 계좌 객체를 반환하는 메소드 
	private static Account findAccount(String name) {
		for (int i = 0; accountArray[i] != null; i++) {
			// 전달 받은 계좌번호와 저장되어 있는 계좌번호가 일치하면
			if (accountArray[i].getNumber().equals(name)) {
				return accountArray[i]; // 계좌(Account) 객체를 반환한다.
			}
		}
		return null; // 일치하는 계좌가 없으면 null을 반환한다.
	}
}


BankInfo - 이용자 계좌 정보를 저장하는 기능

package BankAtm;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class BankInfo implements Serializable {

	public BankInfo() {
	}

	public static void main(String args[]) throws IOException, ClassNotFoundException {
		bk = new BankServer();
		open();
		bk.start();
		save();
	}

	static void save() throws IOException {
		File file = new File("C:\\Users\\user\\Desktop\\myObjects.txt");
		FileOutputStream fos = new FileOutputStream(file);
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		oos.writeObject(BankServer.getAccountArray());
		oos.close();
		oos.close();
	}

	static void open() throws IOException, ClassNotFoundException {
		FileInputStream fi = new FileInputStream(new File("C:\\Users\\user\\Desktop\\myObjects.txt"));
		ObjectInputStream oi = new ObjectInputStream(fi);
		BankServer.setAccountArray((Account[]) oi.readObject());
		System.out.println(bk.toString());
		oi.close();
		fi.close();
	}

	private static BankServer bk;
}

제가 만들었지만 무슨의도로 어떻게 왜 만들었는지 조차 기억도 안나고 새로 만들기에 이만한 실력조차 안되서 이렇게 도움을 받아볼순 없을까 하여 문의드려요 


===========================================================================


제가 마지막까지 구현할려다 중단했던 기능 구현


거래 내역(TransactionDetails) 메소드과


 AtmClient에서 Server은행을 이용하고싶은데, 접속현황만 뜨고 ㅠㅠ

(계좌 발급, 계좌 조회....등등) 


코드도 너무 지저분하죠 ㅎㅎ ㅠㅠㅠㅠㅠ



(실례지만 가능하다면 원격같은걸을 통해서 같이 멘토해주시면 안될까요??)

0
0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.