![]() |
elevator
0.7
Симулятор пассажирского лифта
|
Основной класс — симулятор пассажирского лифта Подробнее...
#include <Control.h>
Открытые члены | |
| Control (size_t numberOfFloors, size_t numberOfElevators, size_t capacityOfElevator) | |
| Инициализирующий конструктор Подробнее... | |
| ~Control () | |
| Деструктор Подробнее... | |
| void | MakeStep () |
| Функция выполнения шага моделирования по времени Подробнее... | |
| size_t | getCurrentTime () const |
| Функция запроса текущего времени Подробнее... | |
| void | SetElevatorDestination (size_t elevatorNumber, size_t destination) |
| Функция задания назначения лифту Подробнее... | |
| void | SetElevatorIndicator (size_t elevatorNumber, ElevatorIndicator indicator) |
| Функция задания состояния индикатора лифта (лампочка со стрелочкой, которую видят пассажиры) Подробнее... | |
| size_t | getElevatorDestination (size_t elevatorNumber) const |
| Функция запроса текущего назначения Подробнее... | |
| ElevatorIndicator | getElevatorIndicator (size_t elevatorNumber) const |
| Функция запроса текущего состояния индикатора Подробнее... | |
| bool | isElevatorAchievedDestination (size_t elevatorNumber) const |
| Проверка того, что лифт завершил выполнение текущего назначения Подробнее... | |
| bool | isElevatorEmptyAfterUnloading (size_t elevatorNumber) const |
| Проверка того, что лифт пустой после выхода очередного пассажира Подробнее... | |
| bool | isElevatorEmpty (size_t elevatorNumber) const |
| Проверка того, что кабина лифта пуста Подробнее... | |
| bool | isElevatorGoingUp (size_t elevatorNumber) const |
| Проверка того, что кабина лифта движется вверх Подробнее... | |
| bool | isElevatorGoingDn (size_t elevatorNumber) const |
| Проверка того, что кабина лифта движется вниз Подробнее... | |
| bool | isElevatorStaying (size_t elevatorNumber) const |
| Проверка того, что кабина лифта стоит (не движется) Подробнее... | |
| bool | isElevatorGoingUniformly (size_t elevatorNumber) const |
| Проверка того, что кабина лифта движется равномерно Подробнее... | |
| bool | isElevatorAccelerating (size_t elevatorNumber) const |
| Проверка того, что кабина лифта ускоряется (разгоняется) Подробнее... | |
| bool | isElevatorBreaking (size_t elevatorNumber) const |
| Проверка того, что кабина лифта замедляется (тормозит) Подробнее... | |
| bool | isElevatorDoorsOpening (size_t elevatorNumber) const |
| Проверка того, что у кабины лифта в данный момент открываются двери Подробнее... | |
| bool | isElevatorDoorsClosing (size_t elevatorNumber) const |
| Проверка того, что у кабины лифта в данный момент закрываются двери Подробнее... | |
| bool | isElevatorDoorsOpened (size_t elevatorNumber) const |
| Проверка того, что у кабины лифта в данный момент открыты двери Подробнее... | |
| bool | isElevatorStayingDoorsClosed (size_t elevatorNumber) const |
| Проверка того, что у кабина лифта в данный момент стоит на этаже с закрытыми дверьми Подробнее... | |
| double | getElevatorPosition (size_t elevatorNumber) const |
| Функция запроса текущего положения лифта Подробнее... | |
| const std::vector< bool > & | getFloorUpButtons () const |
| Функция запроса состояний кнопок "вверх" на этажах Подробнее... | |
| const std::vector< bool > & | getFloorDnButtons () const |
| Функция запроса состояний кнопок "вниз" на этажах Подробнее... | |
| bool | getFloorUpButton (size_t floor) const |
| Функция запроса состояния кнопки "вверх" на конкретном этаже Подробнее... | |
| bool | getFloorDnButton (size_t floor) const |
| Функция запроса состояния кнопки "вниз" на конкретном этаже Подробнее... | |
| void | unsetUpButton (size_t floor) |
| Функция сброса (выключения) кнопки "вверх" на конкретном этаже Подробнее... | |
| void | unsetDnButton (size_t floor) |
| Функция сброса (выключения) кнопки "вниз" на конкретном этаже Подробнее... | |
| const std::vector< bool > & | getElevatorButtons (size_t elevatorNumber) const |
| Функция запроса состояний кнопок в кабине лифта Подробнее... | |
| bool | getElevatorButton (size_t elevatorNumber, size_t floor) const |
| Функция запроса состояния конкретной кнопки в кабине лифта Подробнее... | |
| void | AddPassengerToQueue (const PassengerProperties &passProp_) |
| Функция добавления пассажира в очередь Подробнее... | |
| void | ReadTimeTable (const std::string &fileName_) |
| Функция чтения расписания появления пассажиров на этажах Подробнее... | |
| void | PrintElevatorState (size_t elevatorNumber, const std::string &fname="") const |
| Функция печати в файл или на экран состояния лифта в текущий момент времени Подробнее... | |
| void | PrintButtonsState (const std::string &fname="") const |
| Функция печати в файл или на экран состояния кнопок в кабинах и на этажах в текущий момент времени Подробнее... | |
| void | PrintPassengerState (const std::string &fname="") const |
| Функция печати в файл или на экран событий, произошедших с пассажирами за последний шаг (последнюю секунду) Подробнее... | |
| void | PrintStatistics (bool passengersDetails, const std::string &fname="") const |
| Функция печати в файл или на экран итоговой статистики, включая итоговый "рейтинг" (чем меньше - тем лучше!) Подробнее... | |
Открытые атрибуты | |
| const size_t | waitingTime = 5 |
| Время ожидания до закрытия дверей (если только кто-то не нажмет кнопку "ход" раньше) Подробнее... | |
| const size_t | timeEntering = 2 |
| Время между входами двух пассажиров в лифт Подробнее... | |
| const size_t | timeLeaving = 2 |
| Время между выходами двух пассажиров в лифт Подробнее... | |
| const size_t | timeOpening = 4 |
| Время открывания дверей Подробнее... | |
| const size_t | timeClosing = 4 |
| Время закрывания дверей Подробнее... | |
| const size_t | timeAccelerating = 4 |
| Время разгона лифта Подробнее... | |
| const size_t | timeBreaking = 3 |
| Время торможения лифта Подробнее... | |
| const double | veloUniform = 0.25 |
| Скорость равномерно движения лифта (в долях этажа) Подробнее... | |
| Control::Control | ( | size_t | numberOfFloors, |
| size_t | numberOfElevators, | ||
| size_t | capacityOfElevator | ||
| ) |
Инициализирующий конструктор
| [in] | numberOfFloors | число этажей (считая подвальный) |
| [in] | numberOfElevators | число лифтовых кабин |
| [in] | capacityOfElevator | емкость каждой кабины |
См. определение в файле Control.cpp строка 22
| Control::~Control | ( | ) |
| void Control::AddPassengerToQueue | ( | const PassengerProperties & | passProp_ | ) |
Функция добавления пассажира в очередь
| [in] | passProp_ | константная ссылка на список параметров пассажира |
См. определение в файле Control.cpp строка 554

