#ifndef ElevatorSetup
#define ElevatorSetup
class Elevator
{
public:
//Sensors of elevator
bool door_closed;
bool elevator_moving;
bool elevator_at_floor;
bool elevator_between_floors;
//Elevator Properties
int total_floors;
int current_floor;
int no_basement;
public:
//Control signals
time_t change_door_status(bool);
void move_elevator(int);
void stop_elevator();
//Buttons
void summon_elevator();
void go_to_floor();
//Action to close door
void check_door(time_t, time_t);
bool check_floor(int);
//Constructor to make elevator object
Elevator(int floors, int basements);
};
#endif
#include <iostream>
#include "ElevatorSetup.h"
#include <time.h>
#include <windows.h>
using namespace std;
Elevator::Elevator(int floors, int basements)
{
total_floors = floors;
no_basement = basements;
door_closed = true;
elevator_moving = false;
elevator_at_floor = true;
elevator_between_floors = false;
current_floor = 0;
}
time_t Elevator::change_door_status(bool new_status)
{
if (new_status)
{
door_closed = new_status;
cout << "\n\tClosing doors . . ." << endl;
}
else
{
door_closed = new_status;
cout << "\n\tOpening doors . . ." << endl;
}
return time(0);
}
void Elevator::move_elevator(int floor)
{
change_door_status(true);
cout << "\n\tElevator is moving";
if (floor < current_floor)
{
while (floor != current_floor)
{
cout << "\n\n\tCurrent Floor: " << current_floor;
current_floor--;
Sleep(1000);
}
}
else if (floor > current_floor)
{
while (floor != current_floor)
{
cout << "\n\n\tCurrent Floor: " << current_floor;
current_floor++;
Sleep(1000);
}
}
current_floor = floor;
}
void Elevator::summon_elevator()
{
cout << "\n\t-----------------------------------";
cout << "\n\t| Summon Elevator |";
cout << "\n\t-----------------------------------";
int floor;
do
{
cout << "\n\tEnter your current floor (0 for ground and - for basement): ";
cin >> floor;
} while (check_floor(floor));
move_elevator(floor);
void Elevator::go_to_floor()
{
cout << "\n\t-----------------------------------";
cout << "\n\t| Welcome! Please Enter |";
cout << "\n\t-----------------------------------";
int floor;
do
{
cout << "\n\tWhich floor do you want to go to (0 for ground and - for
basement): ";
cin >> floor;
} while (check_floor(floor));
move_elevator(floor);
void Elevator::check_door(time_t start_time, time_t current_time)
{
if ((current_time - start_time) > 3 && !door_closed)
{
change_door_status(true);
}
}
bool Elevator::check_floor(int floor)
{
if ((floor < -no_basement) || (floor > total_floors))
{
return true;
}
return false;
}
#include <iostream>
#include <time.h>
#include "ElevatorSetup.h"
#include <windows.h>
using namespace std;
//Global variable to keep track of whether menu is displayed
bool menu = true;
int main(void)
{
//Taking input the elevator properties first time elevator is setup
int password;
cout << "\n\tEnter Admin Password to setup Elevator: ";
cin >> password;
while (password != 12345)
{
cout << "\n\tPlease try again: ";
cin >> password;
}
cout << "\n\t-----------------------------------";
cout << "\n\t| Welcome to Buddies Elevator |";
cout << "\n\t-----------------------------------";
int highest_floor;
cout << "\n\tEnter the highest floor: ";
cin >> highest_floor;
while (highest_floor < 0 || highest_floor > 200)
{
cout << "\n\tInvalid Entry. Try again: ";
cin >> highest_floor;
}
int no_of_basements;
cout << "\tEnter the number of basements: ";
cin >> no_of_basements;
while (no_of_basements < 0 || no_of_basements > 10)
{
cout << "\n\tInvalid Entry. Try again: ";
cin >> no_of_basements;
}
Elevator BuddiesElevator(highest_floor, no_of_basements);
cout << "\n\tSetup Complete! You are ready to go ... ";
time_t start_time = time(0);
while (1)
{
BuddiesElevator.check_door(start_time, time(0));
if (menu)
{
BuddiesElevator.summon_elevator();
start_time = BuddiesElevator.change_door_status(false);
menu = false;
}
if (!menu)
{
BuddiesElevator.go_to_floor();
start_time = BuddiesElevator.change_door_status(false);
menu = true;
return 0;
}