Compare commits

...

12 Commits

@ -9,10 +9,10 @@
|任务|设计|开发|测试|文档|
|-----|----|----|----|----|
| 1和4| 刘彩月 | 刘彩月 | 赵亚璇 | 刘彩月 |
| 2.1 | 赵亚璇 | 赵亚璇 | 金雨佳 | 赵亚璇 |
| 2.2和2.3 | 金雨佳 | 金雨佳 | 刘梦琦 | 金雨佳 |
| 3 | 刘梦琦 | 刘梦琦 | 刘彩月| 刘梦琦 |
| 1.系统分析和4.系统测试| 刘彩月 | 刘彩月 | 赵亚璇 | 刘彩月 |
| 2.1概要设计 | 赵亚璇 | 赵亚璇 | 金雨佳 | 赵亚璇 |
| 2.2数据结构设计和2.3 算法设计| 金雨佳 | 金雨佳 | 刘梦琦 | 金雨佳 |
| 3.系统实现 | 刘梦琦 | 刘梦琦 | 刘彩月| 刘梦琦 |
|代码|金雨佳|刘梦琦|赵亚璇|刘彩月|
@ -85,49 +85,120 @@ durtime客户办理业务的时间
## 2.1 概要设计
主程序的流程\n主程序先是让外部进行测试数据输入待测试数据输入完后执行银行业务模拟系统产生需要取款的客户人数成功办理存款的客户人数成功办理取款的客户人数存款成功办理率取款成功办理率客户逗留平均时间银行当前余额等信息。
本设计中用到的数据结构ADT定义如下
```
ADT Queue{
数据对象D{ ai | ai∈ElemSet, i=1,2,...,n, n≥0 }
数据关系R1{ <ai-1, ai>|ai-1, ai∈D, i=2,...,n }
基本操作:
void InitQueue(Queue &Q);
操作结果构造空队列Q
CustNode *Queuefront(Queue &Q);
初始条件队列Q存在
操作结果:返回队首元素
CustNode *Queuerear(Queue &Q);
初始条件队列Q存在
操作结果:返回队尾元素
void EnQueue(Queue &Q,int e);
初始条件队列Q存在
操作结果插入元素e为Q的新的队尾元素。
void DeQueue(Queue &Q);
初始条件队列Q存在
操作结果删除Q的队头元素。
}ADT Queue
#### 主程序的流程
主程序先是让外部进行测试数据输入,待测试数据输入完后,执行银行业务模拟系统,产生客户逗留平均时间。
###### 其具体操作如下:
1.以单链表表示模拟客户排队,窗口,管理客户,队列的功能。
2.以有序表的插入和删除操作来存储和处理客户到达和客户离开两种情况(客户)。
3.用队列来有效存储和处理客户到达时间和离开时间(窗口)。
4.以队列的排序和插入算法解决客户找到最短等待队列。
5.使用了删除算法来解决客户的离开事件删除和插入的算法效率为On
6.采用人机交互来针对银行开门,关门,营业窗口数目,客户到达时间等问题。
7.保存银行营业的工作记录,储存客户的到达时间和离开时间。
8.显示出在某一天整个银行系统中客户在银行逗留的平均时间。
###### 以上项目步骤可用代码大体分为以下三个模块:
```
(1)客户
void Bank_Simulation(int CloseTime);//银行业务模拟,统计一天内客户在银行逗留的平均时间
int cmp(Event a, Event b);//比较事件发生先后
void OpenForDay();//银行开门
void OrderInsert(EventList L, Event en, int(*cmp)(Event a, Event b));//插入事件
void CustomerArrived();//客户进门
void CustomerDepature();//客户离开
int Minimum(LinkQueue Q[5]);//求长度最短队列
````
## 2.2 数据结构设计
首先,分析对比几种可选的数据结构设计方案。如图可以采用邻接矩阵,也可以采用邻接表,表示集合可以用普通的查找表,还可以用不相交集。给出每一种设计方案的特点(优势、不足等)。然后,综合考虑各种因素(空间、时间、乃至团队成员的水平等),给出你的选择。
### 1xxx结构
给出核心数据结构的设计,包括文字描述和示意图。讲清楚数据是如何组织的。多个数据结构,逐一列出。
```
(2)链表
Status InitList(LinkList& L);//链表初始化
Status ListInsert_L(LinkList& L, int i, ElemType e);//在第i个位置之前插入元素e
Status ListEmpty(LinkList L);//判断链表是否为空
Status DelFirst(LinkList L, LNode*& q);//删除链表中第一个结点并以q返回
LNode* GetHead(LinkList L);//返回链表头结点
ElemType GetCurElem(LNode* p);//已知p指向线性链表中的一个结点返回p所指结点中元素的值
void PrintEventList();//打印事件链表
Status ListTraverse(LinkList& L);//遍历链表
`````
### 2xxx结构
给出核心数据结构的设计,包括文字描述和示意图。讲清楚数据是如何组织的。
```
(3)链队列
Status InitQueue(LinkQueue& Q);//链队列的初始化
Status EnQueue(LinkQueue& Q, QElemType e);//入队
Status DeQueue(LinkQueue& Q, QElemType& e);//出队
int QueueLength(LinkQueue Q);//返回队列的长度
Status GetHead(LinkQueue Q, QElemType& e);//获取队头元素 注:由于参数个数不同,发生函数重载
Status QueueEmpty(LinkQueue Q);//判断队列是否为空
void PrintQueue();//打印队列
Status QueueTraverse(LinkQueue Q);//遍历队列Q
````
## 2.2 数据结构设计
运用链队列、链表的数据结构,使银行业务的模拟更加高效的完成。链表和链队列的结构,更加形象的体现了客户的在银行的排队、业务办理、离开的流程。
### 1链表结构
Status InitList(LinkList& L);//链表初始化
Status ListInsert(LinkList& L,int i,ElemType e);//在第i个位置前即i-1的位置上插入元素e
Status ListEmpty(LinkList L);//判断链表是否为空
Status DelFirst(LinkList L,LNode*& q);//删除链表中第一个结点并以q返回
LNode* GetHead(LinkList L);//返回链表头结点
ElemType GetCurElem(LNode* p);//返回p所指结点元素的值
void PrintEventList();//打印事件链表
Status ListTraverse(LinkList& L);//遍历链表
### 2链队列结构
Status InitQueue(LinkQueue& Q);//链队列的初始化
Status EnQueue(LinkQueue& Q,QElemType e);//入队列
Status DeQueue(LinkQueue& Q,QElemType& e);//出队列
int QueueLength(LinkQueue Q);//返回队列长度
Status GetHead(LinkQueue Q,QElemType& e)//返回队头元素
注:由于参数个数会发生变化,函数会发生重载
Status QueueEmpty(LinkQueue Q);//判断队列是否为空
void PrintQueue();//打印队列
Status QueueTraverse(LinkQueue Q);//遍历队列
## 2.3 算法设计
首先,分析对比几种可选的算法设计方案。如是否排序,广度优先或深度优先搜索等。给出每一种设计方案的特点(优势、不足)。然后,综合考虑各种因素(空间、时间、乃至团队成员的水平等),给出你的选择。
主要运用排序、链表、队列、判断最短队列、比较事件先后等算法完成银行业务的模拟,体现了整个业务的可行性、完整性、简洁性、高效性。
### 1链表判空算法
````
判断链表是否为空
If链表为空
返回FALSE
ELSE
返回TRUE
````
### 2银行业务模拟算法
````
引入OpenForDay函数
WHILE链表非空
引入DelFrist函数、GetCurElem函数、GetHead函数、CustomerArrived函数、CustomerDepature函数等计算客户平均逗留时间
````
### 3比较事件先后算法
````
IF a事件时间>b事件时间
返回 1
IF a事件时间=b事件时间
返回 0
IF a事件时间< b
返回-1
````
### 4求最短队列算法
````
初始化最短队列为Q[1]
FOR 从Q[2]开始循环
IF 最短长度>Q[j]
最短长度=Q[j]
返回队列j
````
### 1XXX算法
给出核心算法的设计,包括伪代码或流程图。多个核心算法,逐一列出。只列举解决问题的核心算法,重点讲清楚是如何解决问题的。
### 2XXX算法
给出核心算法的设计,包括伪代码或流程图。
@ -364,6 +435,7 @@ return OK;
# 4.系统测试
测试1
```
请输入银行的营业时间(min)30
@ -503,6 +575,815 @@ List is empty.
The Average Time is 15.285714
```
测试2
```
请输入银行的营业时间(min)100
********action********
一个新客户在银行营业 0min后进来办理业务花费了29min下一个客户过了 0min后进来
窗口 1 有 1 个客户:(到达时刻 0 min 办理业务需要花费 29 min)
窗口 2 有 0 个客户:--Is empty.
窗口 3 有 0 个客户:--Is empty.
窗口 4 有 0 个客户:--Is empty.
Current Eventlist is:
OccurTime:0,Event Type:0
OccurTime:29,Event Type:1
********action********
一个新客户在银行营业 0min后进来办理业务花费了30min下一个客户过了 7min后进来
窗口 1 有 1 个客户:(到达时刻 0 min 办理业务需要花费 29 min)
窗口 2 有 1 个客户:(到达时刻 0 min 办理业务需要花费 30 min)
窗口 3 有 0 个客户:--Is empty.
窗口 4 有 0 个客户:--Is empty.
Current Eventlist is:
OccurTime:7,Event Type:0
OccurTime:29,Event Type:1
OccurTime:30,Event Type:2
********action********
一个新客户在银行营业 7min后进来办理业务花费了11min下一个客户过了 3min后进来
窗口 1 有 1 个客户:(到达时刻 0 min 办理业务需要花费 29 min)
窗口 2 有 1 个客户:(到达时刻 0 min 办理业务需要花费 30 min)
窗口 3 有 1 个客户:(到达时刻 7 min 办理业务需要花费 11 min)
窗口 4 有 0 个客户:--Is empty.
Current Eventlist is:
OccurTime:10,Event Type:0
OccurTime:18,Event Type:3
OccurTime:29,Event Type:1
OccurTime:30,Event Type:2
********action********
一个新客户在银行营业10min后进来办理业务花费了13min下一个客户过了 4min后进来
窗口 1 有 1 个客户:(到达时刻 0 min 办理业务需要花费 29 min)
窗口 2 有 1 个客户:(到达时刻 0 min 办理业务需要花费 30 min)
窗口 3 有 1 个客户:(到达时刻 7 min 办理业务需要花费 11 min)
窗口 4 有 1 个客户:(到达时刻 10 min 办理业务需要花费 13 min)
Current Eventlist is:
OccurTime:14,Event Type:0
OccurTime:18,Event Type:3
OccurTime:23,Event Type:4
OccurTime:29,Event Type:1
OccurTime:30,Event Type:2
********action********
一个新客户在银行营业14min后进来办理业务花费了 2min下一个客户过了 5min后进来
窗口 1 有 2 个客户:(到达时刻 0 min 办理业务需要花费 29 min) (到达时刻 14 min 办理业务需要花费 2 min)
窗口 2 有 1 个客户:(到达时刻 0 min 办理业务需要花费 30 min)
窗口 3 有 1 个客户:(到达时刻 7 min 办理业务需要花费 11 min)
窗口 4 有 1 个客户:(到达时刻 10 min 办理业务需要花费 13 min)
Current Eventlist is:
OccurTime:18,Event Type:3
OccurTime:19,Event Type:0
OccurTime:23,Event Type:4
OccurTime:29,Event Type:1
OccurTime:30,Event Type:2
********action********
窗口 1 有 2 个客户:(到达时刻 0 min 办理业务需要花费 29 min) (到达时刻 14 min 办理业务需要花费 2 min)
窗口 2 有 1 个客户:(到达时刻 0 min 办理业务需要花费 30 min)
窗口 3 有 0 个客户:--Is empty.
窗口 4 有 1 个客户:(到达时刻 10 min 办理业务需要花费 13 min)
Current Eventlist is:
OccurTime:19,Event Type:0
OccurTime:23,Event Type:4
OccurTime:29,Event Type:1
OccurTime:30,Event Type:2
********action********
一个新客户在银行营业19min后进来办理业务花费了27min下一个客户过了 0min后进来
窗口 1 有 2 个客户:(到达时刻 0 min 办理业务需要花费 29 min) (到达时刻 14 min 办理业务需要花费 2 min)
窗口 2 有 1 个客户:(到达时刻 0 min 办理业务需要花费 30 min)
窗口 3 有 1 个客户:(到达时刻 19 min 办理业务需要花费 27 min)
窗口 4 有 1 个客户:(到达时刻 10 min 办理业务需要花费 13 min)
Current Eventlist is:
OccurTime:19,Event Type:0
OccurTime:23,Event Type:4
OccurTime:29,Event Type:1
OccurTime:30,Event Type:2
OccurTime:46,Event Type:3
********action********
一个新客户在银行营业19min后进来办理业务花费了16min下一个客户过了 1min后进来
窗口 1 有 2 个客户:(到达时刻 0 min 办理业务需要花费 29 min) (到达时刻 14 min 办理业务需要花费 2 min)
窗口 2 有 2 个客户:(到达时刻 0 min 办理业务需要花费 30 min) (到达时刻 19 min 办理业务需要花费 16 min)
窗口 3 有 1 个客户:(到达时刻 19 min 办理业务需要花费 27 min)
窗口 4 有 1 个客户:(到达时刻 10 min 办理业务需要花费 13 min)
Current Eventlist is:
OccurTime:20,Event Type:0
OccurTime:23,Event Type:4
OccurTime:29,Event Type:1
OccurTime:30,Event Type:2
OccurTime:46,Event Type:3
********action********
一个新客户在银行营业20min后进来办理业务花费了15min下一个客户过了 2min后进来
窗口 1 有 2 个客户:(到达时刻 0 min 办理业务需要花费 29 min) (到达时刻 14 min 办理业务需要花费 2 min)
窗口 2 有 2 个客户:(到达时刻 0 min 办理业务需要花费 30 min) (到达时刻 19 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 19 min 办理业务需要花费 27 min) (到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 1 个客户:(到达时刻 10 min 办理业务需要花费 13 min)
Current Eventlist is:
OccurTime:22,Event Type:0
OccurTime:23,Event Type:4
OccurTime:29,Event Type:1
OccurTime:30,Event Type:2
OccurTime:46,Event Type:3
********action********
一个新客户在银行营业22min后进来办理业务花费了28min下一个客户过了 6min后进来
窗口 1 有 2 个客户:(到达时刻 0 min 办理业务需要花费 29 min) (到达时刻 14 min 办理业务需要花费 2 min)
窗口 2 有 2 个客户:(到达时刻 0 min 办理业务需要花费 30 min) (到达时刻 19 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 19 min 办理业务需要花费 27 min) (到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 10 min 办理业务需要花费 13 min) (到达时刻 22 min 办理业务需要花费 28 min)
Current Eventlist is:
OccurTime:23,Event Type:4
OccurTime:28,Event Type:0
OccurTime:29,Event Type:1
OccurTime:30,Event Type:2
OccurTime:46,Event Type:3
********action********
窗口 1 有 2 个客户:(到达时刻 0 min 办理业务需要花费 29 min) (到达时刻 14 min 办理业务需要花费 2 min)
窗口 2 有 2 个客户:(到达时刻 0 min 办理业务需要花费 30 min) (到达时刻 19 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 19 min 办理业务需要花费 27 min) (到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 1 个客户:(到达时刻 22 min 办理业务需要花费 28 min)
Current Eventlist is:
OccurTime:28,Event Type:0
OccurTime:29,Event Type:1
OccurTime:30,Event Type:2
OccurTime:46,Event Type:3
OccurTime:51,Event Type:4
********action********
一个新客户在银行营业28min后进来办理业务花费了 2min下一个客户过了 6min后进来
窗口 1 有 2 个客户:(到达时刻 0 min 办理业务需要花费 29 min) (到达时刻 14 min 办理业务需要花费 2 min)
窗口 2 有 2 个客户:(到达时刻 0 min 办理业务需要花费 30 min) (到达时刻 19 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 19 min 办理业务需要花费 27 min) (到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:29,Event Type:1
OccurTime:30,Event Type:2
OccurTime:34,Event Type:0
OccurTime:46,Event Type:3
OccurTime:51,Event Type:4
********action********
窗口 1 有 1 个客户:(到达时刻 14 min 办理业务需要花费 2 min)
窗口 2 有 2 个客户:(到达时刻 0 min 办理业务需要花费 30 min) (到达时刻 19 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 19 min 办理业务需要花费 27 min) (到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:30,Event Type:2
OccurTime:31,Event Type:1
OccurTime:34,Event Type:0
OccurTime:46,Event Type:3
OccurTime:51,Event Type:4
********action********
窗口 1 有 1 个客户:(到达时刻 14 min 办理业务需要花费 2 min)
窗口 2 有 1 个客户:(到达时刻 19 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 19 min 办理业务需要花费 27 min) (到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:31,Event Type:1
OccurTime:34,Event Type:0
OccurTime:46,Event Type:2
OccurTime:46,Event Type:3
OccurTime:51,Event Type:4
********action********
窗口 1 有 0 个客户:--Is empty.
窗口 2 有 1 个客户:(到达时刻 19 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 19 min 办理业务需要花费 27 min) (到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:34,Event Type:0
OccurTime:46,Event Type:2
OccurTime:46,Event Type:3
OccurTime:51,Event Type:4
********action********
一个新客户在银行营业34min后进来办理业务花费了27min下一个客户过了 3min后进来
窗口 1 有 1 个客户:(到达时刻 34 min 办理业务需要花费 27 min)
窗口 2 有 1 个客户:(到达时刻 19 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 19 min 办理业务需要花费 27 min) (到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:37,Event Type:0
OccurTime:46,Event Type:2
OccurTime:46,Event Type:3
OccurTime:51,Event Type:4
OccurTime:61,Event Type:1
********action********
一个新客户在银行营业37min后进来办理业务花费了 2min下一个客户过了 7min后进来
窗口 1 有 2 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min)
窗口 2 有 1 个客户:(到达时刻 19 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 19 min 办理业务需要花费 27 min) (到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:44,Event Type:0
OccurTime:46,Event Type:2
OccurTime:46,Event Type:3
OccurTime:51,Event Type:4
OccurTime:61,Event Type:1
********action********
一个新客户在银行营业44min后进来办理业务花费了 2min下一个客户过了 1min后进来
窗口 1 有 2 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min)
窗口 2 有 2 个客户:(到达时刻 19 min 办理业务需要花费 16 min) (到达时刻 44 min 办理业务需要花费 2 min)
窗口 3 有 2 个客户:(到达时刻 19 min 办理业务需要花费 27 min) (到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:45,Event Type:0
OccurTime:46,Event Type:2
OccurTime:46,Event Type:3
OccurTime:51,Event Type:4
OccurTime:61,Event Type:1
********action********
一个新客户在银行营业45min后进来办理业务花费了25min下一个客户过了 5min后进来
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 2 个客户:(到达时刻 19 min 办理业务需要花费 16 min) (到达时刻 44 min 办理业务需要花费 2 min)
窗口 3 有 2 个客户:(到达时刻 19 min 办理业务需要花费 27 min) (到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:46,Event Type:2
OccurTime:46,Event Type:3
OccurTime:50,Event Type:0
OccurTime:51,Event Type:4
OccurTime:61,Event Type:1
********action********
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 1 个客户:(到达时刻 44 min 办理业务需要花费 2 min)
窗口 3 有 2 个客户:(到达时刻 19 min 办理业务需要花费 27 min) (到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:46,Event Type:3
OccurTime:48,Event Type:2
OccurTime:50,Event Type:0
OccurTime:51,Event Type:4
OccurTime:61,Event Type:1
********action********
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 1 个客户:(到达时刻 44 min 办理业务需要花费 2 min)
窗口 3 有 1 个客户:(到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:48,Event Type:2
OccurTime:50,Event Type:0
OccurTime:51,Event Type:4
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
********action********
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 0 个客户:--Is empty.
窗口 3 有 1 个客户:(到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:50,Event Type:0
OccurTime:51,Event Type:4
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
********action********
一个新客户在银行营业50min后进来办理业务花费了 7min下一个客户过了 0min后进来
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 1 个客户:(到达时刻 50 min 办理业务需要花费 7 min)
窗口 3 有 1 个客户:(到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:50,Event Type:0
OccurTime:51,Event Type:4
OccurTime:57,Event Type:2
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
********action********
一个新客户在银行营业50min后进来办理业务花费了16min下一个客户过了 0min后进来
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 2 个客户:(到达时刻 50 min 办理业务需要花费 7 min) (到达时刻 50 min 办理业务需要花费 16 min)
窗口 3 有 1 个客户:(到达时刻 20 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:50,Event Type:0
OccurTime:51,Event Type:4
OccurTime:57,Event Type:2
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
********action********
一个新客户在银行营业50min后进来办理业务花费了28min下一个客户过了 2min后进来
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 2 个客户:(到达时刻 50 min 办理业务需要花费 7 min) (到达时刻 50 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 20 min 办理业务需要花费 15 min) (到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 2 个客户:(到达时刻 22 min 办理业务需要花费 28 min) (到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:51,Event Type:4
OccurTime:52,Event Type:0
OccurTime:57,Event Type:2
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
********action********
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 2 个客户:(到达时刻 50 min 办理业务需要花费 7 min) (到达时刻 50 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 20 min 办理业务需要花费 15 min) (到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 1 个客户:(到达时刻 28 min 办理业务需要花费 2 min)
Current Eventlist is:
OccurTime:52,Event Type:0
OccurTime:53,Event Type:4
OccurTime:57,Event Type:2
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
********action********
一个新客户在银行营业52min后进来办理业务花费了 4min下一个客户过了 6min后进来
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 2 个客户:(到达时刻 50 min 办理业务需要花费 7 min) (到达时刻 50 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 20 min 办理业务需要花费 15 min) (到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 2 个客户:(到达时刻 28 min 办理业务需要花费 2 min) (到达时刻 52 min 办理业务需要花费 4 min)
Current Eventlist is:
OccurTime:53,Event Type:4
OccurTime:57,Event Type:2
OccurTime:58,Event Type:0
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
********action********
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 2 个客户:(到达时刻 50 min 办理业务需要花费 7 min) (到达时刻 50 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 20 min 办理业务需要花费 15 min) (到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 1 个客户:(到达时刻 52 min 办理业务需要花费 4 min)
Current Eventlist is:
OccurTime:57,Event Type:4
OccurTime:57,Event Type:2
OccurTime:58,Event Type:0
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
********action********
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 2 个客户:(到达时刻 50 min 办理业务需要花费 7 min) (到达时刻 50 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 20 min 办理业务需要花费 15 min) (到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 0 个客户:--Is empty.
Current Eventlist is:
OccurTime:57,Event Type:2
OccurTime:58,Event Type:0
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
********action********
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 1 个客户:(到达时刻 50 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 20 min 办理业务需要花费 15 min) (到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 0 个客户:--Is empty.
Current Eventlist is:
OccurTime:58,Event Type:0
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
OccurTime:73,Event Type:2
********action********
一个新客户在银行营业58min后进来办理业务花费了14min下一个客户过了 0min后进来
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 1 个客户:(到达时刻 50 min 办理业务需要花费 16 min)
窗口 3 有 2 个客户:(到达时刻 20 min 办理业务需要花费 15 min) (到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 1 个客户:(到达时刻 58 min 办理业务需要花费 14 min)
Current Eventlist is:
OccurTime:58,Event Type:0
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
OccurTime:72,Event Type:4
OccurTime:73,Event Type:2
********action********
一个新客户在银行营业58min后进来办理业务花费了 1min下一个客户过了 2min后进来
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 2 个客户:(到达时刻 50 min 办理业务需要花费 16 min) (到达时刻 58 min 办理业务需要花费 1 min)
窗口 3 有 2 个客户:(到达时刻 20 min 办理业务需要花费 15 min) (到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 1 个客户:(到达时刻 58 min 办理业务需要花费 14 min)
Current Eventlist is:
OccurTime:60,Event Type:0
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
OccurTime:72,Event Type:4
OccurTime:73,Event Type:2
********action********
一个新客户在银行营业60min后进来办理业务花费了29min下一个客户过了 1min后进来
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 2 个客户:(到达时刻 50 min 办理业务需要花费 16 min) (到达时刻 58 min 办理业务需要花费 1 min)
窗口 3 有 2 个客户:(到达时刻 20 min 办理业务需要花费 15 min) (到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 2 个客户:(到达时刻 58 min 办理业务需要花费 14 min) (到达时刻 60 min 办理业务需要花费 29 min)
Current Eventlist is:
OccurTime:61,Event Type:0
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
OccurTime:72,Event Type:4
OccurTime:73,Event Type:2
********action********
一个新客户在银行营业61min后进来办理业务花费了10min下一个客户过了 6min后进来
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 3 个客户:(到达时刻 50 min 办理业务需要花费 16 min) (到达时刻 58 min 办理业务需要花费 1 min) (到达时刻 61 min 办理业务需要花费 10 min)
窗口 3 有 2 个客户:(到达时刻 20 min 办理业务需要花费 15 min) (到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 2 个客户:(到达时刻 58 min 办理业务需要花费 14 min) (到达时刻 60 min 办理业务需要花费 29 min)
Current Eventlist is:
OccurTime:61,Event Type:3
OccurTime:61,Event Type:1
OccurTime:67,Event Type:0
OccurTime:72,Event Type:4
OccurTime:73,Event Type:2
********action********
窗口 1 有 3 个客户:(到达时刻 34 min 办理业务需要花费 27 min) (到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 3 个客户:(到达时刻 50 min 办理业务需要花费 16 min) (到达时刻 58 min 办理业务需要花费 1 min) (到达时刻 61 min 办理业务需要花费 10 min)
窗口 3 有 1 个客户:(到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 2 个客户:(到达时刻 58 min 办理业务需要花费 14 min) (到达时刻 60 min 办理业务需要花费 29 min)
Current Eventlist is:
OccurTime:61,Event Type:1
OccurTime:67,Event Type:0
OccurTime:72,Event Type:4
OccurTime:73,Event Type:2
OccurTime:89,Event Type:3
********action********
窗口 1 有 2 个客户:(到达时刻 37 min 办理业务需要花费 2 min) (到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 3 个客户:(到达时刻 50 min 办理业务需要花费 16 min) (到达时刻 58 min 办理业务需要花费 1 min) (到达时刻 61 min 办理业务需要花费 10 min)
窗口 3 有 1 个客户:(到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 2 个客户:(到达时刻 58 min 办理业务需要花费 14 min) (到达时刻 60 min 办理业务需要花费 29 min)
Current Eventlist is:
OccurTime:63,Event Type:1
OccurTime:67,Event Type:0
OccurTime:72,Event Type:4
OccurTime:73,Event Type:2
OccurTime:89,Event Type:3
********action********
窗口 1 有 1 个客户:(到达时刻 45 min 办理业务需要花费 25 min)
窗口 2 有 3 个客户:(到达时刻 50 min 办理业务需要花费 16 min) (到达时刻 58 min 办理业务需要花费 1 min) (到达时刻 61 min 办理业务需要花费 10 min)
窗口 3 有 1 个客户:(到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 2 个客户:(到达时刻 58 min 办理业务需要花费 14 min) (到达时刻 60 min 办理业务需要花费 29 min)
Current Eventlist is:
OccurTime:67,Event Type:0
OccurTime:72,Event Type:4
OccurTime:73,Event Type:2
OccurTime:88,Event Type:1
OccurTime:89,Event Type:3
********action********
一个新客户在银行营业67min后进来办理业务花费了15min下一个客户过了 2min后进来
窗口 1 有 2 个客户:(到达时刻 45 min 办理业务需要花费 25 min) (到达时刻 67 min 办理业务需要花费 15 min)
窗口 2 有 3 个客户:(到达时刻 50 min 办理业务需要花费 16 min) (到达时刻 58 min 办理业务需要花费 1 min) (到达时刻 61 min 办理业务需要花费 10 min)
窗口 3 有 1 个客户:(到达时刻 50 min 办理业务需要花费 28 min)
窗口 4 有 2 个客户:(到达时刻 58 min 办理业务需要花费 14 min) (到达时刻 60 min 办理业务需要花费 29 min)
Current Eventlist is:
OccurTime:69,Event Type:0
OccurTime:72,Event Type:4
OccurTime:73,Event Type:2
OccurTime:88,Event Type:1
OccurTime:89,Event Type:3
********action********
一个新客户在银行营业69min后进来办理业务花费了15min下一个客户过了 2min后进来
窗口 1 有 2 个客户:(到达时刻 45 min 办理业务需要花费 25 min) (到达时刻 67 min 办理业务需要花费 15 min)
窗口 2 有 3 个客户:(到达时刻 50 min 办理业务需要花费 16 min) (到达时刻 58 min 办理业务需要花费 1 min) (到达时刻 61 min 办理业务需要花费 10 min)
窗口 3 有 2 个客户:(到达时刻 50 min 办理业务需要花费 28 min) (到达时刻 69 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 58 min 办理业务需要花费 14 min) (到达时刻 60 min 办理业务需要花费 29 min)
Current Eventlist is:
OccurTime:71,Event Type:0
OccurTime:72,Event Type:4
OccurTime:73,Event Type:2
OccurTime:88,Event Type:1
OccurTime:89,Event Type:3
********action********
一个新客户在银行营业71min后进来办理业务花费了 3min下一个客户过了 3min后进来
窗口 1 有 3 个客户:(到达时刻 45 min 办理业务需要花费 25 min) (到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min)
窗口 2 有 3 个客户:(到达时刻 50 min 办理业务需要花费 16 min) (到达时刻 58 min 办理业务需要花费 1 min) (到达时刻 61 min 办理业务需要花费 10 min)
窗口 3 有 2 个客户:(到达时刻 50 min 办理业务需要花费 28 min) (到达时刻 69 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 58 min 办理业务需要花费 14 min) (到达时刻 60 min 办理业务需要花费 29 min)
Current Eventlist is:
OccurTime:72,Event Type:4
OccurTime:73,Event Type:2
OccurTime:74,Event Type:0
OccurTime:88,Event Type:1
OccurTime:89,Event Type:3
********action********
窗口 1 有 3 个客户:(到达时刻 45 min 办理业务需要花费 25 min) (到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min)
窗口 2 有 3 个客户:(到达时刻 50 min 办理业务需要花费 16 min) (到达时刻 58 min 办理业务需要花费 1 min) (到达时刻 61 min 办理业务需要花费 10 min)
窗口 3 有 2 个客户:(到达时刻 50 min 办理业务需要花费 28 min) (到达时刻 69 min 办理业务需要花费 15 min)
窗口 4 有 1 个客户:(到达时刻 60 min 办理业务需要花费 29 min)
Current Eventlist is:
OccurTime:73,Event Type:2
OccurTime:74,Event Type:0
OccurTime:88,Event Type:1
OccurTime:89,Event Type:3
OccurTime:101,Event Type:4
********action********
窗口 1 有 3 个客户:(到达时刻 45 min 办理业务需要花费 25 min) (到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min)
窗口 2 有 2 个客户:(到达时刻 58 min 办理业务需要花费 1 min) (到达时刻 61 min 办理业务需要花费 10 min)
窗口 3 有 2 个客户:(到达时刻 50 min 办理业务需要花费 28 min) (到达时刻 69 min 办理业务需要花费 15 min)
窗口 4 有 1 个客户:(到达时刻 60 min 办理业务需要花费 29 min)
Current Eventlist is:
OccurTime:74,Event Type:2
OccurTime:74,Event Type:0
OccurTime:88,Event Type:1
OccurTime:89,Event Type:3
OccurTime:101,Event Type:4
********action********
窗口 1 有 3 个客户:(到达时刻 45 min 办理业务需要花费 25 min) (到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min)
窗口 2 有 1 个客户:(到达时刻 61 min 办理业务需要花费 10 min)
窗口 3 有 2 个客户:(到达时刻 50 min 办理业务需要花费 28 min) (到达时刻 69 min 办理业务需要花费 15 min)
窗口 4 有 1 个客户:(到达时刻 60 min 办理业务需要花费 29 min)
Current Eventlist is:
OccurTime:74,Event Type:0
OccurTime:84,Event Type:2
OccurTime:88,Event Type:1
OccurTime:89,Event Type:3
OccurTime:101,Event Type:4
********action********
一个新客户在银行营业74min后进来办理业务花费了19min下一个客户过了 5min后进来
窗口 1 有 3 个客户:(到达时刻 45 min 办理业务需要花费 25 min) (到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min)
窗口 2 有 2 个客户:(到达时刻 61 min 办理业务需要花费 10 min) (到达时刻 74 min 办理业务需要花费 19 min)
窗口 3 有 2 个客户:(到达时刻 50 min 办理业务需要花费 28 min) (到达时刻 69 min 办理业务需要花费 15 min)
窗口 4 有 1 个客户:(到达时刻 60 min 办理业务需要花费 29 min)
Current Eventlist is:
OccurTime:79,Event Type:0
OccurTime:84,Event Type:2
OccurTime:88,Event Type:1
OccurTime:89,Event Type:3
OccurTime:101,Event Type:4
********action********
一个新客户在银行营业79min后进来办理业务花费了12min下一个客户过了 6min后进来
窗口 1 有 3 个客户:(到达时刻 45 min 办理业务需要花费 25 min) (到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min)
窗口 2 有 2 个客户:(到达时刻 61 min 办理业务需要花费 10 min) (到达时刻 74 min 办理业务需要花费 19 min)
窗口 3 有 2 个客户:(到达时刻 50 min 办理业务需要花费 28 min) (到达时刻 69 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 60 min 办理业务需要花费 29 min) (到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:84,Event Type:2
OccurTime:85,Event Type:0
OccurTime:88,Event Type:1
OccurTime:89,Event Type:3
OccurTime:101,Event Type:4
********action********
窗口 1 有 3 个客户:(到达时刻 45 min 办理业务需要花费 25 min) (到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min)
窗口 2 有 1 个客户:(到达时刻 74 min 办理业务需要花费 19 min)
窗口 3 有 2 个客户:(到达时刻 50 min 办理业务需要花费 28 min) (到达时刻 69 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 60 min 办理业务需要花费 29 min) (到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:85,Event Type:0
OccurTime:88,Event Type:1
OccurTime:89,Event Type:3
OccurTime:101,Event Type:4
OccurTime:103,Event Type:2
********action********
一个新客户在银行营业85min后进来办理业务花费了11min下一个客户过了 2min后进来
窗口 1 有 3 个客户:(到达时刻 45 min 办理业务需要花费 25 min) (到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min)
窗口 2 有 2 个客户:(到达时刻 74 min 办理业务需要花费 19 min) (到达时刻 85 min 办理业务需要花费 11 min)
窗口 3 有 2 个客户:(到达时刻 50 min 办理业务需要花费 28 min) (到达时刻 69 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 60 min 办理业务需要花费 29 min) (到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:87,Event Type:0
OccurTime:88,Event Type:1
OccurTime:89,Event Type:3
OccurTime:101,Event Type:4
OccurTime:103,Event Type:2
********action********
一个新客户在银行营业87min后进来办理业务花费了 6min下一个客户过了 5min后进来
窗口 1 有 3 个客户:(到达时刻 45 min 办理业务需要花费 25 min) (到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min)
窗口 2 有 3 个客户:(到达时刻 74 min 办理业务需要花费 19 min) (到达时刻 85 min 办理业务需要花费 11 min) (到达时刻 87 min 办理业务需要花费 6 min)
窗口 3 有 2 个客户:(到达时刻 50 min 办理业务需要花费 28 min) (到达时刻 69 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 60 min 办理业务需要花费 29 min) (到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:88,Event Type:1
OccurTime:89,Event Type:3
OccurTime:92,Event Type:0
OccurTime:101,Event Type:4
OccurTime:103,Event Type:2
********action********
窗口 1 有 2 个客户:(到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min)
窗口 2 有 3 个客户:(到达时刻 74 min 办理业务需要花费 19 min) (到达时刻 85 min 办理业务需要花费 11 min) (到达时刻 87 min 办理业务需要花费 6 min)
窗口 3 有 2 个客户:(到达时刻 50 min 办理业务需要花费 28 min) (到达时刻 69 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 60 min 办理业务需要花费 29 min) (到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:89,Event Type:3
OccurTime:92,Event Type:0
OccurTime:101,Event Type:4
OccurTime:103,Event Type:1
OccurTime:103,Event Type:2
********action********
窗口 1 有 2 个客户:(到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min)
窗口 2 有 3 个客户:(到达时刻 74 min 办理业务需要花费 19 min) (到达时刻 85 min 办理业务需要花费 11 min) (到达时刻 87 min 办理业务需要花费 6 min)
窗口 3 有 1 个客户:(到达时刻 69 min 办理业务需要花费 15 min)
窗口 4 有 2 个客户:(到达时刻 60 min 办理业务需要花费 29 min) (到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:92,Event Type:0
OccurTime:101,Event Type:4
OccurTime:103,Event Type:1
OccurTime:103,Event Type:2
OccurTime:104,Event Type:3
********action********
一个新客户在银行营业92min后进来办理业务花费了26min下一个客户过了 7min后进来
窗口 1 有 2 个客户:(到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min)
窗口 2 有 3 个客户:(到达时刻 74 min 办理业务需要花费 19 min) (到达时刻 85 min 办理业务需要花费 11 min) (到达时刻 87 min 办理业务需要花费 6 min)
窗口 3 有 2 个客户:(到达时刻 69 min 办理业务需要花费 15 min) (到达时刻 92 min 办理业务需要花费 26 min)
窗口 4 有 2 个客户:(到达时刻 60 min 办理业务需要花费 29 min) (到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:99,Event Type:0
OccurTime:101,Event Type:4
OccurTime:103,Event Type:1
OccurTime:103,Event Type:2
OccurTime:104,Event Type:3
********action********
窗口 1 有 3 个客户:(到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min) (到达时刻 99 min 办理业务需要花费 3 min)
窗口 2 有 3 个客户:(到达时刻 74 min 办理业务需要花费 19 min) (到达时刻 85 min 办理业务需要花费 11 min) (到达时刻 87 min 办理业务需要花费 6 min)
窗口 3 有 2 个客户:(到达时刻 69 min 办理业务需要花费 15 min) (到达时刻 92 min 办理业务需要花费 26 min)
窗口 4 有 2 个客户:(到达时刻 60 min 办理业务需要花费 29 min) (到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:101,Event Type:4
OccurTime:103,Event Type:1
OccurTime:103,Event Type:2
OccurTime:104,Event Type:3
********action********
窗口 1 有 3 个客户:(到达时刻 67 min 办理业务需要花费 15 min) (到达时刻 71 min 办理业务需要花费 3 min) (到达时刻 99 min 办理业务需要花费 3 min)
窗口 2 有 3 个客户:(到达时刻 74 min 办理业务需要花费 19 min) (到达时刻 85 min 办理业务需要花费 11 min) (到达时刻 87 min 办理业务需要花费 6 min)
窗口 3 有 2 个客户:(到达时刻 69 min 办理业务需要花费 15 min) (到达时刻 92 min 办理业务需要花费 26 min)
窗口 4 有 1 个客户:(到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:103,Event Type:1
OccurTime:103,Event Type:2
OccurTime:104,Event Type:3
OccurTime:113,Event Type:4
********action********
窗口 1 有 2 个客户:(到达时刻 71 min 办理业务需要花费 3 min) (到达时刻 99 min 办理业务需要花费 3 min)
窗口 2 有 3 个客户:(到达时刻 74 min 办理业务需要花费 19 min) (到达时刻 85 min 办理业务需要花费 11 min) (到达时刻 87 min 办理业务需要花费 6 min)
窗口 3 有 2 个客户:(到达时刻 69 min 办理业务需要花费 15 min) (到达时刻 92 min 办理业务需要花费 26 min)
窗口 4 有 1 个客户:(到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:103,Event Type:2
OccurTime:104,Event Type:3
OccurTime:106,Event Type:1
OccurTime:113,Event Type:4
********action********
窗口 1 有 2 个客户:(到达时刻 71 min 办理业务需要花费 3 min) (到达时刻 99 min 办理业务需要花费 3 min)
窗口 2 有 2 个客户:(到达时刻 85 min 办理业务需要花费 11 min) (到达时刻 87 min 办理业务需要花费 6 min)
窗口 3 有 2 个客户:(到达时刻 69 min 办理业务需要花费 15 min) (到达时刻 92 min 办理业务需要花费 26 min)
窗口 4 有 1 个客户:(到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:104,Event Type:3
OccurTime:106,Event Type:1
OccurTime:113,Event Type:4
OccurTime:114,Event Type:2
********action********
窗口 1 有 2 个客户:(到达时刻 71 min 办理业务需要花费 3 min) (到达时刻 99 min 办理业务需要花费 3 min)
窗口 2 有 2 个客户:(到达时刻 85 min 办理业务需要花费 11 min) (到达时刻 87 min 办理业务需要花费 6 min)
窗口 3 有 1 个客户:(到达时刻 92 min 办理业务需要花费 26 min)
窗口 4 有 1 个客户:(到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:106,Event Type:1
OccurTime:113,Event Type:4
OccurTime:114,Event Type:2
OccurTime:130,Event Type:3
********action********
窗口 1 有 1 个客户:(到达时刻 99 min 办理业务需要花费 3 min)
窗口 2 有 2 个客户:(到达时刻 85 min 办理业务需要花费 11 min) (到达时刻 87 min 办理业务需要花费 6 min)
窗口 3 有 1 个客户:(到达时刻 92 min 办理业务需要花费 26 min)
窗口 4 有 1 个客户:(到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:109,Event Type:1
OccurTime:113,Event Type:4
OccurTime:114,Event Type:2
OccurTime:130,Event Type:3
********action********
窗口 1 有 0 个客户:--Is empty.
窗口 2 有 2 个客户:(到达时刻 85 min 办理业务需要花费 11 min) (到达时刻 87 min 办理业务需要花费 6 min)
窗口 3 有 1 个客户:(到达时刻 92 min 办理业务需要花费 26 min)
窗口 4 有 1 个客户:(到达时刻 79 min 办理业务需要花费 12 min)
Current Eventlist is:
OccurTime:113,Event Type:4
OccurTime:114,Event Type:2
OccurTime:130,Event Type:3
********action********
窗口 1 有 0 个客户:--Is empty.
窗口 2 有 2 个客户:(到达时刻 85 min 办理业务需要花费 11 min) (到达时刻 87 min 办理业务需要花费 6 min)
窗口 3 有 1 个客户:(到达时刻 92 min 办理业务需要花费 26 min)
窗口 4 有 0 个客户:--Is empty.
Current Eventlist is:
OccurTime:114,Event Type:2
OccurTime:130,Event Type:3
********action********
窗口 1 有 0 个客户:--Is empty.
窗口 2 有 1 个客户:(到达时刻 87 min 办理业务需要花费 6 min)
窗口 3 有 1 个客户:(到达时刻 92 min 办理业务需要花费 26 min)
窗口 4 有 0 个客户:--Is empty.
Current Eventlist is:
OccurTime:120,Event Type:2
OccurTime:130,Event Type:3
********action********
窗口 1 有 0 个客户:--Is empty.
窗口 2 有 0 个客户:--Is empty.
窗口 3 有 1 个客户:(到达时刻 92 min 办理业务需要花费 26 min)
窗口 4 有 0 个客户:--Is empty.
Current Eventlist is:
OccurTime:130,Event Type:3
********action********
窗口 1 有 0 个客户:--Is empty.
窗口 2 有 0 个客户:--Is empty.
窗口 3 有 0 个客户:--Is empty.
窗口 4 有 0 个客户:--Is empty.
Current Eventlist is:
List is empty.
The Average Time is 25.677420
```
# 5. 总结
本项目是模拟银行业务的相关问题,通过本次项目我们用单链表和链队列的相关知识完成了银行客户的排队问题。提高了我们的团队协作能力和问题分析能力。
遇到的问题:代码的实现问题
@ -511,7 +1392,9 @@ The Average Time is 15.285714
成员1刘彩月:
经过这次数据结构的实训,我认识到了数据结构和生活应用的联系。用数据结构中的队列和单链表的知识,可以模拟解决银行的排队问题。同时我也感受到了个人技术和团队合作的重要性,在学习数据结构的同时,我应该联合生活中的一些具体的问题,联系具体问题来巩固数据结构的相关知识;通过数据结构解决生活中的相关问题。努力提高自己的个人技术,提高自己的编程能力。良好的团队合作往往可以达到事半功倍的效果,我还应该注重团队合作的重要性。和队员之间相互合作,相互信任等都是团队合作中最基础的。
成员2金雨佳
数据结构是本专业一门重要的专业基础课,是一门关键性核心课程。通过本次的项目实训,对基础知识起到了复习巩固的作用,尤其是对于队列和链表的相关知识。我们队由一点一点零散的知识搭建成一个完整的银行模拟系统,实现了由书面知识转变成解决现实问题。这个过程中在代码的实现、各种小工具的使用中等遇到了不少问题,但在解决问题中学到了很多实践性的知识。同时使我更加深刻的认识到了知识的实用性和团队合作的重要性。
成员3赵亚璇
在项目的前期准备阶段,大家一起讨论,跟随课程的推进,使用课程中学到的各种知识,将整个项目的架构逐渐搭建起来,层次和逻辑也越来越清晰。在这一阶段时间,学习的过程虽然不容易,但确实学到了不少实用的知识。在运用相关框架进行实践开发的过程中,也遇到了各种各样的问题,通过查找资料和不断的尝试也都逐一解决了,这一过程自己的能力也得到了锻炼,有不错的成就感。
成员4刘梦琦
通过这次数据结构实训,让我意识到了团队协作的重要性,运用数据结构的知识模拟银行系统,更加熟练地掌握单链表和队列的应用,将所学的知识用在实践项目上时我此次实训的最大收获,在未来的生活中,我要努力学习技术,将知识联系到实际生活当中,把所学用到所用。

@ -11,64 +11,63 @@
typedef int Status;
typedef struct
{
int OccurTime;//事件发生时刻
int NType;//事件类型0表示到达事件1-4表示四个窗口的离开事件
}Event, ElemType;
int OccurTime; // 事件发生时刻
int NType; // 事件类型0表示到达事件1-4表示四个窗口的离开事件
} Event, ElemType;
typedef struct LNode
{
ElemType data;
struct LNode* next;
}LNode, * LinkList;
ElemType data;
struct LNode *next;
} LNode, *LinkList;
typedef LinkList EventList;
typedef struct
{
int ArrivalTime;//到达时刻
int Duration;//办理事务所需事件
}QElemType;
int ArrivalTime; // 到达时刻
int Duration; // 办理事务所需事件
} QElemType;
typedef struct QNode
{
QElemType data;
struct QNode* next;
}QNode, * QueuePtr;
QElemType data;
struct QNode *next;
} QNode, *QueuePtr;
typedef struct
{
QueuePtr front;//队头指针
QueuePtr rear;//队尾指针
}LinkQueue;
QueuePtr front; // 队头指针
QueuePtr rear; // 队尾指针
} LinkQueue;
EventList ev;//事件表
Event en;//事件
LinkQueue q[5];//四个客户队列
QElemType customer;//客户记录
EventList ev; // 事件表
Event en; // 事件
LinkQueue q[5]; // 四个客户队列
QElemType customer; // 客户记录
int TotalTime, CustomerNum, CloseTime;
void Bank_Simulation(int CloseTime);//银行业务模拟,统计一天内客户在银行逗留的平均时间
int cmp(Event a, Event b);//比较事件发生先后
void OpenForDay();//银行开门
void OrderInsert(EventList L, Event en, int(*cmp)(Event a, Event b));//插入事件
void CustomerArrived();//客户进门
void CustomerDepature();//客户离开
int Minimum(LinkQueue Q[5]);//求长度最短队列
Status InitList(LinkList& L);//链表初始化
Status ListInsert_L(LinkList& L, int i, ElemType e);//在第i个位置之前插入元素e
Status ListEmpty(LinkList L);//判断链表是否为空
Status DelFirst(LinkList L, LNode*& q);//删除链表中第一个结点并以q返回
LNode* GetHead(LinkList L);//返回链表头结点
ElemType GetCurElem(LNode* p);//已知p指向线性链表中的一个结点返回p所指结点中元素的值
void PrintEventList();//打印事件链表
Status ListTraverse(LinkList& L);//遍历链表 
Status InitQueue(LinkQueue& Q);//链队列的初始化
Status EnQueue(LinkQueue& Q, QElemType e);//入队
Status DeQueue(LinkQueue& Q, QElemType& e);//出队
int QueueLength(LinkQueue Q);//返回队列的长度
Status GetHead(LinkQueue Q, QElemType& e);//获取队头元素 注:由于参数个数不同,发生函数重载
Status QueueEmpty(LinkQueue Q);//判断队列是否为空
void PrintQueue();//打印队列
Status QueueTraverse(LinkQueue Q);//遍历队列Q 
void Bank_Simulation(int CloseTime); // 银行业务模拟,统计一天内客户在银行逗留的平均时间
int cmp(Event a, Event b); // 比较事件发生先后
void OpenForDay(); // 银行开门
void OrderInsert(EventList L, Event en, int (*cmp)(Event a, Event b)); // 插入事件
void CustomerArrived(); // 客户进门
void CustomerDepature(); // 客户离开
int Minimum(LinkQueue Q[5]); // 求长度最短队列
Status InitList(LinkList &L); // 链表初始化
Status ListInsert_L(LinkList &L, int i, ElemType e); // 在第i个位置之前插入元素e
Status ListEmpty(LinkList L); // 判断链表是否为空
Status DelFirst(LinkList L, LNode *&q); // 删除链表中第一个结点并以q返回
LNode *GetHead(LinkList L); // 返回链表头结点
ElemType GetCurElem(LNode *p); // 已知p指向线性链表中的一个结点返回p所指结点中元素的值
void PrintEventList(); // 打印事件链表
Status ListTraverse(LinkList &L); // 遍历链表 
Status InitQueue(LinkQueue &Q); // 链队列的初始化
Status EnQueue(LinkQueue &Q, QElemType e); // 入队
Status DeQueue(LinkQueue &Q, QElemType &e); // 出队
int QueueLength(LinkQueue Q); // 返回队列的长度
Status GetHead(LinkQueue Q, QElemType &e); // 获取队头元素 注:由于参数个数不同,发生函数重载
Status QueueEmpty(LinkQueue Q); // 判断队列是否为空
void PrintQueue(); // 打印队列
Status QueueTraverse(LinkQueue Q); // 遍历队列Q 
/*
@ -78,294 +77,301 @@ Status QueueTraverse(LinkQueue Q);//遍历队列Q 
int main()
{
srand((unsigned)time(NULL));//设定随机数种子
printf("请输入银行的营业时间(min)");
scanf("%d", &CloseTime);
Bank_Simulation(CloseTime);
return 0;
}
void Bank_Simulation(int CloseTime)//银行业务模拟,统计一天内客户在银行逗留的平均时间
{
OpenForDay();//开始营业
LNode* p;
while (!ListEmpty(ev))
{
DelFirst(GetHead(ev), p);
printf("********action********\n");
en = GetCurElem(p);
if (en.NType == 0)
{
CustomerArrived();
}
else
{
CustomerDepature();
}
PrintQueue();
PrintEventList();
}
printf("The Average Time is %f\n", (float)TotalTime / CustomerNum);
}
int cmp(Event a, Event b)//比较事件发生先后
{
if (a.OccurTime > b.OccurTime) return 1;
if (a.OccurTime = b.OccurTime) return 0;
if (a.OccurTime < b.OccurTime) return -1;
srand((unsigned)time(NULL)); // 设定随机数种子
printf("请输入银行的营业时间(min)");
scanf("%d", &CloseTime);
Bank_Simulation(CloseTime);
return 0;
}
void Bank_Simulation(int CloseTime) // 银行业务模拟,统计一天内客户在银行逗留的平均时间
{
OpenForDay(); // 开始营业
LNode *p;
while (!ListEmpty(ev))
{
DelFirst(GetHead(ev), p);
printf("********action********\n");
en = GetCurElem(p);
if (en.NType == 0)
{
CustomerArrived();
}
else
{
CustomerDepature();
}
PrintQueue();
PrintEventList();
}
printf("The Average Time is %f\n", (float)TotalTime / CustomerNum);
}
int cmp(Event a, Event b) // 比较事件发生先后
{
if (a.OccurTime > b.OccurTime)
return 1;
if (a.OccurTime = b.OccurTime)
return 0;
if (a.OccurTime < b.OccurTime)
return -1;
}
void OpenForDay()//银行开门
//初始化操作
{
TotalTime = 0;//初始化累计时间为0
CustomerNum = 0;//初始化客户数为0
InitList(ev);//初始化事件链表为空表
en.OccurTime = 0;
en.NType = 0;//设定第一个客户到达事件
OrderInsert(ev, en, cmp);
for (int i = 1; i <= 4; i++)
{
InitQueue(q[i]);//将四个银行窗口队列初始化
}
void OpenForDay() // 银行开门
// 初始化操作
{
TotalTime = 0; // 初始化累计时间为0
CustomerNum = 0; // 初始化客户数为0
InitList(ev); // 初始化事件链表为空表
en.OccurTime = 0;
en.NType = 0; // 设定第一个客户到达事件
OrderInsert(ev, en, cmp);
for (int i = 1; i <= 4; i++)
{
InitQueue(q[i]); // 将四个银行窗口队列初始化
}
}
void OrderInsert(EventList L, Event en, int(*cmp)(Event a, Event b))//插入事件
//事件插入函数,将不同事件按发生时间递增排序
{
LNode* p = L;
int i = 1;
while (p->next && cmp(en, p->next->data) > 0)//找到事件发生时间所在事件链表中的位置
{
p = p->next;
i++;
}
ListInsert_L(ev, i, en);//插入该事件
void OrderInsert(EventList L, Event en, int (*cmp)(Event a, Event b)) // 插入事件
// 事件插入函数,将不同事件按发生时间递增排序
{
LNode *p = L;
int i = 1;
while (p->next && cmp(en, p->next->data) > 0) // 找到事件发生时间所在事件链表中的位置
{
p = p->next;
i++;
}
ListInsert_L(ev, i, en); // 插入该事件
}
void CustomerArrived()//客户进门
//处理客户到达事件en.NType=0
{
CustomerNum++;
int durtime = rand() % 30 + 1;//客户处理事务时间
int intertime = rand() % 8;//下一个客户到达的时间间隔
int t = en.OccurTime + intertime;//下一个客户到达的时刻
if (t < CloseTime)//如果他在营业时间内进来
{
printf("一个新客户在银行营业%2dmin后进来办理业务花费了%2dmin下一个客户过了%2dmin后进来\n", en.OccurTime, durtime, intertime);
OrderInsert(ev, { t, 0 }, cmp);//插入客户进门事件NType=0为到达事件
}
void CustomerArrived() // 客户进门
// 处理客户到达事件en.NType=0
{
CustomerNum++;
int durtime = rand() % 30 + 1; // 客户处理事务时间
int intertime = rand() % 8; // 下一个客户到达的时间间隔
int t = en.OccurTime + intertime; // 下一个客户到达的时刻
if (t < CloseTime) // 如果他在营业时间内进来
{
printf("一个新客户在银行营业%2dmin后进来办理业务花费了%2dmin下一个客户过了%2dmin后进来\n", en.OccurTime, durtime, intertime);
OrderInsert(ev, {t, 0}, cmp); // 插入客户进门事件NType=0为到达事件
}
int i = Minimum(q);//客户找最短队开始排队
EnQueue(q[i], { en.OccurTime, durtime });
if (QueueLength(q[i]) == 1)
{
OrderInsert(ev, { en.OccurTime + durtime,i }, cmp);//队列长度为1时设定一个离开事件
int i = Minimum(q); // 客户找最短队开始排队
EnQueue(q[i], {en.OccurTime, durtime});
if (QueueLength(q[i]) == 1)
{
OrderInsert(ev, {en.OccurTime + durtime, i}, cmp); // 队列长度为1时设定一个离开事件
}
}
}
void CustomerDepature()//客户离开
void CustomerDepature() // 客户离开
{
int i = en.NType;
DeQueue(q[i], customer);//删除第i队列的排头客户
TotalTime += en.OccurTime - customer.ArrivalTime;//累计客户逗留时间
if (!QueueEmpty(q[i])) {
GetHead(q[i], customer);
OrderInsert(ev, { en.OccurTime + customer.Duration, i }, cmp);//插入事件
}
int i = en.NType;
DeQueue(q[i], customer); // 删除第i队列的排头客户
TotalTime += en.OccurTime - customer.ArrivalTime; // 累计客户逗留时间
if (!QueueEmpty(q[i]))
{
GetHead(q[i], customer);
OrderInsert(ev, {en.OccurTime + customer.Duration, i}, cmp); // 插入事件
}
}
int Minimum(LinkQueue Q[5])//求长度最短队列
{
int minLength = QueueLength(Q[1]);
int i = 1;
for (int j = 2; j < 5; j++)
{
if (minLength > QueueLength(Q[j]))
{
minLength = QueueLength(Q[j]);
i = j;
}
int Minimum(LinkQueue Q[5]) // 求长度最短队列
{
int minLength = QueueLength(Q[1]);
int i = 1;
for (int j = 2; j < 5; j++)
{
if (minLength > QueueLength(Q[j]))
{
minLength = QueueLength(Q[j]);
i = j;
}
}
return i;
}
return i;
}
Status InitList(LinkList& L)//链表初始化
Status InitList(LinkList &L) // 链表初始化
{
L = (LinkList)malloc(sizeof(LNode));
if (!L)
{
exit(OVERFLOW);
}
L->next = NULL;
return OK;
L = (LinkList)malloc(sizeof(LNode));
if (!L)
{
exit(OVERFLOW);
}
L->next = NULL;
return OK;
}
Status ListInsert_L(LinkList& L, int i, ElemType e)//在第i个位置之前插入元素e
{
LinkList p = L;
int j = 0;
while (p && j < i - 1)//注意是i-1,因为要找被插入元素的前一个元素
{
p = p->next;
j++;
}
if (!p || j > i - 1)
{
return ERROR;
}
LinkList s = (LinkList)malloc(sizeof(LNode));
if (!s)
{
exit(OVERFLOW);
}
s->data = e;
s->next = p->next;
p->next = s;
return OK;
}
Status ListEmpty(LinkList L)//判断链表是否为空
//空表头指针和头结点仍然存在但头结点指向NULL
{
if (L->next)
{
return FALSE;
}
else
{
return TRUE;
}
}
Status DelFirst(LinkList L, LNode*& q)//删除链表中第一个结点并以q返回
{
if (!L->next)
{
return ERROR;
}
q = L->next;
L->next = q->next;
return OK;
}
LNode* GetHead(LinkList L)//返回链表头结点
{
return L;
Status ListInsert_L(LinkList &L, int i, ElemType e) // 在第i个位置之前插入元素e
{
LinkList p = L;
int j = 0;
while (p && j < i - 1) // 注意是i-1,因为要找被插入元素的前一个元素
{
p = p->next;
j++;
}
if (!p || j > i - 1)
{
return ERROR;
}
LinkList s = (LinkList)malloc(sizeof(LNode));
if (!s)
{
exit(OVERFLOW);
}
s->data = e;
s->next = p->next;
p->next = s;
return OK;
}
Status ListEmpty(LinkList L) // 判断链表是否为空
// 空表头指针和头结点仍然存在但头结点指向NULL
{
if (L->next)
{
return FALSE;
}
else
{
return TRUE;
}
}
Status DelFirst(LinkList L, LNode *&q) // 删除链表中第一个结点并以q返回
{
if (!L->next)
{
return ERROR;
}
q = L->next;
L->next = q->next;
return OK;
}
LNode *GetHead(LinkList L) // 返回链表头结点
{
return L;
}
ElemType GetCurElem(LNode* p)//已知p指向线性链表中的一个结点返回p所指结点中元素的值
ElemType GetCurElem(LNode *p) // 已知p指向线性链表中的一个结点返回p所指结点中元素的值
{
return p->data;
return p->data;
}
void PrintEventList()//打印事件链表 
void PrintEventList() // 打印事件链表 
{
printf("Current Eventlist is:\n");
ListTraverse(ev);
printf("Current Eventlist is:\n");
ListTraverse(ev);
}
Status ListTraverse(LinkList& L) //遍历链表  
Status ListTraverse(LinkList &L) // 遍历链表  
{
LNode* p = L->next;
if (!p) {
printf("List is empty.\n");
return ERROR;
}
LNode *p = L->next;
if (!p)
{
printf("List is empty.\n");
return ERROR;
}
while (p != NULL) {
printf("OccurTime:%d,Event Type:%d\n", p->data.OccurTime, p->data.NType);
p = p->next;
}
printf("\n");
return OK;
while (p != NULL)
{
printf("OccurTime:%d,Event Type:%d\n", p->data.OccurTime, p->data.NType);
p = p->next;
}
printf("\n");
return OK;
}
Status InitQueue(LinkQueue& Q)//链队列的初始化
{
Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
if (!Q.front)
{
exit(OVERFLOW);
}
Q.front->next = NULL;
return OK;
}
Status EnQueue(LinkQueue& Q, QElemType e)//入队
{
QNode* p = (QueuePtr)malloc(sizeof(QNode));
if (!p)
{
exit(OVERFLOW);
}
p->data = e;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return OK;
}
Status DeQueue(LinkQueue& Q, QElemType& e)//出队
{
if (Q.front == Q.rear)
{
return ERROR;
}
QNode* p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if (Q.rear == p)//注意这里要考虑到,当队列中最后一个元素被删后,队列尾指针也丢失了,因此需对队尾指针重新复制(指向头结点)
{
Q.rear = Q.front;
}
free(p);
return OK;
Status InitQueue(LinkQueue &Q) // 链队列的初始化
{
Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
if (!Q.front)
{
exit(OVERFLOW);
}
Q.front->next = NULL;
return OK;
}
Status EnQueue(LinkQueue &Q, QElemType e) // 入队
{
QNode *p = (QueuePtr)malloc(sizeof(QNode));
if (!p)
{
exit(OVERFLOW);
}
p->data = e;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return OK;
}
Status DeQueue(LinkQueue &Q, QElemType &e) // 出队
{
if (Q.front == Q.rear)
{
return ERROR;
}
QNode *p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if (Q.rear == p) // 注意这里要考虑到,当队列中最后一个元素被删后,队列尾指针也丢失了,因此需对队尾指针重新复制(指向头结点)
{
Q.rear = Q.front;
}
free(p);
return OK;
}
int QueueLength(LinkQueue Q)//返回队列的长度
int QueueLength(LinkQueue Q) // 返回队列的长度
{
int count = 0;
QNode* p = Q.front->next;
while (p) {
p = p->next;
count++;
}
return count;
int count = 0;
QNode *p = Q.front->next;
while (p)
{
p = p->next;
count++;
}
return count;
}
Status GetHead(LinkQueue Q, QElemType& e)//获取队头元素
{
if (Q.front == Q.rear)
{ return ERROR;}
e = Q.front->next->data;
}
Status QueueEmpty(LinkQueue Q)//判断队列是否为空
{
if (Q.front == Q.rear)
{
return TRUE;
}
return FALSE;
}
void PrintQueue()//打印队列
{
//打印当前队列  
int i;
for (i = 1; i <= 4; i++) {
printf("窗口 %d 有 %d 个客户:", i, QueueLength(q[i]));
QueueTraverse(q[i]);
}
printf("\n");
}
Status QueueTraverse(LinkQueue Q)//遍历队列Q  
{
QNode* p = Q.front->next;
if (!p) {
printf("--Is empty.\n");
return ERROR;
}
while (p) {
printf("(到达时刻 %d min 办理业务需要花费 %d min) ", p->data.ArrivalTime, p->data.Duration);
p = p->next;
}
printf("\n");
return OK;
Status GetHead(LinkQueue Q, QElemType &e) // 获取队头元素
{
if (Q.front == Q.rear)
{
return ERROR;
}
e = Q.front->next->data;
}
Status QueueEmpty(LinkQueue Q) // 判断队列是否为空
{
if (Q.front == Q.rear)
{
return TRUE;
}
return FALSE;
}
void PrintQueue() // 打印队列
{
// 打印当前队列  
int i;
for (i = 1; i <= 4; i++)
{
printf("窗口 %d 有 %d 个客户:", i, QueueLength(q[i]));
QueueTraverse(q[i]);
}
printf("\n");
}
Status QueueTraverse(LinkQueue Q) // 遍历队列Q  
{
QNode *p = Q.front->next;
if (!p)
{
printf("--Is empty.\n");
return ERROR;
}
while (p)
{
printf("(到达时刻 %d min 办理业务需要花费 %d min) ", p->data.ArrivalTime, p->data.Duration);
p = p->next;
}
printf("\n");
return OK;
}

Binary file not shown.
Loading…
Cancel
Save