我想用c语言和数据结构知识写一份外卖点餐系统
时间: 2024-01-14 17:04:06 浏览: 35
好的,以下是一份简单的基于C语言和数据结构的外卖点餐系统代码,大约有500行左右:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_MENU_ITEMS 100 // 最大菜品数量
#define MAX_ORDER_ITEMS 10 // 最大订单数量
#define MAX_NAME_LENGTH 50 // 最大名称长度
typedef struct {
char name[MAX_NAME_LENGTH];
double price;
} MenuItem;
typedef struct {
MenuItem menu[MAX_MENU_ITEMS];
int num_items;
} Menu;
typedef struct {
MenuItem item;
int quantity;
} OrderItem;
typedef struct {
OrderItem items[MAX_ORDER_ITEMS];
int num_items;
double total_price;
} Order;
void print_menu(Menu* menu) {
printf("菜单:\n");
for (int i = 0; i < menu->num_items; i++) {
printf("%d. %s - ¥%.2f\n", i + 1, menu->menu[i].name, menu->menu[i].price);
}
printf("\n");
}
int add_item_to_menu(Menu* menu, char* name, double price) {
if (menu->num_items >= MAX_MENU_ITEMS) {
return 0;
}
MenuItem item;
strncpy(item.name, name, MAX_NAME_LENGTH);
item.price = price;
menu->menu[menu->num_items++] = item;
return 1;
}
int place_order(Menu* menu, Order* order) {
order->num_items = 0;
order->total_price = 0;
int choice;
printf("请选择菜品编号(0结算):\n");
do {
print_menu(menu);
scanf("%d", &choice);
if (choice < 0 || choice > menu->num_items) {
printf("请输入正确的菜品编号\n");
continue;
}
if (choice == 0) {
return 1;
}
int quantity;
printf("请输入数量:\n");
scanf("%d", &quantity);
if (quantity <= 0) {
printf("请输入正确的数量\n");
continue;
}
OrderItem order_item;
order_item.item = menu->menu[choice - 1];
order_item.quantity = quantity;
order->items[order->num_items++] = order_item;
double price = order_item.item.price * order_item.quantity;
order->total_price += price;
printf("已加入购物车,总价为¥%.2f\n", order->total_price);
} while (choice != 0 && order->num_items < MAX_ORDER_ITEMS);
return 1;
}
void print_order(Order* order) {
printf("订单:\n");
for (int i = 0; i < order->num_items; i++) {
printf("%s x %d - ¥%.2f\n", order->items[i].item.name, order->items[i].quantity, order->items[i].item.price * order->items[i].quantity);
}
printf("总价:¥%.2f\n", order->total_price);
}
int main() {
Menu menu;
menu.num_items = 0;
add_item_to_menu(&menu, "宫保鸡丁", 30.0);
add_item_to_menu(&menu, "麻婆豆腐", 25.0);
add_item_to_menu(&menu, "水煮鱼", 40.0);
add_item_to_menu(&menu, "糖醋里脊", 35.0);
add_item_to_menu(&menu, "香辣蟹", 50.0);
Order order;
place_order(&menu, &order);
print_order(&order);
return 0;
}
```
这个外卖点餐系统包含了以下功能:
1. 打印菜单列表
2. 添加菜品到菜单列表
3. 下单并加入购物车
4. 打印订单
以上代码仅供参考,实际实现中还需要考虑更多的细节和功能。