1、4.宏定义二、实验内容与实验步骤实验内容、原理分析1.给出数据结构或函数定义结构体:struct clientslongintcard_number,card_password;char name20;float money;yonghu3;card_number:银行卡号card_password:密码name:用户名money:卡内金额自定义函数:voidfuction(float,int);用于登陆后的操作2.用流程图表示出来程序设计的思想3给出具体实验步骤#include stdlib.h#define N 3 /*用户人数*/yonghuN;FILE *fp;inti;void ma
2、in()int j,number,password,times1=3,times2=3;printf( 欢迎使用中国建设银行自动取款机!n);fp = fopen(clients.txt,a+if(getw(fp)=EOF) 用户文件未设置! for(i=0;iN;i+) /*文件不存在时,输入用户信息*/请输入第%d位用户的信息:,i+1);银行卡号密码用户名卡内金额nscanf(%d%d %s %f,&yonghui.card_number,&yonghui.card_password,yonghui.name,&yonghui.money);if(i=1)while(yonghui.ca
3、rd_number=yonghui-1.card_number)|(yonghui.card_password=yonghui-1.card_password)输入信息有重复!请重新输入n%d %d %s %f if(i=2) while(yonghui.card_number=yonghui-1.card_number)|(yonghui.card_password=yonghui-1.card_password)|(yonghui.card_number=yonghui-2.card_number)|(yonghui.card_password=yonghui-2.card_passwor
4、d)fprintf(fp,yonghui.card_number,yonghui.card_password,yonghui.name,yonghui.money);putc(n,fp);fclose(fp);nn 请登录系统n /*登录系统,输入卡号和密码*/请输入您的银行卡号:%dnumber);请输入您的密码:password);r+for(i=0;i+)fscanf(fp,i+) /*判断卡号及密码是否匹配*/ if(number!=yonghu0.card_number)&(number!=yonghu1.card_number)&=yonghu2.card_number)if(ti
5、mes1-1)!=0)该用户不存在!您还有%d次尝试机会n,times1-1);i=-1;else尝试失败!请按任意键退出:exit(0);times1-;if(number=yonghui.card_number)if(password=yonghui.card_password) %s登陆成功!请继续您的操作n,yonghui.name); j=i;i=5; /*登陆成功,退出循环*/if(times2-1)!密码输入错误!,times2-1);times2-;fuction(yonghuj.money,j);voidfuction(float m,int k)floatsaved_mon
6、ey,fetched_money,payment;intphone_num,x,old_password,new_password;while(1)1.存款.n2.取款.n3.充话费.n4.修改密码.n5.显示菜单.n0.退出系统.nx);switch(x)case 0:退出系统!case 1:卡内金额: %fn,m);请输入存款金额:%fsaved_money);while(saved_money0)输入有误!请重新输入! m += saved_money;操作成功!卡内余额为:yonghuk.money = m;w+break;case 2:请输入取款金额:fetched_money);
7、m -= fetched_money;while(fetched_money0)|(m0) m += fetched_money;case 3:请输入电话号码:phone_num);请输入所交话费金额:payment); m -= payment;while(payment0时,提示剩余尝试机会,当times-1=0时,退出程序3.现象:存取款或充话费时,输入负数仍能运行增加循环:四、实验结果总结五、创新的部分1.输入用户信息时,卡号与密码不可重复2.登录系统时,如果卡号或密码输入错误达三次,则自动退出程序3.为手机充话费时,要求输入电话号码4.存款、取款、充话费时,输入钱数不能为负数,且当取款或充话费的金额超过卡内余额时,禁止此操作5.增加了修改密码的功能六、对实验的意见与建议1.心得体会:实验过程中应反复调试,不断发现问题,解决问题2.不足:输入用户信息或输入x值时,如果格式不正确,就会陷入死循环