银行排队管理系统C语言
时间: 2023-07-09 17:12:07 浏览: 95
银行排队管理系统是一个非常实用的系统,可以有效地管理银行的排队业务,提高银行服务的效率和质量。以下是一个简单的银行排队管理系统的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 50
typedef struct {
int id;
int arrival_time;
int service_time;
} Customer;
typedef struct {
Customer queue[MAX_QUEUE_SIZE];
int front;
int rear;
} Queue;
void init_queue(Queue *q) {
q->front = q->rear = 0;
}
int is_queue_empty(Queue *q) {
return q->front == q->rear;
}
int is_queue_full(Queue *q) {
return (q->rear + 1) % MAX_QUEUE_SIZE == q->front;
}
void enqueue(Queue *q, Customer c) {
if (is_queue_full(q)) {
printf("Error: queue is full!\n");
exit(1);
}
q->queue[q->rear] = c;
q->rear = (q->rear + 1) % MAX_QUEUE_SIZE;
}
Customer dequeue(Queue *q) {
if (is_queue_empty(q)) {
printf("Error: queue is empty!\n");
exit(1);
}
Customer c = q->queue[q->front];
q->front = (q->front + 1) % MAX_QUEUE_SIZE;
return c;
}
void print_customer(Customer c) {
printf("Customer %d: arrival time = %d, service time = %d\n", c.id, c.arrival_time, c.service_time);
}
int main() {
Queue q;
init_queue(&q);
int n;
printf("Enter the number of customers: ");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
Customer c;
c.id = i;
printf("Enter the arrival time and service time of customer %d: ", i);
scanf("%d %d", &c.arrival_time, &c.service_time);
enqueue(&q, c);
}
int current_time = 0;
int total_waiting_time = 0;
while (!is_queue_empty(&q)) {
Customer c = dequeue(&q);
if (c.arrival_time > current_time) {
current_time = c.arrival_time;
}
int waiting_time = current_time - c.arrival_time;
total_waiting_time += waiting_time;
current_time += c.service_time;
print_customer(c);
}
printf("Average waiting time: %.2f\n", (double)total_waiting_time / n);
return 0;
}
```
在上面的代码中,我们定义了一个 `Customer` 结构体来表示一个顾客,包含顾客的编号、到达时间和服务时间。我们还定义了一个 `Queue` 结构体来表示排队队列,包含一个固定大小的数组和队头、队尾指针。我们使用循环队列来实现队列的功能,可以避免队列溢出的问题。
在 `main` 函数中,我们首先输入顾客的数量和每个顾客的到达时间和服务时间,然后将顾客依次加入队列中。接下来,我们模拟银行的服务过程,依次取出队列中的顾客,计算等待时间和服务时间,并输出顾客的信息。最后,我们计算平均等待时间并输出。
这只是一个简单的示例,实际的银行排队管理系统可能需要更复杂的算法和数据结构来实现。
阅读全文