**
while(),for()循环 switch()多选,函数封装传参,js基础ITM机
**let arr = [
{ name: `zs`, pwd: 123, money: 1000 },
{ name: `ls`, pwd: 234, money: 1500 },
{ name: `ww`, pwd: 555, money: 2000 }];
//主函数
function main() {
state = true
while (state) {
console.log(`欢迎来到彭大大银行`);
console.log(`请选择操作,1.登录 2.注册 0.退出`);
let options = rs.question() - 0; {
switch (options) {
case 1:
login()
state=false;//结束while循环
break;
case 2:
sign();
break;
case 0:
break;
}
}
}
}
main();
//判断用户在不在
function isUserName(userName) {
for (let index = 0; index <= arr.length; index++) {
if (userName == arr[index].name) {//判断输入的用户名是否等于数组里面的用户名
return index;
} else if (index == arr.length - 1) {//遍历到数组最后一个值
return false;
}
}
}
//注册
function sign() {
console.log(`请输入注册账号`);
let isSign = rs.question();
let signs = isUserName(isSign);//判断用户是否存在,存在返回下标
if (signs == false) {
console.log(`请输入密码`);
let isgnspwd = rs.question() - 0;
arr.push([{ name: signs, pwd: isgnspwd, money: 0 }]);//添加一个对象到数组
console.log(`注册成功`);
} else {
console.log(`当前用户已存在`);
}
}
//登录
function login() {
let state = true;
let i = 3;//只能输错账户或密码3次
while (i > 0 || state) {
--i;
console.log(`请输入账号`);
let names = rs.question();//接收输入的账户
let userName = isUserName(names);//判断用户是否存在,存在返回下标
for (let index = 0; index <= arr.length; index++) {//遍历数组
if (userName || userName === 0) {//判断输入的用户名能否跟数组里的匹配,匹配则输入密码
console.log(`请输入密码`);
let namePwd = rs.question() - 0;//-0把字符串变为纯数字
if (namePwd === arr[userName].pwd) {//判断密码
let stop= option(index);//调用登录函数,接收一个返回值(判断是不是按了0,按了则停止该函数)
if(stop==false){
return false;
}
} else if (i === 0) {//i==0代表最后一次机会用完,就冻结账户
console.log(`密码错误账户已冻结`);
state = false;
break;
} else {
console.log(`密码错误,你还有${i}次机会`);
break;
}
} else if (i === 0) {
console.log(`当前账户已冻结`);
state = false;
break;
} else if (index > arr.length - 1) {
console.log(`账号错误,你还有${i}次机会`);
}
}
}
}
//功能函数
function option(index) {
let state = true;
while (state) {
console.log(`请选择接下来的操作,1.查询 2.存钱 3.取钱 4.转账 5.切换账号 6.修改密码 0.退出`);
let opt = rs.question() - 0;
switch (opt) {//判断用户选择的操作相匹配
case 1:
console.log(`当前余额为${arr[index].money}`);
break
case 2:
saveMoney(index);
break
case 3:
drawMoney(index);
break
case 4:
transfer(index);
break
case 5:
let tName=transName(index);//接收到切换的账户,判断接收的账户或者账户等于下标0
if(tName||tName===0){
index=tName;//切换账户赋值给当前账户
}
break
case 6:
let isOK=alter(index);//修改密码后根据拿到的返回值isOK拿到是否修改成功,如果修改成功就调用登录函数
if(isOK==true){
login()
}
break
case 0:
console.log(`88`);
return false;
default: console.log(`输入有误`);//默认值,输入操作意外的数字则输出
}
}
}
//存钱
function saveMoney(index) {
console.log(`输入存款金额`);
let sMoney = rs.question() - 0;
arr[index].money += sMoney;//当前金额等于原金额加存入金额
console.log(`存款成功.当前余额为${arr[index].money}`);
}
//取钱
function drawMoney(index) {
console.log(`输入取款金额`);
let dMoney = rs.question() - 0;
if (dMoney <= arr[index].money) {//判断取出金额是否小于原金额
arr[index].money -= dMoney;//当前金额等于原金额减存入金额
console.log(`取款成功.当前余额为${arr[index].money}`);
} else {
console.log(`余额不足`);
}
}
//转账
function transfer(index) {
console.log(`请输入转账账户`);
let userTransfer=rs.question();
let isuserTran= isUserName(userTransfer);//判断转账账户是否存在于数组
if(isuserTran||isuserTran===0){//存在或者是下标为0的账户
if(isuserTran==index){//输入账户等于当前登录的账户
console.log(`不能给自己转账`);
}else{
console.log(`请输入转账金额`);
let isuserMoney=rs.question()-0;
arr[index].money-=isuserMoney;//登录账号的余额减去转账的金额
arr[isuserTran].money+=isuserMoney;//转入的账户金额减等于当前要转出的金额
console.log(`转账成功,你的余额为${ arr[index].money},他的余额为${arr[isuserTran].money}`);
}
}else{
console.log(`账户不存在`);
}
}
//切换账户
function transName(index){
console.log(`输入切换到的账户`);
let istran=rs.question();
let istranName=isUserName(istran);//判断转账账户是否存在于数组
if(istranName||istranName===0){
if(istranName!=index){//切换的账户不等于当前登录的账号
console.log(`输入密码`);
let istranNamepwd=rs.question()-0;
if(istranNamepwd===arr[istranName].pwd){//密码相同就把切换的账户传出去
console.log(`切换成功`);
return istranName;
}else{
console.log(`密码错误`);
}
}else{
console.log(`已经在该账户下`);
}
}else{
console.log(`账户不存在`);
}
}
//修改密码
function alter(index){
console.log(`请输入旧密码`);
let jped=rs.question()-0;
if(jped==arr[index].pwd){//判断密码输入正确后改密码
console.log(`请输入新密码`);
let xpwd1=rs.question()-0;
console.log(`确认新密码`);
let xpwd2=rs.question()-0;
if(xpwd1===xpwd2){//两次密码输入一致后,就把新密码赋值给旧密码
console.log(`修改成功`);
arr[index].pwd=xpwd1;
return true;
}
}else{
console.log(`密码错误`);
}
}