1 / 38
文档名称:

课程实验报告ATM机仿真程序报告.pdf

格式:pdf   大小:2,718KB   页数:38页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

课程实验报告ATM机仿真程序报告.pdf

上传人:青山代下 2024/5/21 文件大小:2.65 MB

下载得到文件列表

课程实验报告ATM机仿真程序报告.pdf

相关文档

文档介绍

文档介绍:该【课程实验报告ATM机仿真程序报告 】是由【青山代下】上传分享,文档一共【38】页,该文档可以免费在线阅读,需要了解更多关于【课程实验报告ATM机仿真程序报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..a安徽科技学院网络工程专业《数据结构》课程设计实验报告学院:理学院班级:112班组长:学号:成员开课学期:2012年09月03号实验日期:2012年11月19号至12月16日指导教师:a:..a目录1.《数据结构》课程设计目的和要求----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------42任务书--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------4a:..-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------20a:..a1.《数据结构》课程设计目的要求一、本课程的地位、目的《数据结构》课程设计是计算机科学技术专业集中实践性环节之一,是学****完《数据结构》课程后进行的一次全面的综合练****开设该课程设计的主要目的是:、存储结构和操作实现算法,以及它们在程序中的使用方法。,并培养学生进行规范化软件设计的能力。,提高学生进行程序设计的基本能力。二、课程设计的内容和要求根据课程设计的时间和个人能力,在老师的协助下选择适当难度的课程设计课题,用C/C++语言实现。具体内容如下:1、需求分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:输入的形式,输出的形式和值的范围;程序所能达到的功能;测试的数据。2、概要设计说明程序中用到的所有抽象数据类型的定义,主程序的流程以及各程序模块之间的层次(调用)关系。a:..a3、详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪代码算法,画出函数的调用关系图。4、调试分析调试过程中遇到的问题并且是如何解决的以及对设计实现的回顾讨论和分析;算法的时空分析(包括基本操作和主要算法的时空复杂度的分析)和改进设想;经验和体会等5、用户使用说明说明用户如何使用你编写的程序,详细列出每一步的操作步骤。6、测试结果列出测试结果,包括输入的数据和相应的输出数据。三、与其它课程的联系先修课程为《C语言程序设计》和《数据结构》等。四、课程设计报告撰写课程设计报告包括:封面、任务书、目录、正文和参考文献等。正文包括以下几方面的内容::..【题目描述】设计一个ATM机仿真程序,该程序应该具有一下功能:(1)可以让用户开设新的账户;(2)可以完成对账户的查询功能;(3)可以完成账户的存款功能;(4)可以完成账户的取款功能;(5)可以完成账户的密码进行修改功能【题目要求】(1)存储结构采用顺序表或链表;(2)用C语言知识和本学期所学算法实现各模块;(3)主函数设计一个菜单,通过菜单进入各模块测试。、存款、取款操作的一个程序,同时还添加了密码修改,模拟银行工作人员进行开户的功能。因为此程序是模拟对用户财产安全进行操作的程序,要求本程序要保证用户的信息的安全性,如输入密码时要用字符覆盖,输入密码有上限,减少可能存在的程序漏洞。要求此程序满足::即此程序对一切合法的操作都能得出满足规格说明要求的结果,对不合法的操作也要有正确的处理措施,使程序严谨,保证用户的信息和财产安全。:程序要尽量简明扼要,便于相关人员调试和修改。a:..:要求本程序执行时间尽可能短,占用的储存空间尽可能的少。:程序的流程图如下所示:开始界面开户对原帐户操作出口1否输入卡号开户失败开户成功是否输入密码帐户操作菜单是选择语言查存取修出询款款改口密2码a:..a操作成功开始界面a:..:本程序是ATM仿真程序,对于用户的所有信息是通过一个线性表COUNT来存储的,本程序总共设计了mainmenu(int)、languagemen()、query(float,int)、withdraw(float,int)、kaihu(psqlistp),changepw(psqlist,int,int),caozuo(psqlist)等子函数来共同完成的,具体分析如下:在主函数main()里分成了四个模块。模块一是完成事先设置了10个用户的所有信息。模块2、3、4在一个开始界面(通过一个switch语句来完成),分别为开户、对原有用户操作和退出整个程序模块2是完成对新用户的操作,通过函数kaihu()来完成,给新用户注册一个卡号,接下来就是让用户设置密码,要输入两次,具体要用到getchar(),和putchar()等函数,当两次输入不一样时提示用户重新输入,用户完成后会退出kaihu()函数,返回开始界面。模块3是对用户账户操作的一个函数,首先要输入卡号和密码,当不正确时返回上一界面,当输入正确时设置了两种语言选择,选择语言后进入操作菜单函数mainmenu,可划分为五个小模块;模块一是查询账户余额函数query;模块二是存款函数deposit;模块三是取款函数withdraw;模块四是密码修改函数changepw;模块五是返回上一界面函数exit()。本程序通过各个模块的组合连接共同在一起完成ATM仿真程序的开户、查询、存款、取款、修改密码等有关操作。:a:..//-------------账户菜单intlanguagemenu();//-------------语言选择voidquery(float,int);//---------查询当前余额floatdeposit(float,int);//--------存钱floatwithdraw(float,int);//-----------取钱inttrue1(inta[]);//密码确认函数typedefstruct{floatmoney;intkey[6];}datatype;typedefstruct{//储存用户信息的线性表datatypedata[50];intlength;}sqlist,*psqlist;psqlistinit_sqlist()//线性表的初始化{psqlistcount;count=(psqlist)malloc(sizeof(sqlist));if(count)count->length=0;returncount;}a:..开户函数{psqlistpl=p;inti,j;pl->length=pl->length+1;while(1){您的卡号是请设置您的账号密码for(i=0;i<6;i++){a[i]=getch();putchar('*');}请再一次输入您的密码for(i=0;i<6;i++){b[i]=getch();putchar('*');}if(strcmp(a,b)==0){for(j=0;j<6;j++)a:..pl->data[pl->length].key[j]=(int)b[j]-48;密码设置成功请输入您要预存的金额恭喜您开户成功break;}else{两次密码输入不一致按任意键键后从新输入getch();}}按任意键继续getch();a:..returnpl;}psqlistchangepw(psqlistq,intk,intislan)//------密码修改函数{psqlistpa=q;inti;if(islan){while(1){for(i=0;i<6;i++){b[i]=getch();putchar('*');}for(i=0;i<6;i++){p[i]=getch();a:..putchar('*');}if(strcmp(b,p)==0){for(i=0;i<6;i++)pa->data[k].key[i]=(int)p[i]-48;break;}else{getch();}}}else{while(1){a:..请输入您的新密码for(i=0;i<6;i++){b[i]=getch();putchar('*');}请再一次输入您的新密码for(i=0;i<6;i++){p[i]=getch();putchar('*');}if(strcmp(b,p)==0){for(i=0;i<6;i++)pa->data[k].key[i]=(int)p[i]-48;恭喜您密码修改成功break;}else{两次密码输入不一样a:..a按任意键后从新输入getch();}}}按任意键继续getch();returnpa;}intcaozuo(psqlistcount)//对账户的操作菜单函数{intexit=0,k,m,language;charin;请输入卡号此卡无效elseif(k<=count->length){m=true1(count->data[k].key);if(m)a:..a{按任意键确定密码getch();language=languagemenu();while(!exit){mainmenu(language);in=getch();switch(in){case'1':query(count->data[k].money,language);break;case'2':count->data[k].money=deposit(count->data[k].money,language);break;case'3':count->data[k].money=withdraw(count->data[k].money,language);break;case'4':count=changepw(count,k,language);break;case'5':return0;}}}密码输入已达上限}此卡无效getch();a:..areturn1;}intmain(){inti,j,y;charon;psqlistcount=init_sqlist();for(j=1;j<11;j++){count->data[j].money=(float)(1000+100*j);//输入用户的最初帐户金额for(i=0;i<6;i++)//输入用户账号的密码count->data[j].key[i]=j-1;count->length++;}intexit1=0;while(!exit1){开户对原卡进行操作on=getch();a:..aswitch(on){case'1':count=kaihu(count);break;case'2':caozuo(count);break;case'3':return0;}}return0;}inttrue1(inta[])//判断密码正误{intp[6],i=0,j=0;请输入密码while(j<3){for(i=0;i<6;i++){b[i]=getch();putchar('*');}for(i=0;i<6;i++)p[i]=(int)b[i]-48;a:..ai=0;while(i<6){if(a[i]==p[i])i++;elsebreak;}j++;if(i==6)break;if(j<=2)密码错误请从新输入}if(i==6)return1;return0;}intlanguagemenu(){charinput;//-----------清除屏幕a:..=getch();while(1){switch(input){case'1':return0;case'2':return1;default:input=getch();}}}voidmainmenu(intis_lan){//-----------清除屏幕if(is_lan){:..}else{}}voidquery(floatmoney,intlan){//-----------清除屏幕if(lan){a:..a¥}else{此账户有¥按任意继续}getch();}floatdeposit(floatmoney,intis_lan){floatinput;//-----------清除屏幕if(is_lan){¥a:..a}else{输入您要存的钱的数目¥按任意键继续}getch();returnmoney+input;}floatwithdraw(floatmoney,intis_lan){floatinput;if(is_lan){while(1){a:..a¥if(input<money)break;else{getch();}}}else{while(1){输入您要取钱的数目:¥a:..if(input<money)break;else{余额不足,按任意键后重新输入getch();}}按任意键继续}getch();returnmoney-input;}:由于本程序需要完成查询、取款、存款以及修改密码、开户等功能,所以在写程序时需要把各个模块先调试好,再把各模块在函数里用switch语句连接起来。a:..在调试各个模块时我们遇到了不同的问题,最后在通过查阅资料和网络以后问题得到了解决。我们遇到的问题如下:问题一:对原账户的操作。既然是ATM机仿真程序,自然要保证用户的账户信息安全。如当输入密码时,在开始的时候,编号的子程序只能让用户输入密码,而且密码同时也会显示在屏幕上,这样就使得密码信息容易暴露,造成密码泄露,后来通过网上查询和我们的仔细思考,经过调试,我们最终用for(i=0;i<6;i++){a[i]=getch();putchar(*);}解决了问题。在经过查询、取款等程序以后,我们应该以用户的需要来设置继续或者退出,这个问题我们的解决方案时:在每个子程序结束时用一个getch();语句来继续,再把各个子程序用switch语句封装在一个mainmenu函数里面,通过不断地调试和改进,最终达到了需求。问题二:账户的问题,既然是atm机仿真程序程序,那么就要能够存储新老用户的信息。设计的方案:用线性表来存储用户的账号信息,在主函数main里事先设计一些用户的信息,包括用户账号的密码和账上金额等,以供调试时来用。另外是开新户问题,要保证能够开户成功而且也能够保存信息以供接下来对账户的相关操作又是一个问题。解决方案:把开户单作为一个子函数,对用户设定密码时同样使用for(i=0;I,6;i++){a[i]=getch();putchar(‘*’);这个循环语句来完成。为保证账户开户能够成功,设置了让用户要输入两次面膜的操作,两次一样时,用户才可输入要预存的金额,之后提示开户成功接着退出。两次不一样时,会提示按任意键后继续,用getch()来完成这个操作。最后,把开户函数和对原有用户操作放在函数中,用语句来完成连接操作。就这样通过对各个模块的调试分析和改进,最后完成了ATM机仿真程序,达到了设计要求的所有功能。a:..测试结果:========================1您的卡号是:11请设置您的账号密码******请再一次输入您的密码******密码设置成功请输入您要预存的金额3000恭喜您开户成功按任意键键继续a:..========================2请输入卡号:11请输入密码:******密码错误请从新输入:******密码错误请从新输入:******=========================******=========================1***********************************a:..********************************1========================此账户有¥========================A********************************************************************3==========================输入您要取钱的数目:¥300按任意键继续a:..W********************************************************************2*****************************输入您要存的钱的数目:¥1000按任意键继续*****************************H*************************************a:..a*******************************4=========================请输入您的新密码:******请再一次输入您的新密码:******两次密码输入不一样按任意键后从新输入=========================O=========================请输入您的新密码:******请再一次输入您的新密码:******恭喜您密码修改成功=========================按任意键继续D*********************************a:..a***********************************5================================================2================================================2请输入卡号:11请输入密码:******密码错误请从新输入:******a:..a密码错误请从新输入:******=========================******=========================2**************************||||||||||**************************1========================rest¥========================Ka:..a**************************||||||||||**************************5================================================3a:..。一方面让我们明白了要有发散思维。例如,程序的一个功能我们可以考虑用不同的算法来实现,而从中选择一个最简洁、最具效率的算法来实现程序的功能。a:..a另一方面,我们学到了考虑问题要全面,从不同的方面、不同的结果来完善算法以增加程序的严谨性,对各种可能出现的结果要能正确处理。同时,也让我学到了以前不会的许多知识,巩固了我的C语言和数据结构,使得我能在实践中去学****和使用它们。此外,也使我们明白了交流的重要性,一个人的思维总是有限的,搭档之间互相交流就可能得出一个最优秀的方法来实现算法。最后,让我们明白,如果想要编一个程序必须要有创新精神和坚韧不拔的毅力。创作的过程可能是枯燥的,但是当我们通过自己的努力来完成目标时的那种成就感也是我们前进的动力。.《数据结构》(C语言版)清华大学出版社2012年1月第二次印刷。2.《从问题到程序》***出版社2011你那5月第二版。:成绩签名年月日a:..a文本仅供参考,感谢下载!a