C语言程序设计报告(模拟ATM取款机).docx
《C语言程序设计报告(模拟ATM取款机).docx》由会员分享,可在线阅读,更多相关《C语言程序设计报告(模拟ATM取款机).docx(48页珍藏版)》请在咨信网上搜索。
1、仲恺农业工程学院工程实训报告ATM取款机课程名称C语言程序设计工程实训姓名林少烈院(系)计算机科学与工程学院专业班级计算机113班学号201110214317指导教师王成仲恺农业工程学院教务处制T8rinput_new_password 函数流程图读取文件数据函数流程lock函数流程图save_info函数流程图104系统调试首先运行程序,系统提示输入账号。(1)当输入错误账号,系统提示:用户不存在,请从新输入。,(2)当输入错误的密码时,系统提示:密码有误,请重新输入。(3)当输入正确账号与密码时,进入主页面。11(4)主界面(5)在主界面选择数字1,进入查询余额界面,界面显示余额。按任意键
2、返回。(6)在主页面选择数字2,进入取款界面,系统提示输入取款的金额,当输入不是整百 数是,系统提示请输入正确的金额,请重新输入。12(8)当输入负数时,系统提示:请输入正确的金额,请重新输入。(9)当输入超过卡里余额的数,系统会提示余额缺乏,请重新输入。13(10)当输入超过3000的数时,系统会提示:对不起,一次最多能取3000元,请重新 输入。14(11)当输入正确的金额时,系统提示:交易成功,按0返回主菜单,按9继续取款。(12)在主菜单界面选择数字3,进入修改密码界面,首先系统会提示:请输入旧密码。15(13)当输入就密码正确时,系统提示:请输入新密码(6位数)。(14)当输入的新密
3、码含有非数字时,系统提示:请输入正确的数字。(15)当输入的新密码缺乏六位时,系统提示:请输入六位的密码。16(16)当两次输入的新密码不相同时,系统会提示:两次输入的密码不同,请重新输入。(17)当输入两次密码都正确时,系统提示:密码修改成功,请牢记新密码。171需求分析12系统总框图和功能模块说明12.1 系统总框图12.2 功能模块说明13系统设计23.1 主要结构体23.2 主要功能函数23.3 关键函数的流程图34系统调试II5总结216源程序清单236. 1头文件236. 2主程序236.3 解除被冻结用户406.4 用户注册41(18)在主菜单界面选择数字4时,进入转账界面。系统
4、提示:请输入对方的账号:(19)当输入的账号错误时,系统会提示:用户不存在,请重新输入。(20)当输入自己的账号时,系统会提示:不能给自己转账,请重新输入账号。18(21)当输入正确的账号时,界面会显示对方的信息。按0返回菜单,按9确定转账。(22)当确定转账时,系统会提示:请输入转账金额。(23)当输入转账的金额超过3000元时,系统会提示:对不起,一次转账不能超过3000 元,请重新输入。19(24)当输入正确的金额时,系统提示:交易成功。按0返回主菜单,按9继续转账。(25)在主菜单界面选择数字5,进入信息查询界面,界面将显示账号的信息。20(26)在主界面选择数字0,进去取款界面,系统
5、提示:感谢您的使用,请拿回卡。5总结在确认了程序设计主题之后,首先第一步是画了大概的流程图,因为ATM取款机是 我们经常接触的一个机器,所以相对来说话流程图比拟容易。在画完流程图之后,就是进行代码的编写了,我采用自顶向下的方式来规划我的整 个代码流程,首先是确定了大概需要哪些函数来实现所需的功能,在函数命名的时候, 我并不是随便命名的,而是采用书上介绍的方法,用英文来命名。在命名过程中,由于 英语功底不好的我遇到了小小的麻烦(有些单词不会拼),于是就用电子词典来解决这问 题。刚开始我是把所有的自定义函数定义为void型函数。所有的函数申明写好之后就可以开始细化了,首先确定所需结构体,然后就是头
6、文 件的定义,最后确定了所有函数的编写顺序。由于这次程序设计是ATM取款机,所有 要用到文件的知识,但乂没学过,所以只能先停止代码的编写来学习文件的知识。通过 了两天的学习,虽然只是略学了皮毛,但是勉强看着书可以来自己新建文件并不数据存 入文件中。所有的准备工作完成后,真正的可以进行代码编写了,首先把所有的函数都编写出 来(内容为空),然后根据从易到难的顺序逐个功能的编写。其顺序依次是:input_num 函数(用户账号输入),input_password函数(密码输入),lock函数(冻结用户账号), read_info函数(读取文件数据),now_exit函数(检查是账号是否存在且未被冻结
7、),existed 函数(检杳账号是否被冻结),face函数(主菜单),choose函数(功能选择),balance_refer 函数(余额查询),draw_money函数(取款),set_password函数(修改密码),21 input_new_password 函数(输入新密码),tran_account 函数(转账),info_refer 函数(查 询信息),out函数(退卡)。在写input_password函数时,没方法实现密文的输出,所以研究了很久,最后通过 找资料和询问师兄才解决了这一难题,并从中学到了这一技巧。在写lock函数时,刚开始只是用空字符来覆盖原有的账号,但是在测试
8、时发现这样 冻结的方法行不通,因为这样子冻结的话虽然原账号没了,但是在输入账号时只要直接 按Enter键就可以进入输入密码的程序,所以这又是一个难题。在晚上睡觉时突然想到了 曾经在课外书上看到的产生随机数的函数(rand函数),于是,第二天这个所谓的难题也 解决了。所有的函数编写完毕,想到了既然冻结了账号,肯定需要一个程序来解除冻结了的 账号,所以,自己又摸索了如何解决这一问题,最后想到了一个方法:再新建一个文件 (文件名为all uer information)作为后台来存储用户的信息,但这个文件存储的是所有未 被冻结前和未被冻结的账号信息(即所有原始账号信息)。而解除的方法是:先读取all
9、 user information这个文件里的信息、,然后把里面的信息覆盖到在前台操作的文件即可。当用 户被冻结后想解除的话只需运行这个程序即可解除冻结。写了解除冻结账号的函数后,乂想到需要写一个注册账号的程序,于是也顺利的完 成了,最后,通过屡次的调试,把整个程序代码给完成了。226源程序清单6.1头文件/*头文件:user.h*/#include #include #include #include #include struct User(char num20;char name) 10;char password7; float balance;);用户数据void read_info
10、();用户信息读取void input_num(char * num);输入账号void now_exist(char * num);判断是否被冻结或不存在void existed(char * num);void input_password(char * p_word,char * W); 输入密码void face();界面显示void balance_refer();余额查询void choose(int c);菜单项选择择void draw_money();取款void set_password();设置密码void input_new_password(char * old_pas
11、sword);void tran_account();转账void stamp();void info_refer();void out();void lock();void save_info();打印单条信息查询退出程序冻结账号存储信息6. 2主程序/*主程序:main*/*模拟ATM取款机率/#include Muser.h*#define U 8自定义头文件23struct User userU;全局变量f是用来记录用户下标(即哪个用户)定义账号数组变量调用input_num函数,输入用户账号全局变量f是用来记录用户下标(即哪个用户)定义账号数组变量调用input_num函数,输入用户
12、账号int f;int main()char number)20|;input_num(number);return 0;/*函数功能:输入用户账号号void input_num(char num12)(read_info();输入账号前先调用函数read_info读取所以用户信息,以便后面判断账户是否存在以及密码是否正确system(clsM);printf(nnnnnnnnntt 请输入您的账号:);gets(num);now_exist(num);调用exist函数检查该账号是否存在)信函数功能:读取用户信息力 void read_info()int i=0;FILE * fp;if(f
13、p=fopen(user information.dat” Jr)=NULL) 通过文件指针来读取用户数据 信息(不包括被冻结用户信息)printf(HIt cannot open !”);exit(O);while(!feof(fp)(fread(&useri,sizeof(stmct User),l,fp); i+;24fclose(fp);/*函数功能:判断用户是否存在且未被冻结*/void now_exist(char * num) int s=(),i;s是用来判断用户是否存在的条件,如果存在s=L不存在s=0;char *w=ninput;while(l)(for(i=0;i12;
14、i+)(if ( 0 = strcmp( num, useri.num ) 匹配用户(f=i; 如果用户存在那么跳出循环,并用变量f记录用户下标,以便后 面使用。break;)else s=();)if (s=l)(input_password( useri.password, w ); 如果用户存在,那么调用input_password函数并把用户密码传递给它,)实现用户输入密码功能。else(existed(num); 如果用户不存在,贝!j调用existed函数,判断是否 账号被冻结 ) /*函数功能:判断账号是否被冻结void existed(char * num) (intI = 0
15、,i = 0; s是用来判断用户账号是否被冻结的条件,1=1被冻结,1=0说明 用户不存在;25FILE * fp;if ( fp=fopen(Hall userinformation.datH,Hrn) = NULL)printfCJt cannot open !);用文件指针读取所有用户数据(包括被冻结用户)exit(O);while(!feof(fp)(fread(&useri,sizeof(struct User),l,fp);i+;while(l) (for(i=0;i12;i+)(if ( strcmp(num,useri.num)=O )判断输入的账号是否存在(1=1;break
16、;)else 1=0;if(l=l)(printf(anntt对不起,您的账号已被冻结,请与客服联系! nnnn); exit(O);)else printf(anntt用户账号不存在,请重新输入! nH);printf(nnn按任意键返回! ”);getch();system(CLS);input_num(num);)/*函数功能:输入密码*/void input_password(char * p_word,char * W )26char password20;char ch;/ts用来统计输入密码错误的次if (ts 输入用户账号模块:在运行时,完成用户账号的输入(代替插卡); 输入账
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 报告 模拟 ATM 取款
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。