C语言餐饮结账管理系统设计.docx
- 文档编号:4136916
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:25
- 大小:353.26KB
C语言餐饮结账管理系统设计.docx
《C语言餐饮结账管理系统设计.docx》由会员分享,可在线阅读,更多相关《C语言餐饮结账管理系统设计.docx(25页珍藏版)》请在冰豆网上搜索。
C语言餐饮结账管理系统设计
C语言餐饮结账管理系统设计
C语言程序设计
课程设计报告
设计题目:
餐饮结账管理系统设计
1设计任务
1.1设计题目的描述
功能:
餐饮结账信息包括:
编号、时间、台面号、顾客数量、接待服务生、实收金额。
试设计一餐饮结账管理系统,使之能提供以下功能:
1结账信息录入、修改、删除功能;
2查询浏览功能:
按台面号查询、按接待服务生查询;
3按照实收金额排序。
4统计总收入、顾客总数等功能。
1.2设计要求
(1)仔细审题,明确题目要求。
(2)按照结构化的程序设计思想,将程序模块化,将相对独立的功能写成函数。
(3)要求编程、调试经过并演示;程序编写规范,添加适当注释。
(4)按照课程设计报告的内容和格式要求,撰写课程设计报告,而且打印。
2设计方案说明
2.1数据的存储结构
餐饮结账信息包括:
编号、时间、台面号、顾客数量、接待服务生、实收金额。
因此需要使用结构体,而结账信息又不止是一个,因此使用结构体数组,这里定义结构体structbill,定义数组bill[M]。
structbill
{
intnum;//编号
inttime[4];//时间
inttable;//台面号
intcount;//顾客数量
charname[20];//服务生姓名
intmoney;//实收金额
}bill[M];
2.2函数之间的调用关系说明
2.3函数说明
1)函数voidmenu()
voidmenu()菜单函数
此函数为主菜单,从此处进入其它模块。
变量c:
使用c选择进入其它功能。
2)函数voidinput()
voidinput()信息录入,将录入的信息存入文件bill中
此函数将从键盘输入的信息录入文件bill中。
使用scanf输入结构体中各个量;
打开文件bill成功
选择输入的信息个数N
输入第i个信息
直到i>=N
保存并关闭文件
3)函数voidreadFromFile()
voidreadFromFile()从文件中读取信息并存入数组bill[30]
此函数将文件bill中信息读出并存入bill[]
4)函数voidsave()
voidsave()/*保存函数*/
此函数用于在修改与删除后保存数据。
5)函数voiddisplay_all()
voiddisplay_all()信息全部显示
经过此函数可显示所有输入信息。
readFromFile()读取文件中信息
printf显示第i个信息
直到i<=N
6)函数voiddisplay(inti)
voiddisplay(inti)单个信息显示i为要修改的信息号从modify函数中读入
此函数用于在修改等功能后显示第i个信息,用于核对。
用printf显示第i个信息的所有数据
7)函数intmodify_a(inti)
intmodify_a(inti)修改主函数时调用此函数
此函数用于修改其中一个或多个信息,并返回一个数值用于确定是否修改。
变量c用于确定修改项目
从键盘输入一个C的值
c>7||c<1
是否
错误w1==2
重试c=1
是否
输入新信息c=…………
显示修改后第i个信息
输入w1的值
返回值w1
8)函数voidmodify()
voidmodify()修改信息主函数
此函数用于修改其中一个信息并保存
从文件bill中读入数据
w0==1
k==-1
输入n的值
循环判断bill[i].num-n==0?
是否
k=ik=-1
输出无记录
w1=modify_a(k);
w1=1?
是否
保存输入w0值结束
9)函数voiddeleter()
voiddeleter()删除记录
此函数用于删除记录中的一条信息。
10)函数voidsearch1()
voidsearch1()台面号查询
此函数用于按台面号查询信息并输出信息。
从文件bill中读入信息
w0==1
输入number
循环判断number==bill[i].table?
是否
j=ij=-1
display(j)无此号
输入w0的值
11)函数voidsearch2()
voidsearch2()接待服务生查询
此函数用于按接待服务生姓名查询信息并显示。
12)函数voidsort()
voidsort()金额排序
此函数用于按金额对所有信息进行排序并输出。
关键变量structbillt为中间变量,用于交换bill[i]与bill[i+1]的值。
13)函数voidincome()
voidincome()总收入统计
此函数用于统计总收入并输出。
关键变量sum用于统计总收入
14)函数voidnumber()
voidnumber()顾客总数统计
此函数用于统计顾客总数。
关键变量number用于统计顾客总数
3设计题目源代码清单
#include
#include
#include
#defineM30
structbill
{
intnum;//编号
inttime[4];//时间
inttable;//台面号
intcount;//顾客数量
charname[20];//服务生姓名
intmoney;//实收金额
}bill[M];
intN;
/*菜单*/
voidmenu()
{
charc;
voidinput();
voidmodify();
voiddeleter();
voidsearch1();
voidsearch2();
voidsort();
voidincome();
voidnumber();
do
{
printf("\n\n\n");
printf("<<<<餐饮结账管理系统>>>>\n");
printf("----------------------------------------------------\n");
printf("\n\n");
printf("---1录入2修改3删除----\n\n");
printf("---4台面号查询5接待服务生查询----\n\n");
printf("---6金额排序7总收入8顾客总数----\n\n");
printf("---0退出----\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':
{
printf("\n谢谢使用,再见!
");
exit(0);
printf("\n");
}
default:
{
printf("\n输入有误,重试!
:
");
c=getchar();
}
}
}while
(1);
}
/*信息录入,将录入的信息存入文件bill中*/
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 { 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 { 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 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 { if(bill[i].num! ='\0') if(fwrite(&bill[i],sizeof(structbill),1,fp)! =1) { printf("filewriteerror\n"); return; } } fclose(fp); } /*信息全部显示*/ voiddisplay_all() { inti; readFromFile(); printf("全部信息: \n"); for(i=0;i { printf("编号: %d时间: %d.%d%d: %d台面号: %d顾客数量: %d接待服务生: %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) { printf("编号: %d时间: %d%d%d%d台面号: %d顾客数量: %d接待服务生: %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); } /*修改函数调用函数*/ intmodify_a(inti) { intc,w1; printf("\n修改选项=>\n\n1).编号2).时间3).台面号4).顾客数量5).接待服务生6).实收金额7).取消并返回"); printf("请选择? : []"); scanf("%d",&c); if(c>7||c<1) { printf("\n选择错误,请重试"); getchar(); } do { 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(); } printf("\n现在: \n"); display(i); printf("\n确定? \n1).是2).不,重新修改3).返回不保存["); scanf("%d",&w1); }while(w1==2); return(w1); } /*修改信息*/ voidmodify() { inti,n,k,w0=1,w1; readFromFile(); do { k=-1; display_all(); do { printf("\n输入要修改的编号数\n编号: "); scanf("%d",&n); for(i=0;i if(bill[i].num-n==0) { k=i; } if(k==-1) printf("\n\n没有记录请重新输入! "); }while(k==-1); w1=modify_a(k); if(w1==1) { printf("\n修改成功\n是否继续? 1).是2).保存返回["); save(); scanf("%d",&w0); } }while(w0==1); } /*删除记录*/ voiddeleter() { inti,k,n,w0,w1; readFromFile(); do { k=-1; display_all(); do { printf("\n输入要删除的编号: \n"); scanf("%d",&n); for(i=0;i if(n-bill[i].num==0) { k=i; } if(k==-1) printf("\n无记录,请重新输入! \n"); }while(k==-1); display(i); printf("\n确定删除? 1)是2)返回\n["); scanf("%d",&w0); if(w0==1) { for(i=k;i { bill[i]=bill[i+1]; save(); } } elsebreak; display_all(); printf("\n删除成功,是否继续? 1)是2)返回["); scanf("%d",&w1); }while(w1==1); } /*台面号查询*/ voidsearch1() { inti,j,w0; intnumber; readFromFile(); do { j=-1; printf("\n请输入台面号查询: "); scanf("%d",&number); for(i=0;i { if(number==bill[i].table) { j=i; display(j); printf("\n"); } } if(j==-1) printf("无此号! "); printf("\n继续? 1)是2)返回["); scanf("%d",&w0); }while(w0==1); } /*接待服务生查询*/ voidsearch2() { chara[20]; inti,j,w0; do { j=-1; printf("\n请输入接待服务生姓名查询: "); scanf("%s",a); for(i=0;i { if(strcmp(bill[i].name,a)==0) { j=i; 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 for(i=0;i if(bill[i].money { t=bill[i]; bill[i]=bill[i+1];/*调换bill[i]与bill[i+1]的值*/ bill[i+1]=t; } printf("由大到小为: \n"); for(i=0;i { display(i); printf("\n"); } do { printf("\n返回? 1)是2)否"); scanf("%d",&w0); }while(w0==2); } /*总收入统计*/ voidincome() { inti,sum=0,w0; readFromFile(); for(i=0;i sum=sum+bill[i].money; printf("\n\n"); printf("总收入: %d",sum); do { printf("\n返回? 1)是2)否"); scanf("%5d",&w0); }while(w0==2); } /*顾客总数统计*/ voidnumber() { inti,number=0,w0; readFromFile(); for(i=0;i number=number+bill[i].count; printf("\n\n"); printf("顾客总数: %d",number); do { printf("\n返回? 1)是2)否"); scanf("%5d",&w0); }while(w0==2); } /*主函数*/ voidmain() { menu(); } 4程序测试 4.1测试数据说明 测试数据包括: 编号、时间、台面号、顾客数量、接待服务生、实收金额。 编号 时间 (int数组) 台面号 Int 顾客数量 Int 接待服务生 char数组 实收金额 Int 1 7.212: 12 5 2 li 32 2 7.212: 22 3 6 wang 128 3 7.212: 32 2 8 zhao 186 4 7.212: 42 4 3 zhang 95 5 7.212: 52 1 5 li 105 4.2输出结果说明 1)菜单界面,进入系统首先显示主菜单,之后可经过选择不同的数字来运用此餐饮结账系统的各项功能。 图1菜单 2)录入界面,选择1后根据提示输入需要输入的信息个数,之后可依次录入几条不同信息。 图2录入 3)修改界面,选择2后依次输入修改编号1,与项目6,并更改为35,保存返回。 图3修改信息 4)按台面号查询信息,选择4后依次查询台面号3与6,之后返回。 图4台面号查询 5)按服务生姓名查询,选择5后查询服务生li,之后返回。 图5服务生查询 6)按金额排序,选择6后可按金额从大到小排序显示,之后返回。 图6按金额排序 7)求总收入,选择7后可求出总收入,之后返回。 图7总收入 8)求顾客总数,选择8后可求出顾客总数,之后返回。 图8顾客总数 9)删除信息,选择3后输入要删除的编号3,删除后显示,并返回。 图9删除信息 10)退出程序,选择0后退出餐饮结账管理系统。 图10退出 5课程设计总结 经过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。 它是计算机程序设计的重要理论技术基础,在我们的学习中占据着十分重要的地位。 1.这次课程设计运用《C语言》知识,编写一个参饮结账管理系统。 其中遇到了不少问题,平时自己在编写一些普一般见的程序时感觉得心应手,非常简单,但此次拿到这个程序的要求后第一感觉就
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 餐饮 结账 管理 系统 设计