ATM机需求描述如下:

假设一个简单的ATM机的取款过程为:
  首先提示用户输入密码(password),假设默认密码为111111,最多只能输入3次,
  超过3次则提示用户“密码错误,请取卡”,结束交易。
 
  如果用户密码正确,再提示用户选择金额(amount),
  “请输入0到6中任意数字选择对应钱数:0手动输入金额,1100元, 2300元,
   3500元, 41000元, 53000元, 65000元”。
 
  输入数字如果错误,提示“输入错误,是否继续 Y/N”,选择Y重新提示输入钱数编号,
  选择N提示“输入错误,请取卡!”。选择数字为1到6,打印对应钱数,
  并提示“是否继续 Y/N”。选择数字0,ATM机只能输出100元纸币,
  自定义钱数要求最低为100元,最高为1000元。如果用户输入的金额符合上述要求,
  则打印输出用户取的钱数,并提示“取款完成,是否继续Y/N”;否则输出一句话“金额错误,
  是否继续 Y/N”,如果用户输入Y,提示用户重新选择取款金额,如果用户输入 N,
  打印“交易取消,请取卡!”
 
  ps:取款成功后,应该提示用户是否继续,总取款金额不能超过2万

 <!DOCTYPE html>
 <html>

     <head>
         <meta charset="UTF-8">
         <title></title>
         <script type="text/javascript">
             ! function() {
                 //判断密码是否正确
                 var isPwdTrue = false;
                 for(var i = 1; i <= 3; i++) {
                     var pwd = prompt("请输入密码:");
                     if(pwd == 111111) {
                         isPwdTrue = true;
                         break;
                     } else {
                         alert("密码输入有误!");
                     }
                 }
                 if(isPwdTrue == false) {
                     alert("密码错误三次!请取卡!");
                     return;
                 }

                 // 进行取款操作
                 var money = 0;
                 var moneySum = 0;
                 while(true) {

                     console.log("请输入0到6中任意数字选择对应钱数:");
                     console.log("0 手动输入金额,1 100元, 2 300元,3 500元, 4 1000元, 5 3000元, 6 5000元");
                     var num = parseInt(prompt("请输入操作序号:"));

                     switch(num) {
                         case 1:
                             money = 100;
                             alert("取款:" + money);
                             break;

                         case 2:
                             money = 300;
                             alert("取款:" + money);
                             break;

                         case 3:
                             money = 500;
                             alert("取款:" + money);
                             break;

                         case 4:
                             money = 1000;
                             alert("取款:" + money);
                             break;

                         case 5:
                             money = 3000;
                             alert("取款:" + money);
                             break;

                         case 6:
                             money = 5000;
                             alert("取款:" + money);
                             break;

                         case 0:
                             mon = parseInt(prompt("请输入取款金额:"));
                             if(mon % 100 == 0 && mon >= 100 && mon <= 1000) {
                                 money = mon;
                                 alert("取款金额为:" + mon + "元");
                                 break;
                             }

                         default:
                             alert("输入错误");
                             break;

                     }

                     if(money > 0) {
                         if(moneySum + money < 20000) {
                             moneySum += money;
                             console.log("本次取款金额为" + money + "共取款" + moneySum);

                         } else if(moneySum + money > 20000) {
                             console.log("取款失败,限取20000");
                             return;
                         } else {
                             moneySum += money;
                             console.log("本次取款金额为" + money + "共取款" + moneySum);
                             return;
                         }
                     }

                     while(true) {
                         var isGo = prompt("是否继续?(Y/N)");
                         if(isGo == "Y" || isGo == "y") {
                             break;
                         } else if(isGo == "N" || isGo == "n") {
                             console.log("本次取款结束,请退卡");
                             return;
                         } else {
                             console.log("输入错误");
                             continue;
                         }
                     }

                 }

             }();
         </script>
     </head>

     <body>
     </body>

 </html>

