银行ATM机工作流程模拟编程(链表).doc

上传人:阳*** 文档编号:16453358 上传时间:2022-05-17 格式:DOC 页数:10 大小:24KB
返回 下载 相关 举报
银行ATM机工作流程模拟编程(链表).doc_第1页
第1页 / 共10页
银行ATM机工作流程模拟编程(链表).doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《银行ATM机工作流程模拟编程(链表).doc》由会员分享,可在线阅读,更多相关《银行ATM机工作流程模拟编程(链表).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、银行ATM机工作流程模拟编程(链表)银行ATM机工作流程模拟编程(链表)程序设计基础(一)综合作业银行ATM机工作流程模拟编程班级学号姓名综合作业目的1、通过编程及上机调试,掌握函数、文件、结构及链表的综合应用;2、掌握查找、排序等基本算法;3、掌握模块化程序设计的方法。综合作业内容编程,模拟一个ATM(AutomaticTellerMachine,自动取款机)的工作流程。依据帐户信息:姓名、帐号、密码、余额,完成ATM机功能:登录、显示余额、取款、修改密码。具体要求:1、合理规划数据结构,以保存储户信息;2、使用链表结构记录有关数据,使用链表完成相关操作;3、使用文件记载储户信息,程序启动时

2、加载储户信息,程序退出时保存储户信息;4、程序工作流程:显示登录界面:帐号:密码:接受用户输入。若为非法用户,提示出错,并重新登录,3次出错后退出;若为合法用户,则显示操作菜单,提供下述服务:显示基本信息修改密码查询余额存款取款(每次取款额度为¥5000元)退出5、*用户一次登录后的取款总数超过¥50000者,则程序自动产生一个明细记录,记载该用户的登录时间、地点(登录时间、地点假设已知,并用字符串表示)。考虑此种情况较少出现,为节省存储空间,不宜在描述储户信息的数据结构中直接分配字符数组(建议在其数据结构中添加一个指向字符串数组的指针,);6、提交设计文档及源代码清单。综合作业要求1、独立、

3、按时完成综合作业;2、进行需求分析,完成相关数据结构的规划与设计;3、实现菜单所列功能。具体要求:每个功能为一个独立的函数;所有的输入之前都要有提示。4、在程序的调试中,应用所学的计算机知识,完成大批数据的输入。并列出完整、严格的测试结果(包括输入和输出);5、提交完整的C代码及设计文档(包括设计方案、具体功能及实现、特点小结等)。扩展阅读:程序设计基础(一)综合作业报告程序设计基础(一)综合作业报告银行ATM机工作流程模拟编程班级:XXXXXX班学号:0000000000姓名:AAA一、题目要求编程,模拟一个ATM(AutomaticTellerMachine,自动取款机)的工作流程。依据帐

4、户信息:姓名、帐号、密码、余额,完成ATM机功能:登录、显示余额、取款、修改密码。具体要求:1合理规划数据结构,以保存储户信息;2使用链表结构记录有关数据,使用链表完成相关操作;3使用文件记载储户信息,程序启动时加载储户信息,程序退出时保存储户信息;4程序工作流程:1)显示登录界面:帐号:密码:接受用户输入。2)若为非法用户,提示出错,并重新登录,3次出错后退出;3)若为合法用户,则显示操作菜单,提供下述服务:显示基本信息修改密码查询余额存款取款(每次取款额度为¥5000元)退出5用户一次登录后的取款总数超过¥50000者,则程序自动产生一个明细记录,记载该用户的登录时间、地点(登录时间、地点

5、假设已知,并用字符串表示)。考虑此种情况较少出现,为节省存储空间,不宜在描述储户信息的数据结构中直接分配字符数组(建议在其数据结构中添加一个指向字符串数组的指针,);6提交设计文档及源代码清单。二、设计方案基本思路:用户的原始数据被保存在一个account文本文件中,程序启动时,建立链表,加载用户数据。提示用户登录,检查用户信息正确后,允许进行下一步操作;对于用户不正确的操作,均进行提示或警告,让其重新操作;程序结束,选择0安全退出并储存用户数据。框架结构:logon_system()模拟登录界面,用户登录后,在menu中进行主菜单的处理,用户根据需要选择进行下一步操作,将其他功能的具体实现分

6、别放到子函数或者子菜单中进行,实现分支选择操作。三、具体功能及实现基本功能:(1)从文件中读入数据初始化建立链表,从account文本文件中加载用户数据。(2)显示登录界面,并有提示这一功能在logon_system()函数中实现,显示登录界面,提示用户进行登录操作,并有相关温馨提示。(3)检查登录信息是否正确这一功能在access()中实现,如果用户输入信息不正确,提示用户重新操作。具体包括:输入的账号在account文件中不存在,即没有这个储蓄账户;输入的密码错误,提示用户重新输入,若三次输入不成功,程序自动退出,每次错误输入后,提示用户剩余输入次数;密码不足六位,提示用户重新输入,这种错

