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. golang GMP goroutine调度器

    Goroutine可以动态的伸缩栈的大小,最小2-4kb,最大1GB

  2. 【题解】CIRU - The area of the union of circles [SP8073] \ 圆的面积并 [Bzoj2178]

    [题解]CIRU - The area of the union of circles [SP8073] \ 圆的面积并 [Bzoj2178] 传送门: \(\text{CIRU - The area ...

  3. 颜色直方图(Color Histogram)

    数字成像中的颜色直方图是对给定图像中具有相同颜色的像素的频率进行计算的一种方法.这种方法通常被转换成一个图形,以帮助分析和调整图像中的平衡.几乎所有的照片编辑软件和大量的数码相机都具有颜色直方图的查看 ...

  4. 计算机网络——HTTP知识点整理

    1.HTTP简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使网络传输减少.它 ...

  5. ss命令结合zabbix对socket做监控

    本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 最近天冷了,socket也出问题了,一直没有做监控,现在就把监控加起来,目前我们使用的有z ...

  6. SharePoint Online之通过JSOM发送邮件

    我们在SharePoint 开发过程中,经常会用到发邮件的功能,例如向Manager提醒有需要待办任务等等场景. 图片来自网站,如侵权,速删 一般我们会采用Workflow或者Power Automa ...

  7. [日常摸鱼]bzoj1083[SCOI2005]繁忙的都市-最小生成树

    我也不知道为什么我要来写这个-怕是写水题写上瘾了(bu #include<cstdio> #include<algorithm> #define rep(i,n) for(re ...

  8. 第一章: 初始JVM

    跟很多人一样,我一开始接触 Java 虚拟机只是因为面试需要用到,所以硬着头皮看看.所以很多人对于为什么要学虚拟机这个问题,他们的答案都是:因为面试. 因为装逼 但我经过了几年的学习和实战,我发现其实 ...

  9. MySQL高可用(二)主备延时如何解决?

    从上篇文章我们知道主备同步是依赖于 binlog,主库负责生产 binlog,备库负责消费 binlog,从而实现主备同步. 今天我们来学习一下主备同步里的一个重点的问题:主备延时. 主备延时,简单来 ...

  10. 制作3D小汽车游戏(上)

    之前一段时间家里和公司的事太多,一直没有时间写博客,最近腾出一段时间,看了一遍官方的examples,收货颇多,想整理一点东西出来,又苦于没有好的东西,three写点东西真是太难了.好吧,今天郭先生就 ...