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的更多相关文章
随机推荐
- python——sklearn完整例子整理示范(有监督,逻辑回归范例)(原创)
sklearn使用方法,包括从制作数据集,拆分数据集,调用模型,保存加载模型,分析结果,可视化结果 1 import pandas as pd 2 import numpy as np 3 from ...
- Spark流式状态管理(updateStateByKey、mapWithState等)
通常使用Spark的流式框架如Spark Streaming,做无状态的流式计算是非常方便的,仅需处理每个批次时间间隔内的数据即可,不需要关注之前的数据,这是建立在业务需求对批次之间的数据没有联系的基 ...
- 百度前端技术学院-基础-day22-24
第二十二天到第二十四天:JavaScript里面的居民们 task1 题目: <div> <label>Number A:<input id="radio-a& ...
- 性能测试平台nGrinder
ngrinder简介 ngrinder是NAVER(韩国大型互联网公司)开源的性能测试工具平台,直接部署成web服务,平台化,支持多用户使用,可扩展性好,可自定义plugin插件 开源地址:http: ...
- 电脑获取手机app内的scheme
做app开发,有时需要跳转打开外部的app应用,来促成引流或者分享等,这个时候就需要通过scheme跳转协议来完成. 使用scheme跳转外部app,就需要配置对应app的scheme,那这个sche ...
- dbeaver 驱动安装
一.背景: 在Windows 10 安装dbeaver数据库连接工具,点"测试连接"的时候出现报错如下: Error resolving dependencies Maven ...
- JavaSE22-Lambda表达式&方法引用
1.Lambda表达式 1.1 Lambda表达式的标准格式 1 (形式参数) -> {代码块} 形式参数:如果有多个参数,参数之间用逗号隔开:如果没有参数,留空即可 ->:由英文中画线和 ...
- springMVC项目中配置log4j.properties路径
log4j.properties不打到war包中,单独写到一个存放配置文件的文件夹中,在容器中将该文件夹放入classpath,在web.xml中可以如下配置: <context-param&g ...
- 5分钟教你在Linux下安装VMware
如果我们只有一台笔记本,又想要搭建一个小集群,怎么办?虚拟机帮你实现梦想,市面上较为常用的虚拟机软件有VMware.VirtualBox.Xen.KVM.hyper-v等,本文主要介绍如何在Linux ...
- 安装篇八:配置 Nginx 使其支持 MySQL 应用
配置说明 (让nginx MySQL(中间件)之间建立关系) 第一个里程: 编写nginx.php首页文件 第二个里程:重启nginx 第三个里程:访问网页测试 打开浏览器访问:http://47. ...