7、误不减少用户的输入次数。(4)显示主菜单,用户选择后,进入子菜单显示主菜单功能在menu()中实现,包括取款:选择后进入取款界面(draw_money()函数实现),提供50、100、200、500、800、1000、202*及自由输入金额(extra()实现)的取款。其中输入金额不是整50或100的进行提示,取款金额超过当前能够取出的最大整金额进行提示(isoverdraw()实现),并显示当前最多能取款的整数金额。取款超过5000的进行记录并对用户说明(extra()实现)。存款:提示用户输入存款金额,其中输入金额不是整50或100的进行提示(deposit()实现)。查询:显示当前余额(

8、query()实现)。改密:提示用户输入旧密码,两次输入新密码来达到确认效果,每次输入密码,对于密码不足六位、原密码输入错误、两次输入新密码不一致,均有提示,并让用户重新操作(revise()实现)。退出:用户结束操作,退出程序。四、特点小结由函数实现每个功能,思路清晰,结构明了;分枝型操作,便于用户进行;注重细节的程序设计思路,几乎对每一步操作都进行了判错以及提示处理,保证了程序能正常地运行;详尽的提示信息,友好的界面设计,提高了程序的实用性和观赏性;五、程序代码#include#include#includetypedefstructmeinthour,minute,second;char

9、address100;floatmm;memo;typedefstructacclongnumber;charname9;charpass7;floatm;structacc*next;structme*mnext;ac;ac*create_list();ac*access(ac*head);voidsave(ac*head);voidmenu();floatisoverdraw(float,int);voiddraw_money(ac*);voiddeposit(ac*);voidquery(ac*);voidrevise(ac*);voidlogon_system();floatextra

10、(ac*);intmain()intflag,select;ac*t,*head;head=create_list();logon_system();t=access(head);if(t=NULL)printf(三次输入错误,系统将自动退出!n);return0;flag=1;while(flag)printf(户主:%s帐号:%Ldnnn,t-name,t-number);menu();scanf(%d,&select);while(select5)printf(输入有误,请重新选择:n);scanf(%d,&select);system(CLS);switch(select)case1:

