今天分享的是课后老师带我们一起做的题目,简易程序模拟ATM,觉的很有意思。程序中有任何疏漏或者改进之处,也请各位大神不吝赐教。下面附上程序(在xcode编译器下编写)
头文件(函数声明部分)
主程序部分
typedef struct{
long cardNum; //卡号
int password; //密码
double balance; //账户余额
}Account;
Account savedAccount = {6222804225251120,123456,9999999}; //全局变量,描述已存在的账户信息
BOOL loginAction(){
Account currentAccount = {0}; //当前输入的账户
int count = 3; //允许输入的总次数
do{
count--; //也可以放在循环,表示每输错一次密码,减少一次
printf("卡号:");
scanf("%ld",¤tAccount.cardNum);
printf("密码:");
scanf("%d",¤tAccount.password);
if(savedAccount.cardNum == currentAccount.cardNum &&savedAccount.password == currentAccount.password) //账号和密码同时输入正确,才能进入
{
return YES;
}else{
if(count == 0){
printf("您的卡已被吞,请联系发卡银行\n");
}else{
printf("账户输入异常,请重新输入\n");}
}
}
while(count);
return NO;
}
void ATMOperation(){
int loop =1;
BOOL result = loginAction(); //登陆返回结果YES才可以后续操作
while(loop){
if(result){
printf("-----------------------------------------------------\n") ; //登陆界面
printf("************大唐银行取款系统*************\n");
printf("-----------------------------------------------------\n");
printf("1.取款\t\t\t2.查询余额\n");
printf("3.修改密码\t\t4.退卡\n");
printf("请选择操作");
int temp = 0; //记录用户选择的数字
scanf("%d",&temp);
switch(temp){
case 1:
gertMoney();
break;
case 2:
checkBalance();
break;
case 3:
changePassword();
break;
case 4:
quit();
loop = 0; //赋值为0,循环条件不成立,结束操作.
break;
default:
break;
}
}
}
}
void getMoney(){
int money = 0;
while (1){
printf("请输入取款金额(单次金额不得超过5000):");
scanf("%d",&money);
if(money <= 5000){
if(savedAccount.balance < money){
printf("账户余额不足,请重新操作\n");
continue; //继续操作
}
break;
}
printf("输入金额超限,请重新操作\n");
}
savedAccount.balance -= money; // 余额减去取现再赋值给余额
printf("取款成功\n");
BOOL verifyPassword(){ //查询余额前需要先验证密码
int password = 0;
int count = 3; //三次输入机会
do {
printf("请输入密码:");
scanf("%d",&password);
count--; // 剩余次数
if (password == savedAccount.password){
return YES;
}else{
if (count == 0){
printf("您的卡已被吞,请联系发卡银行\n");
}else{
printf("输入有误,请重新输入\n");
}
}
}while (count);
return NO; }
void checkBalance(){
if (verifyPassword()) {
printf("余额为:%.2f\n",savedAccount.balance);
}
}
void changePassword(){
if (verifyPassword()) { //验证密码成功后,才能修改密码
while (1) {
int first = 0,second = 0;
printf("请输入新密码:");
scanf("%d",&first);
printf("请确认新密码:");
scanf("%d",&second);
if (first == second) {
savedAccount.password = first;
printf("修改密码成功\n");
break;
}else{
printf("输入有误。请核对后重新输入\n");
}
}
}
}
void quit() {
printf("请收好您的卡,再见!\n");
}