餐厅点餐系统c语言
时间: 2023-08-24 08:10:53 浏览: 202
C语言—餐厅点菜系统
5星 · 资源好评率100%
餐厅点餐系统是一个比较复杂的软件系统,需要考虑到用户界面、订单管理、库存管理、支付结算等多个方面。以下是一个简单的餐厅点餐系统的 C 语言代码示例,供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义菜品结构体
typedef struct dish {
char name[20]; // 菜品名称
float price; // 菜品价格
int stock; // 菜品库存
} Dish;
// 定义订单结构体
typedef struct order {
Dish *dish; // 订单中的菜品数组
int quantity; // 订单中的菜品数量
float total_price; // 订单总价
} Order;
// 定义全局变量
Dish menu[] = {
{"红烧肉", 25.0, 10},
{"鱼香肉丝", 20.0, 15},
{"宫保鸡丁", 22.0, 20},
{"蒜蓉西兰花", 18.0, 12},
{"清炒菜心", 16.0, 18}
};
int menu_size = sizeof(menu) / sizeof(Dish);
// 显示菜单
void show_menu() {
printf("==============\n");
printf("菜单\n");
printf("==============\n");
for (int i = 0; i < menu_size; i++) {
printf("%d. %s\t%.1f元\n", i+1, menu[i].name, menu[i].price);
}
printf("==============\n");
}
// 下单
void place_order(Order *order) {
order->dish = (Dish*) malloc(sizeof(Dish) * order->quantity);
for (int i = 0; i < order->quantity; i++) {
int index;
printf("请输入第 %d 个菜品的编号:", i+1);
scanf("%d", &index);
Dish dish = menu[index-1];
if (dish.stock <= 0) {
printf("该菜品已售罄,请重新选择。\n");
i--;
continue;
}
dish.stock--;
order->dish[i] = dish;
order->total_price += dish.price;
}
printf("下单成功,总价为 %.1f 元。\n", order->total_price);
}
// 结算
void checkout(Order *order) {
printf("您本次消费 %.1f 元,请付款。\n", order->total_price);
free(order->dish);
order->dish = NULL;
order->quantity = 0;
order->total_price = 0.0;
}
int main() {
Order order = {NULL, 0, 0.0};
int input;
do {
printf("请选择操作:\n");
printf("1. 查看菜单\n");
printf("2. 下单\n");
printf("3. 结算\n");
printf("4. 退出\n");
scanf("%d", &input);
switch (input) {
case 1:
show_menu();
break;
case 2:
printf("请输入要点的菜品数量:");
scanf("%d", &order.quantity);
place_order(&order);
break;
case 3:
checkout(&order);
break;
case 4:
printf("欢迎下次光临!\n");
break;
default:
printf("请输入正确的操作编号。\n");
break;
}
} while (input != 4);
return 0;
}
```
这个简单的餐厅点餐系统可以通过数字选择菜品、下单和结算,具有基本的菜单管理、订单管理和库存管理功能。需要注意的是,这只是一个简单的示例,实际应用中需要根据具体需求进行扩展和改进。
阅读全文