使用JavaScript实现ATM取款机

时间:2023-01-01 22:53:58

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>