帮我写一段食堂菜谱管理C语言代码
时间: 2023-08-28 14:31:16 浏览: 225
好的,以下是一个简单的食堂菜谱管理系统的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_MENU_ITEMS 50 // 最多菜品数量
// 菜品结构体
typedef struct {
char name[50]; // 菜名
float price; // 价格
int stock; // 库存
} Menu;
// 菜单结构体
typedef struct {
Menu items[MAX_MENU_ITEMS]; // 菜品列表
int count; // 菜品数量
} MenuList;
// 初始化菜单
void initMenu(MenuList *menuList) {
menuList->count = 0;
}
// 添加菜品
void addMenuItem(MenuList *menuList, char *name, float price, int stock) {
if (menuList->count >= MAX_MENU_ITEMS) {
printf("菜品数量已达到上限,无法添加新菜品。\n");
return;
}
Menu *item = &menuList->items[menuList->count++];
strcpy(item->name, name);
item->price = price;
item->stock = stock;
printf("菜品添加成功:[%s],价格:%.2f,库存:%d。\n", name, price, stock);
}
// 显示菜单
void displayMenu(MenuList *menuList) {
printf("菜单如下:\n");
for (int i = 0; i < menuList->count; i++) {
Menu *item = &menuList->items[i];
printf("%d. [%s],价格:%.2f,库存:%d。\n", i + 1, item->name, item->price, item->stock);
}
}
// 下单
void placeOrder(MenuList *menuList, int itemIndex, int quantity) {
if (itemIndex < 1 || itemIndex > menuList->count) {
printf("无效的菜品编号。\n");
return;
}
Menu *item = &menuList->items[itemIndex - 1];
if (item->stock < quantity) {
printf("库存不足,无法下单。\n");
return;
}
item->stock -= quantity;
float totalPrice = item->price * quantity;
printf("下单成功:[%s] x %d,总价:%.2f。\n", item->name, quantity, totalPrice);
}
int main() {
MenuList menuList;
initMenu(&menuList);
addMenuItem(&menuList, "宫保鸡丁", 18.5, 20);
addMenuItem(&menuList, "鱼香肉丝", 16.8, 15);
addMenuItem(&menuList, "回锅肉", 22.0, 10);
displayMenu(&menuList);
placeOrder(&menuList, 1, 2);
placeOrder(&menuList, 2, 3);
placeOrder(&menuList, 3, 4);
displayMenu(&menuList);
return 0;
}
```
这段代码定义了两个结构体:`Menu` 和 `MenuList`,分别表示单个菜品和整个菜单。`initMenu()` 函数用于初始化菜单,`addMenuItem()` 函数用于添加菜品,`displayMenu()` 函数用于显示菜单,`placeOrder()` 函数用于下单。在 `main()` 函数中,我们先添加了三个菜品,然后显示菜单,接着模拟了三个下单操作,最后再次显示菜单以验证库存是否正确减少。
阅读全文