ATM取款机练习程序

一、程序分析

自顶向下、逐步细化

按照程序执行的流程,将程序分解为若干个功能相对独立的函数(方法),每个函数(方法)负责某一功能,然后根据程序执行的流程,将函数(方法)组装(调用)。

分析程序中的数据,(全局数据、变量)全局变量指的在多个方法中使用的数据。

二、程序结构

显示一些欢迎信息;然后提示用户输入银行卡号和密码,进行身份的验证;如果验证失败,直接退出,输出提示信息。如果验证通过,显示主菜单、然后根据用户选择的操作执行相应的操作,执行完成后,再次返回到主菜单。

1.方法

显示欢迎信息

功能:在屏幕上输出一些信息“欢迎使用本ATM自助服务系统” 参数:不需要

返回值:无返回值身份验证

功能:让用户输入银行卡号和密码,进行判断,用户最多可以输入三次,三次全错非法用户,否则是合法用户

参数:无

返回值:如果验证通过,返回true;否则返回false 主菜单

功能:在屏幕上输出主菜单

1-------------查询

2-------------取款

3-------------存款 4-------------退出 参数:不需要

返回值:无返回值查询余额

功能:在屏幕上输出当前银行卡内的余额 参数:不需要

返回值:无返回值

存款

功能:实现存款功能,用户输入存款金额,然后执行存款操作(增加银行卡内余额,增加ATM机内余额),存 款结束后,显示当前余额 参数:不需要

返回值:无返回值取款

功能:实现取款功能,用户输入取款金额(金额必须为100的整倍数),然后判断用户卡内余额是否大于等于取款金额。如果大于等于取款金额,然后判断机内余额是否够用。

参数:不需要 返回值:无返回值

2.数据

银行卡号:String类型 默认值:123456789 银行卡密码:String类型 默认值:888888 卡内余额:float类型 默认值:50000元机内余额:int类型 默认值:40000元

三、程序实现

        if(n.equals(cardNumber) && p.equals(passWd)){                 return true;
}else{
System.out.println("银行卡号或密码有误,请重新输入");
}
}
return false;
}
/**
* 主菜单
*/
public void menu(){
System.out.println();
System.out.println("\t\tATM取款机主菜单");
System.out.println("1----------查询");
System.out.println("2----------取款");
System.out.println("3----------存款");
System.out.println("4----------退出");
System.out.println("请选择你的操作:");
}
/**
  • 查询余额

    */

    public void showMoney(){

    System.out.println("卡内余额:"+cardMoney+"元"); }

    /**
  • 取款操作

    */

    public void takeMoney(){

    int money=0;

    do{

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

    money=sc.nextInt();//接收用户从键盘输入的取款金额

    }while(money%100!=0);

    if(money>cardMoney){

    System.out.println("无法完成操作,卡内余额不足!!!");

    }else if(money>atmMoney){

    System.out.println("无法完成操作,机内余额不足!!!");

    }else{

    cardMoney=cardMoney-money;//取款,修改卡内余额

    atmMoney=atmMoney-money;//修改机内余额

    showMoney();//显示取款后的余额

    }

    }

    /**

    • 存款操作

      */

      public void saveMoney(){

      int money=0;

      do{

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

      money=sc.nextInt();

      }while (money%100!=0);

ATM_tests的更多相关文章

随机推荐

  1. Nmap学习使用指南

    本博客严重参考 Nmap使用指南1.0: https://github.com/scanfsec/penetration/blob/master/Nmap%E4%BD%BF%E7%94%A8%E6%8 ...

  2. 彻底搞懂js __proto__ prototype constructor

    在开始之前,必须要知道的是:对象具有__proto__.constructor(函数也是对象固也具有以上)属性,而函数独有prototype 在博客园看到一张图分析到位很彻底,这里共享: 刚开始看这图 ...

  3. if-then-else、loop控制语句在SIMD指令下的后端指令生成实现--笔记

    作者:Yaong 出处:https://www.cnblogs.com/yaongtime/p/14111134.html 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作者同意,必须保留此 ...

  4. filebeat输出结果到elasticsearch的多个索引

    基本环境: filebeat版本:6.5.4 (Linux,x86-64) elasticsearch版本:6.54   (一)需求说明 在一台服务器上有多个日志需要使用filebeat日志收集到el ...

  5. STL——容器(deque)deque 的插入 insert()

    deque.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置. 1 #include <iostream> 2 #include <d ...

  6. JVM虚拟机(三):Java内存区域

    运行时数据区   Java虚拟机再执行Java程序过程中会把它所管理的内存划分为若干个不同分工的数据区域. 程序计数器   程序计数器时一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示 ...

  7. Flink内存溢出

    Flink内存模型 此图是基于flink1.12版本. 一个taskmanager给了6g内存,可以有很清楚的看到各个部分占用的内存,还是实时变化的. 名词解释 组件 配置项 描述 Framework ...

  8. Flink集群监控

    prometheus+grafana 监控hadoop.yarn https://blog.csdn.net/c275090933/article/details/82108014 Prometheu ...

  9. kafka rebalance解决方案 -incremental cooperative协议和static membership功能

    apache kafka的重平衡(rebalance),一直以来都为人诟病.因为重平衡过程会触发stop-the-world(STW),此时对应topic的资源都会处于不可用的状态.小规模的集群还好, ...

  10. Access 数据库容量问题

    1.单个表的最大容量  2G. 2.单个表的最大条数 3.自动编号的最大数 4.数据库的最大容量 5.text备注形式的字段的最大数据量 6.ole对象字段的最大数据量,图片的最大大小 7.文本字段的 ...