- 欢迎界面
- 开卡,输入8位卡号,6位密码,姓名,18位身份证号,开卡
- 登录:卡号,密码,显示余额,
- 存款:输入卡号,大于0的金额,存款,
- 取款 输入卡号,大于0的金额,取款,检查余额不足
- 转账 输入卡号,对方卡号,对方姓名,大于0的余额,两个账号余额做对应的相减,要检查余额不足
- 修改密码 输入卡号,旧密码,新密码两次
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
class Person{
constructor(debitCard,password,userName,IDCard){
this.debitCardNum=debitCard
this.pwd=password
this.userName=userName
this.IDCard=IDCard
this.balance = 100
}
balanceState(money){
if(this.balance>0){
this.balance +=money
console.log("当前余额"+this.balance);
}
}
}
let atm = {
// info:{},
// receiver:{},
personList:[new Person('11111111','111111','11','111111111111111111')],
balance:0,
welcome(){
console.log('欢迎登录');
let a = prompt('1开卡2登录3修改密码4退出')
switch (a){
case '1':
this.openCard()
break;
case '2':
this.login()
break;
case '3':
this.changePassword()
break;
case '4':
console.log('已退出');
break;
default:
console.log('无此操作,请重新选择');
arguments.callee.call(this)
break;
}
},
openCard(){
let debitCardNum="",pwd="",userName="",IDCard="",isIDCardUsed=false
do{
debitCardNum =prompt("请输入8位卡号")
if(debitCardNum.trim().length!==8 || isNaN(debitCardNum)){
console.log("卡号输入格式不对请重新输入"+debitCardNum);
}
}while(debitCardNum.trim().length!==8||isNaN(debitCardNum))
do{
pwd = prompt("请输入6位密码")
if(pwd.trim().length!==6 ){
console.log("密码长度不对请重新输入");
}
}while(pwd.trim().length!==6 )
do{
userName=prompt('请输入姓名')
if(!userName.trim()){
console.log('用户名不能为空');
}
}while(!userName.trim())
do{
IDCard = prompt('请输入18位身份证号码')
if(IDCard.trim().length!==18 || isNaN(IDCard)){
console.log("身份证号码长度不对请重新输入");
}
isIDCardUsed = this.personList.some(function(item){
return item.IDCard===IDCard
})
if(isIDCardUsed){
console.log('身份证号已被注册,请重新输入');
}
}while(IDCard.trim().length!==18 || isNaN(IDCard)||isIDCardUsed)
let person = new Person(debitCardNum,pwd,userName,IDCard)
this.personList.push(person)
console.log(this.personList);
this.welcome()
},
login(){
console.log("登录");
let debitCardNum='',pwd='',isCorrect=false
do{
debitCardNum=prompt('请输入您的8位卡号')
if(debitCardNum.trim().length!==8 || isNaN(debitCardNum)){
console.log("卡号输入格式不对请重新输入"+debitCardNum);
}
}while(debitCardNum.trim().length!==8 || isNaN(debitCardNum))
do{
pwd = prompt("请输入您的6位密码")
if(pwd.trim().length!==6 ){
console.log("密码长度不对请重新输入");
}
}while(pwd.trim().length!==6 )
isCorrect = this.personList.some(function(item){
return item.debitCardNum===debitCardNum&&item.pwd===pwd
})
if (isCorrect) {
console.log("登录成功");
this.info = this.personList.find(function(item){
return item.debitCardNum===debitCardNum
})
console.log("当前余额为:"+this.info.balance);
this.mainPage()
} else{
console.log("卡号或密码不正确,请重新输入");
arguments.callee.call(this)
}
},
mainPage(){
let a = prompt('1存款2取款3转账4修改密码5注销')
switch (a){
case '1':
this.deposit()
break;
case '2':
this.withdrawal()
break;
case '3':
this.transfer()
break;
case '4':
this.changePassword()
break;
case '5':
this.welcome()
break;
default:
console.log('无此操作,请重新选择');
arguments.callee.call(this)
break;
}
},
deposit(){
let debitCardNum='',money=0
console.log(this.info.debitCardNum);
do{
debitCardNum=prompt('请输入您的8位卡号')
if(debitCardNum.trim().length!==8 || isNaN(debitCardNum)){
console.log("卡号输入格式不对请重新输入"+debitCardNum);
}
if(this.info.debitCardNum!==debitCardNum){
console.log("您的卡号输入错误,请重新输入");
}
}while(debitCardNum.trim().length!==8 || isNaN(debitCardNum)||this.info.debitCardNum!==debitCardNum)
console.log("您的余额为"+this.info.balance);
do{
money = parseInt(prompt("请输入您需要存款的金额"))
if(money<=0){
console.log("金额<=0无效存款金额");
}
}while(money<=0)
for (var i in this.personList) {
if(this.personList[i].debitCardNum===debitCardNum){
this.personList[i].balanceState(money)
}
}
this.mainPage()
},
withdrawal(){
let debitCardNum='',money=0
do{
debitCardNum=prompt('请输入您的8位卡号')
if(debitCardNum.trim().length!==8 || isNaN(debitCardNum)){
console.log("卡号输入格式不对请重新输入"+debitCardNum);
}
if(this.info.debitCardNum!==debitCardNum){
console.log("您的卡号输入错误,请重新输入");
}
}while(debitCardNum.trim().length!==8 || isNaN(debitCardNum)||this.info.debitCardNum!==debitCardNum)
console.log("您的余额为"+this.info.balance);
do{
money = -parseInt(prompt("请输入您需要取款的金额"))
if(money>=0){
console.log("金额<=0无效存款金额");
}
if(this.info.balance+money<0){
console.log("您的余额不足,只有"+this.info.balance+"存款,取款失败");
}
}while(money>=0||this.info.balance+money<0)
for (var i in this.personList) {
if(this.personList[i].debitCardNum===debitCardNum){
this.personList[i].balanceState(money)
}
}
this.mainPage()
},
// 转账 输入卡号,对方卡号,对方姓名,大于0的余额,两个账号余额做对应的相减,要检查余额不足
transfer(){
let debitCardNum='',money=0,receiverNum='',receiverName=''
do{
debitCardNum=prompt('请输入您的8位卡号')
if(debitCardNum.trim().length!==8 || isNaN(debitCardNum)){
console.log("卡号输入格式不对请重新输入"+debitCardNum);
}
if(this.info.debitCardNum!==debitCardNum){
console.log("您的卡号输入错误,请重新输入");
}
}while(debitCardNum.trim().length!==8 || isNaN(debitCardNum)||this.info.debitCardNum!==debitCardNum)
do{
receiverNum=prompt('请输入对方的8位卡号')
if(receiverNum.trim().length!==8 || isNaN(receiverNum)){
console.log("卡号输入格式不对请重新输入");
}
if(this.info.debitCardNum!==receiverNum){
console.log("对方的卡号输入错误,请重新输入");
}
}while(receiverNum.trim().length!==8 || isNaN(receiverNum)||this.info.debitCardNum!==receiverNum)
do{
receiverName=prompt('请输入姓名')
if(!receiverName.trim()){
console.log('用户名不能为空');
}
}while(!receiverName.trim())
console.log("您的余额为"+this.info.balance);
do{
money = -parseInt(prompt("请输入您需要转账的金额"))
if(money>=0){
console.log("金额<=0无效转账金额");
}
if(this.info.balance+money<0){
console.log("您的余额不足,只有"+this.info.balance+"存款,转账失败");
}
}while(money>=0||this.info.balance+money<0)
for (var i in this.personList) {
if(this.personList[i].debitCardNum===debitCardNum){
this.personList[i].balanceState(money)
}
}
for (var i in this.personList) {
if(this.personList[i].debitCardNum===receiverNum){
this.personList[i].balanceState(-money)
}
}
this.mainPage()
},
// 修改密码 输入卡号,旧密码,新密码两次
changePassword(){
console.log("登录");
let debitCardNum="",pwd="",pwdNew="",pwdNew2='',isCorrect=false
do{
debitCardNum=prompt('请输入您的8位卡号')
if(debitCardNum.trim().length!==8 || isNaN(debitCardNum)){
console.log("卡号输入格式不对请重新输入");
}
}while(debitCardNum.trim().length!==8 || isNaN(debitCardNum))
do{
pwd = prompt("请输入您的6位旧密码")
if(pwd.trim().length!==6 ){
console.log("密码长度不对请重新输入");
}
}while(pwd.trim().length!==6 )
isCorrect = this.personList.some(function(item){
return item.debitCardNum===debitCardNum&&item.pwd===pwd
})
if (!isCorrect) {
console.log("卡号或密码不正确,请重新输入");
return arguments.callee.call(this)
}
do{
pwdNew = prompt("请输入您的6位新密码")
if(pwdNew.trim().length!==6 ){
console.log("密码长度不对请重新输入");
}
}while(pwdNew.trim().length!==6 )
do{
pwdNew2 = prompt("请再次输入您的6位新密码")
if(pwdNew2!==pwdNew ){
console.log("两次密码输入不一致,请重新确认新密码");
}
}while(pwdNew2!==pwdNew)
for (var i in this.personList) {
if(this.personList[i].debitCardNum===debitCardNum){
this.personList[i].pwd=pwdNew
}
}
console.log(this.personList);
this.welcome()
}
}
atm.welcome()
</script>
</body>
</html>