ATM机简单对象版

创建账号

//创建账户(多账户)
let users = [
    { name: "F70", pwd: "123a", balance: 1000 },
    { pwd: "123b", balance: 2000, name: "F71" },
    { name: "F72", pwd: "123c", balance: 3000 },
];
//判断账户是否存在
function serach(name, temp) {
    let i = 0;
    for (let item in users) {
        if (name == users[item].name) {
            //返回账号下标
            return item;
        }
        i++;
    }
    if (i == users.length && temp != "reg") {
        console.log(`您输入的${name}不存在`);
        return -1;
    }

}
//判断用户是否登录成功
function islogin(state = true, changeIndex = 0) {
    // changeIndex判断是不是切换账户调用
    //设置登录次数
    let count = 3;
    //设置是否登录成功的变量
    let login = false;
    //登录成功账号下标
    let index = 0;
    let inputName = users[changeIndex].name;
    while (count) { //判断3次机会是否用完
        if (state) {
            console.log("input your name:");
            inputName = rs.question();
        }
        //判断是否切换的是当前账号
        for (let i = 0; i < users.length; i++) {
            if (inputName == users[i].name) { //账号是否存在
                console.log("input your password:");
                let inputPWD = rs.question();
                if (inputPWD == users[i].pwd) { //判断密码是否正确
                    login = true; //登录成功
                    index = i; //修改账号下标
                    return [login, index];
                } else if (count == 1) {
                    if (changeIndex || changeIndex == 0) {
                        console.log(`切换账号失败!!!`);
                    } else {
                        console.log(`密码输入错误,您的3次机会已经用完,账号冻结!`);
                    }
                    count = 0;
                    break;
                } else {
                    console.log(`密码输入错误,请重新输入,您还有${--count}次机会!`);
                    break;
                }
            } else if (i == users.length - 1 && count > 1) { //
                console.log(`账号输入错误,请重新输入,您还有${--count}次机会!`);
            } else if (i == users.length - 1 && count == 1) {
                if (changeIndex || changeIndex == 0) {
                    console.log(`切换账号失败!!!`);
                } else {
                    console.log(`账号输入错误,您的3次机会已经用完,账号冻结!`);
                }
                count = 0; //当前count的值是1,重新赋值为0,终止登录功能。
                break;
            }
        }

    }
    return [false];
}
//存钱
function saveMoney(index) {
    console.log(`请输入存入金额:`);
    let saveMoney = rs.question() - 0;
    if (!isNaN(saveMoney)) {
        users[index].balance += saveMoney;
        // let temp = users[index].balance;
        // temp += saveMoney;
        // users[index].balance = temp;

        console.log(`存入成功!!!`);
    } else {
        console.log(`输入金额有误!!!`);
    }
}

//取钱
function dropMoney(index) {
    console.log(`请输入取出金额:`);
    let dropMoney = rs.question() - 0;
    if (!isNaN(dropMoney)) {
        if (dropMoney <= users[index].balance) {
            users[index].balance -= dropMoney;
            console.log(`取钱成功!!!`);
        } else {
            console.log(`余额不足!!`);
        }
    } else {
        console.log(`输入金额有误!!!`);
    }
}
//转账
function transMoney(index) {
    console.log(`请输入转账账号:`);
    let transName = rs.question();

    if (transName != users[index].name) {
        //获取账号下标
        transIndex = serach(transName);
        if (transIndex != -1) { //transIndex转账账号下标
            console.log(`请输入转账金额:`);
            let transMoney = rs.question() - 0;
            if (!isNaN(transMoney)) {
                if (transMoney <= users[index].balance) {
                    //当前账号减钱
                    users[index].balance -= transMoney;
                    //转帐账号加钱
                    users[transIndex].balance += transMoney;
                    console.log(`转帐成功!!!`);
                } else {
                    console.log(`余额不足!!`);
                }
            } else {
                console.log(`输入金额有误!!!`);
            }

        }
    } else {
        console.log(`不能给自己转账!!`);
    }
}

//切换账户
function changeAccount(index) {

    console.log(`请输入切换的账号:`);
    let changeName = rs.question();
    //获取切换账号的下标
    changeIndex = serach(changeName);

    if (changeIndex != index) {
        if (changeIndex != -1) {
            let temp = islogin(false, changeIndex);
            if (temp[0]) {
                return temp[1];
            }
        }

    } else {
        console.log(`您已经在${users[index].name}`);
    }

}
//修改密码
function changePWD(index) { //当前下标
    console.log(`请输入原密码:`);
    let oldPWD = rs.question();
    if (oldPWD == users[index].pwd) {
        console.log(`请输入新密码:`);
        let newPWD = rs.question();
        if (newPWD.length == 6) {
            users[index].pwd = newPWD;
            console.log(`修改密码成功!`);
            return true;
        }
    } else {
        console.log(`原密码错误!!!`);
    }
}
//注册
function reg() {
    while (true) {
        console.log(`请输入创建的账号`);
        let newAccount = rs.question();
        //判断新账号是否存在
        let ishas = true;
        ishas = serach(newAccount, "reg");
        if (!ishas && ishas != 0) {
            console.log(`请输入创建账号的密码`);
            let newPWD = rs.question();
            //在users中添加新账号
            users.push({ name: newAccount, pwd: newPWD, balance: 0 });
            console.log(`恭喜!!!注册成功!!!`);
            return true;
        } else {
            console.log(`您输入的账号已经存在`);
            console.log(`1、继续注册  2、退出注册`);
            let option = rs.question() - 0;
            if (option == 2) {
                return;
            }
        }
    }
}
//主程序
function main() {
    let arr = islogin(); //当前登录账号下标
    if (arr[0]) { //判断登录是否成功
        let index = arr[1];
        console.log(`${users[index].name}欢迎光临XXX银行!!!`);
        //[判断用户是否选择"0"]
        let state = false;
        while (!state) {
            console.log(`请选择功能:1、查询 2、存钱 3、取钱 4、转账 5、切换账户 6、修改密码 0、退出`);
            let option = rs.question() - 0;
            switch (option) {
                case 1:
                    console.log(`您当前的余额为:${users[index].balance}`);
                    break;
                case 2:
                    saveMoney(index);
                    break;
                case 3:
                    dropMoney(index);
                    break;
                case 4:
                    //index是当前账户下标
                    //为了判断是否给自己账户转钱
                    transMoney(index);
                    break;
                case 5:
                    //切换成功后,改变主程序的共用下标
                    let temp = changeAccount(index);
                    if (temp || temp == 0) {
                        index = temp;
                    }
                    break;
                case 6:
                    //获取修改密码是否成功
                    let state = changePWD(index);
                    if (state) {
                        //获取重新登录的账号下标
                        let temp = islogin();
                        if (temp[0]) {
                            //重新登录的账号下标覆盖主函数下标
                            index = temp[1];
                        }
                    } else {
                        console.log(`修改密码失败!!`);
                    }
                    break;
                case 0:
                    console.log(`${users[index].name}感谢您,欢迎下次光临!!!`);
                    return true;
            }
        }

    }
}
//运行程序
function system() {
    while (true) {
        console.log(`1、登录 2、注册 0、退出`);
        let choice = rs.question() - 0;
        switch (choice) {
            case 1:
                let result = main();
                if (result) {
                    return;
                }
                break;
            case 2:
                reg();
                break;
            default:
                return;
        }
    }

}

system();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值