实现ATM取款机功能

需求分析:
说明:实现ATM部分核心功能:
(1) 登录模块
1) 根据提示输入密码,成功后进入主菜单,失败给出提示信息。
2) 用户只允许三次输入密码的机会。
(2) 查询余额模块
1)按账户查询,显示帐户金额。
(3) 取款模块
1) 用户输入取款金额
2) 当取款金额小于账户余额,允许取款,否则提示金额不足。
(4) 存款模块
1) 用户输入存款金额
2) 将输入金额追加到账户金额中。
实现思路
1) ATM机的欢迎界面
2) 插入银行卡
3) 输入密码
4) 判断密码是否正确,
5) 如果不正确,提示重新输入密码,有三次输入密码的机会
6) 如果正确进入操作界面,有:1查询、2存款、3取款和4退卡四个功能
7) 输入1,查询余额
8) 输入2,进入存款功能,提示输入存款金额,然后保存存款,回到操作页面
9) 输入3,进入取款功能,提示输入取款金额,判断余额是否充足,如果充足则取款成功,保存余额,回到操作页面;如果余额不足,提示余额不足,回到操作页面
10) 输入4,退出ATM机。

(3) 程序代码

卡类:
public classBankCard {
private String cardId;
private String name;
private int pwd;
private double moneyNum;

     public BankCard(String cardId, Stringname, int pwd, double moneyNum) {
              super();
              this.cardId = cardId;
              this.name = name;
              this.pwd = pwd;
              this.moneyNum = moneyNum;
     }
     public String getCardId() {
              return cardId;
     }
     public void setCardId(String cardId) {
              this.cardId = cardId;
     }
     public String getName() {
              return name;
     }
     public void setName(String name) {
              this.name = name;
     }
     public int getPwd() {
              return pwd;
     }
     public void setPwd(intpwd) {
              this.pwd = pwd;
     }
     public double getMoneyNum() {
              return moneyNum;
     }
     public void setMoneyNum(doublemoneyNum) {
              this.moneyNum = moneyNum;
     }

     public String toString(){
              return "卡号为:"+cardId+"  户主姓名:"+name+"  卡内金额:"+moneyNum;
     }

}

ATM机类:
import java.util.Scanner;

public class ATM{
Scanner s=new Scanner(System.in);//获得控制台的输入
BankCard card;//记录当前插入的银行卡

     public void welcome(){//欢迎界面
              System.out.println("欢迎使用ATM自动取款机!");
              System.out.println("请插卡......");
     }

     /**
      * 插入银行卡
      * @paramcard
      */
     public void insertCard(BankCard card){
              this.card=card;//通过card属性,保存当前插入的卡
              System.out.println("请输入密码......");
              checkPwd();//验证密码
     }

     /** 检查密码是否正确 */
     public void checkPwd(){
              for(int i=0;i<3;i++){//循环输入密码,三次机会
                      int pwd=s.nextInt();//获得控制台输入的密码
                      if(pwd==card.getPwd()){//用输入的密码和卡固有的密码比较是否一致,如果一致进入操作页面
                               chooseOption();
                      }else{//如果不一致,提示密码错误,提示重新输入密码,进入下一次输入密码的验证
                               System.out.println("密码错误!请重新输入......");
                      }
              }
     }

     /** 操作页面 */
     public void chooseOption(){
              System.out.println("请根据以下提示选择操作......");
              System.out.println("1、查询   2、存款    3、取款    4、退卡");
              int num=s.nextInt();//输入操作选项
              switch(num){
                      case 1:chaxun();break;
                      case 2:cunkuan();break;
                      case 3:qukuan();break;
                      case 4:quitCard();break;
                      default:
                               System.out.println("输入错误,请重新选择!");
                               chooseOption();
              }
     }               
     //查询的方法
     public void chaxun(){
              System.out.println("您当前的卡内金额为:"+card.getMoneyNum());
              chooseOption();
     }

     //取款的方法
     public void qukuan(){
              System.out.println("请输入您取款金额,只能是100的倍数.....");
              int qk=s.nextInt();//获得取款金额
              if(qk>card.getMoneyNum()){
                      System.out.println("您卡内余额不足,请重新输入......");
                      qukuan();
              }else{//余额充足,顺利取款
                      card.setMoneyNum(card.getMoneyNum()-qk);
                      chooseOption();
              }
     }

     //存款的方法
     public void cunkuan(){
              System.out.println("请输入存款金额!");
              int ck=s.nextInt();//获得存款金额
              card.setMoneyNum(card.getMoneyNum()+ck);
              chooseOption();
     }

     //退出的方法
     public void quitCard(){
              System.out.println("请保管好您的卡片,欢迎下次光临!");
              System.exit(1);//退出JVM,结束程序
     }

}
测试类:
public classTestATM {
public static void main(String[] args) {
BankCardcard=newBankCard(“NO0001”,”张三”,666,900000);//创建一张银行卡
ATMatm=new ATM();//实例化一台ATM机
atm.welcome();//首先,进入欢迎界面
atm.insertCard(card);//插卡,开始操作
}
}

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值