javascript函数模拟ATM机取款机

ATM机操作流程简述:

1.第一步声明一个数组用对象的方式把每个用户的信息放到数组内

2.第二步利用函数把每个界面的方法实现,

3.首先是用户登录界面,用户输入账号、密码,这里利用循环来判断用户输入的信息是否与我们数组内存放的信息相等,如果输入信息不能与数组内的信息相等提示输入信息有误请重新输入,返回登录界面,输入错误超过三次用户锁定,退出界面,输入成功跳转到主界面

4.登录成功后来到主界面,声明一个变量让用户输入需要操作的选项 1.查询、2.存款、3.取款、4.转账、5.退出.  这里可以用到switch,用户输入的操作满足我们指定的功能就执行相关操作这里需要调用函数把指定的功能模块调用到下步需要跳转的界面,比如.存款这一步下步操作肯定是跳转到存款界面需要存款的金额所以这里就需要调用我们存款这一步方法也就是我们说的调用函数把声明的存款这个函数调到这里来执行,这里就不一一举例,剩余对应的操作也是一样,

一、这里首先声明一个变量把我们的用户信息装到cards变量内

let cards = [

{ 'cardNo': '123', 'pwd': '456', money: 100 },

{ 'cardNo': '124', 'pwd': '456', money: 100 },

{ 'cardNo': '125', 'pwd': '456', money: 100 }]

let loginIndex = -1;

登录界面:

LoGin()     //这里LoGin() 是调用函数第一步用户登录输入密码的操作
​
function LoGin() {
// 判断输入三次就锁定
let name, pwd;
for (let count = 0; count < 3; count++) {
//这里让用户输入输入卡号和密码
name = prompt('输入卡号');
pwd = prompt('输入密码');
//因为我们这里单独创建了一个函数来判断用户输入的信息是否正确所以我们直接调用isLoginSu(name, pwd)这个方法来进行判断
if (isLoginSu(name, pwd)) {
// 调用函数如果输入的卡号和密码等于cards里面的值登录成功
       Main();//这里调用函数Main()用户登录成功直接进入主界面
       return;
  } else {
//这里如果输入的账户信息有误提示用户重新输入
       alert('账号或密码出错,请重新输入');
   }
  }
}
// 判断是否
function isLoginSu(name, pwd) {
// 循环卡号、密码,是否有相等
for (let i = 0; i < cards.length; i++) {
//这里判断用户输入的信息是否与我们声明的对象内cards的信息相等如果相等返回true
       if (cards[i].cardNo == name && cards[i].pwd == pwd) {
         loginIndex = i;
         return true;
    }
  }
         return false;
}

​

// 主界面

这里创建了一个主界面为Main()的函数主界面对应的操作有1,查询2.存款3.取款4.转账0.退出

function Main() {
let choose = Number(prompt(`
欢迎登录我的银行!
1.查询
2.存款
3.取款
4.转账
0.退出
`));
//这里我们使用了switch这个循环方法因为这里操作相对比较固定所以采用switch这个方法会比较简单一些
switch (choose) {
case 1: Query(); Main(); break;// 这里每个操作调用了下步需要执行的函数方法用户如果输入对应的值会执行对应的功能例如:用户输入1会执行Query()这个函数方法,执行完后执行第二个函数方法Main()也就是主界面。 下面同理
case 2: Deposit(); Main(); break;
case 3: WithdrawMoney(); Main(); break;
case 4: TransferMony(); Main(); break;
case 0: exit(); break;
default:
alert('输入正确的选项');
Main();
}
}

// 查询

function Query() {
//这里首先判断用户是否登录如果未登录则返回登录界面
//因为前面我们已经声明了一个函数来判断用户输入的信息是否正确所以这里我们直接用loginIndex == -1;
//如果返回值为-1则表示登录失败直接返回登录界面否则直接返回当前余额;
if (loginIndex == -1) {
alert('请先登录,在执行此操作');
LoGin();
return;
}
alert('当前的余额为:' + cards[loginIndex].money);
}

// 存款

function Deposit() {
//这里也是同样先判断用户是否登录
if (loginIndex == -1) {
alert('请先登录,在执行此项操作');
LoGin();
return;
}
//用户输入存款金额
let money1 = Number(prompt('输入存款金额'));
//把用户输入的金额存到我们对应的账户下cards[loginIndex].money这个也就是我们用户对应的账户信息下的金额
cards[loginIndex].money += money1;
alert('存款成功,当前金额为:' + cards[loginIndex].money);
}

// 取款

function WithdrawMoney() {
if (loginIndex == -1) {
alert('请先登录,在执行此项操作');
LoGin();
return;
}
let money1 = Number(prompt('请输入取款金额'));
if (cards[loginIndex].money < money1) {
alert('余额不足');
return;
}
cards[loginIndex].money -= money1;
alert('取款成功,当前余额为:' + cards[loginIndex].money);
}

// 转账

function TransferMony() {
if (loginIndex == -1) {
alert('先登录,在执行此项操作');
LoGin();
return;
}
let ZhuAnCard = prompt('输入转账的卡号');
// 这里判断输入的卡号是否正确
let ZhuAnIndex = -1;
for (var i = 0; i < cards.length; i++) {
if (cards[i].cardNo === ZhuAnCard) {
ZhuAnIndex = i;
break;
// return;
}
}

// 判断卡号是否正确

if (ZhuAnIndex == -1) {
alert('此卡号输入有误,重新输入');
TransferMony();
return;
}
let money1 = Number(prompt('输入转账金额'));
if (cards[loginIndex].money < money1) {
alert('余额不足');
TransferMony();
return;
}
// 转账用户减钱
// 转入用户加钱
// 事务,要么全部成功,要么全部失败(回滚) - 数据库
cards[loginIndex].money -= money1;
cards[ZhuAnIndex].money += money1;
alert('转账成功,当前金额为:' + cards[loginIndex].money);
}

// 退出

function exit() {
loginIndex = -1;
}

总结:

1.这里我们是采用把每个功能模块利用函数的方法进行一一创建而后进行调用这样会省掉大量代码,

2.包括一些重复的代码我们都是直接创建一个方法来进行调用,哪一个需要就往哪儿调直接使用

猜你喜欢

转载自blog.csdn.net/Ass12454548/article/details/128624442