您好,欢迎访问三七文档
北京联合大学课程设计报告课程名称:C语言程序设计课设项目名称:饭卡管理系统学院:自动化学院专业:姓名:学号:指导教师:鞠慧敏成绩:2010年6月18日目录第1部分课程设计题目与要求.......................................11.问题描述.....................................................12.功能要求.....................................................13.任务分工.....................................................2第2部分《》的设计与功能实现.....................................31.总体设计.....................................................32.数据结构.....................................................43.算法设计.....................................................54.程序代码设计................................................125.测试与调试..................................................20第3部分课程设计总结............................................221.个人总结....................................................222.结束语.....................................................24附录Ⅰ程序清单..................................................25附录Ⅱ用户使用说明书............................................38参考文献.........................................................381第1部分课程设计题目与要求1.问题描述学校等大单位集体食堂买饭时间非常集中,这时如果食堂使用饭票卖饭,大家就得排长队等候,而且还要经过先去买饭票等麻烦的经历。因此食堂提出使用计算机进行管理,食堂用饭卡卖饭,不仅提高卖饭速度,还更易于管理,减少不必要的麻烦,同时减轻管理人员的工作负担。2.功能要求请输入选项编号(0~7)1--建立饭卡文件2--买饭3--续钱4--添加新饭卡5--注销旧饭卡6--设置与解除挂失7--创新功能0--退出系统图1:饭卡管理主菜单重复显示如图1所示的主菜单,在主菜单中选择任意一项,均实现相应功能。在主菜单中选择1,建立名为card.dat的文件,并在其中添加若干人的饭卡号、姓名、金额、挂失信息,要求饭卡号是唯一的。在主菜单中选择2,要求用户输入饭卡号、饭费,然后系统自动从该人的饭卡中减去饭费,并分别显示买饭前后的金额,如果原来饭卡中的余额不足5元,则不能买饭,而且显示“余额不够,请续钱!”,如果挂失信息为真,则显示“本卡已冻结!”。在主菜单中选择3,要求用户输入饭卡号、续钱额,续钱完成后分别显示续钱前后的金额。在主菜单中选择4,添加新饭卡,这时要求新饭卡号和已有的饭卡号不能重号。在主菜单中选择5,注销旧饭卡。在主菜单中选择6,要求用户输入饭卡号和挂失信息,然后更新该饭卡的挂失信息。在主菜单中选择7,在主菜单中选择0,显示结束信息(如“感谢使用本软件!已正常退出,按任意键结束。”),按任意键后,退出本系统。23.任务分工赵晨:续钱,显示,注销饭卡孙晨阳:添加饭卡,挂失饭卡李宏震:创建饭卡文件,买饭3第2部分《》的设计与功能实现1.总体设计主模块建立饭卡文件买饭续钱添加新饭卡注销旧饭卡解除挂失设置与解除挂失设置挂失显示总消费金额42.数据结构voidmyprint();功能:屏幕显示选项voidmycreat();功能:创建饭卡文件voidmybuy();功能:消费intmyexist(charnum[10]);功能:判断饭卡是否存在intmyguashi(charnum[10]);功能:判断饭卡文件是否挂失intmyyu(charnum[10]);功能:判断饭卡文件余额不足voidmyaddyu();功能:往饭卡中充钱voidmyaddcard();功能:添加一个新饭卡voidmyzhuxiao();功能:注销饭卡voidmysetguashi();功能:设置解除饭卡挂失voidmynew();功能:显示所有饭卡总消费金额53.算法设计开始输入choose值choose=?输入yes_noyes_no=n&N&y&Yyes_no=y或Y结束真假真调用myprint函数假调用mycreate调用mybuy调用myaddyu调用myaddcard调用myzhuxiao调用mysetguashi调用mynew非法选项退出程序10234567main函数流程图6入口打开文件打开成功?输入卡号输入姓名输入充值钱数结束卡号姓名非空?输入卡号将记录写入文件输入姓名输入充值钱数记录增加1关闭文件出口假真假真mycreate模块流程图7入口打开文件打开成功?结束输入卡号冻结?饭卡存在?余额不足?输入消费金额输出余额关闭文件出口真假真真真假假假mybuy模块流程图8入口打开文件打开成功?结束输入卡号存在未挂失?输入续费金额money=0&&money=1000?出口输出续费后金额关闭文件真假真真假假myaddyu模块流程图9入口打开文件打开成功?结束饭卡存在在?输入卡号输入充值钱数输入姓名输入yesor_noyes_no=n&N&y&Yyes_no=y或Y或Y出口关闭文件myaddcard模块流程图10入口打开文件打开成功?结束输入卡号饭卡存在?删除饭卡记录数减1关闭文件出口真假假真myzhuxiao模块流程图11入口打开文件打开成功?结束输入choose值choose=?设置挂失解除挂失饭卡存在?temp[j].guashi=1temp[j].guashi=0输入卡号输入卡号饭卡存在?非法选项返回关闭文件出口真假真真假假210mysetguashi模块流程图124.程序代码设计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':myzhuxiao();break;case'6':mysetguashi();break;case'7':mynew();break;case'0':{printf(\n非常感谢使用本软件!\n已正常退出,按任意键结束....);exit(0);}break;default:{printf(\n该选项非法!);getch();}break;}myprint();printf(\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');}13voidmycreat(){inti=1;structcardtemp={0};FILE*fp=NULL;temp.guashi=0;temp.allhua=0;fp=fopen(c:\\card.dat,w);if(fp==NULL){printf(\n饭卡文件丢失!按任意键继续...);return;}system(cls);printf(\n请输入第1个记录:\n);printf(卡号(用#结束输入):);do{gets(temp.num);}while(strcmp(temp.num,)==0);printf(姓名(用#结束输入):);gets(temp.name);printf(充值钱数(用#结束输入):);scanf(%f,&temp.yu);while(temp.num[0]!='#'&&temp.name[0]!='#'){fprintf(fp,%10s%10s%20.2f%4d%20.2f\n,temp.num,temp.name,temp.yu,temp.guashi,temp.allhua);i++;printf(\n请输入第%d个记录:\n,i);printf(卡号(用#结束输入):);do{gets(temp.num);}while(strcmp(temp.num,)==0);printf(姓名(用#结束输入):);gets(temp.name);printf(充值钱数(用#结束输入):);gets(temp.num);}fclose(fp);}14voidmybuy(){FILE*fp=NULL;structcardtemp[N]={0};inti=0,j;charnum_temp[10]={0};floatmoney;system(cls);fp=fopen(c:\\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].allhua);i++;}fclose(fp);printf(\n请输入卡号:);scanf(%s,num_temp);if(myexist(num_temp)==-1)printf(\n卡号不存在!);elseif(myguashi(num_temp)==1)printf(\n本卡已冻结!);elseif(myyu(num_temp)==0)printf(\n余额不够,请续费!);else{for(j=0;ji;j++)if(strcmp(num_temp,temp[j].num)==0)break;printf(\n请输入消费金额:);scanf(%f,&money);printf(\n卡号姓名余额\n);printf(消费前:%-10s%-10s%-10.2f\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;temp[j].allhua=temp[j].allhua+money;fp=fopen(c:\\card.dat,w);15for(j=0;ji-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].allhua);fclose(fp);printf(\n\n此次消费成功!按任意键返回主菜单.....);getch();return;}printf(\n\n此次消费失败!按任意键返回主菜单...);getch();}intmyexist(charnum[10]){FILE*fp=NULL;structcardtemp[N]={0};inti=0,flag=-1,k=0;fp=fopen(c:\\card.dat,
本文标题:饭卡管理系统
链接地址:https://www.777doc.com/doc-7331257 .html