⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scheduler.cpp

📁 这是一个模拟电梯的程序
💻 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 + -