//------------------------------------------------
#include<iostream.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<ctype.h> //用于函数isdigit
#include "pryQueue.h"
//---事件驱动模拟
// 通过程序模拟来研究银行顾客在一家有n>=2个窗口的银行的到达和离开的情况
// 模拟的关键部分为客户时间,包括到达和离开。假定每个柜员都能准确地完成工作
// 计划。
// 顾客进入银行时产生到达事件,在顾客确定服务窗口时确定顾客离开的事件。每个
// 事件都被加上时间戳,然后放到优先级队列中,这样便可以根据用户到达和离开的
// 时间顺序处理这些事件。
// 每个刚到达顾客负责生成下一个到达事件,并生成自己的离开事件,离开事件只需
// 要修改服务窗口信息就可以
// 收集服务中每个窗口的服务顾客总人数、服务总时间等
//---------EVENT
enum EventType{arrival,departure};
class Event
{
private:
int time;//时间时间戳
EventType etype;//事件类型
int customerID;//顾客ID
int tellerID;//服务窗口ID
int waittime;
int servicetime;
public:
Event(void);
Event(int t,EventType et,int cn,int tn,int wt,int st);
int GetTime(void) const;
EventType GetEventType(void) const;
int GetCustomerID(void) const;
int GetTellerID(void) const;
int GetWaitTime(void) const;
int GetServiceTime(void) const;
};
Event::Event(void)
{
time=0;
etype=arrival;
customerID=1;
tellerID=0;
waittime=0;
servicetime=0;
}
Event::Event(int t,EventType et,int cn,int tn,int wt,int st)
{
time=t;
etype=et;
customerID=cn;
tellerID=tn;
waittime=wt;
servicetime=st;
}
int Event::GetTime() const
{