C语言-实现一个简易的银行排号叫号系统
时间: 2024-11-03 18:20:37 浏览: 47
在C语言中,我们可以设计一个简单的银行排号叫号系统的模拟程序,它通常会包含几个关键部分:客户、柜台、队列以及一个主循环来管理流程。这里是一个基本的伪代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_CUSTOMERS 50
typedef struct {
int customer_id;
int service_time; // 预计服务时间
} Customer;
typedef struct {
Customer* queue[MAX_CUSTOMERS];
int front, rear; // 队列头和尾指针
} Queue;
void enqueue(Queue* q, Customer customer) {
if (q->rear == MAX_CUSTOMERS - 1) {
printf("Queue is full, cannot enqueue.\n");
} else {
q->queue[q->rear++] = &customer;
printf("Customer %d enqueued with ID %d.\n", ++q->front, customer.customer_id);
}
}
void dequeue(Queue* q) {
if (q->front == q->rear) {
printf("No customers in the queue.\n");
} else {
Customer* temp = q->queue[q->front];
q->queue[q->front] = NULL;
q->front++;
printf("Customer %d dequeued with ID %d.\n", temp->customer_id, temp->customer_id);
}
}
int main() {
Queue bank_queue;
bank_queue.front = bank_queue.rear = 0;
while (true) { // 模拟无限运行
// 用户输入操作选择
char operation[10];
printf("Enter your choice (1-Enqueue, 2-Dequeue, 3-Exit): ");
scanf("%s", operation);
if (operation[0] == '1') {
int id;
printf("Enter customer ID: ");
scanf("%d", &id);
Customer customer = {id, /*随机生成服务时间*/};
enqueue(&bank_queue, customer);
} else if (operation[0] == '2') {
dequeue(&bank_queue);
} else if (operation[0] == '3') {
break;
} else {
printf("Invalid input, try again.\n");
}
}
return 0;
}
```
这个程序创建了一个简单的排队系统,用户可以进行"入队"(Enqueue)和"出队"(Dequeue)操作。实际应用中,服务时间和客户信息可能需要从数据库或其他数据源获取,并且需要更复杂的错误处理机制。
阅读全文