资源简介
我学数据结构的时候的大作业
离散事件模拟
附上代码带注释
还有详细的实验报告和实验要求
还有visio的流程图文件也在里面
还有我第一次错误的思路的代码也附上 方便读者理解
代码片段和文件信息
/**
* ----------------------银行系统模拟---------------------
*
* Desinged by wankaiming
*
*
*
*
*/
#include
#include
#include
#include
#define random(x) (rand()%x) //产生随机数
using namespace std;
//--------事件类
class Event{
public:
int time;//事件发生时间单位是秒如果在离开队列就是离开时候的时间
int customerId;//顾客号
int windowId;//服务窗口
int waittime;//等待时间
int servetime;//服务时间
Event(){
time=0;
customerId=0;
windowId=0;
waittime=0;
servetime=0;
}
friend bool operator < (Event a Event b)
{
return a.time> b.time; //结构体中,x小的优先级高
}
};
//-----------服务窗口类
class ServiceWin{
public:
int id;
bool state; //1表示可以接收服务 0表示不能接收服务
double efficiency; //工作效率
double totalwait; //总等待时间
double customerSum;//总顾客数
double avgWait; //平均等待时间
double totalserve;
int canServe; //最早服务时间
ServiceWin(){
state=true;
canServe=0;
totalwait=0;
customerSum=0;
avgWait=0;
efficiency=0;
totalserve=0;
}
};
//打印窗口信息
void printInfo(ServiceWin s[]Event e){
cout<<“==========================================================================“< cout<<“*** 各窗口最早服务时间如下“< for(int i=0;i<4;i++){ // 如果最早可服务时间早于顾客到达事件的时间,则将最早可服务时间调整到当前时间
if(s[i].canServe cout<<“*** 窗口“< s[i].canServe=e.time; //设为顾客到达事件的时间
}
else{
cout<<“*** 窗口“< }
}
cout<<“===========================================================================“<
}
//判断是否有窗口空闲 返回值小于4,则返回空闲的窗口号,若等于4表示没有空闲窗口
int judge(ServiceWin s[]){
int i=0;
for(i=0;i<4;i++){
if(s[i].state==true){
break; //窗口i是空闲窗口
}
}
return i;
}
//初始化到达队列,将所有的达到事件加入到到达事件队列
priority_queue InitArriveQueue(int eventnumint len){
srand((int)time(0));
priority_queue q;
for(int i=0;i< (len*eventnum) ;i++){ //len*eventnum是模拟系统中产生的总事件数
Event e;//记录到达事件
e.customerId=i;
e.servetime=random(30)*60; //假设每次产生随机的服务时间再30分以内
e.time=random(60)*60+(i/eventnum)*3600; //(i%eventnum)*3600当超过每小时发生的到达事件数的时候加1小时,保证频率
q.push(e);
}
return q;
}
void freeWin(priority_queue &departEvent &dServiceWin s[]){
cout<<“顾客号为“< cout<<“服务窗口号为:“< s[d.windowId].state=true;
cout<
}
void changeWinTime(ServiceWin s[]int currenttime){
for(int i=0;i<4;i++){
if(s[i].canServe }
}
//到空闲窗口服务 加入离开队列 设定时间戳
void gotoWin(int judgecountpriority_queue &departEvent &eServiceWin s[]){
int i=judgecount;
in
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 307911 2012-05-01 09:39 数据结构大作业\Debug\main.obj
文件 244147 2012-05-01 13:12 数据结构大作业\Debug\mymain.obj
文件 99328 2012-05-01 13:19 数据结构大作业\Debug\vc60.idb
文件 143360 2012-05-01 13:12 数据结构大作业\Debug\vc60.pdb
文件 536701 2012-05-01 13:12 数据结构大作业\Debug\数据结构大作业.exe
文件 800112 2012-05-01 13:12 数据结构大作业\Debug\数据结构大作业.ilk
文件 3108044 2012-05-01 12:13 数据结构大作业\Debug\数据结构大作业.pch
文件 1123328 2012-05-01 13:12 数据结构大作业\Debug\数据结构大作业.pdb
文件 7767 2012-06-15 12:17 数据结构大作业\mymain.cpp
文件 4366 2012-05-01 10:24 数据结构大作业\数据结构大作业.dsp
文件 553 2012-04-29 18:21 数据结构大作业\数据结构大作业.dsw
文件 41984 2012-05-01 13:20 数据结构大作业\数据结构大作业.ncb
文件 49664 2012-05-01 13:20 数据结构大作业\数据结构大作业.opt
文件 921 2012-05-01 13:12 数据结构大作业\数据结构大作业.plg
文件 7961 2012-06-15 12:17 main(一开始的错误代码).txt
文件 64000 2012-04-30 23:38 错误流程图.vsd
文件 69120 2012-05-01 12:58 数据结构大作业.vsd
文件 233984 2012-06-15 12:18 数据结构大作业wankaiming.doc
目录 0 2012-05-01 13:21 数据结构大作业\Debug
目录 0 2012-05-01 13:20 数据结构大作业
....... 50176 2002-04-28 13:05 数据结构大型实验题目-2011.doc
----------- --------- ---------- ----- ----
6893427 21
评论
共有 条评论