ATM机需求
一、登录
要求用户输入卡号和密码。如果三次之内可以重复输入;三次以上输入错误,则退出系统。
// 一、登录界面
Login();
// 检验是否能在3次内登录成功
function Login() {
let cardNo;
let pwd;
for (let i = 0; i < 3; i++) {
cardNo = prompt(`请输入卡号:`);
pwd = prompt(`请输入密码:`);
if (cardNo == "" || pwd == "") { // 账号或密码不能为空值
alert(`密码或账号不能为空,请重新输入账号或密码`);
}else if (isLoginSucess(cardNo, pwd)) {
Main();
return;
} else {
alert(`用户或密码输入错误,请重新输入!`);
}
}
alert(`3次机会已经用完,账号锁定,请去柜台`);
}
// 查看是否登录成功
function isLoginSucess(cardNo, pwd) {
for (let i = 0; i < cards.length; i++) {
if (cards[i].cardNo == cardNo && cards[i].pwd == pwd) {
loginIndex = i;
return true;
}
}
return false;
}
二、登录成功后,显示主界面。
要求用户输入所需的操作,然后调用相应的函数,实现操作。操作完成后,再回到主界面,继续要求用户输入所需的操作。
1.查询余额 2.存款 3.取款 4.转账 0.退出
// 二、主界面
function Main() {
let choose = parseInt(prompt(`欢迎来到懒羊羊的ATM机~~,请选择你需要的操作:
1.查询余额 2.存款
3.取款 4.转账
0.退出`));
switch (choose) {
case 1: QueryMoney(); Main(); break;
case 2: DepositMoney(); Main(); break;
case 3: WithdrawMoney(); Main(); break;
case 4: TransferAccount(); Main(); break;
case 0: Exit(); break;
}
}
三、操作
1、显示余额
显示当前帐号余额。
// 显示余额
function displayMoney(message) {
alert(`${message}你当前余额为:${getMoneyByCards(loginIndex)}`);
}
// 通过账号获取账户里面的钱
function getMoneyByCards(AcountIndex) { // AcountIndex 获取账户下标
return cards[AcountIndex].money;
}
// 1.查询
function QueryMoney() {
if (loginIndex == -1) {
alert(`请登录账号`);
return;
}
displayMoney(``);
}
2、存款:
要求用户输入存款金额,完成存款操作。(在原来金额基础上加上存款金额)
// 2.存款
function DepositMoney() {
if (loginIndex == -1) {
alert(`请登录账号`);
return;
}
let money = parseInt(prompt(`输入要存的钱:`));
cunMoney(loginIndex, money);
displayMoney(`存款成功!`);
}
// 存款的结果
function cunMoney(AccountIndex, money) { // AcountIndex 获取账户下标,money 表示用户输入要存的钱
cards[AccountIndex].money += money;
}
3、取款
要求用户输入取款金额,完成取款操作。如果超支,不允许取款,并给予提示(在原来金额基础上减上存款金额)。
// 3.取款
function WithdrawMoney() {
if (loginIndex == -1) {
alert(`请登录账号`);
return;
}
let money = parseInt(prompt(`输入要取款的金额:`));
// result 接收 quMoney()的返回值
let result = quMoney(loginIndex, money);
if (result == 0) {
alert(`余额不足`);
return;
}
displayMoney(`取款成功!`);
}
// 取款时判断钱是否足够
function quMoney(AccountIndex, money) { // AcountIndex 获取账户下标,money 表示用户输入要取的钱
if (cards[AccountIndex].money < money) {
return 0; // 余额不足
}
cards[AccountIndex].money -= money;
return 1; // 取款成功
}
4、转帐
要求用户输入转帐卡号,并输入转帐金额。如果超支,不允许转帐,并给予提示。
// 4.转账
function TransferAccount() {
let cardNo = prompt(`输入要转账的账户:`);
let money = prompt(`输入要转账的金额:`);
// result 接收 zhuanMoney()的返回值
let result = zhuanMoney(loginIndex, cardNo, money);
if (result == -1) {
alert(`卡号不正确,重新输入!`);
} else if (result == 0) {
alert(`账户余额不足!`);
} else {
displayMoney(`转账成功!`)
}
}
// 转账判断账号是否正确以及钱是否足够
function zhuanMoney(AccountIndex, cardNo, money) { // AcountIndex 获取账户下标,cardNo 表示收钱的账号,money 表示用户输入要转账的钱
AccountIndex = -1; // 卡号不存在
// 判断卡号是否正确
for (let i = 0; i < cards.length; i++) {
if (cards[i].cardNo == cardNo) {
AccountIndex = i;
break;
}
}
// 提示卡号不正确
if (AccountIndex == -1) {
return -1;
}
if (cards[loginIndex].money < money) {
return 0; // 余额不足
}
//转账用户减钱
// 被转用户加钱
cards[loginIndex].money -= money;
cards[AccountIndex].money += money;
return 1; // 转钱成功
}
5、退出
退出程序,结束操作。
// 5.退出
function Exit() {
loginIndex = -1;
}
完整代码
<script>
//cards所有的卡的数组
let cards = [
{ "cardNo": "80001", "pwd": "111111", money: 1000000000 },
{ "cardNo": "80002", "pwd": "222222", money: 1000000000 },
{ "cardNo": "80003", "pwd": "333333", money: 1000000000 }];
let loginIndex = -1; //登录的账号信息,存储取应的下标,-1表示未登录
// 一、登录界面
Login();
// 检验是否能在3次内登录成功
function Login() {
let cardNo;
let pwd;
for (let i = 0; i < 3; i++) {
cardNo = prompt(`请输入卡号:`);
pwd = prompt(`请输入密码:`);
if (cardNo == "" || pwd == "") { // 账号或密码不能为空值
alert(`密码或账号不能为空,请重新输入账号或密码`);
}else if (isLoginSucess(cardNo, pwd)) {
Main();
return;
} else {
alert(`用户或密码输入错误,请重新输入!`);
}
}
alert(`3次机会已经用完,账号锁定,请去柜台`);
}
// 查看是否登录成功
function isLoginSucess(cardNo, pwd) {
for (let i = 0; i < cards.length; i++) {
if (cards[i].cardNo == cardNo && cards[i].pwd == pwd) {
loginIndex = i;
return true;
}
}
return false;
}
// 二、主界面
function Main() {
let choose = parseInt(prompt(`欢迎来到懒羊羊的ATM机~~,请选择你需要的操作:
1.查询余额 2.存款
3.取款 4.转账
0.退出`));
switch (choose) {
case 1: QueryMoney(); Main(); break;
case 2: DepositMoney(); Main(); break;
case 3: WithdrawMoney(); Main(); break;
case 4: TransferAccount(); Main(); break;
case 0: Exit(); break;
}
}
// 三、操作
// 1.查询
function QueryMoney() {
if (loginIndex == -1) {
alert(`请登录账号`);
return;
}
displayMoney(``);
}
// 2.存款
function DepositMoney() {
if (loginIndex == -1) {
alert(`请登录账号`);
return;
}
let money = parseInt(prompt(`输入要存的钱:`));
cunMoney(loginIndex, money);
displayMoney(`存款成功!`);
}
// 3.取款
function WithdrawMoney() {
if (loginIndex == -1) {
alert(`请登录账号`);
return;
}
let money = parseInt(prompt(`输入要取款的金额:`));
// result 接收 quMoney()的返回值
let result = quMoney(loginIndex, money);
if (result == 0) {
alert(`余额不足`);
return;
}
displayMoney(`取款成功!`);
}
// 4.转账
function TransferAccount() {
let cardNo = prompt(`输入要转账的账户:`);
let money = prompt(`输入要转账的金额:`);
// result 接收 zhuanMoney()的返回值
let result = zhuanMoney(loginIndex, cardNo, money);
if (result == -1) {
alert(`卡号不正确,重新输入!`);
} else if (result == 0) {
alert(`账户余额不足!`);
} else {
displayMoney(`转账成功!`)
}
}
// 5.退出
function Exit() {
loginIndex = -1;
}
// 显示余额
function displayMoney(message) {
alert(`${message}你当前余额为:${getMoneyByCards(loginIndex)}`);
}
// 通过账号获取账户里面的钱
function getMoneyByCards(AcountIndex) { // AcountIndex 获取账户下标
return cards[AcountIndex].money;
}
// 存款的结果
function cunMoney(AccountIndex, money) { // AcountIndex 获取账户下标,money 表示用户输入要存的钱
cards[AccountIndex].money += money;
}
// 取款时判断钱是否足够
function quMoney(AccountIndex, money) { // AcountIndex 获取账户下标,money 表示用户输入要取的钱
if (cards[AccountIndex].money < money) {
return 0; // 余额不足
}
cards[AccountIndex].money -= money;
return 1; // 取款成功
}
// 转账判断账号是否正确以及钱是否足够
function zhuanMoney(AccountIndex, cardNo, money) { // AcountIndex 获取账户下标,cardNo 表示收钱的账号,money 表示用户输入要转账的钱
AccountIndex = -1; // 卡号不存在
// 判断卡号是否正确
for (let i = 0; i < cards.length; i++) {
if (cards[i].cardNo == cardNo) {
AccountIndex = i;
break;
}
}
// 提示卡号不正确
if (AccountIndex == -1) {
return -1;
}
if (cards[loginIndex].money < money) {
return 0; // 余额不足
}
//转账用户减钱
// 被转用户加钱
cards[loginIndex].money -= money;
cards[AccountIndex].money += money;
return 1; // 转钱成功
}
</script>