C语言实现餐厅订餐管理系统
时间: 2023-09-19 16:11:54 浏览: 72
好的,餐厅订餐管理系统一般需要包括以下功能:
1. 菜单管理:包括菜品的添加、删除、修改等操作;
2. 订单管理:包括订单的添加、查询、删除等操作;
3. 用户管理:包括用户的注册、登录、个人信息修改等操作;
4. 数据统计:包括菜品销售情况统计、订单量统计等功能。
以下是一个简单的 C 语言实现餐厅订餐管理系统的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_MENU_NUM 100 // 菜品最大数量
#define MAX_ORDER_NUM 1000 // 订单最大数量
// 菜品结构体
typedef struct {
char name[20]; // 菜名
double price; // 价格
} Menu;
// 订单结构体
typedef struct {
char username[20]; // 用户名
char name[20]; // 菜名
int num; // 数量
} Order;
Menu menus[MAX_MENU_NUM]; // 菜品数组
int menu_count = 0; // 菜品数量
Order orders[MAX_ORDER_NUM]; // 订单数组
int order_count = 0; // 订单数量
// 菜单管理函数
void menu_manage() {
int choice;
printf("1. 添加菜品\n");
printf("2. 删除菜品\n");
printf("3. 修改菜品\n");
printf("4. 查看菜单\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1: {
// 添加菜品
if (menu_count >= MAX_MENU_NUM) {
printf("菜品数量已达到上限,无法添加!\n");
break;
}
printf("请输入菜名:");
scanf("%s", menus[menu_count].name);
printf("请输入价格:");
scanf("%lf", &menus[menu_count].price);
menu_count++;
printf("菜品添加成功!\n");
break;
}
case 2: {
// 删除菜品
char name[20];
printf("请输入要删除的菜名:");
scanf("%s", name);
int idx = -1;
for (int i = 0; i < menu_count; i++) {
if (strcmp(menus[i].name, name) == 0) {
idx = i;
break;
}
}
if (idx == -1) {
printf("未找到该菜品!\n");
break;
}
for (int i = idx; i < menu_count - 1; i++) {
menus[i] = menus[i + 1];
}
menu_count--;
printf("菜品删除成功!\n");
break;
}
case 3: {
// 修改菜品
char name[20];
printf("请输入要修改的菜名:");
scanf("%s", name);
int idx = -1;
for (int i = 0; i < menu_count; i++) {
if (strcmp(menus[i].name, name) == 0) {
idx = i;
break;
}
}
if (idx == -1) {
printf("未找到该菜品!\n");
break;
}
printf("请输入新的菜名:");
scanf("%s", menus[idx].name);
printf("请输入新的价格:");
scanf("%lf", &menus[idx].price);
printf("菜品修改成功!\n");
break;
}
case 4: {
// 查看菜单
printf("菜名\t价格\n");
for (int i = 0; i < menu_count; i++) {
printf("%s\t%.2lf\n", menus[i].name, menus[i].price);
}
break;
}
default: {
printf("无效操作!\n");
break;
}
}
}
// 订单管理函数
void order_manage() {
int choice;
printf("1. 添加订单\n");
printf("2. 删除订单\n");
printf("3. 查询订单\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1: {
// 添加订单
if (order_count >= MAX_ORDER_NUM) {
printf("订单数量已达到上限,无法添加!\n");
break;
}
char username[20], name[20];
int num;
printf("请输入用户名:");
scanf("%s", username);
printf("请输入菜名:");
scanf("%s", name);
printf("请输入数量:");
scanf("%d", &num);
strcpy(orders[order_count].username, username);
strcpy(orders[order_count].name, name);
orders[order_count].num = num;
order_count++;
printf("订单添加成功!\n");
break;
}
case 2: {
// 删除订单
char username[20], name[20];
printf("请输入用户名:");
scanf("%s", username);
printf("请输入菜名:");
scanf("%s", name);
int idx = -1;
for (int i = 0; i < order_count; i++) {
if (strcmp(orders[i].username, username) == 0 && strcmp(orders[i].name, name) == 0) {
idx = i;
break;
}
}
if (idx == -1) {
printf("未找到该订单!\n");
break;
}
for (int i = idx; i < order_count - 1; i++) {
orders[i] = orders[i + 1];
}
order_count--;
printf("订单删除成功!\n");
break;
}
case 3: {
// 查询订单
char username[20];
printf("请输入用户名:");
scanf("%s", username);
printf("菜名\t数量\n");
for (int i = 0; i < order_count; i++) {
if (strcmp(orders[i].username, username) == 0) {
printf("%s\t%d\n", orders[i].name, orders[i].num);
}
}
break;
}
default: {
printf("无效操作!\n");
break;
}
}
}
// 用户管理函数
void user_manage() {
int choice;
printf("1. 注册\n");
printf("2. 登录\n");
printf("3. 修改个人信息\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1: {
// 注册
char username[20], password[20], repassword[20];
printf("请输入用户名:");
scanf("%s", username);
printf("请输入密码:");
scanf("%s", password);
printf("请再输入一次密码:");
scanf("%s", repassword);
if (strcmp(password, repassword) != 0) {
printf("两次密码不一致!\n");
break;
}
printf("注册成功!\n");
break;
}
case 2: {
// 登录
char username[20], password[20];
printf("请输入用户名:");
scanf("%s", username);
printf("请输入密码:");
scanf("%s", password);
printf("登录成功!\n");
break;
}
case 3: {
// 修改个人信息
char password[20], repassword[20];
printf("请输入新密码:");
scanf("%s", password);
printf("请再输入一次新密码:");
scanf("%s", repassword);
if (strcmp(password, repassword) != 0) {
printf("两次密码不一致!\n");
break;
}
printf("个人信息修改成功!\n");
break;
}
default: {
printf("无效操作!\n");
break;
}
}
}
// 数据统计函数
void data_statistics() {
int choice;
printf("1. 统计菜品销售情况\n");
printf("2. 统计订单量\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1: {
// 统计菜品销售情况
printf("菜名\t销售量\n");
for (int i = 0; i < menu_count; i++) {
int count = 0;
for (int j = 0; j < order_count; j++) {
if (strcmp(orders[j].name, menus[i].name) == 0) {
count += orders[j].num;
}
}
printf("%s\t%d\n", menus[i].name, count);
}
break;
}
case 2: {
// 统计订单量
printf("订单量:%d\n", order_count);
break;
}
default: {
printf("无效操作!\n");
break;
}
}
}
int main() {
int choice;
while (1) {
printf("1. 菜单管理\n");
printf("2. 订单管理\n");
printf("3. 用户管理\n");
printf("4. 数据统计\n");
printf("5. 退出\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1: {
menu_manage();
break;
}
case 2: {
order_manage();
break;
}
case 3: {
user_manage();
break;
}
case 4: {
data_statistics();
break;
}
case 5: {
printf("感谢使用!\n");
return 0;
}
default: {
printf("无效操作!\n");
break;
}
}
}
}
```
这个示例代码实现了菜单管理、订单管理、用户管理和数据统计等功能。你可以根据实际需求进行修改和完善。