import java.util.Date; import java.util.Scanner; public class Atm { // BankCard bankCard; // Human human; // 銀行存款金額 int cash; // 鍵盤錄入對象 Scanner input = new Scanner(System.in); /* * ATM的方法 */ // 插卡 public void pushCard(BankCard bankCard, Human human) { // 判斷是否被凍結 if (bankCard.isFro == false) { System.out.println("--------歡迎光臨工商銀行ATM系統----------"); System.out.println("請選擇操做:"); System.out.println("一、輸入密碼 二、退出取卡"); System.out.println("舒適提示:密碼輸入3次凍結改銀行卡,改卡將沒法繼續使用!!!"); int chose = input.nextInt(); switch (chose) { case 1: // 調用密碼驗證的方法 passWord(bankCard, human); break; case 2: // 調用退出方法 exitCard(); break; default: System.out.println("輸入的指令有誤"); break; } } else { System.out.println("對不起,您的卡被凍結,請聯繫髮卡銀行!"); } } // 顯示的菜單 public void trueMenu(BankCard bankCard, Human human) { while (true) { System.out.println("一、查看餘額 二、取款 三、存款 四、退出"); System.out.println("------------------------------------------"); int chose = input.nextInt(); switch (chose) { /* * 查看餘額 */ case 1: // 調用查看餘額的方法 balance(bankCard, human); break; /* * 取款 */ case 2: // 須要判斷銀行卡是不是工商卡 if (bankCard.isGSBank == true) { // 定義一個變量接受 取款方法返回的 取款總數 int get = getMoney(bankCard, human); // 帶入3個參數 使用打印憑證的方法 printGetData(bankCard, human, get); } else { System.out.println("舒適提醒:你的卡爲非本行卡,取款將收取3%的手續費!!!"); System.out.println("一、繼續 二、返回"); int chose1 = input.nextInt(); if (chose1 == 1) { int get = getMoneyFalse(bankCard, human); printGetData(bankCard, human, get); } else if (chose1 == 2) { break; } } break; /* * 存款 */ case 3: if (bankCard.isGSBank == true) { int get = saveMoney(bankCard, human); printSaveData(bankCard, human, get); } else { System.out.println("很抱歉,非本行卡沒法進行存款操做!"); } break; case 4: exitCard(); break; default: System.out.println("操做指令錯誤!"); break; } } } // 驗證密碼 public void passWord(BankCard bankCard, Human human) { // 頂一個變量接受 錯誤的次數 int count = 0; while (count < 3) { System.out.println("請輸入密碼:"); int pswd = input.nextInt(); if (bankCard.PassWord == pswd) { System.out.println("密碼輸入正確!請選擇繼續操做:"); trueMenu(bankCard, human); } else { count++; System.out.println("您輸入的密碼有誤,請從新輸入!"); } } System.out.println("您輸入的密碼錯誤次數超過3次,此卡將被凍結!"); bankCard.isFro = true; exitCard(); } // 退出取卡 public void exitCard() { System.out.println("操做結束,請取卡!"); System.exit(0); } // 打印取款憑條的方法 public void printGetData(BankCard bankCard, Human human, int get) { // 是否打印憑條 System.out.println("是否打印憑條?Y/N"); String choose = input.next(); if (choose.equals("y")) { System.out.println("*******打印憑條信息以下:***********"); // 打印用戶名: System.out.println("帳戶名:" + human.name); // 打印卡號信息 System.out.println("帳戶卡號:" + bankCard.bankCardNum); // 根據不一樣的銀行卡 if (bankCard.isGSBank == true) { // 打印取款金額 System.out.println("本次取款金額爲:" + get); } else { // 打印取款金額 System.out.println("本次取款金額爲:" + get); } // 打印操做的時間 @SuppressWarnings("deprecation") String time = new Date().toLocaleString(); System.out.println("操做時間爲:" + time); System.out.println("********************************************"); } else { trueMenu(bankCard, human); } } // 打印存款憑條的方法 public void printSaveData(BankCard bankCard, Human human, int get) { // 是否打印憑條 System.out.println("是否打印憑條?Y/N"); String choose = input.next(); if (choose.equals("y")) { System.out.println("*******打印憑條信息以下:******************"); // 打印用戶名: System.out.println("帳戶名:" + human.name); // 打印卡號信息 System.out.println("帳戶卡號:" + bankCard.bankCardNum); // 打印取款金額 System.out.println("本次存款金額爲:" + get); // 打印操做的時間 @SuppressWarnings("deprecation") String time = new Date().toLocaleString(); System.out.println("操做時間爲:" + time); System.out.println("********************************************"); } else { trueMenu(bankCard, human); } } /** * 取款 * * @param bankCard */ // 本行卡取款方法 public int getMoney(BankCard bankCard, Human human) { // 定義一個變量 用來返回 每次交易 的總額 int sumMoney = 0; while (true) { System.out.println("請輸入取款金額(50--2000):"); // 定義一個取款金額變量 int getNum = input.nextInt(); // 判斷 取款金額是否大於 帳戶餘額 if (getNum <= bankCard.money) { // 判斷ATM剩餘金額 if (cash > getNum) { // 判斷單筆金額是否大於2000 if (getNum <= 2000) { // 判斷單筆金額是否小於50 if (getNum >= 50) { // 計算帳戶剩餘餘額 bankCard.money -= getNum; sumMoney += getNum; // 計算ATM剩餘金額 cash -= getNum; // 取款結束 顯示帳戶餘額 balance(bankCard, human); System.out.println("恭喜你存款成功!\n一、繼續取款 二、返回"); int chose = input.nextInt(); if (chose == 1) { continue; } else if (chose == 2) { break; } } else { System.out.println("對不起,單筆金額不能低於50!請從新輸入:"); } } else { System.out.println("對不起,單筆金額不能超過2000!請從新輸入:"); } } else { System.out.println("對不起,ATM餘額不足!"); break; } } else { System.out.println("您的帳戶不足以支付本次取款!"); break; } } return sumMoney; } // 定義一個非本行卡的取款計算方法 public int getMoneyFalse(BankCard bankCard, Human human) { int sumMoney = 0; while (true) { System.out.println("請輸入取款金額(50--2000):"); // 定義一個取款金額變量 int getNum = input.nextInt(); // 判斷 取款金額是否大於 帳戶餘額 if (getNum <= bankCard.money) { // 判斷ATM剩餘金額 if (cash > getNum) { // 判斷單筆金額是否大於2000 if (getNum <= 2000) { // 判斷單筆金額是否小於50 if (getNum >= 50) { // 計算帳戶剩餘餘額 bankCard.money -= (getNum + getNum * 0.03); // 計算ATM剩餘金額 cash -= getNum; // 取款結束 sumMoney += getNum; // 顯示帳戶餘額 balance(bankCard, human); System.out.println("恭喜你存款成功!\n一、繼續取款 二、返回"); int chose1 = input.nextInt(); if (chose1 == 1) { continue; } else if (chose1 == 2) { break; } } else { System.out.println("對不起,單筆金額不能低於50!請從新輸入:"); } } else { System.out.println("對不起,單筆金額不能超過2000!請從新輸入:"); } } else { System.out.println("對不起,ATM餘額不足!"); break; } } else { System.out.println("您的帳戶不足以支付本次取款!"); break; } } return sumMoney; } /** * 存款 * * @param bankCard * @param human * @return */ public int saveMoney(BankCard bankCard, Human human) { int sumMoney = 0; while (true) { // 判斷ATM是否已滿50萬 if (cash < 500000) { System.out.println("請輸入你的存款金額(最少爲50,爲50的倍數):"); // 定義一個存款金額變量 int save = input.nextInt(); if (save % 50 == 0) { if (save >= 50 && save <= 5000) { // 計算帳戶剩餘餘額 bankCard.money += save; // 計算ATM剩餘金額 cash += save; // 取款結束 sumMoney += save; // 顯示帳戶餘額 balance(bankCard, human); System.out.println("恭喜你存款成功!\n一、繼續存款 二、返回"); int chose1 = input.nextInt(); if (chose1 == 1) { continue; } else if (chose1 == 2) { break; } } else { System.out.println("存款金額範圍:50~~5000"); } } else { System.out.println("請輸入50的倍數的存款金額!"); } } else { System.out.println("對不起,ATM已滿,沒法繼續存款:"); break; } } return sumMoney; } // 查看餘額 public void balance(BankCard bankCard, Human human) { System.out.println("您目前的帳戶餘額:" + bankCard.money); } // 我的取款 public void startATM(BankCard bankCard, Human human) { pushCard(bankCard, human); } } import java.math.BigInteger; public class BankCard { //卡號 BigInteger bankCardNum; //金額 int money; //密碼 int PassWord; //是不是工商卡 false=不是 true=是 boolean isGSBank; //是否被凍結 false=沒有 true=被凍結 boolean isFro; } public class Human { // 姓名 String name; // 銀行卡 BankCard bankCard; } import java.math.BigInteger; public class BankTest { public static void main(String[] args) { Atm atm = new Atm(); atm.cash =400000; BankCard bc = new BankCard(); Human hm = new Human(); hm.name = "Tom"; bc.bankCardNum =new BigInteger("62284804082487669876"); bc.isGSBank = true; bc.isFro = false; bc.PassWord = 123456; bc.money = 5000; atm.startATM(bc, hm); } }