ATM(对象版)

ATM(对象版)

//ATM对象版1
const re = require('readline-sync');
/* let arr = [
    'z1', '1', 100,
    'z2', '2', 200,
    'z3', '3', 300
]; */

let arr = [
    {
        userName: 'z1',
        userPwd: 1,
        userMoney: 1000
    }, {
        userName: 'z2',
        userPwd: 2,
        userMoney: 2000
    }, {
        userName: 'z3',
        userPwd: 3,
        userMoney: 3000
    }
]

//主函数
function main() {
    let count = 3;
    let state = true;
    while (state) {
        console.log(`请选择:1:登录,2:注册,0:退出`);
        let num = re.question() - 0;
        switch (num) {
            case 1:
                state = login(state, count);
                break;
            case 2:
                register();
                break;
            case 0:
                console.log(`欢迎下次欢迎`);
                state = false;
                break;
            default:
                console.log(`输入的格式有误`);
                break;
        }
    }
}

// 判断当前账户是否存在
function saveaccount(name) {
    //方法一:
    // for(let i=0;i<arr.length;i++){
    //     if(name==arr[i].userName){
    //         return i;
    //     }
    // }
    // return -1;

    //方法2:findIndex
    return arr.findIndex((item, index) => { return name == item.userName });



}

//登录
function login(state, count) {
    while (state) {
        console.log(`请输入用户名`);
        let inputName = re.question();
        let index = saveaccount(inputName); //获取你输入的账户的下标
        if (index != -1) {//存在返回小标,不存在返回-1
            while (count) {
                console.log(`请输入密码`);
                let inputPwd = re.question();
                if (inputPwd == arr[index].userPwd) {
                    return option(state, index);  //第二层循环
                } else {
                    count--;
                    if (count == 0) {
                        console.log(`多次输入错误账户已冻结`);
                        state = false;
                    } else {
                        console.log(`你还有${count}次机会`);
                    }

                }
            }

        } else {
            console.log(`${inputName}用户不存在`);
        }
    }
}

//注册
function register() {
    let state = true;
    console.log(`请输入你要注册的账户`);
    let newName = re.question();
    let index = saveaccount(newName);
    if (index == -1) {
        console.log(`请输入密码`);
        let newPwd = re.question();
        //判断密码是否输入一致
        while (state) {
            console.log(`请确认密码`);
            let renewPwd = re.question();
            if (renewPwd == newPwd) {
                let larr = { userName: newName, userPwd: newPwd, userMoney: 0 }
                arr.push(larr)
                console.log(`注册成功`);
                state = false;
            } else {
                console.log(`两次输入的密码不一致`);
            }
        }

    } else {
        console.log(`${newName}用户已存在,请重新注册`);
    }
}

//功能
function option(state, index) {
    //循环功能
    while (state) {
        console.log(`${arr[index].userName}用户登录成功,请选择:1:查询余额,2:存钱,3:取钱,4:改密码,5:转账,6:切换账户,0:退出`);
        let num = re.question() - 0;
        switch (num) {
            case 1:
                balance(index); //查询余额
                break;
            case 2:
                saveMoney(index);  //存钱
                break;
            case 3:
                drawMoney(index);    //取钱
                break;
            case 4:
                if (changepwd(index)) {
                    return true;
                }    //改密码
                break;
            case 5:
                transaccount(index);  //转账
                break;
            case 6:
                let changeIndex = switchaccount(index);     //切换用户
                if (changeIndex || transIndex == 0) {
                    index = changeIndex;
                }
                break;
            case 0:
                console.log(`欢迎下次光临`);
                return false;//第一层,退出循环
            default:
                console.log(`你输入的数字不是查询业务,请重新输入`);
                break;
        }
    }

}

//查询余额
function balance(index) {
    console.log(`${arr[index].userName}用户的余额为${arr[index].userMoney}`);
}

//存钱
function saveMoney(index) {
    console.log(`请输入你要存入多少钱`);
    let inputMoney = re.question() - 0;
    arr[index].userMoney += inputMoney;
    console.log(`存钱成功`);
}

//取钱
function drawMoney(index) {
    console.log(`请输入你要取出的金额`);
    let takeMoney = re.question() - 0;
    if (takeMoney <= arr[index].userMoney) {
        arr[index].userMoney -= takeMoney;
        console.log(`取钱成功,余额还有${arr[index].userMoney}`);
    } else {
        console.log(`余额不足`);
    }
}

//改密码
function changepwd(index) {
    let state = true;
    console.log(`请输入旧密码`);
    let oldPwd = re.question();
    if (oldPwd == arr[index].userPwd) {//判断密码是否一致
        console.log(`请输入你要修改的密码`);
        let newPwd = re.question();
        while (state) {
            console.log(`请确认密码`);
            let renewPwd = re.question();
            if (renewPwd == newPwd) {
                arr[index].userPwd = newPwd;
                console.log(`修改密码成功`);
                return true;
            } else {
                console.log(`两次输入的密码不一致`);
            }
        }
    } else {
        console.log(`输入的旧密码错误,请重新输入`);
    }
}

//转账
function transaccount(index) {
    console.log(`请输入转账的账户`);
    let transaccount = re.question();
    let transIndex = saveaccount(transaccount);//获取转账账户的下标
    if (transIndex != -1) {
        if (transIndex != index) {
            console.log(`请输入转账的金额`);
            let transMoney = re.question() - 0;
            if (!isNaN(transMoney)) {
                if (transMoney <= arr[index].userMoney) {
                    arr[index].userMoney -= transMoney;
                    arr[transIndex].userMoney += transMoney;
                    console.log(`转账成功,余额为:${arr[index].userMoney}`);
                } else {
                    console.log(`余额不足`);
                }
            } else {
                console.log(`输入的格式不正确`);
            }

        } else {
            console.log(`无法给自己转账`);
        }
    } else {
        console.log(`${transaccount}不存在`);
    }

}

//切换账户
function switchaccount(index) {
    console.log(`请输入你要切换的用户`);
    let changName = re.question();
    let changeIndex = saveaccount(changName);//获取切换用户的下标
    if (changeIndex != -1) {
        if (changeIndex != index) {
            console.log(`请输入密码`);
            let changePwd = re.question();
            if (changePwd == arr[changeIndex].userPwd) {
                return changeIndex;
            } else {
                console.log(`输入的密码错误`);
                return undefined;
            }
        } else {
            console.log(`已在本账户里面`);
        }
    } else {
        console.log(`${arr[index].userName}用户不存在`);
    }
}

//调用主函数
main();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值