c语言饭卡管理系统课程设计报告_第1页
c语言饭卡管理系统课程设计报告_第2页
c语言饭卡管理系统课程设计报告_第3页
c语言饭卡管理系统课程设计报告_第4页
c语言饭卡管理系统课程设计报告_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z.课程设计报告课程名称:C语言程序设计课设工程名称:饭卡管理系统学院:专业:姓名:**:指导教师:成绩:-.z.目录TOC\o"1-2"\h\z第1局部课程设计题目与要求21.问题描述22.功能要求23.任务分工2第2局部"饭卡管理系统"的设计与功能实现31.总体设计32.数据构造33.算法设计44.程序代码设计125.测试与调试22第3局部课程设计总结24个人总结24个人总结26完毕语27附录Ⅰ程序清单28附录Ⅱ用户使用说明书39参考文献39-.z.第1局部课程设计题目与要求问题描述请输入选项编号〔0~7〕:建立饭卡文件买饭续钱添加新饭卡注销旧饭卡设置与解除挂失创新功能0—退出系统学校等大单位集体食堂买饭时间非常集中,这时如果食堂使用饭票卖饭,大家就得排长队等候,而且还要经过先去买饭票等麻烦的经历。因此食堂提出使用计算机进展管理,食堂用饭卡卖饭,不仅提高卖饭速度,还易于管理,减少不必要的麻烦,同时减轻管理人员的工作负担。功能要求重复显示如下图的主菜单,在主菜单中选择任意一项,均实现相应功能。在主菜单中选择1,建立名为card.dat的文件,并在其中添加假设干人的饭卡号、、金额、挂失信息,要求饭卡号是唯一的。在主菜单中选择2,要求用户输入饭卡号、饭费,然后系统自动从该人的饭卡中减去饭钱,并分别显示买饭前后的金额,如果原来饭卡中的金额缺乏5元,则不能买饭,而且显示"金额缺乏够,请续钱!〞,如果挂失信息为真,则显示"本卡已冻结!〞。在主菜单中选择4,添加新饭卡,这时要求新饭卡号和已有的饭卡号不能重号。在主菜单中选择5,注销旧饭卡。在主菜单中选择6,要求用户输入饭卡号和挂失信息,然后更新该饭卡的挂失信息。在主菜单中选择7,在主菜单中选择0,显示"感谢使用本软件!已正常退出,按任意键完毕。〞按任意键退出本系统。第2局部"饭卡管理系统"的设计与功能实现1.总体设计图1初始的主模块图2细分后的主模块图2.数据构造例如:structcard{charname[10],num[10];floatyu,sum;intguashi;};num[10]表示**放在一维数组中,name[10]表示**放在一维数组中,yu表示余额,sum表示消费金额的累积,guashi表示挂失的情况。算法设计图3主函数流程图-.z.图4建立饭卡模块流程图图5买饭模块流程图图6续钱模块流程图图7添加新饭卡模块流程图图8注销旧饭卡模块流程图图9设置与解除挂失模块流程图图10创新功能模块流程图4.程序代码设计采用模块化的思想,按照"自顶向下,逐步细化〞的原则设计算法。菜单的设计本例需要输出主菜单项选择择界面,简单菜单的制作可利用printf函数实现。用printf函数将菜单项逐一打印到屏幕上,界面中的边框可以通过多个printf函数输出的"|〞和"-〞拼接起来。菜单应根据用户的选择做出不同的反响,因此需要使用分支构造实现选择选项的功能。根据题意,主菜单含有8个菜单项选择项,属于多分支条件判断,使用带break和switch语句最为适宜。因为本例具有重复选择主菜单项选择项的功能,因此需要使用循环构造。在本例中菜单至少要显示一次,随后才判断是否继续选择主菜单,所以使用do-while循坏比拟好,因为do-while循坏是先执行循环体,然后再判断表达式。4,作为菜单,应该给用户一个正常的出口,即满足一定条件时退出程序。为了给用户提供方便,我们采用人机对话形式,当用户选择*一菜单项后,系统立即完成相应的功能,然后询问用户是否需要继续选择,只要用户继续选择〔输入y或Y〕,主菜单就会在屏幕上反复出现,只有当用户不再选择〔输入N或n〕,才可退出主菜单。除此之外,为了使用方便,在主菜单中还特设0选项,选择它也能正常退出程序。为了实现上述功能,有关语句都应放在do-while循环体中。选择选项的程序段可设计成如下形式:choose=getchar();switch(choose){case'1':mycreat();break;case'2':mybuy();break;case'3':myaddyu();break;case'4':myaddcard();break;case'5':myzhu*iao();break;case'6':mysetguashi();break;case'7':mynew();break;case'0':{printf("\n非常感谢使用本软件!\n已正常退出,按任意键完毕");e*it(0);}break;default:{printf("\n该选项非法!");}break;}(2)设计各模块的算法,这是逐步细化的过程。1,建立饭卡模块,函数名mycreat。在该模块中输入学生的卡号,,充值钱数,并将它们存放在文件中;每输入一组数据,记录数增1。建立饭卡的程序设计如下:voidmycreat(){ inti=1; structcardtemp={0}; FILE*fp=NULL; charyes_no='\0'; temp.guashi=0; temp.sum=0; system("cls"); fp=fopen("D:\\饭卡管理系统\\files\\card.dat","a"); if(fp==NULL){printf("\n\n饭卡文件丧失!按任意键继续...");getchar();e*it(0);} else { fclose(fp); do { printf("\n请输入第%d个记录:\n\n",i); printf("卡号:");scanf("%s",&temp.num); if(mye*ist(temp.num)!=1) { fp=fopen("D:\\饭卡管理系统\\files\\card.dat","a"); printf(":"); scanf("%s",&); printf("充值钱数:"); scanf("%f",&temp.yu); fprintf(fp,"%10s%10s%20.2f%4d%20.2f\n",temp.num,,temp.yu,temp.guashi,temp.sum); fclose(fp); i++; } elseprintf("卡号重复!\n"); printf("\n请问您要继续吗""); do { yes_no=getchar(); }while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n'); }while(yes_no=='Y'||yes_no=='y'); }}在文件夹中寻找已输入的卡号用函数mye*ist系统自动用循环将文件中读入的学号一一做比拟。用fp=fopen("D:\\饭卡管理系统\\files\\card.dat","a");追加翻开文件,输入学生的**,充值钱数,并将它们存放在文件中;每输入一组数据,记录数增1。用dowhile语句实现人机对话的功能,机器问用户是否继续,如果继续就接着建立新饭卡,否则返回主菜单。2,买饭设计模块,函数名mybuy.voidmybuy()system("cls");fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r");while(feof(fp)==0){fscanf(fp,"%s%s%f%d%f",temp[i].num,temp[i].name,&temp[i].yu,&temp[i].guashi,&temp[i].sum);i++;}fclose(fp);printf("\n请输入卡号:");scanf("%s",num_temp);if(mye*ist(num_temp)==-1)printf("\n卡号不存在!");elseif(myguashi(num_temp)==1)printf("\n本卡已冻结!");elseif(myyu(num_temp)==0)printf("\n余额不够,请续费!");else{for(j=0;j<i;j++)if(strcmp(num_temp,temp[j].num)==0)break;printf("\n请输入消费金额:");scanf("%f",&money);printf("\n卡号余额\n");printf("\n消费前:%-10s%-10s%-10.2f\n",temp[j].num,temp[j].name,temp[j].yu);printf("\n消费后:%-10s%-10s%-10.2f\n",temp[j].num,temp[j].name,temp[j].yu-money);temp[j].yu=temp[j].yu-money;temp[j].sum=temp[j].sum+money;fp=fopen("D:\\饭卡管理系统\\files\\card.dat","w");for(j=0;j<i-1;j++)fprintf(fp,"%10s%10s%20.2f%4d%20.2f\n",temp[j].num,temp[j].name,temp[j].yu,temp[j].guashi,temp[j].sum);fclose(fp);printf("\n\n此次消费成功!按任意键返回主菜单");getch();return;}printf("\n\n此次消费失败!按任意键返回主菜单...");getch();判断卡号存在模块:函数名mye*ist。系统自动用循环将文件中读入的**一一做比拟。判断卡号挂失情况模块:函数名myguashi。系统自动用ifelse语句判断挂失情况。判断卡号余额情况模块:函数名myyu。系统自动用ifelse语句分别判断卡号余额是否充足。3,续钱设计模块,函数名myaddyu。voidmyaddyu()system("cls");fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r");while(feof(fp)==0){fscanf(fp,"%s%s%f%d%f\n",temp[i].num,temp[i].name,&temp[i].yu,&temp[i].guashi,&temp[i].sum);i++;}fclose(fp);printf("\n\n请输入卡号:");scanf("%s",&num_temp);if(mye*ist(num_temp)==1&&myguashi(num_temp)==0){for(j=0;j<i;j++){if(strcmp(num_temp,temp[j].num)==0){printf("\n请输入续费金额:");scanf("%f",&money);printf("\n卡号余额\n");printf("续费前:%-10s%-10s%-10.2f\n\n",temp[j].num,temp[j].name,temp[j].yu);printf("续费后:%-10s%-10s%-10.2f\n",temp[j].num,temp[j].name,temp[j].yu+money);temp[j].yu=temp[j].yu+money;}}fp=fopen("D:\\饭卡管理系统\\files\\card.dat","w");for(k=0;k<i;k++)fprintf(fp,"%10s%10s%20.2f%4d%20.2f\n",temp[k].num,temp[k].name,temp[k].yu,temp[k].guashi,temp[k].sum);fclose(fp);printf("\n\n续费成功!按任意键返回主菜单");}elseprintf("\n\n卡号不存在或已挂失!按任意键返回主菜单...");getchar();判断卡号存在情况:函数名mye*ist。系统自动用循环将文件中读入的**一一做比拟。判断挂失情况:函数名myguashi。系统自动用ifelse语句判断挂失情况。用for循环构造找寻对应的**,并输入续费金额,使续费成功。备注:以下函数为续钱设计模块的子函数:fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r");while(feof(fp)==0){fscanf(fp,"%s%s%f%d%f\n",temp[k].num,temp[k].name,&temp[k].yu,&temp[k].guashi,&temp[k].sum);k++;}fclose(fp);for(i=0;i<k;i++){if(strcmp(num,temp[i].num)==0){flag=1;break;}}returnflag;}4,添加新饭卡模块,函数名myaddcard。在该模块中输入学生的卡号,,充值钱数,并将它们存放在文件中;每输入一组数据,记录数增1。添加饭卡模块设计程序如下:voidmyaddcard{inti=0;structcardtemp={0};FILE*fp=NULL;charyes_no='\0';temp.guashi=0;temp.sum=0;system("cls");fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r");if(fp==NULL){printf("\n饭卡文件丧失!");getch();e*it(0);}fclose(fp);do{printf("\n请输入第%d个记录:\n\n",i+1);printf("卡号:");scanf("%s",&temp.num);if(mye*ist(temp.num)!=1){printf(":");scanf("%s",&);printf("充值钱数:");scanf("%f",&temp.yu);fp=fopen("D:\\饭卡管理系统\\files\\card.dat","a");fprintf(fp,"%10s%10s%20.2f%4d%20.2f\n",temp.num,,temp.yu,temp.guashi,temp.sum);fclose(fp);i++;}elseprintf("\n卡号重复!\n");printf("\n\n要继续吗"");do{yes_no=getch();}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');}while(yes_no=='Y'||yes_no=='y');在文件夹中寻找已输入的卡号用函数mye*ist系统自动用循环将文件中读入的学号一一做比拟。没有找到,符合条件并输入学生的**,充值钱数,并将它们存放在文件中;每输入一组数据,记录数增1。5,注销旧饭卡模块,函数名myzhu*iao。system("cls");fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r");if(fp==NULL){printf("\n饭卡文件丧失!");e*it(0);}while(feof(fp)==0){fscanf(fp,"%s%s%f%d%f\n",temp[i].num,temp[i].name,&temp[i].yu,&temp[i].guashi,&temp[i].sum);i++;}fclose(fp);printf("\n\n请输入卡号:");scanf("%s",num_temp);if(mye*ist(num_temp)==1){for(j=0;j<i;j++)if(strcmp(num_temp,temp[j].num)==0)break;for(k=j;k<i;k++)temp[k]=temp[k+1];fp=fopen("D:\\饭卡管理系统\\files\\card.dat","w");for(k=0;k<i-1;k++)fprintf(fp,"%10s%10s%20.2f%4d%20.2f\n",temp[k].num,temp[k].name,temp[k].yu,temp[k].guashi,temp[k].sum);fclose(fp);printf("\n注销成功!按任意键返回主菜单");}elseprintf("\n%s不存在!按任意键返回主菜单",num_temp);getch();查找学生饭卡卡号用比拟函数strcmp(num_temp,temp[j].num)==0。用for循环语句利用数组的替换使学生饭卡被注销。6,设置与解除挂失模块,函数名mysetguashi。system("cls");printf("\n");printf("|******************************************|\n");printf("|请输入选项编号(0~2)|\n");printf("|******************************************|\n");printf("|1--设置挂失|\n");printf("||\n");printf("|2--解除挂失|\n");printf("||\n");printf("|0--返回|\n");printf("|******************************************|\n");printf("\n请输入操作编号");fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r");if(fp==NULL){printf("\n饭卡文件丧失!");e*it(0);}while(feof(fp)==0){fscanf(fp,"%s%s%f%d%f\n",temp[i].num,temp[i].name,&temp[i].yu,&temp[i].guashi,&temp[i].sum);i++;}fclose(fp);choose=getchar();if(choose=='1'){printf("\n\n请输入卡号:");scanf("%s",&num_temp);if(mye*ist(num_temp)==1){for(j=0;j<i;j++)if(strcmp(num_temp,temp[j].num)==0)break;temp[j].guashi=1;fp=fopen("D:\\饭卡管理系统\\files\\card.dat","w");for(k=0;k<i;k++)fprintf(fp,"%10s%10s%20.2f%4d%20.2f\n",temp[k].num,temp[k].name,temp[k].yu,temp[k].guashi,temp[k].sum);fclose(fp);printf("\n设置成功!按任意键返回主菜单");getch();return;}else{printf("\n此卡不存在!按任意键返回主菜单");getch();return;}}elseif(choose=='2'){printf("\n\n请输入卡号:");scanf("%s",&num_temp);printf("\n");if(mye*ist(num_temp)==1){for(j=0;j<i;j++)if(strcmp(num_temp,temp[j].num)==0)break;temp[j].guashi=0;fp=fopen("D:\\饭卡管理系统\\files\\card.dat","w");for(k=0;k<i;k++)fprintf(fp,"%10s%10s%20.2f%4d%20.2f%\n",temp[k].num,temp[k].name,temp[k].yu,temp[k].guashi,temp[k].sum);fclose(fp);}else{printf("此卡不存在!按任意键返回主菜单");getch();}}用ifelse语句分别选择设置和解除挂失功能。备注:以下函数为设置与解除挂失的子函数:intmyguashi(charnum[10]){FILE*fp=NULL;structcardtemp[N]={0};inti=0,j;fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r");while(feof(fp)==0){fscanf(fp,"%s%s%f%d%f\n",temp[i].num,temp[i].name,&temp[i].yu,&temp[i].guashi,&temp[i].sum);i++;}fclose(fp);for(j=0;j<i;j++){if(strcmp(num,temp[j].num)==0)break;}if(temp[j].guashi==1)return1;elsereturn0;}7,创新功能模块,函数名mynew。do { fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r"); if(fp==NULL){printf("\n翻开文件失败!\n");return;} while(feof(fp)==0) { fscanf(fp,"%s%s%f%d%f\n",temp[k].num,temp[k].name,&temp[k].yu,&temp[k].guashi,&temp[k].sum); k++; } fclose(fp); system("cls"); printf("请输入卡号:"); scanf("%s",num_temp); for(i=0;i<k;i++) if(strcmp(num_temp,temp[i].num)==0)break; if(temp[i].sum>=50) { temp[i].yu=temp[i].sum/50+temp[i].yu; temp[i].sum=(int)temp[i].sum%50; printf("余额为%f",temp[i].yu); } elseprintf("您的消费金额缺乏50"); fp=fopen("D:\\饭卡管理系统\\files\\card.dat","w"); for(j=0;j<k;j++) fprintf(fp,"%10s%10s%20.2f%4d%20.2f%\n",temp[j].num,temp[j].name,temp[j].yu,temp[j].guashi,temp[j].sum); fclose(fp); printf("\n请问您要继续吗""); do { yes_no=getchar(); }while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n'); }while(yes_no=='Y'||yes_no=='y');}用ifelse语句判断消费金额是否大于50元。如果大于五十元用到temp[i].yu,temp[i].sum计算出返回金钱。8,界面设计模块,函数名myprint。voidmyprint(){system("cls");printf("\n\n");printf("|******************************************|\n");printf("|请输入选项编号(0~7)|\n");printf("|******************************************|\n");printf("|1--建立饭卡文件|\n");printf("|2--买饭|\n");printf("|3--续钱|\n");printf("|4--添加新饭卡|\n");printf("|5--注销旧饭卡|\n");printf("|6--设置与解除挂失|\n");printf("|7--创新功能|\n");printf("|0--退出系统|\n");printf("|******************************************|\n");}利用myprint函数实现主菜单的显示功能。备注以下为查找学生饭卡卡号的子函数:intmye*ist(charnum[10]){ FILE*fp=NULL; structcardtemp[N]={0}; inti=0,flag=-1,k=0; fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r"); while(feof(fp)==0) {fscanf(fp,"%s%s%f%d%f\n",temp[k].num,temp[k].name,&temp[k].yu,&temp[k].guashi,&temp[k].sum); k++; } fclose(fp); for(i=0;i<k;i++) if(strcmp(num,temp[i].num)==0) {flag=1;break;} returnflag;}5.测试与调试测试数据类型测试数据预期结果实例结果合法数据1建立1-10个学生饭卡,1-5输入金额50元以下,6-10输入金额50以上。查看档案,存在与刚刚对应的十条记录。查看档案,存在与刚刚对应的十条记录。2对卡号1-10卡号中任选一个进展买饭,输入消费金额20元。显示饭卡余额的信息,并且相应的扣除金额20元。显示饭卡余额的信息,并且相应的扣除金额20元。3从1-10个卡号中任选一个进展续钱,续钱金额为100元。该**对应的余额增加100元。该**对应的余额增加100元。4添加新饭卡,卡号为11,续费金额为200元。查看档案,多了一个卡号为11的记录,且信息与对应的输入信息相等。查看档案,多了一个卡号为11的记录,且信息与对应的输入信息相等。5改变卡号为5的档案,使其消费累计金额为200元,之后进展返值操作该用户消费后的余额增加2元。该用户消费后的余额增加2元。6输入用户须知对应的选项号。屏幕上出现用户须知的内容。屏幕上出现用户须知的内容。7选择卡号为6进展挂失操作,选择设置挂失查看档案,卡号为6的用户饭卡已挂失。查看档案,卡号为6的用户饭卡已挂失。8把**为11的用户进展注销操作。查看档案,卡号为11的用户的相关记录消失。查看档案,卡号为11的用户的相关记录消失。9选择卡号为6进展挂失操作,选择解除挂失查看档案,卡号为6的用户饭卡已解除挂失。查看档案,卡号为6的用户饭卡已解除挂失。10用户输入0屏幕显示退出的相关提示信息,之后再按任何键时,能够退出。屏幕显示退出的相关提示信息,之后再按任何键时,能够退出。非法数据1对卡号为1的用户进展添加饭卡。显示**重复相关的错误信息。显示**重复相关的错误信息。。2对**为2的用户进展买饭操作。显示消费金额缺乏相关的错误信息。显示消费金额缺乏相关的错误信息。3对卡号为3的用户进展两次注销。在第二次注销时,显示卡号不存在。在第二次注销时,显示卡号不存在。4对卡号为1的用户进展饭卡建立操作。显示卡号重复相关的错误信息。显示卡号重复相关的错误信息。5对卡号为4的用户进展续钱操作显示**不存在相关信息。显示**不存在相关信息。6把卡号为5的用户进展返值的操作显示消费金额缺乏的错误信息。显示消费金额缺乏的错误信息。7用户在主界面输入任何0-7以外的信息屏幕上显示‘选项非法’错误。屏幕上显示‘选项非法’错误。-.z.-.z.附录Ⅰ程序清单#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#defineN100structcard{charname[10],num[10];floatyu,sum;intguashi;};voidmyprint();voidmycreat();voidmybuy();intmye*ist(charnum[10]);intmyguashi(charnum[10]);intmyyu(charnum[10]);voidmyaddyu();voidmyaddcard();voidmyzhu*iao();voidmysetguashi();voidmynew();main(){ charchoose='\0'; charyes_no='\0'; do { myprint(); printf("\n请选择操作编号:"); choose=getch(); switch(choose) { case'1':mycreat();break; case'2':mybuy();break; case'3':myaddyu();break; case'4':myaddcard();break; case'5':myzhu*iao();break; case'6':mysetguashi();break; case'7':mynew();break; case'0':{printf("\n非常感谢使用本软件!\n已正常退出,按任意键完毕");e*it(0);}break; default:printf("\n该选项非法!");break; } printf("\n请问您要继续吗""); do { yes_no=getchar(); }while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n'); }while(yes_no=='Y'||yes_no=='y');}voidmyprint(){ system("cls"); printf("\n\n"); printf("|******************************************|\n"); printf("|请输入选项编号(0~7)|\n"); printf("|******************************************|\n"); printf("|1--建立饭卡文件|\n"); printf("|2--买饭|\n"); printf("|3--续钱|\n"); printf("|4--添加新饭卡|\n"); printf("|5--注销旧饭卡|\n"); printf("|6--设置与解除挂失|\n"); printf("|7--创新功能|\n"); printf("|0--退出系统|\n"); printf("|******************************************|\n");}voidmycreat(){ inti=1; structcardtemp={0}; FILE*fp=NULL; charyes_no='\0'; temp.guashi=0; temp.sum=0; system("cls"); fp=fopen("D:\\card.dat","w"); if(fp==NULL){printf("\n\n饭卡文件丧失!按任意键继续...");getchar();e*it(0);} else { fclose(fp); do { printf("\n请输入第%d个记录:\n\n",i); printf("卡号:");scanf("%s",&temp.num); if(mye*ist(temp.num)!=1) { fp=fopen("D:\\card.dat","w"); printf(":"); scanf("%s",&); printf("充值钱数:"); scanf("%f",&temp.yu); fprintf(fp,"%10s%10s%20.2f%4d%20.2f\n",temp.num,,temp.yu,temp.guashi,temp.sum); fclose(fp); i++; } elseprintf("卡号重复!\n"); printf("\n请问您要继续吗""); do { yes_no=getchar(); }while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n'); }while(yes_no=='Y'||yes_no=='y'); }}voidmybuy(){ FILE*fp=NULL; structcardtemp[N]={0}; inti=0,j; charnum_temp[10]={0}; floatmoney; system("cls"); fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r"); while(feof(fp)==0) { fscanf(fp,"%s%s%f%d%f",temp[i].num,temp[i].name,&temp[i].yu,&temp[i].guashi,&temp[i].sum); i++; } fclose(fp); printf("\n请输入卡号:"); scanf("%s",num_temp); if(mye*ist(num_temp)==-1)printf("\n卡号不存在!"); elseif(myguashi(num_temp)==1)printf("\n本卡已冻结!"); elseif(myyu(num_temp)==0)printf("\n余额不够,请续费!"); else { for(j=0;j<i;j++) if(strcmp(num_temp,temp[j].num)==0)break; printf("\n请输入消费金额:");scanf("%f",&money); printf("\n卡号余额\n"); printf("\n消费前:%-10s%-10s%-10.2f\n",temp[j].num,temp[j].name,temp[j].yu); printf("\n消费后:%-10s%-10s%-10.2f\n",temp[j].num,temp[j].name,temp[j].yu-money); temp[j].yu=temp[j].yu-money; temp[j].sum=temp[j].sum+money; fp=fopen("D:\\饭卡管理系统\\files\\card.dat","w"); for(j=0;j<i-1;j++) fprintf(fp,"%10s%10s%20.2f%4d%20.2f\n",temp[j].num,temp[j].name,temp[j].yu,temp[j].guashi,temp[j].sum); fclose(fp); printf("\n\n此次消费成功!按任意键返回主菜单");getchar();return; } printf("\n\n此次消费失败!按任意键返回主菜单...");getchar();return;}intmye*ist(charnum[10]){ FILE*fp=NULL; structcardtemp[N]={0}; inti=0,flag=-1,k=0; fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r"); while(feof(fp)==0) { fscanf(fp,"%s%s%f%d%f\n",temp[k].num,temp[k].name,&temp[k].yu,&temp[k].guashi,&temp[k].sum); k++; } fclose(fp); for(i=0;i<k;i++) if(strcmp(num,temp[i].num)==0) {flag=1;break;} returnflag;}intmyguashi(charnum[10]){ FILE*fp=NULL; structcardtemp[N]={0}; inti=0,j; fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r"); while(feof(fp)==0) { fscanf(fp,"%s%s%f%d%f\n",temp[i].num,temp[i].name,&temp[i].yu,&temp[i].guashi,&temp[i].sum); i++; } fclose(fp); for(j=0;j<i;j++) if(strcmp(num,temp[j].num)==0)break; if(temp[j].guashi==1) return1; elsereturn0;}intmyyu(charnum[10]){ FILE*fp=NULL; structcardtemp[N]={0}; inti=0,j; fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r"); while(feof(fp)==0) { fscanf(fp,"%s%s%f%d%f\n",temp[i].num,temp[i].name,&temp[i].yu,&temp[i].guashi,&temp[i].sum); i++; } fclose(fp); for(j=0;j<i;j++) if(strcmp(num,temp[j].num)==0)break; if(temp[j].yu<5.00)return0; elsereturn1;}voidmyaddyu(){ FILE*fp=NULL; structcardtemp[N]={0}; inti=0,j,k; charnum_temp[10]={0}; floatmoney; system("cls"); fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r"); while(feof(fp)==0) { fscanf(fp,"%s%s%f%d%f\n",temp[i].num,temp[i].name,&temp[i].yu,&temp[i].guashi,&temp[i].sum); i++; } fclose(fp); printf("\n\n请输入卡号:");scanf("%s",&num_temp); if(mye*ist(num_temp)==1&&myguashi(num_temp)==0) { for(j=0;j<i;j++) if(strcmp(num_temp,temp[j].num)==0)break; printf("\n请输入续费金额:");scanf("%f",&money); printf("\n卡号余额\n"); printf("续费前:%-10s%-10s%-10.2f\n\n",temp[j].num,temp[j].name,temp[j].yu); printf("续费后:%-10s%-10s%-10.2f\n",temp[j].num,temp[j].name,temp[j].yu+money); temp[j].yu=temp[j].yu+money; fp=fopen("D:\\饭卡管理系统\\files\\card.dat","w"); for(k=0;k<i;k++) fprintf(fp,"%10s%10s%20.2f%4d%20.2f\n",temp[k].num,temp[k].name,temp[k].yu,temp[k].guashi,temp[k].sum); fclose(fp); printf("\n\n续费成功!按任意键返回主菜单"); } else printf("\n\n卡号不存在或已挂失!按任意键返回主菜单..."); getch(); return;}voidmyaddcard(){ inti=0; structcardtemp={0}; FILE*fp=NULL; charyes_no='\0'; temp.guashi=0; temp.sum=0; system("cls"); fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r"); if(fp==NULL){printf("\n饭卡文件丧失!");getchar();e*it(0);} fclose(fp); do { printf("\n请输入第%d个记录:\n\n",i+1); printf("卡号:"); scanf("%s",&temp.num); if(mye*ist(temp.num)!=1) { printf(":"); scanf("%s",&); printf("充值钱数:"); scanf("%f",&temp.yu); fp=fopen("D:\\饭卡管理系统\\files\\card.dat","a"); fprintf(fp,"%10s%10s%20.2f%4d%20.2f\n",temp.num,,temp.yu,temp.guashi,temp.sum); fclose(fp); i++; } elseprintf("\n卡号重复!\n"); printf("\n\n要继续吗""); do { yes_no=getchar(); }while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n'); }while(yes_no=='Y'||yes_no=='y');}voidmyzhu*iao(){ FILE*fp=NULL; structcardtemp[N]={0}; inti=0,j,k; charnum_temp[10]={0}; system("cls"); fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r"); if(fp==NULL){printf("\n饭卡文件丧失!");e*it(0);} while(feof(fp)==0) { fscanf(fp,"%s%s%f%d%f\n",temp[i].num,temp[i].name,&temp[i].yu,&temp[i].guashi,&temp[i].sum); i++; } fclose(fp); printf("\n\n请输入卡号:");scanf("%s",num_temp); if(mye*ist(num_temp)==1) { for(j=0;j<i;j++) if(strcmp(num_temp,temp[j].num)==0)break; for(k=j;k<i;k++) temp[k]=temp[k+1]; fp=fopen("D:\\饭卡管理系统\\files\\card.dat","w"); for(k=0;k<i-1;k++) fprintf(fp,"%10s%10s%20.2f%4d%20.2f\n",temp[k].num,temp[k].name,temp[k].yu,temp[k].guashi,temp[k].sum); fclose(fp); printf("\n注销成功!按任意键返回主菜单"); } elseprintf("\n%s不存在!按任意键返回主菜单",num_temp); getchar(); return;}voidmysetguashi(){ FILE*fp=NULL; structcardtemp[N]={0}; inti=0,j,k; charnum_temp[10]={0},choose; system("cls"); printf("\n"); printf("|******************************************|\n"); printf("|请输入选项编号(0~2)|\n"); printf("|******************************************|\n"); printf("|1--设置挂失|\n"); printf("||\n"); printf("|2--解除挂失|\n"); printf("||\n"); printf("|0--返回|\n"); printf("|******************************************|\n"); printf("\n请输入操作编号"); scanf("%s",num_temp); fp=fopen("D:\\饭卡管理系统\\files\\card.dat","r"); if(fp==NULL){printf("\n饭卡文件丧失!");e*it(0);} while(feof(fp)==0) { fscanf(fp,"%s%s%f%d%f\n",temp[i].num,temp[i].name,&temp[i].yu,&temp[i].guashi,&temp[i].sum); i++; } fclose(fp); choose=getchar(); if(choose=='1') { printf("\n\n请输入卡号:"); scanf("%s",num_temp); if(mye*ist(num_temp)==1) { for(j=0;j<i;j++) if(str

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论