ATM机对象版

const rs = require("readline-sync");
//2020 9/19
// 创建多个账号
let users = [
    { name: "f70", pwd: "123a", blance: 1000 },
    { name: "f71", pwd: "123b", blance: 2000 },
    { name: "f72", pwd: "123c", blance: 3000 }
];
// 查找用户
function search(transAccount, qz) {//第二个形数 qh 判断切换是否失败
    for (let index in users) {
        if (transAccount == users[index].name) {
            return index;
        }
        else if (index == users.length - 1) {
            if (qz) {
                console.log(`切换账户失败!!!!!!`);
            } else {
                console.log(`你输入的账号 不存在`);
            }

            return false;
        }
    }
}
// 系统
function system() {
    while (true) {
        console.log(`请选择以下功能: 1、登录 2、注册 0、退出`);
        let option = rs.question() - 0;
        switch (option) {
            // 登录
            case 1:
                let index = islogin();
                if (index || index === 0) {
                    let i = main(users, index);
                    if (i == 0) {
                        return;
                    }
                }
                return;
            case 2:
                //注册
                reg();
                break;
            // 退出
            case 0:
                return false;
        }
    }

}
// 主程序
function main(users, index) {
    console.log(`欢迎来到!!!中国银行!!!`);
    let option;
    while (true) {
        console.log(`请输入您的选择:1、查询 2、存钱 3、取钱 4、转账 5、切换账户 6、 修改密码  0、退出`);
        option = rs.question() - 0;
        switch (option) {
            // 查询
            case 1:
                console.log(`当前账户余额位${users[index].blance}`);
                break;
            // 存钱
            case 2:
                saveMoney(users, index);
                break;
            // 取钱
            case 3:
                dropMoney(users, index);
                break;
            //转账
            case 4:
                transMoney(users, index);
                break;
            //切换账户
            case 5:
                let stat = transName(users, index);
                if (stat || stat === 0) { //返回下标或则下标为0的执行操作
                    index = stat;
                }
                break;
            // 修改密码
            case 6:
                let state = changepwd(users, index);
                if (state||state==0) { //返回下标或则下标为0的执行操作
                    index = islogin();
                }
                //  为假执行
                else {
                    return false;
                }
                break;
            // 退出
            case 0:
                console.log(`欢迎下次光临!!`);
                return 0;
        }
    }
}
//注册
function reg() {
    while (true) {
        console.log(`请输入注册账号`);
        let zhuce = rs.question();
        for (let index in users) {
            if (zhuce != users[index].name && index == users.length - 1) {
                console.log(`请输入账户密码!!!`);
                let newpwd = rs.question();
                users.push({ name: zhuce, pwd: newpwd, balance: 0 });
                console.log(`${users[index].name}注册成功!!!!`);
                return;
            }
            //  如果注册账号与已有账号相等就输出该句子
            else if (zhuce == users[index].name) {
                console.log(`当前注册账号${users[index].name}已经存在`);
                console.log(`1、继续注册 2、退出注册`);
                let option = rs.question()-0;
                if (option == 2) {
                    return;
                }
            }
        }
    }
}
// 判断登录是否成功
function islogin(qz, changeindex = 0) {
    // //判断3次机会
    let count = 3;
    while (count) {
        let inputName = users[changeindex].name;
        if (!qz) {
            console.log(`请用户输入账号!!!`);
            inputName = rs.question();
        }
        for (let i in users) {
            //判断账号是否存在
            if (inputName == users[i].name) {
                console.log(`请输入密码!!!`);
                let inputpwd = rs.question()
                //密码是否正确
                if (inputpwd == users[i].pwd) {
                    return i;
                }
                //密码错误
                else if (count == 1) {
                    console.log(`3次密码输入错误!!!冻结`);
                    return false;
                }
                else {
                    console.log(`密码输入错误!!!您还有${--count}次机会`);
                    break;
                }

            }
            //判断多账户所有 账号是否都在
            else if (i == users.length - 1 && count > 1) {
                console.log(`输入账号有错误!!!您还有${--count}次机会`);
            }
            else if (count == 1) {
                console.log(`3次机会已经用完!!!冻结`);
                count = 0;
                break;
            }
        }
    }
}
// }
// 存钱
function saveMoney(users, index) {
    console.log(`请输入存钱金额!!!`);
    let saveMoney = rs.question() - 0;
    if (!isNaN(saveMoney) && (saveMoney % 100 == 0)) {
        users[index].blance += saveMoney;
        console.log(`当前账户金额为${users[index].blance}`);
    }
    else {
        console.log(`输入有误!!!`);
        return false;
    }
}
// 取钱
function dropMoney(users, index) {
    console.log(`请输入取钱金额!!!`);
    let dropMoney = rs.question() - 0;
    if (!isNaN(dropMoney) && (dropMoney % 100 == 0)) {
        if (dropMoney <= users[index].blance) {
            users[index].blance -= dropMoney;
            console.log(`当前账户金额为${users[index].blance}`);
        }
        else {
            console.log(`账户金额不足!!!!`);
        }
    }
    else {
        console.log(`输入有误!!!`);
        return false;
    }
}
// 转账
function transMoney(users, index) {
    console.log(`请输入转账账号!!!`);
    let transAccount = rs.question();
    //  如果不等于自己
    if (transAccount != users[index].name) {
        let transindex = search(transAccount);
        // 获取下标   f70 f71 f72其中2个 
        if (transindex || transindex === 0) {
            console.log(`请输入转账金额!!!`);
            let transMoney = rs.question() - 0;
            //转账相关操作
            if (!isNaN(transMoney) && transMoney % 100 === 0 && transMoney > 0) {
                if (transMoney <= users[index].blance) {
                    users[index].blance -= transMoney;
                    users[transindex].blance += transMoney;
                    console.log(`当前账户余额为${users[index].blance}`);
                }
                //  钱不够
                else {
                    console.log(`转账金额不足`);
                }
            }
            else {
                console.log(`输入有误!!!!`);
                return false;
            }
        }
    }
    else {
        console.log(`你已经在${users[index].name}下,不能给自己转账`);
        return false;
    }
}
// 切换账户
function transName(users, index) {
    console.log(`请输入切换账号!!!!`);
    let transAccount = rs.question();
    // 判断是不是切换自己的账号
    if (transAccount != users[index].name) {
        let tindex = search(transAccount, "qh"); //第二个参数 qh 判断切换是否失败
        if (tindex || tindex === 0) { //下标或则下标为0时执行操作
            return islogin("qh", tindex);
        }
    }
    else {
        console.log(`你已经在当前${users[index].name}账号下`);
        return false;
    }
}
// 修改密码
function changepwd(users, index) {
    console.log(`请输入原密码:`);
    let password = rs.question();
    if (password == users[index].pwd) {
        console.log(`请输入新密码!!!!`);
        let newPWD = rs.question();
        users[index].pwd = newPWD;
        console.log(`原密码是${users[index].pwd},新密码${newPWD}`);
        return true; 
    }
    else {
        console.log(`原密码输入错误!!!!`);
        return false;
    }
}
system();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值