为银行设计ATM菜单C语言,C语言ATM程序设计.doc

C语言ATM程序设计.doc

C语言程序实践实验报告姓 名学 号班 级指 导 教 师开 设 学 期开 设 时 间实验题目自动取款机程序设计实验日期评 定 成 绩评定人签字评 定 日 期(C语言)实验报告一、实验目的1.函数的调用2.结构体的使用3.文件的应用打开、关闭、输入、输出等4.宏定义二、实验内容与实验步骤实验内容、原理分析1. 给出数据结构或函数定义结构体struct clientslong int card_number,card_password;char name20;float money;yonghu3;card_number银行卡号card_password密码name用户名money卡内金额自定义函数void fuctionfloat,int;用于登陆后的操作2. 用流程图表示出来程序设计的思想开始用户文件是否存在创建文件输入用户信息信息是否重复输入卡号和密码错误是否超过三次输入信息是否正确输入0输入其他输入5输入4输入3输入2存款输入1输入错误修改密码显示菜单充话费取款结束3给出具体实验步骤include stdio.hinclude stdlib.hdefine N 3 /*用户人数*/struct clientslong int card_number,card_password;char name20;float money;yonghuN;FILE *fp;int i;void fuctionfloat,int;void mainint j,number,password,times13,times23;printf 欢迎使用中国建设银行自动取款机n;fp clients.txt,a;ifgetwfpEOFprintf用户文件未设置n;fori0;iN;i /*文件不存在时,输入用户信息*/printf请输入第d位用户的信息n,i1;printf银行卡号密码用户名卡内金额n;scanfd d s f,yonghui.card_number,yonghui.card_password,yonghui.name,yonghui.money;ifi1whileyonghui.card_numberyonghui-1.card_numberyonghui.card_passwordyonghui-1.card_passwordprintf输入信息有重复请重新输入n;printf请输入第d位用户的信息n,i1;printf银行卡号密码用户名卡内金额n;scanfd d s f,yonghui.card_number,yonghui.card_password,yonghui.name,yonghui.money;ifi2whileyonghui.card_numberyonghui-1.card_numberyonghui.card_passwordyonghui-1.card_passwordyonghui.card_numberyonghui-2.card_numberyonghui.card_passwordyonghui-2.card_passwordprintf输入信息有重复请重新输入n;printf请输入第d位用户的信息n,i1;printf银行卡号密码用户名卡内金额n;scanfd d s f,yonghui.card_number,yonghui.card_password,yonghui.name,yonghui.money;fprintffp,d d s f,yonghui.card_number,yonghui.card_password,yonghui.name,yonghui.money;putcn,fp;fclosefp;printfnn 请登录系统n; /*登录系统,输入卡号和密码*/printf请输入您的银行卡号n;scanfd,number;printf请输入您的密码n;scanfd,password;fp clients.txt,r;fori0;iN;ifscanffp,d d s f,yonghui.card_number,yonghui.card_password,yonghui.name,yonghui.money;fclosefp;fori0;iN;i /*判断卡号及密码是否匹配*/ifnumberyonghu0.card_numbernumberyonghu1.card_numbernumberyonghu2.card_numberiftimes1-10printf该用户不存在您还有d次尝试机会n,times1-1;printf请输入您的银行卡号n;scanfd,number;printf请输入您的密码n;scanfd,password;i-1;elseprintf尝试失败请按任意键退出n;exit0;times1;elseifnumberyonghui.card_numberifpasswordyonghui.card_passwordprintf s登陆成功请继续您的操作n,yonghui.name;ji;i5; /*登陆成功,退出循环*/elseiftimes2-10printf密码输入错误您还有d次尝试机会n,times2-1;printf请输入您的密码n;scanfd,password;i-1;elseprintf尝试失败请按任意键退出n;exit0;times2;fuctionyonghuj.money,j;void fuctionfloat m,int kfloat saved_money,fetched_money,payment;int phone_num,x,old_password,new_password;while1printf1.存款.n2.取款.n3.充话费.n4.修改密码.n5.显示菜单.n0.退出系统.n;scanfd,x;switchxcase 0printf退出系统;exit0;case 1printf卡内金额 fn,m;printf请输入存款金额n;scanff,saved_money;whilesaved_money0printf输入有误请重新输入n;printf请输入存款金额n;scanff,saved_money;m saved_money;printf操作成功卡内余额为 fn,m;yonghuk.money m;fp clients.txt,w;fori0;iN;ifprintffp,d d s f,yonghui.card_number,yonghui.card_password,yonghui.name,yonghui.money;putcn,fp;fclosefp;break;case 2printf卡内金额 fn,m;printf请输入取款金额n;scanff,fetched_money;m - fetched_money;whilefetched_money0m0printf输入有误请重新输入n;m fetched_money;printf请输入取款金额n;scanff,fetched_money;m - fetched_money;printf操作成功卡内余额为 fn,m;yonghuk.money m;fp clients.txt,w;fori0;iN;ifprintffp,d d s f,yonghui.card_number,yonghui.card_password,yonghui.name,yonghui.money;putcn,fp;fclosefp;break;case 3printf卡内金额 fn,m;printf请输入电话号码n;scanfd,phone_num;printf请输入所交话费金额n;scanff,payment;m - payment;whilepayment0m0printf输入有误请重新输入n;m payment;printf请输入所交话费金额n;scanff,payment;m - payment;printf操作成功卡内余额为 fn,m;yonghuk.money m;fp clients.txt,w;fori0;iN;ifprintffp,d d s f,yonghui.card_number,yonghui.card_password,yonghui.name,yonghui.money;putcn,fp;fclosefp;break;case 4while1printf请输入原密码n;scanfd,old_password;ifold_passwordyonghuk.card_passwordprintf请输入新密码n;scanfd,new_password;printf密码修改成功n;yonghuk.card_password new_password;fp clients.txt,w;fori0;iN;ifprintffp,d d s f,yonghui.card_number,yonghui.card_password,yonghui.name,yonghui.money;putcn,fp;fclosefp;break;elseprintf密码输入错误n;break;case 5break;defaultprintf输入有误请重新输入n;break;三、实验过程与结果分析1.现象输入用户信息后,在登录系统时,输入第一个用户的信息,提示该用户不存在解决方法fp clients.txt,r;fori0;iN;ifscanffp,d d s f,yonghui.card_number,yonghui.card_password,yonghui.name,yonghui.money;fclosefp;2.现象登录系统时,输入卡号或密码超过3次错误后,仍能输入解决方法增加变量times13(卡号输入错误的次数),times23(密码输入错误的次数),当times-10时,提示剩余尝试机会,当times-10时,退出程序3.现象存取款或充话费时,输入负数仍能运行解决方法增加循环whilesaved_money0printf输入有误请重新输入n;printf请输入存款金额n;scanff,saved_money;whilefetched_money0m0printf输入有误请重新输入n;m fetched_money;printf请输入取款金额n;scanff,fetched_money;m - fetched_money;whilepayment0m0printf输入有误请重新输入n;m payment;printf请输入所交话费金额n;scanff,payment;m - payment;四、实验结果总结五、创新的部分1.输入用户信息时,卡号与密码不可重复2.登录系统时,如果卡号或密码输入错误达三次,则自动退出程序3.为手机充话费时,要求输入电话号码4.存款、取款、充话费时,输入钱数不能为负数,且当取款或充话费的金额超过卡内余额时,禁止此操作5.增加了修改密码的功能六、对实验的意见与建议1.心得体会实验过程中应反复调试,不断发现问题,解决问题2.不足输入用户信息或输入x值时,如果格式不正确,就会陷入死循环第 20 页 共 20 页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值