使用JavaScript实现ATM取款机的更多相关文章

  1. 大话JS面向对象之开篇万物皆对象------(ATM取款机引发的深思)

    一,总体概要 OO(面向对象)概念的提出是软件开发工程发展的一次革命,多年来我们借助它使得很多大型应用程序得以顺利实现.如果您还没有掌握并使用OO进行程序设计和开发,那么您无疑还停留在软件开发的石器时 ...

  2. Oracle实战训练——ATM取款机业务

    ATM取款机的数据库模拟开发和实战总结 一.ATM实战开发的简介. 学习了几天的Oracle,开始着手用数据库PL/SQL语言做一个简单的ATM取款机业务,主要是为了巩固数据库的知识,并非真正的去实现 ...

  3. 第一周:设计一个简易ATM取款机简易程序(2)

    1.了解用户对ATM取款机功能需求如下: 2.新建一个login函数使用for循环方法和if选择方法编写登陆界面用来及设置ATM内用户的金额和取款机内的金额: 3.使用新建函数方法及if选择方法编写登 ...

  4. ATM取款机的数据库模拟开发和实战总结

    一.ATM实战开发的简介. 学习了几天的Oracle,开始着手用数据库PL/SQL语言做一个简单的ATM取款机业务,主要是为了巩固数据库的知识,并非真正的去实现高端的业务.有兴趣的可以看看,希望对同胞 ...

  5. ATM取款机模拟——数据结构课设

    今天帮人写的第二篇课设 . ;-) 机智的窝 要求:大概说一下吧,就是要创建一个用户(初始化一账户),模拟ATM的业务(取款,100的整数倍,改密               码,查剩余金额.等等,各 ...

  6. LinuxC语言实现ATM取款机实验Socket

    链接:https://pan.baidu.com/s/1sZt4qhYc6CDJVpoJHbtw-Q 提取码:53ot 复制这段内容后打开百度网盘手机App,操作更方便哦 本实验用的是Centos7t ...

  7. Linux下C语言实现ATM取款机,消息队列版本

    链接:https://pan.baidu.com/s/1oBavXBuZul7ZAEBL1eYfRA 提取码:ffhg Mybank ATM取款机实验,消息队列实现本实验用的是Centos71.在服务 ...

  8. 设计模式(十二):通过ATM取款机来认识“状态模式”(State Pattern)

    说到状态模式,如果你看过之前发布的重构系列的文章中的<代码重构(六):代码重构完整案例>这篇博客的话,那么你应该对“状态模式”并不陌生,因为我们之前使用到了状态模式进行重构.上一篇博客我们 ...

  9. ATM取款机优化需求的用例设计

    案例设计需求 有一个ATM取款系统,现对于取款功能进行了如何需求变更:碑只能取面额是100元(如取500,输出5张100元),现在功能修改为,可以取面额是10元.50元和100元的,其余功能不变,用户 ...

随机推荐

  1. 聊聊GIS中那些坐标系

    从第一次上地图学的课开始,对GIS最基本的地图坐标系统就很迷.也难怪,我那时候并不是GIS专业的学生,仅仅是一门开卷考试的专业选修课,就没怎么在意. 等我真正接触到了各种空间数据产品,我才知道万里长征 ...

  2. Javaweb向服务器上传文件以及从服务器下载文件的方法

    先导入jar包 点击下载 commons-fileupload是Apache开发的一款专门用来处理上传的工具,它的作用就是可以从request对象中解析出,用户发送的请求参数和上传文件的流. comm ...

  3. TensorFlow框架(4)之CNN卷积神经网络

    1. 卷积神经网络 1.1 多层前馈神经网络 多层前馈神经网络是指在多层的神经网络中,每层神经元与下一层神经元完全互连,神经元之间不存在同层连接,也不存在跨层连接的情况,如图 11所示. 图 11 对 ...

  4. 关闭Excel提示文件格式和扩展名不匹配的警告框

    打开某些excel表时,Excel会提示: "a.xls"的文件格式和扩展名不匹配.文件可能已损坏或不安全.除非您信任其来源,否则请勿打开.是否仍要打开它?   在编辑大量的xls ...

  5. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  6. python+selenium自动化软件测试(第3章):unittest

    3.1 unittest简介 前言(python基础比较弱的,建议大家多花点时间把基础语法学好,这里有套视频,可以照着练习下:http://pan.baidu.com/s/1i44jZdb 密码:92 ...

  7. Java面试准备之探究集合

    摘要:之前虽然对集合框架一些知识点作了总结,但是想想面试可能会问源码,于是又大致研究了一下集合框架的一些实现类的源码,在此整理一下. 一.集合框架 二.深究实现类 1.ArrayList源码实现 Ar ...

  8. java线程锁

    一.synchronized         这货可以锁对象,锁变量,锁方法,锁代码,好像什么都能锁,缺点就是如果一个锁堵了,其他的只能等待忙并不能把当前的锁给释放.二. ReentrantLockR ...

  9. 了解 Spring Boot AutoConfiguration

    原文:http://sivalabs.in/2016/03/how-springboot-autoconfiguration-magic/ 作者:Siva 译者:http://oopsguy.com ...

  10. 马士兵讲jsp项目--BBS项目分析笔记

    1 导言 作为一个新手JAVA程序员,我相信很多人和我一样急切的想要寻找项目来做,这里我把马士兵老师讲的JAVA WEB的第一个小项目拿过来给大家分享一下. 首先,对一个项目而言我们先要认识清楚我们要 ...