模拟 ATM 机取款的过程_原创解法
来源:互联网 发布:java下载32位 编辑:程序博客网 时间:2024/05/16 16:12
题目:
(1)、定义两个能保存5个整形数的数组,一个用于保存5个人的卡号,一个用于保存对应卡号的密码。
(2)、判断输入的卡号是否在数组中。
(3)、如果在数组中就让输入密码,判断是否和卡号对应的密码匹配。
(4)、判断密码,24小时内只允许输入3 次 错误的密码。输入错误应该提示还剩下的输入次数,3次都输入错误提示24 小时内不允许操作该卡。
(5)、密码正确就让用户对该账户进行相应的操作。
(6)、注意取款的限制。
(7)、上述功能对于一个ATM机是循环的过程,也就是说每个客户都会按照上面的操作进行操作,一个用户操作完成,下一个用户来了还可以进行相应的操作 .
主函数:
#import <Foundation/Foundation.h>#import "MyHeadFile.h"int main(int argc, const char * argv[]){ int cardNumber[SIZECARD] ={0} , password[SIZECARD] = {0} ; int money[SIZECARD] = {0} , freezeCard [SIZECARD] = {0}; int card = 0 , pw = 0 ,judge1 = 1 , judge2 = 1 ,judge3 = -1, temp = 0, moneyNum = 0; int targetCard = 0; creatCard(cardNumber); creatPassword(password); creatMoney(money); printf("一下为已有账号及其密码和账户余额:\n"); for (int i = 0; i < SIZECARD ; i++ ) { printf("账号: %d ", cardNumber[i]); printf("密码: %d ",password[i]); printf("余额: %d \n",money[i]); } printf("\n"); printf("\n"); printf("\n"); while ( judge1 )//启动ATM { char c[1024] ={0}; char c2[1024] ={0}; card = 0; pw = 0; printf("请输入账号: "); scanf("%s" , c); printf("请输入密码: "); scanf("%s" ,c2); if ( legitimacy(c,c2) )//判断账号合法性 { copyContent( c, c2, &card , &pw ); //复制账号 if(selectFreezeCard( freezeCard , card) == 0) //判断账号是否被冻结 { //printf("%d ",selectFreezeCard( freezeCard , card)); if (selectCard( cardNumber, card )) //判断账号是否存在 { while(judge2 < 3) //密码循环 { if(selectPassword (password , pw))//判断密码是否正确 { while (judge3) //进入账号具体操作 { //关于输入金额或者账号是否合法 只做了一个例子, 2.存款 操作 printf("1. 查询余额 2. 存款 3.取款 4. 转账 0.退出\n"); printf("请输入数字选择:"); scanf("%d",&judge3); switch (judge3)//switch 开始 { case 0: break; case 1: selectBlance(cardNumber , card,money); break; case 2: printf("请输入存款金额:"); char moneys[20] ={0}; moneyNum = 0; scanf("%s" , moneys); if (legitimacy2(moneys)) { copyContent2( moneys, &moneyNum); if( deposit(cardNumber, card,money,moneyNum)) { printf("存款成功!\n"); } } else { printf("非法操作!\n"); } break; case 3: printf("请输入取款金额:"); moneyNum = 0; scanf("%d" , &moneyNum); if(withdrawals(cardNumber, card,money,moneyNum)) { printf("取款成功!\n"); } else { printf("余额不足!\n"); } break; case 4: targetCard = 0; printf("请输入目标账号:"); scanf("%d", &targetCard); if( selectCard(cardNumber, targetCard)) { printf("请输入转账金额:"); moneyNum = 0; scanf("%d" , &moneyNum); if(withdrawals(cardNumber, card,money,moneyNum)) { deposit(cardNumber,targetCard,money,moneyNum); printf("转账成功!\n"); //调用selectBlance()显示转入账户余额,测试用 selectBlance(cardNumber,targetCard,money); } else { printf("余额不足!\n"); } } else { printf("对方账号不存在!\n"); } break; default: break; }//switch 结束 if(judge3 == 0) // judge3=0 结束具体操作 { judge2 = 4; break; }// judge3=0 结束具体操作 结束 }//进入账号具体操作 结束 }//判断密码是否正确结束 else//判断密码是否正确 else { printf("密码不正确! 您还有%d次机会,超过三次账号在24消失内冻结\n",(3-judge2)); judge2++; printf("请输入密码: "); scanf("%d" ,&pw); }//判断密码是否正确 else 结束 }//密码循环 结束 if(judge2 > 2 && judge2 != 4) //超过三次冻结账号 { printf("您的账号:%d 已被冻结,请24小时后尝试 .\n" , card); freezeCard[temp++] = card; judge2 = 1; }//超过三次冻结账号 结束 else //超过三次冻结账号 else { judge2 = 1; }//超过三次冻结账号 else 结束 }//判断账号是否存在结束 else //判断账号是否存在 else { printf("账号不存在!\n"); }//判断账号是否存在 else 结束 }//判断账号是否被冻结结束 else//判断账号是否被冻结 else { printf("您的账号已被冻结!\n"); }//判断账号是否被冻结 else 结束 }//判断账号合法性结束 else //判断账号合法性结束else { printf(" 请输入数字! \n"); card = 0; pw = 0; }//判断账号合法性结束 else 结束 }//ATM循环 return 0;}
MyHeadFile.h 文件
#import <Foundation/Foundation.h>#define SIZECARD 5//创建账号void creatCard (int cardNumber[] );//创建密码void creatPassword( int password[] );//创建余额void creatMoney(int money[]);//查询卡号BOOL selectCard( int cardNumber[] , int card );//查询密码BOOL selectPassword( int password[] , int pw );//查询余额void selectBlance(int cardNumber[] , int card , int money[]);//存款操作BOOL deposit(int cardNumber[] , int card , int money[], int moneyNum);//取款操作BOOL withdrawals(int cardNumber[] , int card , int money[], int moneyNum);//判读输入的账号和密码是否为数字 zhanghaohefaBOOL legitimacy ( char c[], char c2[]);//判读单一读入的账号或转账金额输入是否为数字 zhanghaohefaBOOL legitimacy2 ( char c[]);//复制内容 fuzhizhanghaovoid copyContent(char c[], char c2[],int * card ,int *pw);//单一复制内容 fuzhizhanghaovoid copyContent2(char c[], int * m );
MyHeadFile.m文件
//创建账号void creatCard (int cardNumber[] ){ int temp = 0 , storage = 0; for(int i = 0; i < SIZECARD; i++) { storage = 0; temp = arc4random()%(9999-1000+1)+1000; for(int j = 0; j <= i; j++) { if(temp ==cardNumber[j] ) { storage = 1; } } if(storage == 1) { i--; storage = 0; } else { cardNumber[i] = temp; } }}//创建密码void creatPassword( int password[] ){ for (int i = 0; i<SIZECARD; i ++) { password[i] = arc4random()%(9999-1000+1)+1000; } }//创建余额void creatMoney(int money[]){ for (int i = 0; i<SIZECARD; i ++) { money[i] = arc4random()%(10000-0+1); }}//查询卡号BOOL selectCard( int cardNumber[] , int card ){ BOOL temp = 0; for (int i = 0; i < SIZECARD; i++) { if(card == cardNumber[i]) { temp = 1; } } return temp ;}//查询冻结账号BOOL selectFreezeCard( int freezeCard[] , int fc ){ printf("查询是否被冻结的账号为: %d \n",fc); BOOL temp = 0; for (int i = 0; i < SIZECARD; i++) { if(fc == freezeCard[i]) { temp = 1; printf("temp 被 改为 1 了! \n"); return temp ; } // printf("冻结的账号: %d \n",freezeCard[i]); } return temp ;}//查询密码BOOL selectPassword( int password[] , int pw ){ BOOL temp = 0; for (int i = 0; i < SIZECARD; i++) { if(pw == password[i]) { temp = 1; } } return temp ;}//查询余额void selectBlance(int cardNumber[] , int card , int money[]){ for (int i = 0; i < SIZECARD; i++) { if(card == cardNumber[i]) { printf("余额:%d \n", money[i]); break; } } }//存款操作BOOL deposit(int cardNumber[] , int card , int money[], int moneyNum){ BOOL temp = 0; for (int i = 0; i < SIZECARD; i++) { if(card == cardNumber[i]) { money[i] += moneyNum; return temp = 1; break; } } return temp; }//取款操作BOOL withdrawals(int cardNumber[] , int card , int money[], int moneyNum){ BOOL temp = 0; for (int i = 0; i < SIZECARD; i++) { if(card == cardNumber[i]) { if (money[i] >= moneyNum) { money[i] -=moneyNum; return temp = 1; } } } return temp ;}//判读输入的账号和密码是否为数字 zhanghaohefaBOOL legitimacy ( char c[], char c2[]){ BOOL temp = 1; for (int i = 0; i< strlen(c); i++) { if (c[i] < '0' || c[i] > '9') { temp = 0; } } for (int i = 0; i< strlen(c2); i++) { if (c2[i] < '0' || c2[i] > '9') { temp = 0; } } return temp;}//判读单一读入的账号或转账金额输入是否为数字 zhanghaohefaBOOL legitimacy2 ( char c[]){ BOOL temp = 1; for (int i = 0; i< strlen(c); i++) { if (c[i] < '0' || c[i] > '9') { temp = 0; } } return temp;}//复制内容 fuzhizhanghaovoid copyContent(char c[], char c2[],int * card ,int *pw){ for (int i = 0; i< strlen(c); i++) { if(i!= 0) { *card *= 10; } *card +=c[i]-'0'; } for (int i = 0; i< strlen(c2); i++) { if(i!=0) { *pw *= 10; } *pw +=c2[i]-'0'; }}//单一复制内容 fuzhizhanghaovoid copyContent2(char c[], int * m ){ for (int i = 0; i< strlen(c); i++) { if(i!= 0) { *m *= 10; } *m +=c[i]-'0'; } }
0 0
- 模拟 ATM 机取款的过程_原创解法
- 模拟ATM机取款的过程
- ATM取款机模拟
- 模拟ATM取款机
- 模拟ATM取款机
- 模拟ATM取款机
- c++模拟ATM取款机
- 模拟ATM机取款流程
- 模拟银行ATM取款机
- C++编写的ATM自动取款机模拟程序
- Java编写的模拟ATM取款机程序
- Java编写的模拟ATM取款机程序
- 分享一个模拟ATM取款机的DEMO
- JavaSE 模拟银行ATM取款机功能
- ATM取款机系统模拟仿真
- 模拟ATM自动取款机系统
- 模拟ATM自动取款机功能
- C++制作的ATM取款机
- java.lang.IllegalArgumentException: MALFORMED jar解析中文报错问题
- JSONP介绍与举例
- NSArray数组内容排序
- 【ACM菜逼解题报告】The Triangle(POJ1163)
- Navisworks API开发指南
- 模拟 ATM 机取款的过程_原创解法
- 关于extjs的Ext.MessageBox.prompt和非空验证方法
- Android——常用的系统服务
- poj解题报告——3176
- 安卓实现边框
- Oracle启动报错ORA-00119,ORA-00130
- 算法精解十二(C语言版)
- Struts2返回JSON数据的具体应用范例
- Just a Hook(线段树之点的成段更新)