ATM机——函数传参法

ATM机需求

一、登录

要求用户输入卡号和密码。如果三次之内可以重复输入;三次以上输入错误,则退出系统。

	// 一、登录界面
    Login();
    // 检验是否能在3次内登录成功
    function Login() {
      let cardNo;
      let pwd;
      for (let i = 0; i < 3; i++) {
        cardNo = prompt(`请输入卡号:`);
        pwd = prompt(`请输入密码:`);
        if (cardNo == "" || pwd == "") { // 账号或密码不能为空值
          alert(`密码或账号不能为空,请重新输入账号或密码`);
        }else if (isLoginSucess(cardNo, pwd)) {
          Main();
          return;
        } else {
          alert(`用户或密码输入错误,请重新输入!`);
        }
      }
      alert(`3次机会已经用完,账号锁定,请去柜台`);
    }
    // 查看是否登录成功
    function isLoginSucess(cardNo, pwd) {
      for (let i = 0; i < cards.length; i++) {
        if (cards[i].cardNo == cardNo && cards[i].pwd == pwd) {
          loginIndex = i;
          return true;
        }
      }
      return false;
    }

二、登录成功后,显示主界面。

要求用户输入所需的操作,然后调用相应的函数,实现操作。操作完成后,再回到主界面,继续要求用户输入所需的操作。
1.查询余额 2.存款 3.取款 4.转账 0.退出


    // 二、主界面
    function Main() {
      let choose = parseInt(prompt(`欢迎来到懒羊羊的ATM机~~,请选择你需要的操作:
      1.查询余额    2.存款
      3.取款        4.转账
      0.退出`));
      switch (choose) {
        case 1: QueryMoney(); Main(); break;
        case 2: DepositMoney(); Main(); break;
        case 3: WithdrawMoney(); Main(); break;
        case 4: TransferAccount(); Main(); break;
        case 0: Exit(); break;
      }
    }

三、操作

1、显示余额

显示当前帐号余额。

  // 显示余额
    function displayMoney(message) {
      alert(`${message}你当前余额为:${getMoneyByCards(loginIndex)}`);
    }
    
    // 通过账号获取账户里面的钱
    function getMoneyByCards(AcountIndex) { // AcountIndex 获取账户下标
      return cards[AcountIndex].money;
    }
 // 1.查询
    function QueryMoney() {
      if (loginIndex == -1) {
        alert(`请登录账号`);
        return;
      }
      displayMoney(``);
    }

2、存款:

要求用户输入存款金额,完成存款操作。(在原来金额基础上加上存款金额)

    // 2.存款
    function DepositMoney() {
      if (loginIndex == -1) {
        alert(`请登录账号`);
        return;
      }
      let money = parseInt(prompt(`输入要存的钱:`));
      cunMoney(loginIndex, money);
      displayMoney(`存款成功!`);
    }
    
    // 存款的结果
    function cunMoney(AccountIndex, money) { // AcountIndex 获取账户下标,money 表示用户输入要存的钱
      cards[AccountIndex].money += money;
    }

3、取款

要求用户输入取款金额,完成取款操作。如果超支,不允许取款,并给予提示(在原来金额基础上减上存款金额)。

    // 3.取款
    function WithdrawMoney() {
      if (loginIndex == -1) {
        alert(`请登录账号`);
        return;
      }
      let money = parseInt(prompt(`输入要取款的金额:`));
      // result 接收 quMoney()的返回值
      let result = quMoney(loginIndex, money);
      if (result == 0) {
        alert(`余额不足`);
        return;
      }
      displayMoney(`取款成功!`);
    }
    
    // 取款时判断钱是否足够
    function quMoney(AccountIndex, money) { // AcountIndex 获取账户下标,money 表示用户输入要取的钱
      if (cards[AccountIndex].money < money) {
        return 0; // 余额不足
      }
      cards[AccountIndex].money -= money;
      return 1; // 取款成功
    }

4、转帐

要求用户输入转帐卡号,并输入转帐金额。如果超支,不允许转帐,并给予提示。

   // 4.转账
    function TransferAccount() {
      let cardNo = prompt(`输入要转账的账户:`);
      let money = prompt(`输入要转账的金额:`);
        // result 接收 zhuanMoney()的返回值
      let result = zhuanMoney(loginIndex, cardNo, money);
      if (result == -1) {
        alert(`卡号不正确,重新输入!`);
      } else if (result == 0) {
        alert(`账户余额不足!`);
      } else {
        displayMoney(`转账成功!`)
      }
    }
        // 转账判断账号是否正确以及钱是否足够
    function zhuanMoney(AccountIndex, cardNo, money) { // AcountIndex 获取账户下标,cardNo 表示收钱的账号,money 表示用户输入要转账的钱
      AccountIndex = -1; // 卡号不存在
      // 判断卡号是否正确
      for (let i = 0; i < cards.length; i++) {
        if (cards[i].cardNo == cardNo) {
          AccountIndex = i;
          break;
        }
      }
      // 提示卡号不正确
      if (AccountIndex == -1) {
        return -1;
      }
      if (cards[loginIndex].money < money) {
        return 0; // 余额不足
      }
      //转账用户减钱
      // 被转用户加钱
      cards[loginIndex].money -= money;
      cards[AccountIndex].money += money;
      return 1; // 转钱成功
    }

