饭卡管理系统(共40页).doc
《饭卡管理系统(共40页).doc》由会员分享,可在线阅读,更多相关《饭卡管理系统(共40页).doc(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上北京联合大学课程设计报告课程名称: C语言程序设计课设 项目名称: 饭卡管理系统 学院: 自动化学院 专业: 姓名: 学号: 指导教师: 鞠慧敏 成 绩: 2010年6月18日目 录专心-专注-专业第1部分 课程设计题目与要求1.问题描述学校等大单位集体食堂买饭时间非常集中,这时如果食堂使用饭票卖饭,大家就得排长队等候,而且还要经过先去买饭票等麻烦的经历。因此食堂提出使用计算机进行管理,食堂用饭卡卖饭,不仅提高卖饭速度,还更易于管理,减少不必要的麻烦,同时减轻管理人员的工作负担。2.功能要求请输入选项编号(07)1-建立饭卡文件2-买饭3-续钱4-添加新饭卡5-注销旧
2、饭卡6-设置与解除挂失7-创新功能0-退出系统图1:饭卡管理主菜单重复显示如图1所示的主菜单,在主菜单中选择任意一项,均实现相应功能。在主菜单中选择1,建立名为card.dat的文件,并在其中添加若干人的饭卡号、姓名、金额、挂失信息,要求饭卡号是唯一的。在主菜单中选择2,要求用户输入饭卡号、饭费,然后系统自动从该人的饭卡中减去饭费,并分别显示买饭前后的金额,如果原来饭卡中的余额不足5元,则不能买饭,而且显示“余额不够,请续钱!”,如果挂失信息为真,则显示“本卡已冻结!”。在主菜单中选择3,要求用户输入饭卡号、续钱额,续钱完成后分别显示续钱前后的金额。在主菜单中选择4,添加新饭卡,这时要求新饭卡
3、号和已有的饭卡号不能重号。在主菜单中选择5,注销旧饭卡。在主菜单中选择6,要求用户输入饭卡号和挂失信息,然后更新该饭卡的挂失信息。在主菜单中选择7,在主菜单中选择0,显示结束信息(如“感谢使用本软件!已正常退出,按任意键结束。”),按任意键后,退出本系统。3.任务分工赵晨:续钱,显示,注销饭卡孙晨阳:添加饭卡,挂失饭卡李宏震:创建饭卡文件,买饭第2部分 的设计与功能实现主模块建立饭卡文件买饭续钱添加新饭卡注销旧饭卡解除挂失设置与解除挂失设置挂失显示总消费金额1.总体设计2.数据结构void myprint();功能:屏幕显示选项void mycreat();功能:创建饭卡文件void mybu
4、y();功能:消费int myexist(char num10);功能:判断饭卡是否存在int myguashi(char num10);功能:判断饭卡文件是否挂失int myyu(char num10);功能:判断饭卡文件余额不足void myaddyu();功能:往饭卡中充钱void myaddcard();功能:添加一个新饭卡void myzhuxiao();功能:注销饭卡void mysetguashi();功能:设置解除饭卡挂失void mynew();功能:显示所有饭卡总消费金额3.算法设计开始输入choose值choose=?输入yes_noyes_no=n&N&y&Yyes_n
5、o=y或Y结束真假真调用myprint函数假调用mycreate调用mybuy调用myaddyu调用myaddcard调用myzhuxiao调用mysetguashi调用mynew非法选项退出程序10234567main 函数流程图入口打开文件打开成功?输入卡号输入姓名输入充值钱数结束卡号姓名非空?输入卡号将记录写入文件输入姓名输入充值钱数记录增加1关闭文件出口假真假真mycreate 模块流程图入口打开文件打开成功?结束输入卡号冻结?饭卡存在?余额不足?输入消费金额输出余额关闭文件出口真假真真真假假假mybuy 模块流程图入口打开文件打开成功?结束输入卡号存在未挂失?输入续费金额money=
6、0&money=1000?出口输出续费后金额关闭文件真假真真假假myaddyu 模块流程图入口打开文件打开成功?结束饭卡存在在?输入卡号输入充值钱数输入姓名输入yes or_noyes_no=n&N&y&Yyes_no=y或Y或Y出口关闭文件myaddcard 模块流程图入口打开文件打开成功?结束输入卡号饭卡存在?删除饭卡记录数减1关闭文件出口真假假真myzhuxiao 模块流程图入口打开文件打开成功?结束输入choose值choose=?设置挂失解除挂失饭卡存在?tempj.guashi=1tempj.guashi=0输入卡号输入卡号饭卡存在?非法选项返回关闭文件出口真假真真假假210mys
7、etguashi 模块流程图4.程序代码设计main() char choose=0;char yes_no=0;domyprint();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 非常
8、感谢使用本软件!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);void mycreat() int i=1;struct card temp=0;FILE *fp=NULL;temp.guashi=0;temp.allhua=0;fp=fopen(c:card.da
9、t,w);if(fp=NULL)printf(n 饭卡文件丢失!按任意键继续.);return;system(cls);printf(n 请输入第1个记录:n); printf( 卡号(用#结束输入):);dogets(temp.num);while(strcmp(temp.num,)=0);printf( 姓名(用#结束输入):);gets(temp.name);printf( 充值钱数(用#结束输入):);scanf(%f,&temp.yu);while(temp.num0!=#&temp.name0!=#)fprintf(fp,%10s%10s%20.2f%4d%20.2fn,temp.
10、num,temp.name,temp.yu,temp.guashi,temp.allhua);i+;printf(n 请输入第%d个记录:n,i);printf( 卡号(用#结束输入):);dogets(temp.num);while(strcmp(temp.num,)=0);printf( 姓名(用#结束输入):);gets(temp.name); printf( 充值钱数(用#结束输入):);gets(temp.num);fclose(fp);void mybuy() FILE *fp=NULL;struct card tempN=0;int i=0,j;char num_temp10=0
11、;float money;system(cls);fp=fopen(c:card.dat,r);while(feof(fp)=0)fscanf(fp,%s%s%f%d%f,tempi.num,tempi.name,&tempi.yu,&tempi.guashi,&tempi.allhua);i+;fclose(fp);printf(n 请输入卡号:);scanf(%s,num_temp);if(myexist(num_temp)=-1) printf(n 卡号不存在!);else if(myguashi(num_temp)=1)printf(n 本卡已冻结!);else if(myyu(num
12、_temp)=0)printf(n 余额不够,请续费!);elsefor(j=0;ji;j+)if(strcmp(num_temp,tempj.num)=0) break;printf(n 请输入消费金额:);scanf(%f,&money);printf(n 卡号 姓名 余额n);printf( 消费前:%-10s %-10s %-10.2fn,tempj.num,tempj.name,tempj.yu);printf( 消费后:%-10s %-10s %-10.2fn,tempj.num,tempj.name,tempj.yu-money);tempj.yu=tempj.yu-money;
13、tempj.allhua=tempj.allhua+money;fp=fopen(c:card.dat,w);for(j=0;ji-1;j+)fprintf(fp,%10s%10s%20.2f%4d%20.2fn,tempj.num,tempj.name,tempj.yu,tempj.guashi,tempj.allhua);fclose(fp);printf(nn 此次消费成功!按任意键返回主菜单.);getch();return;printf(nn 此次消费失败!按任意键返回主菜单.);getch(); int myexist(char num10) FILE *fp=NULL;struc
14、t card tempN=0;int i=0,flag=-1,k=0;fp=fopen(c:card.dat,r);while(feof(fp)=0)fscanf(fp,%s%s%f%d%fn,tempk.num,tempk.name,&tempk.yu,&tempk.guashi,&tempk.allhua);k+;fclose(fp);for(i=0;ik;i+)if(strcmp(num,tempi.num)=0)flag=1;break;return flag; int myguashi(char num10) FILE *fp=NULL;struct card tempN=0;int
15、 i=0,j;fp=fopen(c:card.dat,r);while(feof(fp)=0)fscanf(fp,%s%s%f%d%fn,tempi.num,tempi.name,&tempi.yu,&tempi.guashi,&tempi.allhua);i+;fclose(fp);for(j=0;ji;j+)if(strcmp(num,tempj.num)=0) break;if(tempj.guashi=1) return 1;else return 0; int myyu(char num10) FILE *fp=NULL;struct card tempN=0;int i=0,j;f
16、p=fopen(c:card.dat,r);while(feof(fp)=0)fscanf(fp,%s%s%f%d%fn,tempi.num,tempi.name,&tempi.yu,&tempi.guashi,&tempi.allhua);i+;fclose(fp);for(j=0;ji;j+)if(strcmp(num,tempj.num)=0) break;if(tempj.yu5.00)return 0;else return 1;void myaddyu() FILE *fp=NULL;struct card tempN=0;int i=0,j,k;char num_temp10=0
17、;float money;system(cls);fp=fopen(c:card.dat,r);while(feof(fp)=0)fscanf(fp,%s%s%f%d%fn,tempi.num,tempi.name,&tempi.yu,&tempi.guashi,&tempi.allhua);i+;fclose(fp);printf(nn 请输入卡号:);scanf(%s,&num_temp);if(myexist(num_temp)=1&myguashi(num_temp)=0)for(j=0;j=0&money=1000)printf(n 卡号 姓名 余额n); printf( 续费前:%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 管理 系统 40
限制150内