11、draw_money(t);break;case2:deposit(t);break;case3:query(t);break;case4:revise(t);break;case0:save(head);return1;return1;/*程序开始时,建链表,加载用户信息*/ac*create_list()ac*p,*head=NULL;FILE*fp;fp=fopen(E:account.txt,r);if(fp=NULL)printf(filenotexitsn);exit(0);while(!feof(fp)p=(ac*)malloc(sizeof(ac);fscanf(fp,%d,&

12、(p-number);fscanf(fp,%s,p-name);fscanf(fp,%s,p-pass);fscanf(fp,%fn,&(p-m);/在account文本文件中,每个人的信息间有换行符,故%fnp-mnext=NULL;p-next=head;head=p;fclose(fp);returnhead;/*检查用户登录信息,对密码错误、密码位数不足、账户不存在等情况进行提示,只有密码错误t+,否则t不变*/ac*access(ac*head)ac*p;intt=0;intn,flag=0;charpp100;while(tnumber=n&strcmp(p-pass,pp)=0&

13、strlen(pp)=6)flag=1;break;elseif(p-number=n&strcmp(p-pass,pp)!=0&strlen(pp)=6)printf(密码错误,请重新输入!剩余输入次数%dn,2-t);p=head;break;elseif(p-number=n&strlen(pp)!=6)printf(温馨提示:密码是六位数字或字母,请重新输入!n);t-;/这种情况t不变,故先减一,抵消后面t+的作用p=head;break;elsep=p-next;if(flag=1)break;elseif(p=NULL)printf(您输入的账户不存在,请重新输入:n);else

14、t+;if(t=3)returnNULL;elsereturnp;/*显示菜单*/voidmenu()printf(t1取款n);printf(t2存款n);printf(t3查询n);printf(t4改密n);printf(t0退出n);printf(请选择您要的服务:n);/*取钱:如果用户输入非整50或100、超支现象,提示重新进行操作*/voiddraw_money(ac*t)intx;printf(t1.505.800nn);printf(t2.1006.1000nn);printf(t3.202*.202*nn);printf(t4.5008.输入金额nn);printf(请选择

15、:n);scanf(%d, while(x=9)printf(输入有误,请重新选择:n);scanf(%d, switch(x)case1:t-m=isoverdraw(t-m,50);break;/判断是否超支case2:t-m=isoverdraw(t-m,100);break;case3:t-m=isoverdraw(t-m,200);break;case4:t-m=isoverdraw(t-m,500);break;case5:t-m=isoverdraw(t-m,800);break;case6:t-m=isoverdraw(t-m,1000);break;case7:t-m=iso

16、verdraw(t-m,202*);break;case8:t-m=extra(t);break;/*存款:只能整存*/voiddeposit(ac*t)floatm;printf(请输入您要存入的金额:n);scanf(%f, while(int)m%50!=0)printf(我们只能提供面值为50或100的服务,请重新输入您要存入的金额:n);scanf(%f, if(int)m%50=0)t-m=t-m+m;printf(存款成功!n);/*显示余额*/voidquery(ac*t)printf(你当期的余额为:%.2f元nnn,t-m);voidlogon_system()printf

17、(nn);printf(t欢迎使用中国MM银行自动服务系统,我们将竭诚为您服务!);printf(nnn);printf(t帐号:n);printf(n);printf(t密码:nnnnn);printf(t温馨提示:1.请保护好您的密码,谨防泄漏;ntt2.若出现吞卡或不出钞现象,请及时与工作人员联系,ntt不要相信其它任何提示信息,以防上当受骗。);printf(nnn);printf(请输入您的帐号及密码:n);/*给用户提供自由输入取款金额的功能*/floatextra(ac*t)floatm,x,k;printf(请输入取款金额:n);scanf(%f, while(int)m%50

18、!=0)printf(您的输入有误,我们只能提供面值金额为50或100的服务,请重新输入取款金额:n);scanf(%f, if(mm,m);returnx;else/取款超过5000则被记录k=t-m-m;x=isoverdraw(t-m,m);/是否超支if(k0)t-mnext=(memo*)malloc(sizeof(memo);t-mnext-hour=12;t-mnext-minute=12;t-mnext-second=12;strcpy(t-mnext-address,武汉科技大学);printf(温馨提示:为了保护您的财产安全,您本次操作将系统自动被记录!n);returnx

19、;/*修改密码:对输入不足六位、输入错误密码、两次输入新密码前后不一致等情况,提示用户重新输入*/voidrevise(ac*t)inti;charpass_a37;printf(请输入当前密码:n);scanf(%s,pass_a0);while(strcmp(pass_a0,t-pass)!=0)if(strlen(pass_a0)=6)printf(您输入的密码有误,请重新输入:n);elseprintf(您输入的密码有误,请重新输入:n);printf(温馨提示:密码是六位数字或字母,请重新输入!n);scanf(%s,pass_a0);printf(请输入新密码:n);/输入新密码时

20、也可能出现密码不足六位的情况scanf(%s,pass_a1);while(strlen(pass_a1)!=6)printf(您输入的密码有误,请重新输入:n);printf(温馨提示:密码是六位数字或字母,请重新输入!n);scanf(%s,pass_a1);printf(请再次输入新密码:n);scanf(%s,pass_a2);while(strlen(pass_a2)!=6)printf(您输入的密码有误,请重新输入:n);printf(温馨提示:密码是六位数字或字母,请重新输入!n);scanf(%s,pass_a2);while(strcmp(pass_a1,pass_a2)!=

21、0)printf(两次新密码输入不一致,请重新输入新密码:n);scanf(%s,pass_a1);while(strlen(pass_a1)!=6)printf(您输入的密码有误,请重新输入:n);printf(温馨提示:密码是六位数字或字母,请重新输入!n);scanf(%s,pass_a1);printf(请再次输入新密码:n);scanf(%s,pass_a2);while(strlen(pass_a2)!=6)printf(您输入的密码有误,请重新输入:n);printf(温馨提示:密码是六位数字或字母,请重新输入!n);scanf(%s,pass_a2);for(i=0;ipass

22、i=pass_a1i;printf(密码修改成功!n);/*检查用户取款是否超支*/floatisoverdraw(floatm,intn)intk;m=m-n;if(mFILE*fp;fp=fopen(E:account.txt,w);if(fp=NULL)printf(Cantopenfilen);return;p=head;while(p!=NULL)fprintf(fp,%d%s%s%fn,p-number,p-name,p-pass,p-m);p=p-next;fclose(fp);六、过程展示显示登录系统用户登录,出现错误,进行提示取款界面,引导用户正确操作取款超过5000,被记录存款界面查询余额修改密码附:account文件第 10 页 共 10 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 汇报体会

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