开心区餐厅是广州市的一家餐厅。餐厅主要供应一般的食物和饮料,如酒、餐、蔬菜、海鲜等(如表1所示)。为了成为一家高级国际餐厅,餐厅要求每桌的最后帐单必须是100%正确的。因此,餐厅决定开发一个由收银员选择食物或饮料,然后计算和输出最终客户的帐单的系统。经理现在要求您完成这项工作,他希望系统能由收银员选择食物或饮料,然后程序将计算并输出最终帐单。
Menu
Food:
Name Cost
1 Curry beef with rice ¥40.00
2 Sushi set meal ¥65.00
3 YangZhou fire rice ¥45.00
4 Sirloin Steak with Spaghetti ¥72.00
5 Chicken vegetable roll ¥42.00
Drink:
21 Soft drink ¥10.00
22 Red wine ¥15.00
23 Beer ¥15.00
More food/drink items are added to it
#include <stdio.h>
#include <stdlib.h>
typedef struct _menus
{
int id;
char name[50];
float price;
}menus;
menus food[100],drink[100];
int fs=0,ds=0;
void showmenu()
{
int i=0;
printf("\t\t\t\t\tMenu\n");
printf("\tFood\n");
printf("\t%-10s%-50s%-10s\n","ID","Name","Cost");
for(i=0;i<fs;i++)
printf("\t%-10d%-50s%-10.2f\n",food[i].id,food[i].name,food[i].price);
printf("\tDrink\n");
for(i=0;i<ds;i++)
printf("\t%-10d%-50s%-10.2f\n",drink[i].id,drink[i].name,drink[i].price);
}
float getprice(int id)
{
int i;
for(i=0;i<fs;i++)
if(food[i].id == id)
return food[i].price;
for(i=0;i<ds;i++)
if(drink[i].id == id)
return food[i].price;
return 0;
}
int main()
{
int i;
int n;
int type,num;
float p=0;
char ch;
printf("请输入食物数量:");
scanf("%d",&fs);
printf("请逐行输入每个食物的ID,Name和Cost:");
for(i=0;i<fs;i++)
scanf("%d%s%f",&food[i].id,food[i].name,&food[i].price);
printf("请输入饮料数量:");
scanf("%d",&ds);
printf("请逐行输入每个饮料的ID,Name和Cost:");
for(i=0;i<ds;i++)
scanf("%d%s%f",&drink[i].id,drink[i].name,&drink[i].price);
while(1)
{
system("cls");
showmenu();
p=0;
printf("请输入客户选择的食物和酒类数量:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入第%d种选择的ID和数量:");
scanf("%d%d",&type,&num);
p += getprice(type)*num;
}
printf("总价为:%.2f\n",p);
printf("是否继续(Y/y继续,其它退出):");
getchar();
scanf("%c",&ch);
if(ch != 'Y' && ch != 'y')
break;
}
return 0;
}