JS实现ATM机
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ATM</title>
</head>
<body>
<button onclick="aload()">点击登录</button>
<script>
//定义用户---账号、密码、余额
let use = [
{
//用户1
account:111,
psw:111,
balance:1000
},
{
//用户2
account:222,
psw:222,
balance:500
},
{
//用户3
account:333,
psw:333,
balance:600
}
];
let n = 0;//记录和判断当前应该是哪个卡号
//登录----账号===密码
function aload(){
//密码验证
for(let i=0; i<3; i++){
let user = parseInt(prompt('请输入账号'));
let psw = parseInt(prompt('请输入密码'));
for(let j=0; j<use.length; j++){
if(user === use[j].account && psw === use[j].psw){
n = j;
program(main());
return;
}
}
}
alert('登录失败');
}
//主界面
function main(){
let num = parseInt(prompt('1.存款;2.取款;3.查询余额;4.转账;5.退出;请选择:'));
return num;
}
//判断去哪个程序
function program(num){
switch(num){
case 1:
//存款
deposit(n);//n----当前卡号
break;
case 2:
//取款
withdrawals(n);//n----当前卡号
break;
case 3:
//查询余额
query(n);//n----当前卡号
break;
case 4:
//转账
transfer(n);//n----当前卡号
break;
default:
alert('感谢使用');
}
}
//存款
function deposit(n){
let num = parseInt(prompt(`请输入当前卡号${use[n].account}存款金额`));
num = num+use[n].balance;
alert(`您的当前卡号${use[n].account}余额为${num}元`);
use[n].balance = num;
program(main());
}
//取款
function withdrawals(n){
let num = parseInt(prompt(`请输入当前卡号${use[n].account}取款金额`));
if(compare(num, use[n].balance)){
alert('账号已超支,请重新输入');
withdrawals(n);
}else{
use[n].balance = use[n].balance-num;
alert(`当前卡号${use[n].account},账户余额为${use[n].balance}元`);
program(main());
}
}
//查询余额
function query(n){
alert(`当前卡号${use[n].account},账户余额为${use[n].balance}元`);
program(main());
}
//转账
function transfer(n){
//如果账号存在并且有效
if(isEffective()){
let num = parseInt(prompt('请输入转账金额'));
if(compare(num, use[n].balance)){
alert('账号已超支,请重新输入');
transfer(n);
}else{
use[k].balance += num;
use[n].balance = use[n].balance-num;
alert(`${use[k].account}账号转入${num}元,余额为${use[k].balance};当前账号${use[n].account},余额${use[n].balance}元`);
program(main());
}
}else{
alert('输入账号无效');
transfer(n);
}
}
//判断卡号是否有效----存在且不等于自己
let k = 0//k代表要转入的卡号
function isEffective(){
let account = parseInt(prompt('请输入转账卡号'));
//查询输入的这个账号是否存在并且有效
for(let j=0; j<use.length; j++){
if(account === use[j].account && account !== use[n].account){
k = j;
return true;//有效返回true
}
}
return false;//无效返回false
}
//比较余额
function compare(num, balance){
if(num > balance){ //如果超支返回true
return true;
}else{
return false;
}
}
</script>
</body>
</html>