c语言大作业银行排队叫号系统,C语言银行叫号系统课程设计.doc

课程设计任务书

一、设计内容与要求

1、设计内容

1)、设计窗口,服务窗口;

2)、编写代码,实现各种算法,完成排队叫号问题;

2、设计要求

1.2.3.4.

2、功能设计

1)使用数组以及C#接口和范型技术实现通用的队列功能;

2)编写算法,利用队列模拟银行排队系统;

3)利用多窗口分别模拟顾客取服务号、银行窗口服务顾客。

2.2算法与数据结构

在银行排队叫号软件中,首先要找到一种数据结构来存放顾客所得到的服务号,这些服务号表示客户的请求服务的先后顺序,也表示客户被服务的先后顺序。先来的客户被服务:

在这个程序中,主要运用了队列这种结构:

队列是一种特殊的线性表,是一种只允许在表的一端插入操作而在另一端进行删除操作的线性表。进行插入操作的表尾称为队尾(Rear),进行删除操作的头部称为对头(Front)。当队列中没有数据元素时称为空队列(Empty Queue)。队列通常记为Q=(a1,a2,…,an),a1为对头元素,an为队尾元素。这n个元素是按照a1,a2,…an的次序依次入队的,出队的顺序与入队顺序相同,a1第一个出队,an最后一个出队。队列的结构示意图如下:

出队 a1 a2 … an 入队

2、队列的特征:

队列的操作是按照“先进先出”或“后进后出” 的原则进行的。

队列的基本操作:

入队列操作:EnQueue(T elem);

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的模拟银行大厅叫的实现思路,具体代码实现可以根据您的需求进行修改和完善。 1. 定义一个结构体作为队列元素,包含如下信息: ```c struct queue_element { int number; // 排队码 char name[20]; // 客户姓名 }; ``` 2. 定义一个队列,并实现基本的队列操作(如队列初始化、入队、出队等),示例代码如下: ```c #define MAX_QUEUE_SIZE 100 struct queue { struct queue_element data[MAX_QUEUE_SIZE]; int front, rear; }; void queue_init(struct queue *q) { q->front = q->rear = 0; } int is_queue_empty(struct queue *q) { return q->front == q->rear; } int is_queue_full(struct queue *q) { return (q->rear + 1) % MAX_QUEUE_SIZE == q->front; } void enqueue(struct queue *q, struct queue_element e) { if (is_queue_full(q)) { fprintf(stderr, "queue is full\n"); exit(1); } q->data[q->rear] = e; q->rear = (q->rear + 1) % MAX_QUEUE_SIZE; } struct queue_element dequeue(struct queue *q) { if (is_queue_empty(q)) { fprintf(stderr, "queue is empty\n"); exit(1); } struct queue_element e = q->data[q->front]; q->front = (q->front + 1) % MAX_QUEUE_SIZE; return e; } ``` 3. 定义一个全局变量 `int current_number = 0` 表示当前的排队码,每次有客户到来时,将其排队码设为 `++current_number`,并加入队列。示例代码如下: ```c struct queue queue; void new_customer(char *name) { struct queue_element e; e.number = ++current_number; strcpy(e.name, name); enqueue(&queue, e); printf("%s 您好,您的排队码是 %d,请耐心等待\n", e.name, e.number); } ``` 4. 定义一个函数 `call_next`,每次调用该函数时,从队列中取出下一个客户并输出其信息。示例代码如下: ```c void call_next() { if (is_queue_empty(&queue)) { printf("当前无人排队\n"); return; } struct queue_element e = dequeue(&queue); printf("请 %s 前往 %d 窗口办理业务\n", e.name, e.number); } ``` 5. 在主函数中循环读入用户命令(如 `new_customer`、`call_next` 等),并调用相应的函数执行操作。示例代码如下: ```c int main() { queue_init(&queue); while (1) { char cmd[20], name[20]; printf("> "); scanf("%s", cmd); if (strcmp(cmd, "new_customer") == 0) { scanf("%s", name); new_customer(name); } else if (strcmp(cmd, "call_next") == 0) { call_next(); } else if (strcmp(cmd, "exit") == 0) { break; } else { printf("无效命令,请重新输入\n"); } } return 0; } ``` 以上就是一个简单的模拟银行大厅叫的实现思路,希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值