5、退出

退出程序,结束操作。

 // 5.退出
    function Exit() {
      loginIndex = -1;
    }

完整代码

  <script>
    //cards所有的卡的数组 
    let cards = [
      { "cardNo": "80001", "pwd": "111111", money: 1000000000 },
      { "cardNo": "80002", "pwd": "222222", money: 1000000000 },
      { "cardNo": "80003", "pwd": "333333", money: 1000000000 }];
    let loginIndex = -1; //登录的账号信息,存储取应的下标,-1表示未登录

	// 一、登录界面
    Login();
    // 检验是否能在3次内登录成功
    function Login() {
      let cardNo;
      let pwd;
      for (let i = 0; i < 3; i++) {
        cardNo = prompt(`请输入卡号:`);
        pwd = prompt(`请输入密码:`);
        if (cardNo == "" || pwd == "") { // 账号或密码不能为空值
          alert(`密码或账号不能为空,请重新输入账号或密码`);
        }else if (isLoginSucess(cardNo, pwd)) {
          Main();
          return;
        } else {
          alert(`用户或密码输入错误,请重新输入!`);
        }
      }
      alert(`3次机会已经用完,账号锁定,请去柜台`);
    }
    // 查看是否登录成功
    function isLoginSucess(cardNo, pwd) {
      for (let i = 0; i < cards.length; i++) {
        if (cards[i].cardNo == cardNo && cards[i].pwd == pwd) {
          loginIndex = i;
          return true;
        }
      }
      return false;
    }


    // 二、主界面
    function Main() {
      let choose = parseInt(prompt(`欢迎来到懒羊羊的ATM机~~,请选择你需要的操作:
      1.查询余额    2.存款
      3.取款        4.转账
      0.退出`));
      switch (choose) {
        case 1: QueryMoney(); Main(); break;
        case 2: DepositMoney(); Main(); break;
        case 3: WithdrawMoney(); Main(); break;
        case 4: TransferAccount(); Main(); break;
        case 0: Exit(); break;
      }
    }

	// 三、操作
    // 1.查询
    function QueryMoney() {
      if (loginIndex == -1) {
        alert(`请登录账号`);
        return;
      }
      displayMoney(``);
    }


    // 2.存款
    function DepositMoney() {
      if (loginIndex == -1) {
        alert(`请登录账号`);
        return;
      }
      let money = parseInt(prompt(`输入要存的钱:`));
      cunMoney(loginIndex, money);
      displayMoney(`存款成功!`);
    }


    // 3.取款
    function WithdrawMoney() {
      if (loginIndex == -1) {
        alert(`请登录账号`);
        return;
      }
      let money = parseInt(prompt(`输入要取款的金额:`));
      // result 接收 quMoney()的返回值
      let result = quMoney(loginIndex, money);
      if (result == 0) {
        alert(`余额不足`);
        return;
      }
      displayMoney(`取款成功!`);
    }


    // 4.转账
    function TransferAccount() {
      let cardNo = prompt(`输入要转账的账户:`);
      let money = prompt(`输入要转账的金额:`);
        // result 接收 zhuanMoney()的返回值
      let result = zhuanMoney(loginIndex, cardNo, money);
      if (result == -1) {
        alert(`卡号不正确,重新输入!`);
      } else if (result == 0) {
        alert(`账户余额不足!`);
      } else {
        displayMoney(`转账成功!`)
      }
    }


    // 5.退出
    function Exit() {
      loginIndex = -1;
    }


    // 显示余额
    function displayMoney(message) {
      alert(`${message}你当前余额为:${getMoneyByCards(loginIndex)}`);
    }


    // 通过账号获取账户里面的钱
    function getMoneyByCards(AcountIndex) { // AcountIndex 获取账户下标
      return cards[AcountIndex].money;
    }


    // 存款的结果
    function cunMoney(AccountIndex, money) { // AcountIndex 获取账户下标,money 表示用户输入要存的钱
      cards[AccountIndex].money += money;
    }


    // 取款时判断钱是否足够
    function quMoney(AccountIndex, money) { // AcountIndex 获取账户下标,money 表示用户输入要取的钱
      if (cards[AccountIndex].money < money) {
        return 0; // 余额不足
      }
      cards[AccountIndex].money -= money;
      return 1; // 取款成功
    }


    // 转账判断账号是否正确以及钱是否足够
    function zhuanMoney(AccountIndex, cardNo, money) { // AcountIndex 获取账户下标,cardNo 表示收钱的账号,money 表示用户输入要转账的钱
      AccountIndex = -1; // 卡号不存在
      // 判断卡号是否正确
      for (let i = 0; i < cards.length; i++) {
        if (cards[i].cardNo == cardNo) {
          AccountIndex = i;
          break;
        }
      }
      // 提示卡号不正确
      if (AccountIndex == -1) {
        return -1;
      }
      if (cards[loginIndex].money < money) {
        return 0; // 余额不足
      }
      //转账用户减钱
      // 被转用户加钱
      cards[loginIndex].money -= money;
      cards[AccountIndex].money += money;
      return 1; // 转钱成功
    }
  </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值