const rs = require("readline-sync");
//2020 9/19
// 创建多个账号
let users = [
{ name: "f70", pwd: "123a", blance: 1000 },
{ name: "f71", pwd: "123b", blance: 2000 },
{ name: "f72", pwd: "123c", blance: 3000 }
];
// 查找用户
function search(transAccount, qz) {//第二个形数 qh 判断切换是否失败
for (let index in users) {
if (transAccount == users[index].name) {
return index;
}
else if (index == users.length - 1) {
if (qz) {
console.log(`切换账户失败!!!!!!`);
} else {
console.log(`你输入的账号 不存在`);
}
return false;
}
}
}
// 系统
function system() {
while (true) {
console.log(`请选择以下功能: 1、登录 2、注册 0、退出`);
let option = rs.question() - 0;
switch (option) {
// 登录
case 1:
let index = islogin();
if (index || index === 0) {
let i = main(users, index);
if (i == 0) {
return;
}
}
return;
case 2:
//注册
reg();
break;
// 退出
case 0:
return false;
}
}
}
// 主程序
function main(users, index) {
console.log(`欢迎来到!!!中国银行!!!`);
let option;
while (true) {
console.log(`请输入您的选择:1、查询 2、存钱 3、取钱 4、转账 5、切换账户 6、 修改密码 0、退出`);
option = rs.question() - 0;
switch (option) {
// 查询
case 1:
console.log(`当前账户余额位${users[index].blance}`);
break;
// 存钱
case 2:
saveMoney(users, index);
break;
// 取钱
case 3:
dropMoney(users, index);
break;
//转账
case 4:
transMoney(users, index);
break;
//切换账户
case 5:
let stat = transName(users, index);
if (stat || stat === 0) { //返回下标或则下标为0的执行操作
index = stat;
}
break;
// 修改密码
case 6:
let state = changepwd(users, index);
if (state||state==0) { //返回下标或则下标为0的执行操作
index = islogin();
}
// 为假执行
else {
return false;
}
break;
// 退出
case 0:
console.log(`欢迎下次光临!!`);
return 0;
}
}
}
//注册
function reg() {
while (true) {
console.log(`请输入注册账号`);
let zhuce = rs.question();
for (let index in users) {
if (zhuce != users[index].name && index == users.length - 1) {
console.log(`请输入账户密码!!!`);
let newpwd = rs.question();
users.push({ name: zhuce, pwd: newpwd, balance: 0 });
console.log(`${users[index].name}注册成功!!!!`);
return;
}
// 如果注册账号与已有账号相等就输出该句子
else if (zhuce == users[index].name) {
console.log(`当前注册账号${users[index].name}已经存在`);
console.log(`1、继续注册 2、退出注册`);
let option = rs.question()-0;
if (option == 2) {
return;
}
}
}
}
}
// 判断登录是否成功
function islogin(qz, changeindex = 0) {
// //判断3次机会
let count = 3;
while (count) {
let inputName = users[changeindex].name;
if (!qz) {
console.log(`请用户输入账号!!!`);
inputName = rs.question();
}
for (let i in users) {
//判断账号是否存在
if (inputName == users[i].name) {
console.log(`请输入密码!!!`);
let inputpwd = rs.question()
//密码是否正确
if (inputpwd == users[i].pwd) {
return i;
}
//密码错误
else if (count == 1) {
console.log(`3次密码输入错误!!!冻结`);
return false;
}
else {
console.log(`密码输入错误!!!您还有${--count}次机会`);
break;
}
}
//判断多账户所有 账号是否都在
else if (i == users.length - 1 && count > 1) {
console.log(`输入账号有错误!!!您还有${--count}次机会`);
}
else if (count == 1) {
console.log(`3次机会已经用完!!!冻结`);
count = 0;
break;
}
}
}
}
// }
// 存钱
function saveMoney(users, index) {
console.log(`请输入存钱金额!!!`);
let saveMoney = rs.question() - 0;
if (!isNaN(saveMoney) && (saveMoney % 100 == 0)) {
users[index].blance += saveMoney;
console.log(`当前账户金额为${users[index].blance}`);
}
else {
console.log(`输入有误!!!`);
return false;
}
}
// 取钱
function dropMoney(users, index) {
console.log(`请输入取钱金额!!!`);
let dropMoney = rs.question() - 0;
if (!isNaN(dropMoney) && (dropMoney % 100 == 0)) {
if (dropMoney <= users[index].blance) {
users[index].blance -= dropMoney;
console.log(`当前账户金额为${users[index].blance}`);
}
else {
console.log(`账户金额不足!!!!`);
}
}
else {
console.log(`输入有误!!!`);
return false;
}
}
// 转账
function transMoney(users, index) {
console.log(`请输入转账账号!!!`);
let transAccount = rs.question();
// 如果不等于自己
if (transAccount != users[index].name) {
let transindex = search(transAccount);
// 获取下标 f70 f71 f72其中2个
if (transindex || transindex === 0) {
console.log(`请输入转账金额!!!`);
let transMoney = rs.question() - 0;
//转账相关操作
if (!isNaN(transMoney) && transMoney % 100 === 0 && transMoney > 0) {
if (transMoney <= users[index].blance) {
users[index].blance -= transMoney;
users[transindex].blance += transMoney;
console.log(`当前账户余额为${users[index].blance}`);
}
// 钱不够
else {
console.log(`转账金额不足`);
}
}
else {
console.log(`输入有误!!!!`);
return false;
}
}
}
else {
console.log(`你已经在${users[index].name}下,不能给自己转账`);
return false;
}
}
// 切换账户
function transName(users, index) {
console.log(`请输入切换账号!!!!`);
let transAccount = rs.question();
// 判断是不是切换自己的账号
if (transAccount != users[index].name) {
let tindex = search(transAccount, "qh"); //第二个参数 qh 判断切换是否失败
if (tindex || tindex === 0) { //下标或则下标为0时执行操作
return islogin("qh", tindex);
}
}
else {
console.log(`你已经在当前${users[index].name}账号下`);
return false;
}
}
// 修改密码
function changepwd(users, index) {
console.log(`请输入原密码:`);
let password = rs.question();
if (password == users[index].pwd) {
console.log(`请输入新密码!!!!`);
let newPWD = rs.question();
users[index].pwd = newPWD;
console.log(`原密码是${users[index].pwd},新密码${newPWD}`);
return true;
}
else {
console.log(`原密码输入错误!!!!`);
return false;
}
}
system();
ATM机对象版
最新推荐文章于 2024-10-01 20:12:28 发布