ATM(对象版)
const re = require('readline-sync');
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) {
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) {
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();