C语言ATM程序设计.doc
《C语言ATM程序设计.doc》由会员分享,可在线阅读,更多相关《C语言ATM程序设计.doc(18页珍藏版)》请在咨信网上搜索。
C语言程序实践 实验报告 姓 名 学 号 班 级 指 导 教 师 开 设 学 期 开 设 时 间 实验题目 自动取款机程序设计 实验日期 评 定 成 绩 评定人签字 评 定 日 期 一、实验目得 1、函数得调用 2、结构体得使用 3、文件得应用:打开、关闭、输入、输出等 4、宏定义 二、实验内容与实验步骤 实验内容、原理分析 1. 给出数据结构或函数定义 结构体: struct clients { long int card_number,card_password; char name[20]; float money; }yonghu[3]; card_number:银行卡号 card_password:密码 name:用户名 money:卡内金额 自定义函数: void fuction(float,int); 用于登陆后得操作 2. 用流程图表示出来程序设计得思想 开始 用户文件就是否存在 创建文件 输入用户信息 信息就是否重复 输入卡号与密码 错误就是否超过三次 输入信息就是否正确 输入0 输入其她 输入5 输入4 输入3 输入2 存款 输入1 输入错误 修改密码 显示菜单 充话费 取款 结束 3.给出具体实验步骤 #include <stdio、h> #include <stdlib、h> #define N 3 /*用户人数*/ struct clients { long int card_number,card_password; char name[20]; float money; }yonghu[N]; FILE *fp; int i; void fuction(float,int); void main { int j,number,password,times1=3,times2=3; printf(" 欢迎使用中国建设银行自动取款机!\n"); fp = fopen("clients、txt","a+"); if(getw(fp)==EOF) { printf("用户文件未设置!\n"); for(i=0;i<N;i++) /*文件不存在时,输入用户信息*/ { printf("请输入第%d位用户得信息:\n",i+1); printf("银行卡号 密码 用户名 卡内金额\n"); scanf("%d %d %s %f",&yonghu[i]、card_number,&yonghu[i]、card_password,yonghu[i]、name,&yonghu[i]、money); if(i==1) { while((yonghu[i]、card_number==yonghu[i1]、card_number)||(yonghu[i]、card_password==yonghu[i1]、card_password)) { printf("输入信息有重复!请重新输入\n"); printf("请输入第%d位用户得信息:\n",i+1); printf("银行卡号 密码 用户名 卡内金额\n"); scanf("%d %d %s %f",&yonghu[i]、card_number,&yonghu[i]、card_password,yonghu[i]、name,&yonghu[i]、money); } } if(i==2) { while((yonghu[i]、card_number==yonghu[i1]、card_number)||(yonghu[i]、card_password==yonghu[i1]、card_password)||(yonghu[i]、card_number==yonghu[i2]、card_number)||(yonghu[i]、card_password==yonghu[i2]、card_password)) { printf("输入信息有重复!请重新输入\n"); printf("请输入第%d位用户得信息:\n",i+1); printf("银行卡号 密码 用户名 卡内金额\n"); scanf("%d %d %s %f",&yonghu[i]、card_number,&yonghu[i]、card_password,yonghu[i]、name,&yonghu[i]、money); } } fprintf(fp,"%d %d %s %f",yonghu[i]、card_number,yonghu[i]、card_password,yonghu[i]、name,yonghu[i]、money); putc('\n',fp); } } fclose(fp); printf("\n\n 请登录系统\n"); /*登录系统,输入卡号与密码*/ printf("请输入您得银行卡号:\n"); scanf("%d",&number); printf("请输入您得密码:\n"); scanf("%d",&password); fp = fopen("clients、txt","r+"); for(i=0;i<N;i++) { fscanf(fp,"%d %d %s %f",&yonghu[i]、card_number,&yonghu[i]、card_password,yonghu[i]、name,&yonghu[i]、money); } fclose(fp); for(i=0;i<N;i++) /*判断卡号及密码就是否匹配*/ { if((number!=yonghu[0]、card_number)&&(number!=yonghu[1]、card_number)&&(number!=yonghu[2]、card_number)) { if((times11)!=0) { printf("该用户不存在!您还有%d次尝试机会\n",times11); printf("请输入您得银行卡号:\n"); scanf("%d",&number); printf("请输入您得密码:\n"); scanf("%d",&password); i=1; } else { printf("尝试失败!请按任意键退出:\n"); exit(0); } times1; } else { if(number==yonghu[i]、card_number) { if(password==yonghu[i]、card_password) { printf(" %s登陆成功!请继续您得操作\n",yonghu[i]、name); j=i; i=5; /*登陆成功,退出循环*/ } else { if((times21)!=0) { printf("密码输入错误!您还有%d次尝试机会\n",times21); printf("请输入您得密码:\n"); scanf("%d",&password); i=1; } else { printf("尝试失败!请按任意键退出:\n"); exit(0); } times2; } } } } fuction(yonghu[j]、money,j); } void fuction(float m,int k) { float saved_money,fetched_money,payment; int phone_num,x,old_password,new_password; while(1) { printf("1、存款、\n2、取款、\n3、充话费、\n4、修改密码、\n5、显示菜单、\n0、退出系统、\n"); scanf("%d",&x); switch(x) { case 0: printf("退出系统!"); exit(0); case 1: printf("卡内金额: %f\n",m); printf("请输入存款金额:\n"); scanf("%f",&saved_money); while(saved_money<0) { printf("输入有误!请重新输入!\n"); printf("请输入存款金额:\n"); scanf("%f",&saved_money); } m += saved_money; printf("操作成功!卡内余额为: %f\n",m); yonghu[k]、money = m; fp = fopen("clients、txt","w+"); for(i=0;i<N;i++) { fprintf(fp,"%d %d %s %f",yonghu[i]、card_number,yonghu[i]、card_password,yonghu[i]、name,yonghu[i]、money); putc('\n',fp); } fclose(fp); break; case 2: printf("卡内金额: %f\n",m); printf("请输入取款金额:\n"); scanf("%f",&fetched_money); m = fetched_money; while((fetched_money<0)||(m<0)) { printf("输入有误!请重新输入!\n"); m += fetched_money; printf("请输入取款金额:\n"); scanf("%f",&fetched_money); m = fetched_money; } printf("操作成功!卡内余额为: %f\n",m); yonghu[k]、money = m; fp = fopen("clients、txt","w+"); for(i=0;i<N;i++) { fprintf(fp,"%d %d %s %f",yonghu[i]、card_number,yonghu[i]、card_password,yonghu[i]、name,yonghu[i]、money); putc('\n',fp); } fclose(fp); break; case 3: printf("卡内金额: %f\n",m); printf("请输入电话号码:\n"); scanf("%d",&phone_num); printf("请输入所交话费金额:\n"); scanf("%f",&payment); m = payment; while((payment<0)||(m<0)) { printf("输入有误!请重新输入!\n"); m += payment; printf("请输入所交话费金额:\n"); scanf("%f",&payment); m = payment; } printf("操作成功!卡内余额为: %f\n",m); yonghu[k]、money = m; fp = fopen("clients、txt","w+"); for(i=0;i<N;i++) { fprintf(fp,"%d %d %s %f",yonghu[i]、card_number,yonghu[i]、card_password,yonghu[i]、name,yonghu[i]、money); putc('\n',fp); } fclose(fp); break; case 4: while(1) { printf("请输入原密码:\n"); scanf("%d",&old_password); if(old_password==yonghu[k]、card_password) { printf("请输入新密码:\n"); scanf("%d",&new_password); printf("密码修改成功!\n"); yonghu[k]、card_password = new_password; fp = fopen("clients、txt","w+"); for(i=0;i<N;i++) { fprintf(fp,"%d %d %s %f",yonghu[i]、card_number,yonghu[i]、card_password,yonghu[i]、name,yonghu[i]、money); putc('\n',fp); } fclose(fp); break; } else printf("密码输入错误!\n"); } break; case 5: break; default: printf("输入有误!请重新输入!\n"); break; } } } 三、实验过程与结果分析 1、现象:输入用户信息后,在登录系统时,输入第一个用户得信息,提示该用户不存在 解决方法: fp = fopen("clients、txt","r+"); for(i=0;i<N;i++) { fscanf(fp,"%d %d %s %f",&yonghu[i]、card_number,&yonghu[i]、card_password,yonghu[i]、name,&yonghu[i]、money); } fclose(fp); 2、现象:登录系统时,输入卡号或密码超过3次错误后,仍能输入 解决方法: 增加变量times1=3(卡号输入错误得次数),times2=3(密码输入错误得次数),当times1>0时,提示剩余尝试机会,当times1=0时,退出程序 3、现象:存取款或充话费时,输入负数仍能运行 解决方法: 增加循环: while(saved_money<0) { printf("输入有误!请重新输入!\n"); printf("请输入存款金额:\n"); scanf("%f",&saved_money); } while((fetched_money<0)||(m<0)) { printf("输入有误!请重新输入!\n"); m += fetched_money; printf("请输入取款金额:\n"); scanf("%f",&fetched_money); m = fetched_money; } while((payment<0)||(m<0)) { printf("输入有误!请重新输入!\n"); m += payment; printf("请输入所交话费金额:\n"); scanf("%f",&payment); m = payment; } 四、实验结果总结 五、创新得部分 1、输入用户信息时,卡号与密码不可重复 2、登录系统时,如果卡号或密码输入错误达三次,则自动退出程序 3、为手机充话费时,要求输入电话号码 4、存款、取款、充话费时,输入钱数不能为负数,且当取款或充话费得金额超过卡内余额时,禁止此操作 5、增加了修改密码得功能 六、对实验得意见与建议 1、心得体会:实验过程中应反复调试,不断发现问题,解决问题 2、不足:输入用户信息或输入x值时,如果格式不正确,就会陷入死循环- 配套讲稿:
如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。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文