用C语言设计并实现一个银行窗口排队管理系统,模拟用户排队、办理业务结束后离队等过程
时间: 2024-03-09 13:49:02 浏览: 77
好的,下面是一个简单的C语言代码实现,模拟银行窗口排队管理系统:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_QUEUE_SIZE 10
typedef struct {
char name[256];
int service_time;
} Customer;
typedef struct {
Customer queue[MAX_QUEUE_SIZE];
int front, rear;
Customer current_customer;
} Bank;
void init_bank(Bank* bank) {
bank->front = bank->rear = 0;
memset(&bank->current_customer, 0, sizeof(Customer));
}
int is_empty(Bank* bank) {
return bank->front == bank->rear;
}
int is_full(Bank* bank) {
return (bank->rear + 1) % MAX_QUEUE_SIZE == bank->front;
}
void add_customer(Bank* bank, Customer customer) {
if (is_full(bank)) {
printf("队列已满,无法添加新客户\n");
return;
}
bank->queue[bank->rear] = customer;
bank->rear = (bank->rear + 1) % MAX_QUEUE_SIZE;
}
Customer get_next_customer(Bank* bank) {
if (is_empty(bank)) {
printf("队列为空,无法获取下一个客户\n");
return (Customer){0};
}
bank->current_customer = bank->queue[bank->front];
bank->front = (bank->front + 1) % MAX_QUEUE_SIZE;
return bank->current_customer;
}
void serve_customer(Bank* bank, Customer customer) {
printf("%s 开始办理业务\n", customer.name);
for (int i = 1; i <= customer.service_time; i++) {
printf("%s 还需要 %d 秒\n", customer.name, customer.service_time - i + 1);
}
printf("%s 办理业务结束,离开银行\n", customer.name);
}
void main() {
Bank bank;
init_bank(&bank);
// 添加客户到队列中
add_customer(&bank, (Customer){"张三", 5});
add_customer(&bank, (Customer){"李四", 3});
add_customer(&bank, (Customer){"王五", 2});
// 开始服务
while (!is_empty(&bank)) {
Customer customer = get_next_customer(&bank);
serve_customer(&bank, customer);
}
}
```
运行以上代码,可以看到模拟的银行排队管理系统的结果:
```
张三 开始办理业务
张三 还需要 5 秒
张三 还需要 4 秒
张三 还需要 3 秒
张三 还需要 2 秒
张三 还需要 1 秒
张三 办理业务结束,离开银行
李四 开始办理业务
李四 还需要 3 秒
李四 还需要 2 秒
李四 还需要 1 秒
李四 办理业务结束,离开银行
王五 开始办理业务
王五 还需要 2 秒
王五 还需要 1 秒
王五 办理业务结束,离开银行
```
以上代码实现了一个简单的银行窗口排队管理系统,模拟用户排队、办理业务结束后离队等过程。在代码中,使用了结构体`Customer`来表示用户,包括用户姓名和需要办理业务的时间。使用结构体`Bank`来表示银行窗口,包括客户队列和当前的客户等信息。使用了循环队列来存储客户队列,在添加客户和获取客户时,使用了循环队列的相关操作。在`main`函数中,模拟了开门营业后,每个用户按照自己所需的时间办理业务,并离开银行的过程。
阅读全文