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的更多相关文章
随机推荐
- Panda 交易所热点关注:股权交易中心+区块链试点将开始
近期,Panda 交易所注意到,中国证监会已同意北京.上海等5家区域性股权市场参与区块链建设试点工作.Panda 交易所获悉的具体情况是,北京股权交易中心曾联合其他单位共同推出区域性股权市场中介机构征 ...
- block、inline、inline-block区别以及标签嵌套
1.block 将元素转为块元素,块元素占一行,可以设置宽和高. 2.inline 将元素转为行内元素,占一行,不可以设置宽和高. 3.inline-block 将元素设置为行内块元素,这时元素既可以 ...
- screw一键生成数据库文档
1. 简介 在项目开发和交付阶段,数据库文档是必不可少的.对于大型项目多个数据库几百甚至几千张表来说,手写数据库文档必然是耗时且痛苦的.因此需要一个插件自动生成文档. screw提供了多种文件 ...
- layui的基本使用
打开官网https://www.layui.com/下载这个框架 官网首页 下载到 layui 的最新版,它经过了自动化构建,更适合用于生产环境.目录结构如下 ├─css //css目录 │ │─mo ...
- Web服务器-正则表达式-小例子(3.1.2)
@ 目录 1.邮箱 2.手机号码 关于作者 1.邮箱 import re def main(): email = input("请输入一个邮件地址:") ret = re.matc ...
- MyBatis史上最全文章
老规矩,本篇文章 不做 MyBatis 的 编码讲解 ,只介绍 文章学习的一些优秀文章 重点在于不要循规蹈矩,教程 这样走,你不一定要按他这样走,按自己的方式来,学习效率会更高,网上的教程有很多,今天 ...
- 基于Python实现环形队列高效定时器
定时器Python实现代码 import time import redis import multiprocessing class Base: """ redis配置 ...
- 手把手教你使用Python轻松搞定发邮件
前言 现在生活节奏加快,人们之间交流方式也有了天差地别,为了更加便捷的交流沟通,电子邮件产生了,众所周知,电子邮件其实就是客户端和服务器端发送接受数据一样,他有一个发信和一个收信的功能,电子邮件的通信 ...
- python按位操作以及进制转换
a = raw_input() b = raw_input() c1 = int(str(a), 2)#2进制转化为10进制 c2 = int(str(b), 2) c = c1 ^ c2#按位异或 ...
- NET 5 原子操作、接口限流Semaphore以及性能测试JMeter
一.Semaphore 限流也可使用令牌桶算法+redis 1.Semaphore定义 类似互斥锁,但它可以允许多个线程同时访问一个共享资源 通过使用一个计数器来控制对共享资源的访问,如果计数器大于0 ...