📄 scheduler.cpp
字号:
#include<iostream>
using std::cout;
using std::endl;
#include<new>
#include<cstdlib>
#include<ctime>
#include"scheduler.h"
#include"floor.h"
#include"person.h"
Scheduler::Scheduler(Floor &firstFloor,Floor &secondFloor)
: currentClockTime(0),
floor1Ref(firstFloor),
floor2Ref(secondFloor)
{
srand(time(0));
cout<<"scheduler constructed"<<endl;
schedulerTime(floor1Ref);
schedulerTime(floor2Ref);
}
Scheduler::~Scheduler()
{
cout<<"scheduler destructed"<<endl;
}
void Scheduler::schedulerTime( const Floor &floor)
{
int floorNumber=floor.getNumber();
int arrivalTime=currentClockTime+(5+rand()%16);
floorNumber==Floor::FLOOR1?
floor1ArrivalTime=arrivalTime:
floor2ArrivalTime=arrivalTime;
cout<<"(scheduler schedules next person for floor"
<<floorNumber<<"at time"<<arrivalTime<<')'
<<endl;
}
void Scheduler::delayTime(const Floor &floor)
{
int floorNumber=floor.getNumber();
int arrivalTime=(floorNumber==Floor::FLOOR1)?
++floor1ArrivalTime:++floor2ArrivalTime;
cout<<"(scheduler delays next person for floor"
<<floorNumber<<"until time"<<arrivalTime<<')'
<<endl;
}
void Scheduler::processTime(int time)
{
currentClockTime=time;
handleArrivals(floor1Ref,currentClockTime);
handleArrivals(floor2Ref,currentClockTime);
}
void Scheduler::createNewPerson(Floor &floor)
{
int destinationFloor=
floor.getNumber()==Floor::FLOOR!?
Floor::FLOOR2:Floor::FLOOR1;
Person *newPersonPtr.=new Person(destinationFloor);
cout<<"scheduler creates person"
<<newPersonPtr->getID()<<endl;
newPersonPtr->stepOntoFloor(floor);
shcedulerTime(floor);
}
void Scheduler::handleArrivals(Floor &floor,int time)
{
int floorNumber =floor.getNumber();
int arrivalTime=(floorNumber==Floor::FLOOR1)?
floor1ArrivalTime:floor2ArrivalTime;
if(arrivalTime==time){
if(floor.isOccupied())
delayTime(floor);
else
createNewPerson(floor);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -