2021-07-20

**

while(),for()循环 switch()多选,函数封装传参,js基础ITM机

**let arr = [
   { name: `zs`, pwd: 123, money: 1000 },
   { name: `ls`, pwd: 234, money: 1500 },
   { name: `ww`, pwd: 555, money: 2000 }];

//主函数
function main() {
    state = true
    while (state) {
        console.log(`欢迎来到彭大大银行`);
        console.log(`请选择操作,1.登录 2.注册 0.退出`);
        let options = rs.question() - 0; {
            switch (options) {
                case 1:
                login()
                state=false;//结束while循环
                    break;
                case 2:
                    sign();
                    break;
                case 0:
                    break;
            }
        }
    }
}
main();

//判断用户在不在

function isUserName(userName) {
    for (let index = 0; index <= arr.length; index++) {
        if (userName == arr[index].name) {//判断输入的用户名是否等于数组里面的用户名
            return index;
        } else if (index == arr.length - 1) {//遍历到数组最后一个值
            return false;
        }
    }
}


//注册
function sign() {
    console.log(`请输入注册账号`);
    let isSign = rs.question();
    let signs = isUserName(isSign);//判断用户是否存在,存在返回下标
    if (signs == false) {
        console.log(`请输入密码`);
        let isgnspwd = rs.question() - 0;
        arr.push([{ name: signs, pwd: isgnspwd, money: 0 }]);//添加一个对象到数组
        console.log(`注册成功`);
    } else {
        console.log(`当前用户已存在`);
    }

}

//登录
function login() {
    let state = true;
    let i = 3;//只能输错账户或密码3次
    while (i > 0 || state) {
        --i;
        console.log(`请输入账号`);
        let names = rs.question();//接收输入的账户
        let userName = isUserName(names);//判断用户是否存在,存在返回下标
        for (let index = 0; index <= arr.length; index++) {//遍历数组
            if (userName || userName === 0) {//判断输入的用户名能否跟数组里的匹配,匹配则输入密码
                console.log(`请输入密码`);
                let namePwd = rs.question() - 0;//-0把字符串变为纯数字
                if (namePwd === arr[userName].pwd) {//判断密码
                   let stop= option(index);//调用登录函数,接收一个返回值(判断是不是按了0,按了则停止该函数)
                   if(stop==false){
                       return false;
                   }
                } else if (i === 0) {//i==0代表最后一次机会用完,就冻结账户
                    console.log(`密码错误账户已冻结`);
                    state = false;
                    break;
                } else {
                    console.log(`密码错误,你还有${i}次机会`);
                    break;
                }

            } else if (i === 0) {
                console.log(`当前账户已冻结`);
                state = false;
                break;
            } else if (index > arr.length - 1) {
                console.log(`账号错误,你还有${i}次机会`);
            }
        }
    }

}

//功能函数
function option(index) {
    let state = true;
    while (state) {
        console.log(`请选择接下来的操作,1.查询  2.存钱 3.取钱 4.转账 5.切换账号 6.修改密码 0.退出`);
        let opt = rs.question() - 0;
        switch (opt) {//判断用户选择的操作相匹配
            case 1:
                console.log(`当前余额为${arr[index].money}`);
                break
            case 2:
                saveMoney(index);
                break
            case 3:
                drawMoney(index);
                break
            case 4:
                transfer(index);
                break
            case 5:
                let tName=transName(index);//接收到切换的账户,判断接收的账户或者账户等于下标0
                if(tName||tName===0){
                    index=tName;//切换账户赋值给当前账户
                }
                break
            case 6:
                let isOK=alter(index);//修改密码后根据拿到的返回值isOK拿到是否修改成功,如果修改成功就调用登录函数
                if(isOK==true){
                    login()               
                }
               
                break
            case 0:
                console.log(`88`);
                return false;
            default: console.log(`输入有误`);//默认值,输入操作意外的数字则输出
        }
    }
}

//存钱
function saveMoney(index) {
    console.log(`输入存款金额`);
    let sMoney = rs.question() - 0;
    arr[index].money += sMoney;//当前金额等于原金额加存入金额
    console.log(`存款成功.当前余额为${arr[index].money}`);

}
//取钱
function drawMoney(index) {
    console.log(`输入取款金额`);
    let dMoney = rs.question() - 0;
    if (dMoney <= arr[index].money) {//判断取出金额是否小于原金额
        arr[index].money -= dMoney;//当前金额等于原金额减存入金额
        console.log(`取款成功.当前余额为${arr[index].money}`);
    } else {
        console.log(`余额不足`);
    }
}
//转账
function transfer(index) {
    console.log(`请输入转账账户`);
    let userTransfer=rs.question();
   let isuserTran= isUserName(userTransfer);//判断转账账户是否存在于数组
   if(isuserTran||isuserTran===0){//存在或者是下标为0的账户
       if(isuserTran==index){//输入账户等于当前登录的账户
           console.log(`不能给自己转账`);
       }else{
           console.log(`请输入转账金额`);
           let isuserMoney=rs.question()-0;
           arr[index].money-=isuserMoney;//登录账号的余额减去转账的金额
           arr[isuserTran].money+=isuserMoney;//转入的账户金额减等于当前要转出的金额
           console.log(`转账成功,你的余额为${ arr[index].money},他的余额为${arr[isuserTran].money}`);
       }
   }else{
       console.log(`账户不存在`);
   }
}
//切换账户
function transName(index){
    console.log(`输入切换到的账户`);
    let istran=rs.question();
    let istranName=isUserName(istran);//判断转账账户是否存在于数组
    if(istranName||istranName===0){
        if(istranName!=index){//切换的账户不等于当前登录的账号
            console.log(`输入密码`);
            let istranNamepwd=rs.question()-0;
            if(istranNamepwd===arr[istranName].pwd){//密码相同就把切换的账户传出去
                console.log(`切换成功`);
               return istranName;
              
            }else{
                console.log(`密码错误`);
            }
        }else{
            console.log(`已经在该账户下`);
        }
    }else{
        console.log(`账户不存在`);
    }
}
//修改密码
function alter(index){
    console.log(`请输入旧密码`);
    let jped=rs.question()-0;
    if(jped==arr[index].pwd){//判断密码输入正确后改密码
        console.log(`请输入新密码`);
        let xpwd1=rs.question()-0;
        console.log(`确认新密码`);
        let xpwd2=rs.question()-0;
        if(xpwd1===xpwd2){//两次密码输入一致后,就把新密码赋值给旧密码
            console.log(`修改成功`);
            arr[index].pwd=xpwd1;
            return true;
        }
    }else{
        console.log(`密码错误`);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值