资源简介

我学数据结构的时候的大作业 离散事件模拟 附上代码带注释 还有详细的实验报告和实验要求 还有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


评论

共有 条评论