📄 page122.cpp
字号:
#include <iostream.h>
// #include "stdlib.h"
enum EventType { Arrival, Departure };
class Event { //事件类定义
public:
Event ( ); //构造函数
Event ( int t, EventType et, int cn, int tn, int wt, int st ); //构造函数
int GetTime ( ) const; //取出到达或离开时间,视类型不同
EventType GetEventType ( ) const; //取出事件类型
int GetCustomerID ( ) const; //取出客户标识
int GetTellerID ( ) const; //取出出纳窗口标识
int GetWaitTime ( ) const; //取出等待时间
int GetServiceTime ( ) const; //取出服务时间
private:
int time; //客户到达 | 离开时间
EventType eType; //客户类型:Arrival | Departure
int customerID; //客户标识,编号为1, 2, 3, …
int tellerID; //出纳窗口标识,编号为1, 2, 3, …
int waitTime; //客户等待时间
int serviceTime; //客户服务时间
};
struct TellerStatus { //有关出纳窗口的信息的记录
int finishService; //什么时候出纳窗口空闲
int totalCustomerCount; //服务过的客户总数
int totalCustomerWait; //客户总的等待时间
int totalService; //总的服务时间
};
#include <pqueue.h>
class Simulation { //模拟类声明
public:
Simulation ( ); //构造函数
void RunSimulation ( ); //执行模拟
void PrintSimulationResults ( ); //打印状态
private:
int simulationLength; //模拟的时间长度
int numTellers; //出纳窗口个数
int nextCustomer; //下一位客户的编号
int arrivalLow, arrivalHigh; //下一次到达的时间范围
TellerStatus tstat [11]; //最多10个出纳窗口
PQueue<Event> pq; //优先级队列
//RandomNumber rnd; //用于到达和服务的时间
int NextArrivalTime ( ); //私有函数: 产生下一次到达的时间
int GetServiceTime ( ); //私有函数: 取得服务时间
int NextAvailableTeller ( ); //私有函数: 产生下一个可用的出纳窗口
};
Simulation::Simulation ( ) { //构造函数
Event firstEvent ( 0, Arrival, 1, 0, 0, 0 ); //第一个到达事件
for ( int i=1; i<=10; i++ ) { //初始化出纳窗口信息
tstat[i].finishService = 0;
tstat[i].totalService = 0;
tstat[i].totalCustomerWait = 0;
tstat[i].totalCustomerCount = 0;
}
nextCustomer = 1; //下一位客户编号从1开始
cout << "Enter the simulation time in minutes : ";
cin >> simulationLength; //输入模拟时间长度(以分钟计)
cout << "Enter the number of bank tellers : ";
cin >> numTellers; //输入出纳窗口个数
cout << "Enter the range of arrival time in minutes : ";
cin >> arrivalLow >> arrivalHigh; //输入下一次到达的时间范围
cout << "Enter the range of service time in minutes : ";
cin >> serviceLow >> serviceHigh; //输入服务的时间范围
pq.PQInsert ( firstEvent );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -