0
点赞
收藏
分享

微信扫一扫

ATM机系统

1 ATM机系统

1.1 问题

在案例“ 银行卡系统(实现银联接口) ”基础上实现本案例,本案例要求实现中国农业银行的ATM系统,详细要求如下:


中国农业银行的ATM机对所有银联卡提供检查密码功能、取款功能以及查询余额功能。


如果为农行的卡,可以实现支付电话费功能。界面交互效果如下:


如果为农行的银行卡界面交互效果如图-1所示。

ATM机系统_解决方案

观察图-1可以发现,农业银行的卡可以实现缴费功能。如果为其它银行的银联卡,界面交互效果如图-2所示。

ATM机系统_sed_02

图-2

观察图-2可以发现,工商银行的卡不能实现缴费功能。


1.2 方案

要实现农行的ATM机系统,解决方案如下:


定义名为ABCATM的类,表示农行的ATM机系统。


在ABCATM类中,定义属性card,该属性的类型为UnionPay,表示不同银行的银联卡。


在ABCATM类中,定义方法insertCard,实现向ATM机插入银联卡的操作。


在ABCATM类中,定义方法outCard,实现从ATM机取出银联卡的操作。


在ABCATM类中,定义方法showBalance,实现查询余额功能,在该方法中调用银联接口UnionPay的getBalance方法即可。


在ABCATM类中,定义takeMoney方法,实现取款功能,在该方法中调用银联接口UnionPay的drawMoney方法即可。


在ABCATM类中,定义payTelBill方法,实现支付电话费功能,在该方法中,首先判断插入的银联卡是否为农行的卡, 如果是农行的卡,则调用农行接口ABC的payTelBill方法;否则,提示信息"您的卡不是农业银行卡,无法完成缴费"。


在ABCATM类中,定义allMenu方法,实现农行ATM机的菜单。


构建测试类,测试农行ATM机所实现的功能。

代码实现:


import java.util.Scanner;

/**建行的取款机应该有4中功能 1.getMoney  2.drawMoney  3.checkPwd  4.payTellBill(仅限建行卡使用) */

public class ABCATM {


   private UnionPay card;

   //插卡

   public void insertCard(UnionPay card){

       if(this.card==null){

           this.card=card;

       }

   }

   //取卡

   private void outCard(){

       card=null;

   }

   //查询余额

   private void showBalance(){

       System.out.println("你的卡上余额为:"+card.getMoney()+"元");

   }

   //取钱

   private void takeMoney(){

       Scanner scan =new Scanner(System.in);

       System.out.println("请输入取钱金额:");

       double number=Double.parseDouble(scan.next());

       if(card.drawMoney(number)){

           System.out.println("取钱操作成功!");

       }else{

           System.out.println("金额不足,取钱失败");

       }

   }

   //检查密码

   private void payTellBill(){

       if(card instanceof ABCImpl){

           Scanner scan = new Scanner(System.in);

           ABCImpl abc = (ABCImpl)card;

           System.out.println("请输入电话号码:");

           String pnoneNumber=scan.nextLine();

           System.out.println("请输入金额:");

           double number=Double.parseDouble(scan.next());

           if(abc.payTellBill(pnoneNumber,number)){

               System.out.println("支付成功");

           }else{

               System.out.println("支付失败");

           }

       }else{

           System.out.println("您的卡不是建行卡,不能支付电话费");

       }

   }

   //密码判断

   private boolean judgPwd(){

       Scanner scan = new Scanner(System.in);

       int count=0;

       for(;;){

           System.out.println("请输入密码:");

           String pwd=scan.nextLine();

           if(card.checkPwd(pwd)){

               System.out.println("密码输入正确!");

               return true;

           }else{

               count++;

           }

           if(count==3){

               System.out.println("密码输入3次错误,退出程序!");

               return false;

           }

       }

   }

   //显示菜单

   public void allMenu(){

       Scanner scan = new Scanner(System.in);

       if(judgPwd()){

           for(;;){

               System.out.println("请输入您的操作:1.查询余额     2.取款    3.支付话费    0.退出 ");

               int choice=Integer.parseInt(scan.next());

               switch(choice){

                   case 0:

                       System.out.println("退出程序!");

                       this.outCard();

                       return;

                   case 1:

                       showBalance();

                       break;

                   case 2:

                       takeMoney();

                       break;

                   case 3:

                       payTellBill();

                       break;

                   default:

                       System.out.println("非法操作!");

               }

           }

       }else{

           this.outCard();

           return;

       }

   }


}

最后我们写一个测试:

/**

* 测试接口多态

*/

public class TestATM {

   public static void main(String[] args) {

       ABCATM atm =new ABCATM();

       //ICBCImpl icbc = new ICBCImpl(3000, "123456");//工商银行的卡

       ABCImpl  abc  = new ABCImpl("123456", 1000);//农业银行的卡


       //atm.insertCard(icbc);

       atm.insertCard(abc);

       atm.allMenu();

   }

}

举报

相关推荐

Java实现ATM机系统

简易atm机

ATM机(进阶版)

ATM系统

JS实现简易ATM机

【无标题】关于ATM机

简单的ATM机代码实现

Java练习——ATM系统

14. ATM系统

0 条评论