函数对象版实现简易Atm

const readLine = require('readLine-sync');

let role = [{
    username: 1,
    password: 1,
    money: 100
}, {
    username: 2,
    password: 2,
    money: 200
}];
// 主程序
function test() {
    let temp = false;
    let arr = true;
    let Index = 0;
    let count = 3;
    while (arr) {
        console.log('1.登录 2.注册 3退出');
        let Key = readLine.question() - 0;
        let arr1 = true;
        switch (Key) {
            case 1:
                while (arr1) {
                    console.log("输入账号");
                    let InptName = readLine.question() - 0;
                    console.log("输入密码");
                    let InptPass = readLine.question() - 0;
                    if (login(InptName, InptPass)[1] == true) {
                        Index = login(InptName, InptPass)[0]
                        arr = false;
                        temp = true;
                        arr1 = false;
                        console.log("登录成功");
                    }
                    if (arr1) {
                        --count
                        console.log("密码错误你还有" + count + "次机会");
                    }
                    if (count == 0) {
                        arr1 = false;
                    }
                }
                break;
            case 2:
                register();
                break;
            case 3:
                arr = false;
                break;
            default:
                break;
        }
    }

    if (temp == true) {
        while (temp) {
            console.log('1.存钱 2.取钱 3.查看 4.退出 5.转账 6.切换账号 7.修改密码');
            let key = readLine.question() - 0;
            switch (key) {
                case 1:
                    console.log('输入存钱金额');
                    let num = readLine.question() - 0;
                    Deposit(num, Index)
                    break;
                case 2:
                    console.log('输入取钱金额');
                    let takenum = readLine.question() - 0;
                    if (!take(takenum, Index)) {
                        console.log("余额不够");
                    }
                    break;
                case 3:
                    check(Index)
                    break;
                case 4:
                    temp = false
                    break;
                case 5:
                    console.log('输入转账金额');
                    let trans = readLine.question() - 0;
                    console.log('输入转账账号');
                    let account = readLine.question() - 0;
                    if (account == role[Index].username) {
                        console.log('不能给自己转账');
                    } else {
                        transferaccounts(trans, Index, account)
                    }
                    break;
                case 6:
                    console.log('输入切换账号账号');
                    let changeuser = readLine.question() - 0;
                    console.log('输入切换账号密码');
                    let changepass = readLine.question() - 0;
                    if (changepass == role[Index].username) {
                        console.log('不能切换自己');
                    } else {
                        let arr = Changeuser(changeuser, changepass);
                        Index = arr[0]
                    }
                    break;

                case 7:
                    console.log('输入新密码密码');
                    let newPassword = readLine.question() - 0;
                    ChangePassword(Index, newPassword)
                    temp = false;
                    break;
                default:
                    console.log('操作错误');
                    break;
            }
        }
    }
}
// 登录
function login(username, password) {
    let state = false;
    let index = 0;
    for (let i = 0; i < role.length; i++) {
        if (username == role[i].username && password == role[i].password) {
            index = i;
            state = true
        }
    }
    return [index, state]
}
// 注册
function register() {
    let arr = false;
    console.log("输入账号");
    let InptName = readLine.question() - 0;
    console.log("输入密码");
    let InptPass = readLine.question() - 0;
    let res = role.some(function (item) {
        return InptName == item.username
    })
    console.log(res);
    if (!res) {
        role.push({
            username: InptName,
            password: InptPass,
            money: 0
        })
        console.log('注册成功');
        console.log(role);
    } else {
        console.log('账号已存在');
    }

}
// 存钱
function Deposit(value, index) {
    role[index].money += value
    console.log(role[index].money);
}
// 取钱
function take(value, index) {
    if (value <= role[index].money) {
        role[index].money -= value
    } else {
        return false;
    }
}
// 查看
function check(index) {
    console.log(role[index].money);
}
// 转账
function transferaccounts(value, index, IndexArr) {
    let state = false;
    for (let i in role) {
        if (IndexArr == role[i].username) {
            if (take(value, index) == false) {
                console.log("转账余额不够");
                break;
            } else {
                role[i].money += value;
                state = true;

            }
            break;
        }
    }

    if (!state) {
        console.log('查无此人');
    }
}
//切换账号
function Changeuser(user, pass) {
    let arr = login(user, pass)
    return arr
}
//修改密码
function ChangePassword(index, value) {
    if (role[index].password == value) {
        console.log('不能与原密码一致');
    } else {
        role[index].password = value
        state = true
        test()
    }
}
test();
posted @ 2022-10-13 16:30  Wwink  阅读(44)  评论(0)    收藏  举报