c语言订餐管理系统
时间: 2023-07-03 07:06:32 浏览: 59
好的,订餐管理系统是一个常见的应用场景。下面是一个简单的示例程序,可以实现基本的订餐管理功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_DISHES 100 // 最大菜品数量
#define MAX_NAME_LEN 20 // 菜品名称最大长度
// 菜品结构体
typedef struct {
char name[MAX_NAME_LEN]; // 菜品名称
float price; // 菜品价格
} Dish;
// 菜品列表结构体
typedef struct {
int count; // 当前菜品数量
Dish dishes[MAX_DISHES]; // 菜品数组
} DishList;
// 显示菜品列表
void showDishList(DishList* list) {
printf("菜单如下:\n");
for (int i = 0; i < list->count; i++) {
printf("%d. %s - %.2f 元\n", i + 1, list->dishes[i].name, list->dishes[i].price);
}
}
// 添加菜品
void addDish(DishList* list) {
if (list->count >= MAX_DISHES) {
printf("菜品数量已达上限,无法添加!\n");
return;
}
Dish dish;
printf("请输入新菜品名称:");
scanf("%s", dish.name);
printf("请输入新菜品价格:");
scanf("%f", &dish.price);
list->dishes[list->count] = dish;
list->count++;
printf("添加成功!\n");
}
// 订单结构体
typedef struct {
DishList* list; // 菜品列表指针
int* counts; // 菜品数量数组指针
int totalCount; // 订单总菜品数量
float totalPrice; // 订单总价格
} Order;
// 初始化订单
void initOrder(Order* order, DishList* list) {
order->list = list;
order->counts = (int*)malloc(sizeof(int) * list->count);
memset(order->counts, 0, sizeof(int) * list->count);
order->totalCount = 0;
order->totalPrice = 0.0f;
}
// 显示订单详情
void showOrder(Order* order) {
printf("您的订单如下:\n");
for (int i = 0; i < order->list->count; i++) {
if (order->counts[i] > 0) {
printf("%d × %s - %.2f 元\n", order->counts[i], order->list->dishes[i].name, order->list->dishes[i].price * order->counts[i]);
}
}
printf("总计 %d 份菜品,共 %.2f 元\n", order->totalCount, order->totalPrice);
}
// 添加菜品到订单
void addToOrder(Order* order) {
int index;
printf("请输入要点的菜品编号:");
scanf("%d", &index);
if (index < 1 || index > order->list->count) {
printf("无效的菜品编号!\n");
return;
}
int count;
printf("请输入要点的份数:");
scanf("%d", &count);
if (count <= 0) {
printf("无效的份数!\n");
return;
}
order->counts[index - 1] += count;
order->totalCount += count;
order->totalPrice += count * order->list->dishes[index - 1].price;
printf("添加成功!\n");
}
int main() {
DishList dishList;
dishList.count = 3;
dishList.dishes[0] = (Dish){"鱼香肉丝", 18.0f};
dishList.dishes[1] = (Dish){"宫保鸡丁", 22.0f};
dishList.dishes[2] = (Dish){"糖醋里脊", 20.0f};
Order order;
initOrder(&order, &dishList);
while (1) {
int choice;
printf("\n请选择操作:\n");
printf("1. 查看菜单\n");
printf("2. 添加菜品到订单\n");
printf("3. 查看订单\n");
printf("4. 退出\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
showDishList(&dishList);
break;
case 2:
addToOrder(&order);
break;
case 3:
showOrder(&order);
break;
case 4:
return 0;
default:
printf("无效的选项!\n");
break;
}
}
return 0;
}
```
这个程序实现了一个简单的订餐管理系统。用户可以查看菜单、添加菜品到订单、查看订单等操作。订单结构体中包含了菜品列表指针、菜品数量数组指针、订单总菜品数量和订单总价格等信息。用户可以通过菜品编号和份数将菜品添加到订单中,程序会自动计算订单总价格和总份数。