const rs = require("readline-sync");
let account = [
["helei", 123, 1000],
["wangsan", 456, 3000]
];
//判断次数
let count = 3;
// 状态值
let state = true;
// 主函数
// main代表主函数
function main(inputName) {
while (state) {
console.log(`请输入你要办理的业务
1、查询 2、存钱 3、取钱 4、转账 5、切换账号 6、修改密码 0、退出`);
let business = rs.question() - 0;
switch (business) {
case 1:
console.log(`${account[inputName][0]}账户的余额为:${account[inputName][2]}元`);
break;
case 2:
saveMoney(inputName);
break;
case 3:
outMoney(inputName);
break;
case 4:
transfer(inputName);
break;
case 5:
inputName = switchAccount(inputName);
break;
case 6:
let temp= changePassword(inputName);
if(temp){
return "reg";
}
break;
case 0:
console.log(`欢迎下次光临`);
return;
default:
console.log(`没有你要办理业务的选项`);
break;
}
}
}
// login代表登陆
function login(isLogin, trasnName, indexNum) {
let inputNam = trasnName;
if (!trasnName) {
console.log(`请输入你的账号`);
inputNam = rs.question();
}
for (let i = 0; i < account.length; i++) {
if (inputNam == account[i][0]) {
if (!isLogin) {
return i;
}
if (i == indexNum) { //判断是不是切换账户
console.log(`您已经在${account[i][0]}下了。`);
return indexNum;
}
while (count) {
console.log(`请输入你的密码`);
let inputPWD = rs.question();
if (inputPWD == account[i][1]) {
main(i);
return i;
} else if (count == 1) {
console.log(`你的账户已冻结,请联系工作人员!!!`);
return;
} else {
console.log(`你输入的密码有误,你还有${--count}次机会`);
}
}
} else if (i == account.length - 1 && isLogin != "reg") {
console.log(`你输入的账号不存在`);
}
}
}
// 存钱
function saveMoney(inputName) {
console.log(`请输入你要存入的金额`);
let inputMoney = rs.question() - 0;
if (inputMoney < account[inputName][2]) {
if (inputMoney > 0 && inputMoney % 100 == 0 && !isNaN(inputMoney)) {
account[inputName][2] += inputMoney;
console.log(`恭喜你,存钱成功`);
} else {
console.log(`请输入正确的金额`);
}
} else {
console.log(`您的余额不足,或者你输入的是一个非数字`);
}
}
// 取钱
function outMoney(inputName) {
console.log(`请输入你要取出的金额`);
let outMoney = rs.question() - 0;
if (outMoney < account[inputName][2]) {
if (outMoney > 0 && outMoney % 100 == 0 && !isNaN(outMoney)) {
account[inputName][2] -= outMoney;
console.log(`恭喜你,取钱成功`);
} else {
console.log(`请输入正确的金额`);
}
} else {
console.log(`您的余额不足,或者你输入的是一个非数字`);
}
}
// 转账
function transfer(inputName) {
console.log(`请输入转账的账户`);
let trasnName = rs.question();
let temp = login(false, trasnName) //返回当前登录的下标
if (inputName != temp) {
if (temp || temp == 0) {
console.log(`请您输入你要转出的金额`);
let outMoney = rs.question() - 0;
if (outMoney > 0 && outMoney % 100 == 0 && outMoney < account[inputName][2] && !isNaN(inputName)) {
account[inputName][2] -= outMoney;
account[temp][2] += outMoney;
} else {
console.log(`请输入100的倍数`);
}
}
} else {
console.log(`不能给当前用户转钱`);
}
}
// 切换账号
function switchAccount(inputName) {
console.log(`请输入切换账号的名字`);
let switchName = rs.question();
let temp = login(true, switchName, inputName)
if (temp || temp === 0) {
return temp; //把切换账户的下标返回给主程序
} else {
return inputName; //如果账户不存在,则返回当前账户下标给主程序
}
}
// 登录
function startATMSystem() {
while (state) {
console.log(`欢迎来到成都市高新区中和镇ICBC银行
1、注册 2、登录
`);
let choice = rs.question() - 0;
switch (choice) {
case 1:
register();
break;
case 2:
login(true);
break;
default:
console.log(`请输入正确功能数字。`);
}
}
}
startATMSystem();
function register() {
let user = [];
console.log(`请输入账户:`);
let username = rs.question();
let temp = login("reg", username); //返回转账账户的下标
if (!temp && temp != 0) {
console.log(`请输入密码:`);
let userpwd = rs.question();
console.log(`请确认密码:`);
let userpwd2 = rs.question();
if (userpwd2 === userpwd) {
user.push(username, userpwd, 0);
account.push(user);
} else {
console.log(`确认密码与密码不一致`);
}
} else {
console.log(`您输入的账号 ${username},已经存在!!!`);
}
}
// 修改密码
function changePassword(inputName){
while(state){
console.log(`请输入你要修改的密码`);
let xiugai=rs.question();
if(xiugai==account[inputName][2]){
console.log(`你输入的密码和原密码一致请重新输入`);
}else{
console.log(`请确认你要修改的密码`);
let xiugai1=rs.question();
if(xiugai1==xiugai){
console.log(`修改成功`);
return true;
}else{
console.log(`你输入的修改密码和确认密码不一致`);
}
}
}
}