ATM簡易小程序

Account賬戶類:

package org.mobiletrain;

/**
 * 銀行賬戶
 * @author apple
 *
 */
public class Account {

    private String id;        //賬號
    private double balance;  //余額
    private String password;//密碼
    
    /**
     * 構造器
     * @param id
     */
    public Account(String id,String password,double balance){
        this.id = id;
        this.password = password;
        this.balance = balance;
    }
    
    /**
     * 驗證身份是否有效
     * @param password 密碼
     * @return 密碼匹配返回true埃仪,否則返回false
     */
    public boolean isValid(String password){
        return this.password.equals(password);
    }
    
    /**
     * 存錢
     * @param money 存款金額
     */
    public void deposit(double money){
        balance += money;
    }
    
    /**
     * 取錢
     * @param money 取款金額
     * @return 取款成功返回true乙濒,否則返回false
     */
    public boolean withdraw(double money){//取錢
        if (money <= balance) {
            balance -= money;
            return true;
        }
        return false;
    }
    
    /**
     * 獲取賬戶ID
     * @return 賬戶ID
     */
    public String getId() {
        return id;
    }
    
    /**
     * 獲取賬戶余額
     * @return 賬戶余額
     */
    public double getBalance() {
        return balance;
    }
    
    /**
     * 修改密碼
     * @param password 密碼
     */
    public void setPassword(String password) {
        this.password = password;
    }
    
}

ATM類:

package org.mobiletrain;

/**
 * ATM機
 * @author apple
 *
 */
public class ATM {

    private Account currentAccount = null;
    //用一個數(shù)組模擬銀行的數(shù)據(jù)庫系統(tǒng) 預先保存若干個銀行賬戶
    private Account[] accountsArray= {
            new Account("11223344","123123",1200),
            new Account("22334455","123456",3000),
            new Account("33445566","666666",5000)
    };
    
    /**
     * 讀卡
     * @param account 銀行賬戶
     * @return 讀卡成功返回true,否則返回false
     */
    public boolean readCard(String id){
        for (Account account : accountsArray) {
            if (account.getId().equals(id)) {
                currentAccount = account;
                return true;
            }
        }
        return false;
    }
    
    /**
     * 驗證身份
     * @param password 密碼
     * @return 驗證通過返回true贵试,否則返回false
     */
    public boolean verify(String password){
        if (currentAccount != null) {
            return currentAccount.isValid(password);
        }
        return false;
    }
    
    /**
     * 查詢余額
     * @return 當前余額
     */
    public double showBalance(){
        return currentAccount.getBalance();
    }
    
    /**
     * 存錢
     * @param money
     */
    public void deposit(int money){
        currentAccount.deposit(money);
    }
    
    /**
     * 取錢
     * @param money
     * @return 
     */
    public boolean withdraw(int money){
        return currentAccount.withdraw(money);
    }
    
    /**
     * 修改密碼
     * @param newPassword 新密碼
     */
    public void changePassword(String newPassword){
        currentAccount.setPassword(newPassword);
    }
    
    /**
     * 退卡
     */
    public void quitCard(){
        currentAccount = null;
    }
    
    /**
     * 轉賬
     * @param otherId 轉入賬號
     * @param money 轉賬金額
     * @return 轉賬成功返回true琉兜,否則返回false
     */
    public boolean transfer(String otherId,double money){
        for (Account account : accountsArray) {
            if (account.getId().equals(otherId)) {
                Account otherAccount = account;
                if (currentAccount.getBalance() >= money) {
                    currentAccount.withdraw(money);
                    otherAccount.deposit(money);
                    return true;
                }
                else {
                    return false;
                }
            }
        }
        return false;
    }
}

ATM測試類:

package org.mobiletrain.test;

import java.util.Scanner;
import org.mobiletrain.ATM;

