外卖点餐管理程序
设计一个外卖点餐系统,要求餐厅管理员可以输入菜品信息(编号,菜名,价格,数量…),顾客可以根据菜品信息下单(订餐人,电话,菜品列表,合计价格,点餐时间,确认收货时间…)或取消订单,或确认收货,还可以对订单中的菜品信息进行评价。餐厅管理员可以查看订单,出单,查看订单中的菜品评价等。
程序中的菜品列表、订单列表、顾客列表等都必须采用所学过的一种数据结构(链表栈、队列、树等)存储,不能全部只使用数组。所有功能的操作是对数据结构(数组或链表等)中的数据进行操作。
每一个功能模块需要划分多个子模块,使用各自不同的结构体来储存不同的信息,实现信息的添加、删除、查询、修改、排序等操作。其他信息根据功能需求可以自行设计。
(1) 餐厅管理员的登录功能,顾客的注册登录功能。
(2) 餐厅管理员对菜品信息的添加、修改、删除、按菜品名称模糊查询、按价格范围查询、按价格的升序或降序排列显示。
(3) 顾客查看菜品信息,按菜品名称模糊查询、接价格范围查询、按价格的升序或降序排列显示。
(4) 顾客下单,一个订单中可以包含多个剩余数量不为 0 的菜品,在餐厅管理员还没有出单之前,顾客可以修改自己的订单、取消(删除) 自己的订单。
(5) 餐厅管理员可以查看所有订单,按下单的时间顺序查看没有出单的订单,对订单进行出单操作。查看已经出单,但没有确认收货的订单。查看已经确认收货的订单。
(6) 顾客查看自己已经出单的订单,对订单确认收货。
// 菜单项结构体
typedef struct MenuItem
{
int id;
char name[50];
double price;
} MenuItem;
// 订单项结构体
typedef struct OrderItem
{
int id;
int quantity;
} OrderItem;
// 订单结构体
typedef struct Order
{
int id;
int userId;
int status; // 0-待处理,1-已处理
OrderItem items[MAX_ORDER_ITEMS];
int numItems;
double totalPrice;
} Order;
// 用户结构体
typedef struct User
{
int id;
char name[50];
double balance;
} User;
// 显示菜单
void displayMenu()
{
...
}
// 添加菜单项
void addMenuItem()
{
...
}
// 删除菜单项
void deleteMenuItem()
{
....
}
// 显示订单列表
void displayOrders()
{
...
}
// 处理订单
void processOrder()
{
...
}
// 显示用户列表
void displayUsers()
{
...
}
// 添加用户
void addUser()
{
...
}
// 删除用户
void deleteUser()
{
...
}
// 用户下单
void placeOrder()
{
...
}
int main()
{
while (1)
{
printf("*********欢迎使用外卖点餐管理系统********\n");
printf("* *\n");
printf("*\t\t1. 添加菜单项\t\t*\n");
printf("*\t\t2. 删除菜单项\t\t*\n");
printf("*\t\t3. 显示菜单\t\t*\n");
printf("*\t\t4. 用户下单\t\t*\n");
printf("*\t\t5. 处理订单\t\t*\n");
printf("*\t\t6. 显示订单列表\t\t*\n");
printf("*\t\t7. 添加用户\t\t*\n");
printf("*\t\t8. 删除用户\t\t*\n");
printf("*\t\t9. 显示用户列表\t\t*\n");
printf("*\t\t0. 退出\t\t\t*\n");
printf("********************************************\n");
printf("请选择要进行的操作(输入对应数字):\n");
int choice;
scanf("%d", &choice);
switch (choice)
{
case 1:
addMenuItem();
break;
case 2:
deleteMenuItem();
break;
case 3:
displayMenu();
break;
case 4:
placeOrder();
break;
case 5:
processOrder();
break;
case 6:
displayOrders();
break;
case 7:
addUser();
break;
case 8:
deleteUser();
break;
case 9:
displayUsers();
break;
case 0:
return 0;
default:
printf("无效的选择!\n");
break;
}
}
}