一.需求分析
设计一个程序模拟银行业务。银行有 3 个窗口对外接待客户,如果某个窗
口空闲,则可办理业务,反之,若均有客户,就排在最少队伍后面,程序要求
随机输入,实时的输出银行各个窗口的排队情况及用户办理业务的情况(到来
时间,办理业务时间,离开时间)。最后输出平均办理业务时间和平均逗留时
间。
二.概要设计
1.数据结构设计:
银行业务窗口的排队用队列实现;
用户的到达程序和离开程序用链表实现:
void InsertEvent()一个客户的到达事件加入事件链表
void DeleteEvent() t;stdio.h> #inclu 删除事件链表中的第一个节点并返回该事件对应的数
据
程序流程设计:
typedef struct QueueNode() 队列节点
typedef struct QueueHeader()窗口客户队列
typedef struct EventNode()事件链表节点
int occurTime,eventType()事件发生时间 occurTime,事件类型 eventType,后面
的程序中 eventType=0 时表示到达事件
struct EventNode *next eventType=i 表示第 i 号窗口的离开事件
typedef struct EventList() 事件链表
void random()产生两个随机数
int rand()随机数发生函数
int Minlength() 取当前人数最少的窗口号码
a.引用四个头文件。
其中:#de&ne CLOSETIME 1000 用于银行终止营业时间
#de&ne M 3 用于定义服务窗口数
b.初始化操作,初始化时间、客户数及时间链表等。
c.处理客户到达事件、客户离开事件及排队队列。
d.定义主函数,输出客户银行业务办理情况。
三.详细设计
1.队列设置
typedef struct QueueNode
{ //队列节点
int arrivetime; //客户到达时间
int duration; //客户办理业务所需时间
struct QueueNode *next;
}QueueNode;