public class ATMtest {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);             
        ATM atm = new ATM();
        boolean isRunning = true;
        while(isRunning){
            System.out.println("歡迎使用XX銀行ATM機");
            System.out.print("請插入銀行卡:");
            String id = input.next();
            atm.readCard(id);
            if (atm.readCard(id)) {
                int counter = 0;
                boolean isCorrect = false;
                do{
                counter += 1;
                System.out.print("請輸入密碼:");
                String password = input.next();
                isCorrect = atm.verify(password);
                }while(counter < 3 && !isCorrect);
                if (isCorrect) {
                    boolean flag = true;
                    while(flag){
                        System.out.println("1.查詢余額");
                        System.out.println("2.存款");
                        System.out.println("3.取款");
                        System.out.println("4.轉賬");
                        System.out.println("5.修改密碼");
                        System.out.println("6.退卡");
                        int choice;
                        do {
                            System.out.print("請選擇:");
                            choice = input.nextInt();
                        } while (choice < 1 || choice > 6);
                        switch (choice) {
                        case 1: 
                            System.out.println("賬戶余額:" + atm.showBalance());
                            break;
                        case 2:{//一堆花括號就構成了一個作用域(scope)
                                //在某個作用域中定義的變量只在該作用域中生效
                            System.out.print("請放入鈔票:");
                            int money = input.nextInt();
                            atm.deposit(money);
                            System.out.println("存款成功凯正!");
                            break;
                        }
                        case 3:{
                            System.out.print("請輸入或選擇取款金額:");
                            int money = input.nextInt();
                            if (atm.withdraw(money)) {
                                System.out.println("請取走你的鈔票");
                            }
                            else {
                                System.out.println("余額不足!");
                            }
                            break;
                        }
                        case 4:{
                            System.out.print("請輸入轉入賬號:");
                            String otherId = input.next();
                            System.out.print("請輸入轉賬金額:");
                            double money = input.nextDouble();
                            if (atm.transfer(otherId, money)) {
                                System.out.println("轉賬成功");
                            }
                            else {
                                System.out.println("轉賬失敗豌蟋,請檢查轉入賬號和賬戶余額是否正確!");
                            }
                            break;
                        }
                        case 5:
                            System.out.print("請輸入新密碼:");
                            String newPwd = input.next();
                            System.out.print("請再輸入一次:");
                            String rePwd = input.next();
                            if (newPwd.equals(rePwd)) {
                                atm.changePassword(newPwd);
                                System.out.println("密碼已修改");
                            }
                            else {
                                System.out.println("兩次密碼輸入不一致.");
                            }
                            break;
                        case 6:
                            System.out.println("請取走你的卡片");
                            flag = false;
                            break;
                        }
                    }
                }
                else {
                    System.out.println("輸入密碼錯誤次數(shù)超過3次廊散,你的卡被回收");
                }
            }
        }
        input.close();
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市梧疲,隨后出現(xiàn)的幾起案子允睹,更是在濱河造成了極大的恐慌,老刑警劉巖幌氮,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缭受,死亡現(xiàn)場離奇詭異,居然都是意外死亡该互,警方通過查閱死者的電腦和手機米者,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宇智,“玉大人蔓搞,你說我怎么就攤上這事∷骈伲” “怎么了喂分?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長机蔗。 經(jīng)常有香客問我蒲祈,道長,這世上最難降的妖魔是什么萝嘁? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任梆掸,我火速辦了婚禮,結果婚禮上酿愧,老公的妹妹穿的比我還像新娘沥潭。我一直安慰自己,他們只是感情好嬉挡,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汇恤,像睡著了一般庞钢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上因谎,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天基括,我揣著相機與錄音,去河邊找鬼财岔。 笑死风皿,一個胖子當著我的面吹牛河爹,可吹牛的內容都是我干的。 我是一名探鬼主播桐款,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼咸这,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了魔眨?” 一聲冷哼從身側響起媳维,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遏暴,沒想到半個月后侄刽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡朋凉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年州丹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杂彭。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡当叭,死狀恐怖,靈堂內的尸體忽然破棺而出盖灸,到底是詐尸還是另有隱情蚁鳖,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布赁炎,位于F島的核電站醉箕,受9級特大地震影響,放射性物質發(fā)生泄漏徙垫。R本人自食惡果不足惜讥裤,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姻报。 院中可真熱鬧己英,春花似錦、人聲如沸吴旋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荣瑟。三九已至治拿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笆焰,已是汗流浹背劫谅。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捏检。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓荞驴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贯城。 傳聞我的和親對象是個殘疾皇子熊楼,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容