ATM模拟机续作
2016-12-22 19:03
225 查看
ATM2.0
继上次的ATM1.0之后,ATM2.0又出现了,这次的程序设计在我伟大的巧姐老师帮助下,完善了许多,我觉得还算比较成功的,但仍然存在许多bug(我觉得),不过没有关系,现在我正学文件操作,等彻底掌握后,就可以实现更多的功能了/* **程序说明:模拟ATM机 (这个初步的还不能建立用户个人档案) **设计时间:2016.12.7—2016.12.9 **设计者:LAN7 */ #include<stdio.h> #include<stdlib.h> /************************************************************************* 定义一个取款的函数 *************************************************************************/ int qukuan(int money) { printf("请输入您的取款金额(友情提示:本机取款金额为100的整数倍):"); int m;//定义变量m,来判断money值是否有变动 scanf("%d",&m); if(m<=0)//存款金额为负,非法操作,退出 { printf("警告!小熊孩子不要作\n"); return money; } else if(m>money)//所取金额大于存款,非法操作,退出 { printf("对不起,你太穷了,没那么多钱!\n"); return money; } else if(m%100!=0)//存入金额格式不对,非法操作,退出 { printf("你个智障,会数钱吗!\n"); return money; } else //正确操作,返回值改变 { money = money - m; return money;//取款后的金额 } } /************************************************************************* 定义一个存款的函数 *************************************************************************/ int cunkuan() { int money;//存款金额 printf("请输入您的存款金额(友情提示:本机存款金额低于100000,且存款金额为100的整数倍):"); scanf("%d",&money); if(money<=0)//输入的存款金额非法 { printf("警告!小熊孩子不要作\n"); return 0; } else if(money>100000)//输入金额过大 { printf("您存入的金额过大。。。本机。。本机操作有些吃力。。。\n");//需改一下,这个不属于非法操作。。!!!!!!!!!!!!!!!!!!!!!!! return 0; } else if(money%100!=0)//输入金额格式不对 { printf("你会数钱吗,RMB有这样的嘛!!\n"); return 0; } else if(money>0&&money<100000)//正确合法的金钱值 { return money;//返回金钱值 } else//用户操作非法 { printf("不要输入其他什么鬼画符,本机拒绝识别!\n"); return 0; } } /************************************************************************* 定义一个显示主页面的函数 *************************************************************************/ void show() { system("cls");//清屏,将上次操作记录清除 int i; char c,b; c=21; b=1; for(i=1;i<=40;i++)//主界面边框的构建,VC和DevC不太一样,DevC的21的Ascii码的字符显示不出来。。。。 { printf("%c ",c); } printf("\n\n"); for(i=1;i<=15;i++)//使字体居中, { printf(" "); } printf("欢迎使用用ATM存款机\n\n");//标题 for(i=1;i<=18;i++) { printf(" "); } printf("1.存款\n\n");//选项一 for(i=1;i<=18;i++) { printf(" "); } printf("2.取款\n\n");//选项二 for(i=1;i<=18;i++) { printf(" "); } printf("3.查询\n\n");//选项三 for(i=1;i<=18;i++) { printf(" "); } printf("0.退出\n\n");//选项四 for(i=1;i<=27;i++) { printf(" "); } printf("请根据您的需要选出功能号%c\n\n",b); printf("\n"); for(i=1;i<=40;i++)//打印出格式底线 { printf("%c ",c); } printf("\n"); } /************************************************************************* 定义一个对下一步操作判断的函数 *************************************************************************/ int choose() { int v; printf("请选择您的下一步操作 1->继续 0->退出\n"); scanf("%d",&v);//用户的选择 if(v==1) { show();//选1为继续,重新加载主页面 return 0; } if(v==0) { printf("欢迎您的再次使用!");//选0直接退出程序 return 0; } else { show(); return 0; } } /************************************************************************* 定义条例说明函数 *************************************************************************/ void tl() { system("cls");//清屏,重新加载页面 long long i,time; int k,m,j,v,l,t=0,p; char b[130]={"故本机将你的账户余额清零!!"};//14个字符 char a[300]="警告由于您对于本机太不尊重了!!!";//17个字符 for(i=1;i<=40;i++)//条例阅读界面显示 { printf("**"); } printf("\n\n"); for(i=1;i<=20;i++)//使字体居中, { printf(" "); } printf("条 例\n\n\n"); for(i=1;i<=40;i++)//条例阅读界面显示 { printf("**"); } printf("\n\n\n"); for(i=1;i<=9;i++)//使字体居中, { printf(" "); } printf("1:本机知道你是有智慧的人,请不要多次戏弄本机!\n\n");//条例一 for(i=1;i<=9;i++)//使字体居中, { printf(" "); } printf("2:除上述1、2、3选项,请不要输入其他违法指令\n\n");//条例二 for(i=1;i<=9;i++)//使字体居中, { printf(" "); } printf("3:存取款时请不要输入非法金额,不然会让他人觉的你很智障!!!\n\n");//条例三 for(i=1;i<=9;i++)//使字体居中, { printf(" "); } printf("4:你的钱在我手里!!在我手里!!在我手里!!\n\n\n\n\n"); //条例四 for(i=1;i<=40;i++)//条例阅读界面显示 { printf("**"); } printf("\n\n"); for(i=1;i<=3;i++)//三次,使用户确定选择三次 { t = 0; for(j=1;j<=12;j++)//使字体居中, { printf(" "); } printf("你确定看仔细了!!! 1->确定 0->不确定\n"); scanf("%d",&k);//用户的选择 if(k==1)//选择1,继续执行,直到满三次 { continue; } else if(k==0)//选择0,打印警告 { for(j=1;j<=12;j++)//使字体居中, { printf(" "); } printf("不确定也没用!!!继续给我看!!\n"); } else//用户输入非提示操作,由t来标志 { t = 1; break; } } if(t==1)//t值为1,表示如果用户在阅读条例时输入违法操作 { printf("\n\n\n\n\n\n\n\n\n\n\n\n"); system("cls");//先清屏,留以空间警告 printf("\n\n\n\n\n\n\n\n"); for(i=1;i<=15;i++)//使字体居中, { printf(" "); } printf("搁这你也不老实是吧!\n"); for(i=1;i<=1500000000;i++);//时间延迟 { } for(v=1;v<=5;v++)//警告显示,闪烁5次 { system("cls");//每次闪烁后都需要清屏 for(i=1;i<=300000000;i++);//时间延迟 printf("\n\n\n\n\n\n\n\n"); for(i=1;i<=20;i++)//使字体居中, { printf(" "); } printf("警告!!\n"); for(i=1;i<=15;i++)//使字体居中, { printf(" "); } printf("本机将你的账户余额清零!!\n"); for(i=1;i<=15;i++)//使字体居中, { printf(" "); } printf("本机将你的账户余额清零!!\n"); for(i=1;i<=15;i++)//使字体居中, { printf(" "); } printf("本机将你的账户余额清零!!\n"); for(i=1;i<=300000000;i++); } system("cls"); printf("\n\n\n\n\n\n\n\n\n"); for(i=1;i<=16;i++)//使字体居中, { printf(" "); } printf("怕了吧,怕就不要那么作了!\n\n\n\n\n"); for(i=1;i<=2000000000;i++) { } } /**************************************************** 说明,本段代码本想使汉字一个一个出来。。可是汉字在 数组中的存储好像是两个空间存一个字。。。出不来效果 **************************************************** for(v=0;v<34;v=v+2)//变量V每增加一次,便多输一个字 { system("cls");//每次多输一个字便清屏 printf("\n\n\n\n\n\n\n\n\n\n\n\n"); for(i=1;i<=10;i++)//使字体居中, { printf(" "); } for(i=0;i<v;i++)//变量v与i相结合,达到每次多输出一个字的效果 { printf("%c ",a[i]); for(time=1;time<=500000000;time++);// { } } } for(v=0;v<28;v=v+2)//这个for循环的效果和上一个一样,只不过输出的句子不一样 { system("cls"); printf("\n\n\n\n\n\n\n\n\n\n\n\n"); for(i=1;i<=10;i++)//使字体居中, { printf(" "); } for(i=0;i<v;i++) { printf("%c ",b[i]); for(time=1;time<=500000000;time++); { } } } */ } /************************************************************************* 正式的主函数来了 *************************************************************************/ int main() { long long q; char n1; //freopen("data.in", "r", stdin); //freopen("data.out", "w", stdout); int money,n,sum,change;//变量sum用来存储非法操作次数 money = 0;//记录存储用户的存款金额 sum = 0;//记录存储用户非法操作的次数 show();//初次打印主界面 while(1) { scanf("%s",&n1); if(n1>='0'&&n1<='3') { n=n1-'0'; } else { printf("请输入正确操作!!!小熊孩子不要作!!!\n"); sum++; choose(); } if(n==1)//客户选择服务一 { change = money;//change该变量把钱数保存下来 money = money+cunkuan(); if(change==money)//如果操作前后money值未改变,表明该用户进行非法操作 { sum++; //非法操作次数增加一次 } else { printf("存款成功!您的账户余额为:%d\n\n\n",money); } choose();//进行完本次操作后进行选择 } else if(n==2)//客户选择服务二 { change = money; money = qukuan(money); if(change==money)//如果操作前后money值未改变,表明该用户进行非法操作 { sum++;//非法操作次数增加一次 } else { printf("取款成功!您的账户余额为:%d\n\n\n",money); } choose();//进行完本次操作后进行选择 } else if(n==3)//客户选择服务三 { printf("您的余额为:%d\n",money); choose();//非法操作次数增加一次 } else if(n==0)//客户服务选择四 { printf("欢迎您的再次使用!\n"); return 0; } /*else if(n<0||n>3) { printf("请输入正确操作!!!小熊孩子不要作!!!\n"); sum++; choose(); }*/ if(sum>=3)//用户非法输入达到三次后,就退出本系统。。。。。。额,其实还是可以改改,改个弹出个使用说明 { printf("因为您的多次智障操作,本机不开心,本机有情绪!本机拒绝为你服务!!\n"); printf("请阅读本条例后再次使用本机\n"); for(q=1;q<=3000000000;q++)//时间延迟 { } tl();//用户违法操作达到三次后就出现条例阅读页面 sum = 0; show(); }//当触发该条件后,执行完相应函数后,并没有跳出那个页面,也就是说这个while的循环并没有进行,为什么! if(sum>0)//有非法操作的时候,自动记录打印 { printf("警告:您已进行%d次非法操作,请注意您的操作\n",sum); } } return 0; }
相关文章推荐
- C++课程设计之ATM模拟机
- ATM模拟机1.0
- PPPoA:基于 ATM AAL5 的 PPP--网络大典
- ATM出钞模块的控制系统设计
- ATM物理出钞方式
- ATM系统实现[6]——密码面板组件[00原创]
- 我的第一桶金?? 金融机具?ATM?TVM?APM...?
- ATM跨行查询也开始收费了
- ATM 软件创新、改进的迫切性
- ATM仿真设计与实现C++
- ATM协议及ATM技术介绍
- 简单的ATM自动提款设计
- atm16 多功能秒表
- c语言ATM取款机程序
- ATM取款机系统模拟仿真
- Sqlserver 以前我在学校T-sql建ATM取款机的sql语句
- GNS3模拟ATM的简单配置
- Ethernet versus ATM
- Payoneer取人民币全过程(ATM)