ATM_tests
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的更多相关文章
随机推荐
- Gif开发笔记(一):gif介绍、编译和工程模板
前言 实现gif图片的解码和生成. Gif 简介 GIF格式的名称是Graphics Interchange Format的缩写,是在1987年由Compu Serve公司为了填补跨平 ...
- uni与小程序,vue的区别
标签区别 uni使用小程序的标签,vue使用web端的标签 标签名变化的: 标签描述\类别 vue uniapp 文本 span\font text 链接 a navigator/ router-li ...
- python web的一些常见技术面试笔试题
1. 三次握手四次挥手 tcp建立连接的过程是三次挥手,断开连接是4次挥手. 三次握手:建立连接时 a. 客户端发送syn=1 seq=k给服务器 b. 服务器接收到之后知道有客户端想建立连接, ...
- Docker部署Mysql8.0.20并配置主从复制
1. Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从) Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从) 2. 前提准备 # 创建主从数据库文件夹 ...
- Jmeter之分布式执行测试 (2)
一. 安装Java 1.1下载JDK 1) Windows安装jdk,下载完成后,双击安装 2) Linux解压:tar -zxvf jdk-8u74-linux-x64.gz 1.2 Java环境变 ...
- js下 Day10、尺寸位置属性
一.元素尺寸信息 元素.offsetWidth: 元素的外宽高 width + padding + border 元素.offsetHeight: 元素的外宽高 height + padding + ...
- CMake将生成的可执行文件保存到其他目录
在运行一些程序的时候,我们一般会把数据文件放在其他位置.而当在修改程序时,需要不断的修改代码,编译,执行.每次编译之后,都得将可执行文件复制到数据文件的目录. 这一问题有两种解决方法,一是直接在数据目 ...
- 工具-Redis-django存储session(99.6.4)
@ 目录 1.说明 安装 修改设置 2.测试 关于作者 1.说明 之前django的session默认是存在的数据库里面的,我们也可以把session存储在redis里面 安装 pip install ...
- mini-web框架-WSGI-mini-web框架-多进程,面向对象的服务器(5.1.1)
@ 目录 1.说明 2.代码 关于作者 1.说明 使用多进程 积极主动python多进程是复制资源,线程是共享变量 所以这个的socket要关两次,因为复制文件的时候,是把文件的fd给复制过去(fil ...
- kali2020创建root用户
自kali更新到2020版后,默认取消了root用户的登录权限.只能用普通用户登录,这样做的优点在于对于kali的新手,在不懂的部分命令的情况下对系统的损害有所降低,也就说安全性提高了.但是普通用户权 ...