题目19酒店点菜管理系统设计
1、问题描述
为了适应现代信息时代点餐的需求,采用新信息技术,研究设计了一个计算机点餐系统。能够完成权限管理、点餐管理、订单管理、结账管理、菜谱评分等功能。
2、功能要求
管理员用户名: admin
管理员密码: 123456 (输入时以密文形式,如: *****)
管理员:
(1)添加普通用户用户名和密码信息。
(2)重置普通用户初始密码。(如: 1)
(3)权限管理:包括用户的注册、登录、用户信息管理。
(4)查看功能:查看所有座台点餐订单。
(5)结账管理:统计所有消费的总额。
(6)查看历史:查看所有消费历史。
(7) 菜单管理:对所有菜肴的管理,包括菜肴的编号,名称,单价等。
普通用户:
(1)点餐功能:包括座台标号,餐单的增加、修改、删除、查看。
(3)订单管理:包括生成订单、修改、删除、查找。
(4)结账管理:用户消费的总额。
(5)查看历史:查看用户消费历史。
(6)菜谱评分:对各菜谱中经常点取的菜肴进行评分。
## 代码
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include <conio.h>
#include <ctype.h>
#include "malloc.h"
#define mq(a,b) memset(a,b,sizeof(a))
int menu1();//首页菜单 //
int menu2();//管理员菜单 //
int menu3();//用户菜单 //
void zhuce();//用户注册 //
void aaa();//添加普通用户用户名和密码信息//
void bbb();//重置普通用户初始密码 //
void ccc();//用户的注册、登录、用户信息管理//
void ddd();//查看所有 座台点 餐订单 //
void eee();//统计所有消费的总额//
void fff();//查看所有消费历史//
void ggg();//菜肴的编号,名称,单价管理//
void hhh();//点餐功能 //
void iii();//订单生成 //
void jjj();//结账管理 //
void kkk();//查看用户消费历史 //
void mmm();//对各菜中经常点取的菜进行评分
void secretword(char a2[]);//隐藏密码 //
char g1[20]="admin",g2[20]="123456";
char a1[20],a2[20],key[20];
int b[999],b3[999],sss[999];//b标记,b3编号;
char b2[999][25];//名
float b1[999];//b1评分
struct ppp //用户账号 //file.txt
{
char q1[20];
char q2[20];
}q,p[999];
struct caicai//菜单 //菜单.txt
{
int h;//编号
char cai[25];// 菜名
int s;//价钱
float fen;// 菜评分
int po;//评分的人数
struct caicai *link;
}caa[999];
struct zhangdan
{
char zhanghao[20];//用户名
int zh;//座号
int cai[60];//菜编号
char caiming[60][25];
int sl[60]; //单价
int s;//总价
int z;//总共点几道菜
}zd,xx,mm[999];
int main()
{
int n,i,m,k=0,l,j;
do
{
k=0;n=0;
n=menu1();
printf("\n");
if(n==0)
exit(0);
while(n==1)
{
printf("\t\t\t管理员登陆\n");
printf("\t\t\t输入账号:");
scanf("%s",a1);
printf("\t\t\t输入密码:");
secretword(a2);
if(strcmp(g1,a1)==0&&strcmp(g2,a2)==0)
{
printf("\t\t\t登录成功\n");
while(1)
{
m=menu2();
switch(m)
{
case 1:aaa(); break;
case 2:bbb(); break;
case 3:ccc(); break;
case 4:ddd(); break;
case 5:eee(); break;
case 6:fff(); break;
case 7:ggg(); break;
case 0:exit(0);
}
}
}
else
printf("\t\t\t账号或密码错误,请重新登录\n\n");
}
while(n==2)
{
k=0;
FILE *fp;
int pp=0;
zd.z=0;
zd.s=0;
printf("\t\t\t用户登陆\n");
printf("\t\t\t输入账号:");
scanf("%s",a1);
printf("\t\t\t输入密码:");
secretword(a2);
fp=fopen("file.txt","ab+");
while(fread(&p[k],sizeof(struct ppp),1,fp)==1)
{
k++;
}
fclose(fp);
for(i=0;i<k;i++)
{
if(strcmp(a1,p[i].q1)==0)
{
if(strcmp(a2,p[i].q2)==0)
{
printf("\n");
printf("\t\t\t登录成功\n\n");
strcpy(zd.zhanghao,a1);
while(1)
{
m=menu3();
switch(m)
{
case 1:hhh(); break;
case 2:iii(); break;
case 3:jjj(); break;
case 4:kkk(); break;
case 5:mmm(); break;
case 0:exit(0);
}
}
}
else
{
pp=1;
break;
}
}
}
if(pp||i>=k)
printf("\t\t\t账号或密码错误,请重新登录\n\n");
}
if(n==3)
zhuce();
}while(n==3);
}
int menu1()
{
int n;
printf("\t\t\t***********************\n");
printf("\t\t\t* 酒店点菜管理系统 *\n");
printf("\t\t\t***********************\n");
printf("\t\t\t* 1.管理员登录 *\n");
printf("\t\t\t* 2.用户登录 *\n");
printf("\t\t\t* 3.用户注册 *\n");
printf("\t\t\t* 0.退出程序 *\n");
printf("\t\t\t***********************\n");
printf("\t\t\t*请输入选项编号(0~3)*\n");
printf("\t\t\t***********************\n");
printf("\t\t\t你输入的编号为:");
scanf("%d",&n);
return n;
}
int menu2()
{
int n;
printf("\t\t\t******************\n");
printf("\t\t\t* 管理员系统 *\n");
printf("\t\t\t******************\n");
printf("\t\t\t* 1.添加普通用户*\n");
printf("\t\t\t* 2.重置用户密码*\n");
printf("\t\t\t* 3.权限管理 *\n");
printf("\t\t\t* 4.查看功能 *\n");
printf("\t\t\t* 5.结账管理 *\n");
printf("\t\t\t* 6.查看历史 *\n");
printf("\t\t\t* 7.菜单管理 *\n");
printf("\t\t\t* 0.退出程序 *\n");
printf("\t\t\t******************\n");
printf("\t\t\t你输入的编号为:");
scanf("%d",&n);
return n;
}
int menu3()
{
int n;
printf("\t\t\t******************\n");
printf("\t\t\t*酒店点菜管理系统*\n");
printf("\t\t\t******************\n");
printf("\t\t\t* 1.点餐功能 *\n");
printf("\t\t\t* 2.订单管理 *\n");
printf("\t\t\t* 3.结账管理 *\n");
printf("\t\t\t* 4.查看历史 *\n");
printf("\t\t\t* 5.菜谱评分 *\n");
printf("\t\t\t* 0.退出程序 *\n");
printf("\t\t\t******************\n");
printf("\t\t\t你输入的编号为:");
scanf("%d",&n);
return n;
}
void zhuce()
{
int k=0,i=0;
FILE *fp;
fp=fopen("file.txt","ab+");
while(fread(&p[k],sizeof(struct ppp),1,fp)==1)
{
k++;
}
while(1)
{ printf("\n");
printf("\t\t\t输入注册的账户名:");
scanf("%s",p[k].q1);
printf("\t\t\t输入注册的账户密码:");
secretword(p[k].q2);
/// scanf("%s",);
for(i=0;i<k;i++)
{
if(strcmp(p[k].q1,p[i].q1)==0)
break;
}
if(i>=k)
{
fwrite(&p[k],sizeof(struct ppp),1,fp);
printf("\t\t\t注册成功\n\n");
fclose(fp);
return ;
}
else
printf("\t\t\t该用户名已存在\n\n");
}
fclose(fp);
return ;
}
void aaa()//添加普通用户用户名和密码信息
{
int n,m;
FILE *fp;
fp=fopen("file.txt","ab+");
n=1;
while(n)
{
printf("\n");
printf("\t\t\t输入添加用户名(输入0退出):");
scanf("%s",q.q1);
if(q.q1[0]=='0')
break;
printf("\t\t\t输入添加用户名的密码:");
secretword(q.q2);
fwrite(&q,sizeof(struct ppp),1,fp);
printf("\t\t\t添加成功\n\n");
}
fclose(fp);
return ;
}
void bbb()//重置普通用户初始密码
{
int k=0,i=0;
FILE *fp;
fp=fopen("file.txt","ab+");
while(fread(&p[k],sizeof(struct ppp),1,fp)==1)
{
k++;
}
fclose(fp);
while(1)
{
printf("\n");
printf("\t\t\t输入重置的用户名(输入0退出):");
scanf("%s",a1);
if(a1[0]=='0')
break;
printf("\t\t\t输入重置的密码:");
secretword(a2);
for(i=0;i<k;i++)
{
if(strcmp(a1,p[i].q1)==0)
{
strcpy(p[i].q2,a2);
break;
}
}
if(i<k)
{
fp=fopen("file.txt","wb");
for(i=0;i<k;i++)
{
fwrite(&p[i],sizeof(struct ppp),1,fp);
}
printf("\t\t\t重置成功\n");
}
else
printf("\t\t\t未找到该用户名");
}
fclose(fp);
return ;
}
void ccc()//用户的注册、登录、用户信息管理
{
int k=0,i=0;
FILE *fp;
fp=fopen("file.txt","ab+");
while(fread(&p[k],sizeof(struct ppp),1,fp)==1)
{
k++;
}
fclose(fp);
printf("\n");
printf("\t\t\t总共注册的账号数为:%d\n",k);
for(i=0;i<k;i++)
{
printf("\t\t\t%d :\n",i+1);
printf("\t\t\t账号:%s\n",p[i].q1);
printf("\t\t\t密码:%s\n\n",p[i].q2);
}
return ;
}
void ddd()//查看所有座台点餐订单
{
FILE *fp;
mq(b,0);
int k=0,i;
fp=fopen("订单.txt","ab+");
while(fread(&mm[k],sizeof(struct zhangdan),1,fp)==1)
{
b[mm[k].zh]=1;
k++;
}
fclose(fp);
i=k;
for(k=i-1;k>=0;k--)
{
if(b[mm[k].zh]==1)
{
b[mm[k].zh]=2;
printf("\n");
printf("\t\t\t座台标号为:%d\n",mm[k].zh);
printf("\t\t\t用户名: %s\n",mm[k].zhanghao);
printf("\t\t\t菜名 数量 金额\n");
for(i=0;i<mm[k].z;i++)
printf("\t\t\t%-12s*1 %d\n",mm[k].caiming[i],mm[k].sl[i]);
printf("\t\t\t总共点菜数: %d\n",mm[k].z);
printf("\t\t\t\t 总额为:%d\n\n",mm[k].s);
}
}
return ;
}
void eee()//统计所有消费的总额
{
mq(b,0);
mq(sss,0);
FILE *fp;
int k1=0,i=0,k2=0,k=0,ii;
fp=fopen("菜单.txt","ab+");
while(fread(&caa[k1],sizeof(struct caicai),1,fp)==1)
{
strcpy(b2[k1],caa[k1].cai);
sss[k1]=caa[k1].s;
k1++;
}
fclose(fp);
fp=fopen("订单.txt","ab+");
while(fread(&mm[k2],sizeof(struct zhangdan),1,fp)==1)
{
for(i=0;i<mm[k2].z;i++)
{
for(ii=0;ii<k1;ii++)
{
if(strcmp(b2[ii],mm[k2].caiming[i])==0)
{
b[ii]++;
}
}
}
}
fclose(fp);
printf("\n");
printf("\t\t\t菜名 数量 金额\n");
for(i=0;i<k1;i++)
{
if(b[i]!=0)
{
printf("\t\t\t%-12s %d %d\n",b2[i],b[i],sss[i]*b[i]);
k=k+sss[i]*b[i];
}
}
printf("\t\t\t\t总额为%d\n\n",k);
return ;
}
void fff()//查看所有消费历史
{
FILE *fp;
int k=0,i;
fp=fopen("订单.txt","ab+");
printf("\n");
while(fread(&mm[k],sizeof(struct zhangdan),1,fp)==1)
{
printf("\t\t\t%d\n",k+1);
printf("\t\t\t用户名:%s\n",mm[k].zhanghao);
printf("\t\t\t座台标号为:%d\n",mm[k].zh);
printf("\t\t\t菜名 数量 金额\n");
for(i=0;i<mm[k].z;i++)
printf("\t\t\t%-12s *1 %d\n",mm[k].caiming[i],mm[k].sl[i]);
printf("\t\t\t总共点菜数: %d\n",mm[k].z);
printf("\t\t\t\t 总额为:%d\n\n",mm[k].s);
k++;
}
printf("\t\t\t共有%d个历史消费\n\n",k);
fclose(fp);
return ;
}
void ggg()//菜肴的编号,名称,单价管理
{
mq(b,0);
FILE *fp;
int k=0,i=0;
printf("\n");
fp=fopen("菜单.txt","ab+");
if(fread(&caa[k],sizeof(struct caicai),1,fp)==1)
{
b[caa[k].h]=1;
printf("\t\t\t编号:%d\n",caa[k].h);
printf("\t\t\t菜名:%s\n",caa[k].cai);
printf("\t\t\t评分:%.2f\n",caa[k].fen);
printf("\t\t\t评分人数: %d\n",caa[k].po);
printf("\t\t\t价钱:%d\n\n",caa[k].s);
k++;
}
while(fread(&caa[k],sizeof(struct caicai),1,fp)==1)
{
printf("\t\t\t编号:%d\n",caa[k].h);
printf("\t\t\t菜名:%s\n",caa[k].cai);
printf("\t\t\t评分:%.2f\n",caa[k].fen);
printf("\t\t\t评分人数: %d\n",caa[k].po);
printf("\t\t\t单价:%d\n\n",caa[k].s);
k++;
}
fclose(fp);
while(1)
{
printf("\t\t\t【1】修改单价\n");
printf("\t\t\t【2】修改编号\n");
printf("\t\t\t【3】修改名称\n");
printf("\t\t\t【4】增加菜肴\n");
printf("\t\t\t【5】减少菜肴\n");
printf("\t\t\t【0】退出\n");
int m,m1,m2;
printf("\t\t\t输入你的选择:");
scanf("%d",&m);
if(m==0)
break;
while(m==1)
{
printf("\t\t输入你要修改菜肴的编号(输入-1退出):");
scanf("%d",&m1);
if(m1==-1)
break;
printf("\t\t\t输入你要修改为的单价:");
scanf("%d",&m2);
for(i=0;i<k;i++)
{
if(caa[i].h==m1)
{
caa[i].s=m2;
break;
}
}
if(i<k)
{
printf("\n\t\t\t编号:%d\n",caa[i].h);
printf("\t\t\t菜名:%s\n",caa[i].cai);
printf("\t\t\t评分:%.2f\n",caa[i].fen);
printf("\t\t\t评分人数: %d\n",caa[i].po);
printf("\t\t\t单价:%d\n\n",caa[i].s);
printf("\n\t\t\t修改成功\n\n");
}
else
printf("\t\t\t未找到\n\n");
}
while(m==2)
{
printf("\t\t输入你要修改菜肴的编号(输入-1退出):");
scanf("%d",&m1);
if(m1==-1)
break;
printf("\t\t\t输入你要修改为的编号:");
scanf("%d",&m2);
for(i=0;i<k;i++)
{
if(caa[i].h==m1)
{
caa[i].h=m2;
break;
}
}
if(i<k)
{
printf("\n\t\t\t编号:%d\n",caa[i].h);
printf("\t\t\t菜名:%s\n",caa[i].cai);
printf("\t\t\t评分:%.2f\n",caa[i].fen);
printf("\t\t\t评分人数: %d\n",caa[i].po);
printf("\t\t\t单价:%d\n\n",caa[i].s);
printf("\n\t\t\t修改成功\n\n");
}
else
printf("\t\t\t未找到\n\n");
}
while(m==3)
{
printf("\t\t输入你要修改菜肴的编号(输入-1退出):");
scanf("%d",&m1);
if(m1==-1)
break;
printf("\t\t\t输入你要修改为的名称:");
scanf("%s",a1);
for(i=0;i<k;i++)
{
if(caa[i].h==m1)
{
strcpy(caa[i].cai,a1);
break;
}
}
if(i<k)
{
printf("\n\t\t\t编号:%d\n",caa[i].h);
printf("\t\t\t菜名:%s\n",caa[i].cai);
printf("\t\t\t评分:%.2f\n",caa[i].fen);
printf("\t\t\t评分人数: %d\n",caa[i].po);
printf("\t\t\t单价:%d\n\n",caa[i].s);
printf("\n\t\t修改成功\n\n");
}
else
printf("\t\t\t未找到\n");
}
while(m==4)
{
printf("\t\t\t输入增加菜肴的编号(输入-1退出):");
scanf("%d",&caa[k].h);
if(caa[k].h==-1)
break;
printf("\t\t\t输入增加菜肴的菜名:");
scanf("%s",caa[k].cai);
printf("\t\t\t输入增加菜肴的价钱:");
scanf("%d",&caa[k].s);
printf("\t\t\t输入增加菜肴的评分:");
scanf("%f",&caa[k].fen);
printf("\t\t\t输入增加菜肴的评分人数:");
scanf("%d",&caa[k].po);
if(b[caa[k].h]==1)
printf("\t\t\t该编号已使用,请重新输入\n\n");
else
{
printf("\n\t\t\t编号:%d\n",caa[k].h);
printf("\t\t\t菜名:%s\n",caa[k].cai);
printf("\t\t\t评分:%.2f\n",caa[k].fen);
printf("\t\t\t评分人数: %d\n",caa[k].po);
printf("\t\t\t单价:%d\n\n",caa[k].s);
k++;
printf("\n\t\t\t增加成功\n\n");
}
}
while(m==5)
{
i=0;
int m3;
printf("\t\t输入减少的菜肴编号(输入-1退出):");
scanf("%d",&m3);
if(m3==-1)
break;
for(i=0;i<k;i++)
{
if(caa[i].h==m3)
break;
}
if(i<k)
{
for(;i<k-1;i++)
p[i]=p[i+1];
k--;
printf("\t\t\t删减成功\n\n");
}
else
printf("\t\t\t未找到\n\n");
}
}
fp=fopen("菜单.txt","wb");
for(i=0;i<k;i++)
fwrite(&caa[i],sizeof(struct caicai),1,fp);
fclose(fp);
return ;
}
void hhh()//点餐功能
{
FILE *fp;
int k=0,i=0;
printf("\n");
fp=fopen("菜单.txt","ab+");
if(fread(&caa[k],sizeof(struct caicai),1,fp)==1)
{
b[caa[k].h]=1;
printf("\t\t\t编号:%d\n",caa[k].h);
printf("\t\t\t菜名:%s\n",caa[k].cai);
printf("\t\t\t评分:%.2f\n",caa[k].fen);
printf("\t\t\t评分人数: %d\n",caa[k].po);
printf("\t\t\t单价:%d\n\n",caa[k].s);
k++;
}
while(fread(&caa[k],sizeof(struct caicai),1,fp)==1)
{
printf("\t\t\t编号:%d\n",caa[k].h);
printf("\t\t\t菜名:%s\n",caa[k].cai);
printf("\t\t\t评分:%.2f\n",caa[k].fen);
printf("\t\t\t评分人数: %d\n",caa[k].po);
printf("\t\t\t单价:%d\n\n",caa[k].s);
k++;
}
fclose(fp);
printf("\n");
printf("\t\t\t输入你的座台标号为:");
scanf("%d",&zd.zh);
while(1)
{printf("\n");
int m1,m2,m3,m;
printf("\t\t\t【1】餐单的增加\n");
printf("\t\t\t【2】餐单的修改\n");
printf("\t\t\t【3】餐单的删除\n");
printf("\t\t\t【4】餐单的查看\n");
printf("\t\t\t【0】退出\n\n");
printf("\t\t\t输出你的选择:");
scanf("%d",&m);
if(m==0)
break;
while(m==1)
{
printf("\t\t输入你所增加菜的编号(输入-1退出):");
scanf("%d",&zd.cai[zd.z]);
if(zd.cai[zd.z]==-1)
break;
for(i=0;i<k;i++)
{
if(caa[i].h==zd.cai[zd.z])
{
strcpy(zd.caiming[zd.z],caa[i].cai);
zd.sl[zd.z]=caa[i].s;//单价
zd.s+=caa[i].s;//总价
break;
}
}
zd.z++;
printf("\t\t\t增加成功\n\n");
}
while(m==2)
{
printf("\t\t\t输出你要修改的餐单编号(输入-1退出):");
scanf("%d",&m1);
if(m1==-1)
break;
printf("\t\t\t输出你要改为的餐单编号:");
scanf("%d",&m2);
for(i=0;i<zd.z;i++)
{
if(zd.cai[i]==m1)
{
// printf("&&&&&\n");
zd.cai[i]=m2;
break;
}
}
for(int j=0;j<k;j++)
{
if(caa[j].h==zd.cai[i])
{
strcpy(zd.caiming[i],caa[j].cai);
zd.s=zd.s-zd.sl[i]+caa[j].s;
zd.sl[i]=caa[j].s;
break;
}
}
printf("\t\t\t修改成功\n\n");
}
while(m==3)
{
printf("\t\t\t输出你要删除的餐单编号:(输入-1退出)");
scanf("%d",&m1);
if(m1==-1)
break;
for(i=0;i<zd.z;i++)
{
if(zd.cai[i]==m1)
{
if(i!=zd.z-1)
{
zd.cai[i]=zd.cai[zd.z-1];
zd.s-=zd.sl[i];
zd.sl[i]=zd.sl[zd.z-1];
strcpy(zd.caiming[i],zd.caiming[zd.z-1]);
zd.z--;
break;
}
if(i==zd.z-1)
{
zd.s-=zd.sl[i];
zd.z--;
break;
}
}
}
printf("\t\t\t删除成功\n\n");
}
if(m==4)
{
for(i=0;i<k;i++)
{
printf("\t\t\t编号:%d\n",caa[i].h);
printf("\t\t\t菜名:%s\n",caa[i].cai);
printf("\t\t\t评分:%.2f\n",caa[i].fen);
printf("\t\t\t评分人数: %d\n",caa[i].po);
printf("\t\t\t单价:%d\n\n",caa[i].s);
}
}
}
return ;
}
void iii()//订单生成
{
int i,j;int m1,m2,m3,m;
FILE *fp;
while(1)
{printf("\n");
printf("\t\t\t【1】订单的生成\n");
printf("\t\t\t【2】订单的修改(座台标号)\n");
printf("\t\t\t【3】订单的删除\n");
printf("\t\t\t【4】订单的查找\n");
printf("\t\t\t【0】退出\n\n");
printf("\t\t\t输出你的选择:");
scanf("%d",&m);
if(m==0)
break;
if(m==1)
{
if(zd.s!=0)
{
fp=fopen("订单.txt","ab+");
fwrite(&zd,sizeof(struct zhangdan),1,fp);
fclose(fp);
printf("\t\t\t订单生成成功\n\n");
}
else
{
printf("\t\t\t没有订单\n\n");
}
}
if(m==2)
{
if(zd.s!=0)
{
printf("\t\t输入你要修改的座台标号:");
scanf("%d",&zd.zh);
printf("\t\t\t订单修改完成\n\n");
}
else
{
printf("\t\t\t没有订单\n\n");
}
}
if(m==3)
{
zd=xx;
printf("\t\t\t订单删除成功\n\n");
}
if(m==4)
{ if(zd.s!=0)
{
printf("\t\t\t用户名:%s\n",zd.zhanghao);
printf("\t\t\t座台标号为:%d\n",zd.zh);
printf("\t\t\t菜名 数量 金额\n");
for(i=0;i<zd.z;i++)
printf("\t\t\t%-12s*1 %d\n",zd.caiming[i],zd.sl[i]);
printf("\t\t\t总共点菜数: %d\n",zd.z);
printf("\t\t\t\t 总额为:%d\n\n",zd.s);
}
else
{
printf("\t\t\t没有订单\n\n");
}
}
}
return ;
}
void jjj()//结账管理
{
int i;
if(zd.s!=0)
{
printf("\n");
printf("\t\t\t用户名:%s\n",zd.zhanghao);
printf("\t\t\t座台标号为:%d\n",zd.zh);
printf("\t\t\t菜名 数量 金额\n");
for(i=0;i<zd.z;i++)
printf("\t\t\t%-12s*1 %d\n",zd.caiming[i],zd.sl[i]);
printf("\t\t\t总共点菜数: %d\n",zd.z);
printf("\t\t\t\t 总额为:%d\n\n",zd.s);
}
else
{
printf("\t\t\t没有账单可结算\n\n");
}
return ;
}
void kkk()//查看用户消费历史
{
FILE *fp;
int k=0,i;
fp=fopen("订单.txt","ab+");
while(fread(&mm[k],sizeof(struct zhangdan),1,fp)==1)
{
if(strcmp(mm[k].zhanghao,zd.zhanghao)==0)
{
printf("\t\t\t%d\n",k+1);
printf("\t\t\t用户名:%s\n",mm[k].zhanghao);
printf("\t\t\t座台标号为:%d\n",mm[k].zh);
printf("\t\t\t菜名 数量 金额\n");
for(i=0;i<mm[k].z;i++)
printf("\t\t\t%-12s*1 %d\n",mm[k].caiming[i],mm[k].sl[i]);
printf("\t\t\t总共点菜数: %d\n",mm[k].z);
printf("\t\t\t\t 总额为:%d\n\n",mm[k].s);
k++;
}
}
if(k==0)
{
printf("\t\t\t无消费历史\n\n");
}
else
{
printf("\t\t\t共%d个消费历史\n\n",k);
}
fclose(fp);
return ;
}
void mmm()//对各菜中经常点取的菜进行评分
{
mq(b,0);
mq(b1,0);//b1评分
FILE *fp;
int k=0,i,ss=0;
fp=fopen("订单.txt","ab+");
while(fread(&mm[k],sizeof(struct zhangdan),1,fp)==1)
{
if(strcmp(mm[k].zhanghao,zd.zhanghao)==0)
{
for(i=0;i<mm[k].z;i++)
{
if(!b[mm[k].cai[i]])
{
b[mm[k].cai[i]]=1;
b3[ss]=mm[k].cai[i];//菜单编号
strcpy(b2[ss++],mm[k].caiming[i]);//菜名
}
}
k++;
}
}
int m1,m2;
printf("\n");
printf("\t\t\t你点过%d种菜,分别为:\n\n",ss);
for(i=0;i<ss;i++)
printf("\t\t\t编号:%d %s\n",b3[i],b2[i]);
printf("\n");
while(1)
{
printf("\t\t输入你要评分菜的编号(输入-1退出):");
scanf("%d",&m1);
if(m1==-1)
break;
if(b[m1]==1)
{
b[m1]=2;
printf("\t\t\t输入你的评分:");
scanf("%f",&b1[m1]);
printf("\t\t\t评分成功\n\n");
}
else
printf("\t\t\t输入错误,请重新输入\n");
}
fclose(fp);
fp=fopen("菜单.txt","ab+");
k=0;
while(fread(&caa[k],sizeof(struct caicai),1,fp)==1)
k++;
fclose(fp);
for(i=0;i<k;i++)
{
if(b[caa[i].h]==2)
{
float ww=caa[i].fen;
caa[i].fen=(caa[i].fen*caa[i].po+b1[caa[i].h])*1.0/(caa[i].po+1);
caa[i].po+=1;
printf("\n\t\t\t编号:%d\n",caa[i].h);
printf("\t\t\t菜名:%s\n",caa[i].cai);
printf("\t\t\t评分:%.2f--->%.2f\n",ww,caa[i].fen);
printf("\t\t\t评分人数: %d--->%d\n",caa[i].po-1,caa[i].po);
printf("\t\t\t价钱:%d\n\n",caa[i].s);
}
}
fp=fopen("菜单.txt","wb");
for(i=0;i<k;i++)
fwrite(&caa[i],sizeof(struct caicai),1,fp);
fclose(fp);
return ;
}
void secretword(char a2[])
{
unsigned char c;
int i=0;
while((c=getch())!='\r')
{
if(i<20&&isprint(c))
{
a2[i]=c;
i++;
putchar('*');
}
else if(i>0&&c=='\b')
{
i--;
putchar('\b');
putchar(' ');
putchar('\b');
}
}
printf("\n");
a2[i]='\0';
}
首先你得先以管理员的身份选择
(7) 菜单管理:对所有菜肴的管理,包括菜肴的编号,名称,单价等。
添加菜单,才能使用
这是我之前添加的菜单(你们运行没有)
如果你想添加菜单选择 4
这就添加成功
记住你可以先不输入0退出,可以继续添加菜单,但最后一定要 输入 0 退出 才算真真的添加成功