用c语言实现排号就餐系统
时间: 2024-02-18 12:03:25 浏览: 17
好的,排号就餐系统可以考虑以下实现:
1. 定义一个结构体,用来存储就餐者的信息,包括姓名、电话、人数、排队号码等。
```c
struct diner {
char name[50];
char phone[20];
int num_people;
int queue_num;
};
```
2. 定义一个数组,用来存储当前排队的就餐者信息。可以根据需要设置数组大小,这里假设最多排队20人。
```c
struct diner queue[20];
```
3. 实现添加就餐者信息的函数,可以让用户输入姓名、电话和人数等信息,并为其分配一个排队号码。
```c
int add_diner() {
char name[50];
char phone[20];
int num_people;
int queue_num;
// 获取用户输入信息
printf("请输入您的姓名:");
scanf("%s", name);
printf("请输入您的电话:");
scanf("%s", phone);
printf("请输入就餐人数:");
scanf("%d", &num_people);
// 分配排队号码
queue_num = get_queue_num();
// 将就餐者信息存入数组
queue[queue_num - 1].num_people = num_people;
queue[queue_num - 1].queue_num = queue_num;
strcpy(queue[queue_num - 1].name, name);
strcpy(queue[queue_num - 1].phone, phone);
printf("添加成功,您的排队号码为 %d\n", queue_num);
return 0;
}
```
4. 实现获取下一个排队就餐者信息的函数,可以从数组中获取排队号最小的就餐者信息,并将其从数组中删除。
```c
int get_next_diner() {
int min_queue_num = queue[0].queue_num;
int min_index = 0;
// 找到排队号最小的就餐者
for (int i = 1; i < 20; i++) {
if (queue[i].queue_num > 0 && queue[i].queue_num < min_queue_num) {
min_queue_num = queue[i].queue_num;
min_index = i;
}
}
// 输出就餐者信息
printf("请 %s 先生/女士带领 %d 位客人就餐\n", queue[min_index].name, queue[min_index].num_people);
// 将就餐者信息从数组中删除
queue[min_index].queue_num = 0;
queue[min_index].num_people = 0;
strcpy(queue[min_index].name, "");
strcpy(queue[min_index].phone, "");
return 0;
}
```
5. 实现获取当前排队人数的函数,可以遍历数组获取当前排队人数。
```c
int get_queue_size() {
int count = 0;
for (int i = 0; i < 20; i++) {
if (queue[i].queue_num > 0) {
count++;
}
}
return count;
}
```
6. 实现主函数,用来接收用户输入的命令,并调用相应的函数。
```c
int main() {
int cmd;
while (1) {
printf("当前排队人数:%d\n", get_queue_size());
printf("请输入命令:\n");
printf("1. 添加就餐者信息\n");
printf("2. 获取下一个就餐者信息\n");
printf("3. 退出程序\n");
scanf("%d", &cmd);
switch (cmd) {
case 1:
add_diner();
break;
case 2:
get_next_diner();
break;
case 3:
return 0;
default:
printf("无效命令,请重新输入\n");
break;
}
}
return 0;
}
```
以上就是一个简单的排号就餐系统的实现,可以根据需要进行扩展和改进。