|
inline |
|
inline |
Функция запроса состояния конкретной кнопки в кабине лифта
| [in] | elevatorNumber | номер кабины, состояние кнопки в которой запрашивается |
| [in] | floor | кнопка, состояние которой запрашивается |
См. определение в файле Control.h строка 411

|
inline |
Функция запроса состояний кнопок в кабине лифта
| [in] | elevatorNumber | номер кабины, состояние кнопок в которой запрашивается |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Проверка того, что кабина лифта ускоряется (разгоняется)
Может быть истинной только при закрытых дверях, когда лифт движется вверх или вниз с ускорением (разгоном)
| [in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что лифт завершил выполнение текущего назначения
Назначение считается выполненым, когда
| [in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
См. определение в файле Control.h строка 167

|
inline |
Проверка того, что кабина лифта замедляется (тормозит)
Может быть истинной только при закрытых дверях, когда лифт движется вверх или вниз с замедлением (тормозит)
| [in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что у кабины лифта в данный момент закрываются двери
Может быть истинной только при нахождении лифта на этаже, когда он не движется
| [in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что у кабины лифта в данный момент открыты двери
Может быть истинной только при нахождении лифта на этаже, когда он не движется
| [in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что у кабины лифта в данный момент открываются двери
Может быть истинной только при нахождении лифта на этаже, когда он не движется
| [in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что кабина лифта пуста
Состояние лифта не проверяется - стоит он или едет, открыты или нет двери
| [in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что лифт пустой после выхода очередного пассажира
Возвращает true, если лифт стоит на этаже, и после выхода очередного пассажира лифт оказался пустым — возможно, при этом имеет смысл "включить" индикатор в оба направления, чтобы в любом случае зашел пассажир, стоящий первым в очереди. Но это не обязательно - у Вас может быть своя логика!
Если индикатор лифта "горит" в состоянии both (в обе стороны), при этом он пустой или нет - не важно, и в лифт входит пассажир, то индикатор автоматически переключается в то направление, какую кнопку он нажал, входя в лифт.
Будьте осторожны, "зажигайте" состояние индикатора both (в обе стороны) аккуратно, но и без него обойтись будет трудно!
| [in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что кабина лифта движется вниз
Может быть истинной только при закрытых дверях; едет ли лифт равномерно или с ускорением - не важно
| [in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что кабина лифта движется равномерно
Может быть истинной только при закрытых дверях, когда лифт движется равномерно (не разгоняется и не тормозит)
| [in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
См. определение в файле Control.h строка 250

|
inline |
Проверка того, что кабина лифта движется вверх
Может быть истиной только при закрытых дверях; едет ли лифт равномерно или с ускорением - не важно
| [in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что кабина лифта стоит (не движется)
Может быть истиной не только, когда лифт на этаже (при этом состояние дверей не важно), но и между этажами, когда лифт, к примеру ехал вверх, но поступило новое назначение: а этом случае он тормозит, в течение 1 секунды стоит на месте (в этот ммомент данное условие будет выполненным), а потом разгоняется вниз
| [in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
|
inline |
Проверка того, что у кабина лифта в данный момент стоит на этаже с закрытыми дверьми
Может быть истинной только при нахождении лифта на этаже
| [in] | elevatorNumber | номер кабины, для которой проверяется данное условие |
| void Control::MakeStep | ( | ) |
Функция выполнения шага моделирования по времени
См. определение в файле Control.cpp строка 102


| void Control::PrintButtonsState | ( | const std::string & | fname = "" | ) | const |
Функция печати в файл или на экран состояния кнопок в кабинах и на этажах в текущий момент времени
Если вызывается без аргумента - печать на экран, если с аргументом - печать в файл с данным именем.
Если вызывать эту функцию на каждом шаге по времени - получится полный протокол состояния всех кнопок в кабинах и на этажах
| [in] | fname | имя файла, в корорый выводить состояние |
См. определение в файле Control.cpp строка 742


| void Control::PrintElevatorState | ( | size_t | elevatorNumber, |
| const std::string & | fname = "" |
||
| ) | const |
Функция печати в файл или на экран состояния лифта в текущий момент времени
Если вызывается без аргумента - печать на экран, если с аргументом - печать в файл с данным именем.
Если вызывать эту функцию на каждом шаге по времени - получится полный протокол работы кабины лифта
| [in] | elevatorNumber | номер кабины, состояние котрой печатается |
| [in] | fname | имя файла, в корорый выводить состояние |
См. определение в файле Control.cpp строка 595


| void Control::PrintPassengerState | ( | const std::string & | fname = "" | ) | const |
Функция печати в файл или на экран событий, произошедших с пассажирами за последний шаг (последнюю секунду)
Если вызывается без аргумента - печать на экран, если с аргументом - печать в файл с данным именем.
Выводит сообщения:
| [in] | fname | имя файла, в корорый выводить состояние |
См. определение в файле Control.cpp строка 789


| void Control::PrintStatistics | ( | bool | passengersDetails, |
| const std::string & | fname = "" |
||
| ) | const |
Функция печати в файл или на экран итоговой статистики, включая итоговый "рейтинг" (чем меньше - тем лучше!)
| [in] | passengersDetails | признак печати статистики по каждому пассажиру |
| [in] | fname | имя файла, в корорый выводить состояние |
См. определение в файле Control.cpp строка 821


| void Control::ReadTimeTable | ( | const std::string & | fileName_ | ) |
Функция чтения расписания появления пассажиров на этажах
| [in] | fileName_ | константная ссылка на имя файла с расписанием |
См. определение в файле Control.cpp строка 559

|
inline |
|
inline |
Функция задания состояния индикатора лифта (лампочка со стрелочкой, которую видят пассажиры)
| [in] | elevatorNumber | номер кабины, которой задается назначение |
| [in] | indicator | устанавливаемое значение индикатора (вверх, вниз или в обе стороны) |
См. определение в файле Control.h строка 130

|
inline |
Функция сброса (выключения) кнопки "вниз" на конкретном этаже
| [in] | floor | номер этажа, на котором сбрасывается (гасится) кнопка Добавлена на всякий случай; если на этаже есть пассажиры, и они увидят, что нужная им кнопка погасла - то они ее нажмут |
|
inline |
Функция сброса (выключения) кнопки "вверх" на конкретном этаже
| [in] | floor | номер этажа, на котором сбрасывается (гасится) кнопка Добавлена на всякий случай; если на этаже есть пассажиры, и они увидят, что нужная им кнопка погасла - то они ее нажмут |
| const size_t Control::timeAccelerating = 4 |
| const size_t Control::timeBreaking = 3 |
| const size_t Control::timeClosing = 4 |
| const size_t Control::timeEntering = 2 |
| const size_t Control::timeLeaving = 2 |
| const size_t Control::timeOpening = 4 |
| const double Control::veloUniform = 0.25 |
| const size_t Control::waitingTime = 5 |