实现了管理员的权限后,现在弄了用户的菜单。
void user()
{
menu();
}
一、菜单menu()
void menu()
{
int sel;
system("cls");
printf("----------------------------------------\n");
printf("| 欢迎来到米其林8星餐厅 |\n");
printf("----------------------------------------\n");
//餐桌信息
printf("----------------------------------------\n");
printf("|**** 1.点餐 ****|\n");
printf("|**** 2.查询 ****|\n");
printf("|**** 3.退出 ****|\n");
printf("----------------------------------------\n");
printf("请输入你的选择【1 or 2 or 3】:");
scanf("%d",&sel);
//判断是否输入错误
while(sel!=1 && sel!=2&&sel!=3)
{
printf("输入错误,请重新再输入:");
scanf("%d",&sel);
}
switch(sel)
{
case 1:
diancan();
break;
case 2:
check();
break;
case 3:
getchar();
loads();
}
}
二、点餐 diancan()
void diancan()
{
system("cls");
float money=0;
int counts=0;
int number,sel;
int k,i,j;
printf("请你输入你当前所坐桌的桌号【1~199】:");
tt:
scanf("%d",&k);
//判断一下输入的桌号是否正确
if(custmer[k].people!=0)
{
printf("抱歉,这个餐桌号已经有人,请输入你自己所处的餐桌位:");
goto tt;
}
custmer[k].seat=k;
custmer[k].sum=0;
printf("请你输入用餐人数:");
scanf("%d",&custmer[k].people);
printf("请你输入点菜的个数:");
scanf("%d",&custmer[k].sl);
int x=custmer[k].sl;
printf("----------------------------------------\n");
printf("今日菜品有如下:\n");
output();
printf("----------------------------------------\n");
int count=reads();
output();
for(int j=0; j<x; j++)
{
printf("第%d个菜品的编码:",j+1);
here:
scanf("%d",&custmer[k].counts[j]);
//判断是否有此编码
int flag=1;//假设为不存在的状态
for(i=0; i<count; i++)
if(custmer[k].counts[j]==caipin[i].bianma)
flag=0;//寻找到就改变状态
if(flag==1)
{
printf("非常抱歉亲爱的顾客,你所输入编码对应的菜品今日不供应!!!\n");
printf("请重新输入你第%d道菜的编码:",j+1);
goto here;
}
for(i=0; i<count; i++) //查找菜品的金额
if(custmer[k].counts[j]==caipin[i].bianma)
{
custmer[k].sum+=caipin[i].price;
caipin[i].hot++;
}
}
qsort(caipin,count,sizeof(caipin[0]),comp);
save(count);
printf("你当前所需要支付的金额:%f\n",custmer[k].sum);
printf("是否选择提交订单【1 or 2】:");
scanf("%d",&sel);
while(sel!=1 && sel!=2)
{
printf("输入错误,请重新再输入:");
scanf("%d",&sel);
}
if(sel==1)
{
custmer[k].f=1;
pay(k);
printf("支付成功,祝您用餐愉快!!\n");
}
else
menu();
}
(三)查询 check()
void check()
{
int n,sel;
int count;
count=reads();
printf("输入当前的所在桌位:");
scanf("%d",&n);
printf("%5s","餐桌号码");
printf("%15s","餐桌人数");
printf("%13s","点菜道数");
printf("%11s","需付金额");
printf("%20s","所点菜品");
printf("\n");
printf("%4d号",n);
printf("%11d人",custmer[n].people);
printf("%11d道",custmer[n].sl);
printf("%11.2fRmb",custmer[n].sum);
//找菜名
int flag=1,x,i;//标记一下,用来美化一下界面
for(x=0; x<custmer[n].sl; x++)
for(i=0; i<count; i++)
if(custmer[n].counts[x]==caipin[i].bianma)
{
if(flag==1)
{
printf("%20s",caipin[i].name);
flag=0;
}
else
printf(" %s",caipin[i].name);
}
printf("\n");
//顾客点单完查看后,根据需要加餐和减餐
printf("----------------------------------------\n");
printf("|**** 1.加菜 ****|\n");
printf("|**** 2.减菜 ****|\n");
printf("|**** 3.返回 ****|\n");
printf("----------------------------------------\n");
printf("请输入你的选择【1 or 2 or 3】:");
scanf("%d",&sel);
//判断是否输入错误
while(sel!=1 && sel!=2 && sel!=3)
{
printf("输入错误,请重新再输入:");
scanf("%d",&sel);
}
printf("----------------------------------------\n");
switch(sel)
{
//加菜
case 1:
{
x=custmer[n].sl;
int c;
output();
printf("请输入您想添加菜的编码:");
aaa:
scanf("%d",&custmer[n].counts[x]);
//判断是否有此编码
flag=1;//假设为不存在的状态
for(i=0; i<count; i++)
if(custmer[n].counts[x]==caipin[i].bianma)
flag=0;//寻找到就改变状态
if(flag==1)
{
printf("非常抱歉亲爱的顾客,你所输入编码对应的菜品今日不供应!!!\n");
printf("请重新输入你第%d道菜的编码:",x+1);
goto aaa;
}
custmer[n].sl++;//菜数增加
for(i=0; i<count; i++) //查找菜品的金额
if(custmer[n].counts[x]==caipin[i].bianma)
{
custmer[n].sum+=caipin[i].price;
caipin[caipin[i].bianma].hot++;
}
save(count);
//保存
printf("是否选择提交订单【1 or 2】:");
scanf("%d",&sel);
while(sel!=1 && sel!=2)
{
printf("输入错误,请重新再输入:");
scanf("%d",&sel);
}
if(sel==1)
{
if(custmer[n].f==0)
{
custmer[n].f=1;
pay(n);
}
printf("支付成功,祝您用餐愉快\n");
}
else menu();
}
break;
case 2: //减菜
{
int code;
int x=custmer[n].sl;
for(int k=0; k<x; k++)
printf("%-15d%-15s\n",custmer[n].counts[k],caipin[custmer[n].counts[k]]);
printf("请输入你想删去菜品的编码:");
scanf("%d",&code);
flag=1;//给标记看是否能找到
for(i=0; i<custmer[n].sl; i++)
{
if(code==custmer[n].counts[x])
{
flag=0;
int j;
for(j=i; j<custmer[n].sl; j++)
{
if(j<custmer[n].sl-1)
custmer[n].counts[j]=custmer[n].counts[j+1];
if(j==custmer[n].sl-1)
custmer[n].counts[j]=0;
}
caipin[code].hot--;
}
}
save(count);
if(flag==1)
printf("您的订单中尚未添加该菜\n");
else
{
custmer[n].sl--;//所点菜品数减去一道
//再把所需要的金额减去所删去的菜品对应的价格
for(i=0; i<count; i++) //查找菜品的金额
if(code==caipin[i].bianma)
custmer[n].sum-=caipin[i].price;
}
printf("是否选择提交订单【1 or 2】:");
scanf("%d",&sel);
while(sel!=1 && sel!=2)
{
printf("输入错误,请重新再输入:");
scanf("%d",&sel);
}
if(sel==1)
{
if(custmer[n].f==0)
{
custmer[n].f=1;
pay(n);
}
printf("支付成功!\n");
}
else
menu();
}
break;
case 3:
menu();
break;
}
}
目前还少了一些功能以及内容:热销菜,保存就餐者的点菜信息等等。