版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
结账管理系统设计1计任务1.1设计题目的描述功能:餐饮结账信息包括:编号、时间、台面号、顾客数量、接待服务生、实收金额。试设计一餐饮结账管理系统,使之能提供以下功能:2查询浏览功能:按台面号查询、按接待服务生查询;4统计总收入、顾客总数等功能。1.2设计要求(1)仔细审题,明确题目要求。(2)按照结构化的程序设计思想,将程序模块化,将相对独立的功能写成函数。(3)要求编程、调试通过并演示;程序编写规范,添加适当注释。(4)按照课程设计报告的内容和格式要求,撰写课程设计报告,并且打印。2设计方案说明餐饮结账信息包括:编号、时间、台面号、顾客数量、接待服务生、实收金额。因此需要使用结构体,而结账信息又不止是一个,所以使用结构体数组,这里定义结structbill{minttime[4];inttable;intcount;//顾客数量2charname[20];intmoney;}bill[M];//服务生姓名//实收金额此函数为主菜单,从此处进入其他模块。3否否C=…………是执行Modify是执行voidinput()信息录入,将录入的信息存入文件bill中此函数将从键盘输入的信息录入文件bill中。保存并关闭文件voidreadFromFile()从文件中读取信息并存入数组bill[30]此函数将文件bill中信息读出并存入bill[]打打开文件关闭文件44)函数voidsave()voidsave()/*保存函数*/此函数用于在修改与删除后保存数据。打打开文件关闭文件5)函数voiddisplay_all()voiddisplayall显示通过此函数可显示所有输入信息。6)函数voiddisplay(inti)voiddisplay(inti)单个信息显示i为要修改的信息号从modify函数中读入此函数用于在修改等功能后显示第i个信息,用于核对。7)函数intmodify_a(inti)intmodify_a(inti)修改主函数时调用此函数此函数用于修改其中一个或多个信息,并返回一个数值用于确定是否修改。5错误重试是否否输入新信息c=…………voidmodify()修改信息主函数此函数用于修改其中一个信息并保存bill入数据n输出无记录是是k=i否69)函数voiddeleter()此函数用于删除记录中的一条信息。bill入信息um是无记录display(i)是bill[i]=bill[i+1];save();k=i否否oidsearch此函数用于按台面号查询信息并输出信息。bill入信息是无此号j=idisplay(j)否7此函数用于按接待服务生姓名查询信息并显示。bill信息是无此姓名j=idisplay(j)否12)函数voidsort()voidsort()金额排序此函数用于按金额对所有信息进行排序并输出。关键变量structbillt为中间变量,用于交换bill[i]与bill[i+1]的值。8bill文件bill[i].money>bill[i+1].money)是否t=bill[i];bill[i]=bill[i+1];bill[i+1]=t;不变i=0i<N-1-ji++j=0j<N-1j++i=0i<Ni++income此函数用于统计总收入并输出。bill取文件i=0;i<N;i++14)函数顾客总数统计此函数用于统计顾客总数。9bill取文件i=0;i<N;i++#include<stdio.h>#include<string.h>#include<stdlib.h>#defineM30structbill{minttime[4];inttable;intcount;charname[20];intmoney;}bill[M];/*菜单*/voidmenu()//顾客数量//服务生姓名//实收金额{voidvoidvoidvoidvoidvoidvoidvoid{utmodify();deleter();search1();search2();sort;incomenumber();printf("\n\n\n");printf("<<<<餐饮结账管理系统>>>>\n");printf("----------------------------------------------------\n");printf("\n\n");printf0退出----\n\n");----\n\n");printf("---------------------------------------------------\n");printf("\n\n");printf("请选择服务(0-8)");c=getchar();switch(c){case'1':{input();getchar();break;}case'2':{modify();getchar();break;}case'3':{deleter();getchar();break;}case'4':{search1();getchar();break;}case'5':{search2();getchar();break;}case'6':{sort();getchar();break;}case'7':{income();getchar();break;}case'8':{number();getchar();break;}case'0':{exit(0);printf("\n");}default:{c=getchar();}}}while(1);}voidinput(){FILE*fp;inti;if((fp=fopen("bill","w"))==NULL){printf("cannotopenthefile\n");return;}printf("输入信息个数(0-%d)?:",M-1);scanf("%d",&N);printf("请输入数据:\n");for(i=0;i<N;i++){printf("输入账单%d信息:\n",i+1);printf("编号:");scanf("%d",&bill[i].num);printf("时间(月.日时:分):");scanf("%d%d%d%d",&bill[i].time[0],&bill[i].time[1],&bill[i].time[2],&bill[i].time[3]);printf("台面号:");scanf("%d",&bill[i].table);printf("顾客数量:");scanf("%d",&bill[i].count);printf("接待服务生:");scanf("%s",bill[i].name);printf("实收金额:");scanf("%d",&bill[i].money);}for(i=0;i<N;i++){if(fwrite(&bill[i],sizeof(structbill),1,fp)!=1){printf("filewriteerror\n");return;}}fclose(fp);}/*从文件中读取信息并存入数组sbill[N]*/voidreadFromFile(){inti;FILE*fp;if((fp=fopen("bill","rb"))==NULL){printf("cannotopenthefile\n");return;}for(i=0;i<N;i++)fread(&bill[i],sizeof(structbill),1,fp);fclose(fp);}/*保存函数*/voidsave(){FILE*fp;inti;if((fp=fopen("bill","w"))==NULL){printf("cannotopenthefile\n");return;}for(i=0;i<N;i++){if(bill[i].num!='\0')if(fwrite(&bill[i],sizeof(structbill),1,fp)!=1){printf("filewriteerror\n");return;}}fclose(fp);}/*信息全部显示*/voiddisplay_all(){inti;readFromFile();for(i=0;i<N;i++){生:%s实施金额:%d",bill[i].num,bill[i].time[0],bill[i].time[1],bill[i].time[2],bill[i].time[3],bill[i].table,bill[i].count,bill[i].name,bill[i].money);printf("\n");}}/*单个信息显示*/voiddisplay(inti){额:%d",bill[i].num,bill[i].time[0],bill[i].time[1],bill[i].time[2],bill[i].time[3],bill[i].table,bill[i].count,bill[i].name,bill[i].money);}/*修改函数调用函数*/intmodify_a(inti){intcw;printf("\n修改选项=>\n\n1).编号2).时间3).台面号4).顾客数量5).接待服务生6).实收金额7).取消并返回");printf("请选择?:[]");scanf("%d",&c);{printfn择错误,请重试");getchar();}{switch(c){case1:printf("编号:");scanf("%d",&bill[i].num);break;case2:printf("时间:");scanf("%d.%d%d:%d",&bill[i].time[0],&bill[i].time[1],&bill[i].time[2],&bill[i].time[3]);break;case3:printf("台面号:");scanf("%d",&bill[i].table);break;case4:printf("顾客数量:");scanf("%d",&bill[i].count);break;case5:printf("接待服务生:");scanf("%s",bill[i].name);break;case6:printf("实收金额:");scanf("%d",&bill[i].money);break;case7:menu();}display(i);printf("\n确定?\n1).是2).不,重新修改3).返回不保存[");scanf("%d",&w1);}while(w1==2);return(w1);}/*修改信息*/voidmodify(){inti,n,k,w0=1,w1;readFromFile();{k=-1;display_all();{scanf("%d",&n);for(i=0;i<N;i++)if(bill[i].num-n==0){k=i;}if(k==-1)printf("\n\n没有记录请重新输入!");}while(k==-1);w1=modify_a(k);ifw=1){printf("\n修改成功\n是否继续?1).是2).保存返回[");save;scanf("%d",&w0);}}while(w0==1);}/*删除记录*/voiddeleter(){inti,k,n,w0,w1;readFromFile();{k=-1;display_all();{scanf("%d",&n);for(i=0;i<N;i++)if(n-bill[i].num==0){k=i;}if(k==-1)}while(k==-1);display(i);scanf("%d",&w0);ifw=1){for(i=k;i<N;i++){bill[i]=bill[i+1];save;}}elsebreak;display_all();nscanf("%d",&w1);}while(w1==1);}/*台面号查询*/voidsearch1(){inti,j,w0;intnumber;readFromFile();{j=-1;printfn请输入台面号查询:");scanf("%d",&number);for(i=0;i<N;i++){if(number==bill[i].table){display(j);printf("\n");}}if(j==-1)printf("无此号!");printf("\n继续?1)是2)返回[");scanf("%d",&w0);}while(w0==1);}/*接待服务生查询*/voidsearch2(){chara[20];inti,j,w0;{j=-1;printf("\n请输入接待服务生姓名查询:");scanf("%s",a);for(i=0;i<N;i++){if(strcmp(bill[i].name,a)==0){display(j);printf("\n");}}if(j==-1)printf("无此姓名!");printf("\n继续?1)是2)返回[");scanf("%d",&w0);}while(w0==1);}/*金额排序*/voidsort(){inti,j,w0;structbillt;readFromFile();printf("\n\n");for(j=0;j<N-1;j++)for(i=0;i<N-1-j;i++)if(bill[i].money<bill[i+1].money){t=bill[i];bill[i]=bill[i+1];bill[i+1]=t;}printf("由大到小为:\n");for(i=0;i<N;i++){display(i);printf("\n");}{printfn1)是2)否");scanf("%d",&w0);}while(w0==2);}/*总收入统计*/voidincome(){inti,sum=0,w0;readFromFile();for(i=0;i<N;i++)sum=sum+bill[i].money;printf("\n\n");printf("总收入:%d",sum);{printfn1)是2)否");scanf("%5d",&w0);}while(w0==2);}/*顾客总数统计*/voidnumber(){inti,number=0,w0;readFromFile();for(i=0;i<N;i++)number=number+bill[i].count;printf("\n\n");printf("顾客总数:%d",number);{printfn1)是2)否");scanf("%5d",&w0);}while(w0==2);}/*主函数*/voidmain(){menu();}4程序测试4.1测试数据说明测试数据包括:编号、时间、台面号、顾客数量、接待服务生、实收金额。接接待服务生lili(int数组)实收金额Int顾客数量Int26835Int53241号123454.2输出结果说明1)菜单界面,进入系统首先显示主菜单,之后可通过选择不同的数字来运用此餐饮结各项功能。2)录入界面,选择1后根据提示输入需要输入的信息个数,之后可依次录入几条不同5)按服务生姓名查询,选择5后查询服务生li,之后返回。6)按金额排序,选择6后可按金额从大到小排序显示,之后返回。7)求总收入,选择7后可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校友合租宿舍合同范本
- 校园食品安全卫生检查协议
- 人力资源复印机租赁合同
- 家庭阳台植物摆放租赁合同
- 烟草种植园药品研发合同
- 户外瑜伽活动微站租赁合约
- 远程医疗服务协议
- 旅行社导购员聘用合同
- 旅游项目开发审批指南
- 农业机械伤害死亡赔偿
- 人教PEP版(2023版)小学英语六年级上册电子课本
- 江苏开放大学2023年秋《大学英语(B)(2) 060052 》过程性考核作业4(综合性大作业)(占全过程性考核总评成绩30%)(实践性作业)参考答案
- 1.2《怎样放得更大》教案(新课标版)
- 2.1《感受空气》课件
- 人民医院诊断证明书
- 高职高专思政课建设的特殊性
- 麦尔兹石灰窑介绍及市场前景分析资料
- 小学英语教师家长会
- 安全告知回执
- 三年级奥数教程
- 城市轨道交通概论PPT完整全套教学课件
评论
0/150
提交评论