JAVA - ATM機程式

來源:互聯網
上載者:User

標籤:bre   調用   menu   ble   ext   pack   功能   system.in   介面   

    ATM機程式     

UnionPayTest.java

package oo.day06.work;public class UnionPayTest {}interface UnionPay{ //銀聯結口    public double getBalance(); //查詢餘額    public boolean drawMoney(double number); //取款    public boolean checkPwd(String input); //檢查密碼}interface ABC extends UnionPay{ //農行介面    /**支付電話費*/    public boolean payTelBill(String phoneNum,double sum); }interface CCB extends UnionPay {    /**增加的支付燃氣費功能*/    public void payGasBill(double number);}class ABCImpl implements ABC{ //農行卡    private double money;    private String pwd;        public ABCImpl(double money,String pwd){        this.money = money;        this.pwd = pwd;    }        @Override    public double getBalance() {                return money;    }    @Override    public boolean drawMoney(double number) {        if(number <= money){            money -=number;            return true;        }        return false;    }    @Override    public boolean checkPwd(String input) {        if(pwd.equals(input))            return true;        else            return false;    }    public boolean payTelBill(String phoneNum,double sum){        if(sum <= money){            money -=sum;            return true;        }        return false;    }}/** * 類:用於描述建設銀行實際發行的卡片 * 該卡片具有的功能來自於繼承的已經符合銀聯規範的CCB介面 */class CCBImpl implements CCB {    private double money;    private String pwd;        public CCBImpl(double money,String pwd){        this.money = money;        this.pwd = pwd;    }        @Override    public double getBalance() {                return money;    }    @Override    public boolean drawMoney(double number) {        if(number <= money){            money -=number;            return true;        }        return false;    }    @Override    public void payGasBill(double number) {        if(number < money){            money-=number;        }    }    @Override    public boolean checkPwd(String input) {        if(pwd.equals(input))            return true;        else            return false;    }}

TestUnionPay.java  (用於測試上面的程式使用)

package oo.day06.work;import java.util.Scanner;/** * 測試實現介面後的類的方法調用 */public class TestUnionPay {    public static void main(String[] args) {        //ICBCImpl icbc = new ICBCImpl(2000,"123456");        //ICBC icbc = new ICBCImpl(2000,"123456");        //UnionPay icbc = new ICBCImpl(2000,"123456");        //UnionPay icbc = new ABCImpl(2000,"123456");        UnionPay ccb = new CCBImpl(2000,"123456");    //這裡用了“向上造型”        Scanner input = new Scanner(System.in);        System.out.println("請輸入密碼:");        if(ccb.checkPwd(input.next())){            System.out.println("請輸入金額:");            double num = Double.parseDouble(input.next());            if(ccb.drawMoney(num)){                System.out.println("取錢成功,卡餘額為:"+ccb.getBalance());            }            else{                System.out.println("取錢失敗");            }        }else{            System.out.println("密碼錯誤");        }    }}

ABCATMTest.java

package oo.day06.work;import java.util.Scanner;public class ABCATMTest {}/** * ABCATM機類,用於描述類比插入銀行卡後的操作 */class ABCATM {    private UnionPay  card;        public void insertCard(UnionPay userCard){        if (card == null) {            card = userCard;        }    }        private void outCard(){        card = null;    }        private void showBalance(){        System.out.println("當前餘額是:" + card.getBalance());    }        private void takeMoney(){        Scanner input = new Scanner(System.in);                System.out.println("請輸入取款數目:");        double  number = Double.parseDouble(input.next());        if(card.drawMoney(number)){            System.out.println("取款成功");        }else{            System.out.println("取款失敗");        }    }        private void payTelBill(){        Scanner input = new Scanner(System.in);            if(card instanceof ABC){            ABC abcCard = (ABC)card;          //這裡用了“向下造型”。            System.out.println("請輸入電話 號碼:");            String telNum = input.next();            System.out.println("請輸入繳費額:");            double sum = Double.parseDouble(input.next());            if(abcCard.payTelBill(telNum,sum)){                System.out.println("繳費成功");            }else{                System.out.println("繳費失敗");            }                                        }else{            System.out.println("您的卡不是農業銀行卡,無法完成繳費");        }    }    public void allMenu(){        Scanner input = new Scanner(System.in);                    System.out.println("請輸入密碼:");        String pwd = input.next();                if(card.checkPwd(pwd)){            System.out.println("請選擇功能:\n 1.查看餘額   2.取款   3.繳電話費");            int choice = Integer.parseInt(input.next());            switch(choice){                case 1:                    showBalance();                    break;                case 2:                    takeMoney();                    break;                case 3:                    payTelBill();                                        break;                default:                    System.out.println("非法輸入");            }        }else{            System.out.print("密碼錯誤");        }        this.outCard();    }}

TestATM.java (用於測試上面的程式使用)

package oo.day06.work;public class TestATM {    public static void main(String[] args) {        ABCATM atm =new ABCATM();//        ICBCImpl icbc = new ICBCImpl(3000, "123456");//工商銀行的卡        ABCImpl  abc  = new ABCImpl(1000, "123456");//農業銀行的卡//        CCBImpl  abc  = new CCBImpl(1000, "123456");//農業銀行的卡                                        //atm.insertCard(icbc);        atm.insertCard(abc);        atm.allMenu();    }}

 

JAVA - ATM機程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.