/*
* Elevator.h
* ElevatorAssignment
*
* Created by Isaac Huang on 08-6-23.
* Copyright 2008 __MyCompanyName__. All rights reserved.
*
*/
class Elevator
{
private:
int WhichFloor;
public:
Elevator();
void ChangeFloor(int);
int GetFloor();
void Working();
};
/*
* Elevator.cpp
* ElevatorAssignment
*
* Created by Isaac Huang on 08-6-23.
* Copyright 2008 __MyCompanyName__. All rights reserved.
*
*/
#include "Elevator.h"
#include <iostream.h>
Elevator::Elevator():WhichFloor(1){}
void Elevator::ChangeFloor(int num)
{
cout<<"Elevator Goes From "<<WhichFloor<<" To "<<num<<endl;
WhichFloor=num;
}
int Elevator::GetFloor()
{
return WhichFloor;
}
/*
* Building.h
* ElevatorAssignment
*
* Created by Isaac Huang on 08-6-23.
*
*/
#include "Floor.h"
#include "Elevator.h"
class Building
{
private:
Floor Floor1;
Floor Floor2;
Elevator Eleva;
int WorkTime;
public:
Building();
void Running(int);
void Print(int);
};
/*
* Building.cpp
* ElevatorAssignment
*
* Created by Isaac Huang on 08-6-23.
*
*/
#include "Building.h"
#include <stdlib.h>
#include <iostream.h>
#include <time.h>
Building::Building():Floor1(1),Floor2(2),WorkTime(0){}
void Building::Running(int OrderTime)
{
int i,iLater1=0,iLater2=0,Spent;
for(i=1;i<=OrderTime;i+=Spent)
{
Spent=1;
srand(time(0));
int Number1=5+rand()%16;
if((i-iLater1)==Number1)
{
Floor1.CreatePeople();
iLater1=i;
}
srand(time(0));
int Number2=5+rand()%16;
if((i-iLater2)==Number2)
{
Floor2.CreatePeople();
iLater2=i;
}
if(Eleva.GetFloor()==1)
{
if(Floor1.ReturnPeople()!=0)
{
Floor1.GetInside();
Eleva.ChangeFloor(2);
WorkTime++;
Spent=5;
Print(i+Spent);
}
else if(Floor2.ReturnPeople()!=0)
{
Eleva.ChangeFloor(2);
Floor2.GetInside();
Eleva.ChangeFloor(1);
WorkTime++;
Spent=10;
Print(i+Spent);
}
}
else if(Eleva.GetFloor()==2)
{
if(Floor2.ReturnPeople()!=0)
{
Floor2.GetInside();
Eleva.ChangeFloor(1);
WorkTime++;
Spent=5;
Print(i+Spent);
}
else if(Floor1.ReturnPeople()!=0)
{
Eleva.ChangeFloor(1);
Floor1.GetInside();
Eleva.ChangeFloor(2);
WorkTime++;
Spent=10;
Print(i+Spent);
}
}
}
//Print(OrderTime);
}
void Building::Print(int Time)
{
cout<<"Work Time: "<<Time<<"s"<<endl;
cout<<WorkTime<<" People Have Been Transported."<<endl;
cout<<"The Number Of People On The 1st Floor: "<<Floor1.ReturnPeople()<<endl;
cout<<"The Number Of People On The 2nd Floor: "<<Floor2.ReturnPeople()<<endl;
}
/*
* Floor.h
* ElevatorAssignment
*
* Created by Isaac Huang on 08-6-23.
*
*/
class Floor
{
private:
int FloorNumber;
int PeopleOnThisFloor;
public:
Floor(int);
void CreatePeople();
void GetInside();
int ReturnNumber();
int ReturnPeople();
};
/*
* Floor.cpp
* ElevatorAssignment
*
* Created by Isaac Huang on 08-6-23.
*
*/
#include "Floor.h"
Floor::Floor(int num):FloorNumber(num)
{
if(FloorNumber==1)
PeopleOnThisFloor=100;
else
PeopleOnThisFloor=100;
}
void Floor::CreatePeople()
{
PeopleOnThisFloor++;
}
int Floor::ReturnNumber()
{
return FloorNumber;
}
void Floor::GetInside()
{
PeopleOnThisFloor--;
}
int Floor::ReturnPeople()
{
return PeopleOnThisFloor;
}
#include "Building.h"
int main()
{
Building Sample;
Sample.Running(3600);
return 0;
}