Курсовая работа - Кодовый замок регулирующий доступ в помещение(Прочитано 62780 раз)
Приветствую формучан! В связи с сессией и большой загруженностью немного пропал :), исправляюсь. Как и обещал выкладываю результат своей работы. Ошибки конечно есть, но время поджимало и в итоге получилось то что получилось. Смело критикуйте. Надеюсь кому-то будет полезен этот материал.



Use Case



что-то не получается у меня запостить рисунок



ОПИСАНИЕ ДИАГРАММЫ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ (Use Case Diagram)

Вариант использования: «Открыть дверь»
ID 1
Краткое описание:
Данный вариант использования позволяет человеку находящемуся снаружи охраняемого помещения попасть внутрь.
Основное действующее лицо:
Человек снаружи
Второстепенные действующие лица:
Нет
Предусловия:
Нет
Основной поток событий:
1. ВИ начинается, когда Человек снаружи вводит код доступа.
2. Система отображает введенный код на цифровом дисплее.
3. Система проверяет введенный код.
4. Если код доступа введен верно
система открывает электромеханический замок
Иначе
подает звуковой сигнал, информируя, что введен неправильный код доступа.
5. Вариант использования завершается.
Альтернативный поток событий:
Нет
Постусловия:
Если Человек снаружи ввел верный код доступа, то дверь открыта, иначе дверь закрыта.

Вариант использования: «Вызвать»
ID 2
Краткое описание:
Данный вариант использования дает возможность человеку снаружи подать звуковой сигнал внутри помещения для того чтобы начать разговор с человеком внутри.
Основное действующее лицо:
Человек снаружи
Второстепенные действующие лица:
Человек внутри
Предусловия:
Нет
Основной поток событий:
1. ВИ начинается, когда Человек снаружи нажимает кнопку «Вызов».
2. Система подает внутри помещения 10 кратковременных звонков с интервалом 2 секунды.
3. Если человек внутри нажимает кнопку «Ответ» в течении времени пока раздаются звонки.
3.1. Система прерывает звонки.
3.2. Система включает микрофон и громкоговоритель на обоих панелях, начинается разговор.
4. Если Человек внутри не нажал кнопку «Ответ» пока раздаются звонки.
4.1. Система подает сигнал ошибки, Человеку снаружи, информируя, что ответа нет.
5. Вариант использования завершается.
Альтернативный поток событий:
Нет
Постусловия:
Если человек внутри нажал «Ответ» система включает громкоговоритель и микрофон для разговора, иначе раздается сигнал информирующий что ответа нет.

Вариант использования: «Открыть замок (изнутри)»
ID 3
Краткое описание:
Данный вариант использования позволяет человеку находящемуся внутри открыть электромеханический замок изнутри.
Основное действующее лицо:
Человек внутри
Второстепенные действующие лица:
Нет
Предусловия:
Нет
Основной поток событий:
1. ВИ начинается, когда Человек внутри нажимает кнопку «Открыть».
2. Система открывает электромеханический замок.
3. Вариант использования завершается.
Альтернативный поток событий:
Нет
Постусловия:
Дверь открыта

Вариант использования: «Сменить код доступа»
ID 4
Краткое описание:
Данный вариант использования позволяет пользователю сменить код доступа необходимый для доступа в помещение.
Основное действующее лицо:
Человек снаружи
Второстепенные действующие лица:
Нет
Предусловия:
Дверь открыта
Основной поток событий:
1. ВИ начинается, когда Человек снаружи нажимает кнопку «Контроль»
2. Система запрашивает код контроля.
3. Пользователь вводит код контроля.
4. Система отображает введенный код на цифровом дисплее.
5. Система проверяет введенный код.
6. Если Человек снаружи ввел код контроля верно
6.1. Система запрашивает новый код доступа
6.2. Человек снаружи вводит новый код доступа.
6.3. Система сохраняет новый код доступа.
7. Если Человек снаружи ввел код контроля не верно
7.1. Система подает звуковой сигнал, информируя, что введен неправильный код контроля.
8. Вариант использования завершается.
Альтернативный поток событий:
Нет
Постусловия:
Если Человек снаружи ввел верный код контроля, то код доступа изменен, иначе код доступа остался прежним.

Вариант использования: «Сменить код контроля»
ID 5
Краткое описание:
Данный вариант использования позволяет пользователю при открытой двери сменить код контроля используемый для контроля смены кода доступа.
Основное действующее лицо:
Человек снаружи
Второстепенные действующие лица:
Цифровой дисплей
Предусловия:
Дверь открыта
Основной поток событий:
1. ВИ начинается, когда Человек снаружи нажимает кнопку «Вызов».
2. Система запрашивает код контроля.
3. Человек снаружи вводит код контроля.
4. Система отображает введенный код на дисплее.
5. Система проверяет введенный код.
6. Если Человек снаружи ввел код контроля верно
6.1. Система запрашивает новый код контроля
6.2. Человек снаружи вводит новый код контроля.
6.3. Система сохраняет новый код контроля.
7. Если Человек снаружи ввел код контроля не верно
7.1. Система подает звуковой сигнал, информируя, что введен неправильный код контроля
8. Вариант использования завершается.
Альтернативный поток событий:
Нет
Постусловия:
Если Человек снаружи ввел верный код контроля, то код контроля изменен, иначе код контроля остался прежним.

Вариант использования: «Ответить»
ID 6
Краткое описание:
Данный вариант использования дает возможность человеку внутри ответить человеку снаружи.
Основное действующее лицо:
Человек внутри
Второстепенные действующие лица:
Человек снаружи
Предусловия:
Звонок внутри помещения
Основной поток событий:
1. ВИ начинается, когда Человек внутри нажимает кнопку «Ответ».
2. Система включает микрофон и громкоговоритель с обеих сторон двери.
3. Вариант использования завершается.
Альтернативный поток событий:
Нет
Постусловия:
Нет

ЭТО ОКОНЧАТЕЛЬНЫЙ ВАРИАНТ КОТОРЫЙ БЫЛ СДАН



ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТЕЙ И КООПЕРАЦИИ (Sequence Diagram Communication Diagram)

На основании выявленных вариантов использования были разработаны классы будущей программы. Затем были построены диаграммы последовательности и кооперации.

Были выявлены классы:
COutsidePanel – класс наружной панели
CSystem – класс системы
CInsidePanel – класс внутренней панели

ВИ «Открыть дверь»
Человек снаружи нажимает кнопку цифра (0-9), (выполняется функция COutsidePanel::EnterKeyNumber(), затем в системе сохраняется значение последней нажатой клавиши (выполняется функция CSystem::SetLastKey()). Система проверяет статус двери (выполняется функция CSystem::GetState()), если дверь открыта система ждет пока не будут введены четыре цифры пароля (выполняется функция CSystem::SetFourDigits()). После набора четырех цифр система начинает проверку введенного кода (выполняется функция CSystem::VerificationPassword()). Если введенный код не проходит проверку система подает сигнал «ошибка» (выполняется функция COutsidePanel::StartRingError()). Если код введен верно система открывает электромеханический замок (выполняется функция CSystem::OpenLock()). Статус двери изменяется (выполняется функция CSystem::SetDoorStatus()).

ВИ «Вызвать»
Человек снаружи нажимает кнопку «Вызов» (выполняется функция COutsidePanel::EnterKeyRing()). Внутри помещения раздается звонок (выполняется функция CInsidePanel::StartRingCall()). Если человек внутри в течение времени пока раздается звонок (10 с) не нажал кнопку «Ответ», снаружи раздается сигнал «ошибка» (выполняется функция COutsidePanel::StartRingError()). Если человек внутри нажимает кнопку «Ответ» в течении времени сигнала «звонок» (10 с), сигнал «звонок» прерывается (выполняется функция CInsidePanel::StopRingCall()), на внутренней панели включается громкоговоритель (выполняется функция CInsidePanel::OnSpeaker()) и микрофон (выполняется функция CInsidePanel::OnMicrophone()), также на наружной панели включается громкоговоритель (выполняется функция COutsidePanel::OnSpeaker()) и микрофон (выполняется функция COutsidePanel::OnMicrophone()). По окончанию разговора человек внутри снова нажимает кнопку «Ответ», на внутренней панели выключается микрофон (выполняется функция CInsidePanel::OffMicrophone()) выключается громкоговоритель (выполняется функция CInsidePanel::OffSpeaker()), также на наружной панели выключается микрофон (выполняется функция COutsidePanel::OffMicrophone()) выключается громкоговоритель (выполняется функция COutsidePanel::OffSpeaker()).

ВИ «Открыть замок (изнутри)»
Человек внутри помещения нажимает кнопку «Открыть» (выполняется функция CInsidePanel::EnterKeyOpen()), система открывает электромеханический замок (выполняется функция CSystem::OpenLock()). Статус двери изменяется (выполняется функция CSystem::SetDoorStatus()).

ВИ «Сменить код доступа»
Человек снаружи нажимает кнопку «Контроль» (выполняется функция COutsidePanel::EnterKeyControl()), происходит проверка статуса двери (выполняется функция CSystem::GetDoorStatus()). Если дверь закрыта то раздается сигнал «ошибка» (выполняется функция COutsidePanel::StartRingError()). Если дверь открыта человек вводит код контроля (выполняется функция CSystem::EnterControlPassword()), система меняет статус (выполняется функция CSystem::SetState()). Устанавливается значение нажатой клавиши (выполняется функция CSystem::ChangeAccessPassword()) фиксируется изменение нажата кнопка «Контроль» (выполняется функция CSystem::SetVizozOrControl()). Начинается проверка введенного пароля (выполняется функция CSystem::VerificationPassword()). Если введенный пароль неправильный подается сигнал «ошибка» (выполняется функция COutsidePanel::StartRingError()). Если введенный пароль правильный запрашивается новый пароль, новый пароль сохраняется (выполняется функция CSystem::SavePassword()).

ВИ «Сменить код контроля»
Человек снаружи нажимает кнопку «Вызов» (выполняется функция COutsidePanel::EnterKeyRing()), происходит проверка статуса двери (выполняется функция CSystem::GetDoorStatus()). Если дверь закрыта то внутри помещения раздается звонок (выполняется функция CInsidePanel::StartRingCall()) выполняется ВИ «Вызвать». Если дверь открыта человек вводит код контроля (выполняется функция CSystem::EnterControlPassword()), статус проверки кода изменяется (выполняется функция CSystem::SetState()).Фиксируется изменение нажата кнопка «Вызов» (выполняется функция CSystem::SetVizozOrControl()). Начинается проверка введенного пароля (выполняется функция CSystem::VerificationPassword()). Если введенный пароль неправильный подается сигнал «ошибка» (выполняется функция COutsidePanel::StartRingError()). Если введенный пароль правильный запрашивается новый пароль, новый пароль сохраняется (выполняется функция CSystem::SavePassword()).

ВИ «Ответить»
Человек внутри во нажимает кнопку «Ответить» (выполняется функция CInsidePanel::EnterKeyAnswer()). Проверка сигнала «звонок» (выполняется функция CInsidePanel::GetRingStatus()). Если сигнал «звонок» есть на внутренней панели включается микрофон (выполняется функция CInsidePanel::OnMicrophone()), на наружной панели включается громкоговоритель (выполняется функция COutsidePanel::OnSpeaker()), на внутренней панели включается громкоговоритель (выполняется функция CInsidePanel::OnSpeaker()), на наружной панели включается микрофон (выполняется функция COutsidePanel::OnMicrophone()).




продолжение



продолжение



ДИАГРАММЫ СОСТОЯНИЙ (State Mashine Diagram)

Объекты классов COutsidePanel, CInsidePanel, CSystem во время выполнения программы могут находится в разных состояниях. Свое состояние они могут менять как от действий пользователя так и в результате получения сообщений от друг друга. По завершению варианта использования объекты всегда возвращаются в исходное состояние.
На диаграммах состояния представлены состояния объектов в которых они могут находиться и события инициирующие переходы из одного состояния в другое.

Класс наружная панель – COutsidePanel
Данный класс может находится в 4-х состояниях:
1. «микрофон и громкоговоритель выключены» - начальное состояние
2. «микрофон включен» - микрофон включен, принимает звук
3. «громкоговоритель включен» - громкоговоритель включен, передает звук
4. «сигнал «ошибка»» - неверное действие, звучит сигнал «ошибка»

Класс внутренняя панель – CInsidePanel
Данный класс может находится в 4-х состояниях:
1. «микрофон и громкоговоритель выключены» - начальное состояние
2. «микрофон включен» - микрофон включен, принимает звук
3. «громкоговоритель включен» - громкоговоритель включен, передает звук
4. «сигнал «звонок»» - вызов, звучит сигнал «звонок»

Класс наружная панель – CSystem
Данный класс может находится в 6-и состояниях:
1. «дверь закрыта» - начальное состояние
2. «дверь открыта» - код доступа правильный, дверь открыта
3. «введен код доступа» - введен код доступа
4. «введен код контроля» - дверь открыта, введен код контроля
5. «изменен код доступа» - код контроля правильный, новый код доступа сохранен
6. «изменен код контроля» - код контроля правильный, новый код контроля сохранен



ДИАГРАММЫ КЛАССОВ (Class Diagram)

На диаграмме классов представлена структура классов системы.
Диаграмма состоит:
1.   COutsidePanel – класс наружной панели
2.   CInsidePanel – класс внутренней панели
3.   CSystem – класс системы в целом
4.   ZamocDoc – класс «документ» (MFC)
Класс CSystem описывает систему в целом. Классы панелей обмениваются данными между собой через систему.
Класс «документ» содержит экземпляры всех классов системы.



ДИАГРАММЫ КОМПОНЕНТОВ (Component Diagram)

На диаграмме компонентов представлены компоненты проекта. Связи обозначают зависимости между ними при компиляции, порядок подключения заголовочных файлов.
CSystem.h+CSystem.cpp – определение и реализация класса CSystem
COutsidePanel.h+COutsidePanel.cpp – определение и реализация класса COutsidePanel
CInsidePanel.h+CInsidePanel.cpp – определение и реализация класса CInsidePanel
ZamocDoc.h+Zamoc.cpp – определение и реализация класса «документ» (MFC)



ОПИСАНИЕ ПРОГРАММЫ

COutsidePanel – класс наружной панели
Класс наружная панель служит интерфейсом для взаимодействия с системой пользователя снаружи охраняемого помещения.
Атрибуты:
int ring_error_status - хранит состояние сигнала "ошибка"
int outside_speak_status - хранит информацию о состоянии громкоговорителя
int outside_mic_status - хранит информацию о состоянии микрофона
Методы:
int GetRingErStatus() - метод получения статуса сигнала "ошибка"
int GetOutsideMicStatus() - метод служит для получения статуса микрофона
intGetOutsideSpStatus() - метод служит для получения статуса громкоговорителя
int OnMicrophone() - метод включает микрофон
int OffMicrophone() - метод выключает микрофон
int OnSpeaker() - метод включает громкоговоритель
int OffSpeaker() - метод выключает громкоговоритель
int StartRingError() - метод старта сигнала "ошибка"
int StopRingError() - метод остановки сигнала ошибка
void EnterKeyNumber(int KEY) - метод реакции на нажатую клавишу
Номер (0-9)
int EnterKeyRing() - метод реакции на нажатую клавишу Вызов
int EnterKeyControl() - метод реакции на нажатую клавишу Контроль

CInsidePanel – класс внутренней панели
Класс внутренняя панель служит интерфейсом между пользователем внутри помещения и системой.
Атрибуты:
int ring_status - хранит состояние сигнала "звонок"
int inside_mic_status - хранит информацию о состоянии микрофона
int inside_speak_status - хранит информацию о состоянии громкоговорителя
Методы:
int GetRingStatus() - метод получения статуса сигнала "звонок"
int GetInsideMicStatus() - метод служит для получения статуса микрофона
int GetInsideSpeakStatus() - метод служит для получения статуса
громкоговорителя
int OnMicrophone() - метод включает микрофон
int OffMicrophone() - метод выключает микрофон
int OnSpeaker() - метод включает громкоговоритель
int OffSpeaker() - метод выключает громкоговоритель
int StartRingCall() - метод старта сигнала "звонок"
int StopRingCall() - метод остановки сигнала "звонок"
int EnterKeyAnswer() - метод реакции на нажатую клавишу Ответ
int EnterKeyOpen() - метод реакции на нажатую клавишу Открыть

CSystem – класс системы
Класс системы обменивается данными с классами наружной и внутренней панели. Имитирует работу системы регулирующей доступ в помещение в целом.
Атрибуты:
int door_status - хранит состояние двери (отк-закр)
int control_password - хранит пароль контроля
int access_password - хранит пароль доступа
int last_key - хранит значение последней нажатой клавиши
int state – хранит состояние (необходимо для переключения сохранения либо код доступа либо код контроля)
int vizov_or_control – хранит информацию нажатой клавиши (контроль или вызов, служит для переключения)
CByteArray four_digits - коллекция типа Array для хранения набранного пароля
int i -  просто счетчик
Методы:
int GetState() - метод получения значения переменной статуса
void SetState (int STATE) - метод установки значения переменной статуса
int GetVozovOrControl () – метод получения значения переменной vizov_or_control
void SetVizivOrControl (int vizov_or_control) - метод установки значения переменной vizov_or_control
int GetDoorStatus() - метод получения статуса двери
void SetDoorStatus(int DOOR_STATUS) - метод установки статуса двери
void SetFourDigits(int FOUR_DIGITS) – метод установки значения переменной four_digits
int EnterControlPassword() - метод установки значени статус (смена контроля)
int EnterAccessPassword() - метод установки значени статус (смена доступа)
int GetLastKey() - метод получить значения последней нажатой клавиши
void SetLastKey(int KEY) - метод установить значение последней клавиши
int GetPassword() - метод получить значение пароля
int SavePassword() - метод сохранить зачения пароля
int VerificationPassword() - метод проверки пароля
int ChangeContolPassword() - метод сменить код контроля
int ChangeAccessPassword() - метод сменить код доступа
int OpenLock() - метод открыть замок
int CloseLock() - метод закрыть замок



РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

Программа представляет собой оконное приложение. Окно программы разделено на 3 области

1-я область представляет вид панели устанавливаемой снаружи охраняемого помещения. Непосредственно с ней взаимодействует любой человек находящийся снаружи помещения.
2-я область представляет вид панели устанавливаемой внутри охраняемого помещения. Непосредственно с ней взаимодействует любой человек находящийся внутри помещения.
3-я область служит для наглядного представления о текущем состоянии элементов системы.

Код доступа по умолчанию: 1234
Код контроля по умолчанию: 4321

1.   Открыть дверь.
Для того чтобы открыть дверь (находясь снаружи) необходимо ввести код доступа состоящий их 4-х цифр. Для этого нужно нажать последовательно на кнопки с соответствующим номером. Если код введен правильно дверь открывается.

2.   Вызвать.
Для того чтобы вызвать человека находящегося внутри помещения необходимо нажать кнопку вызов. После чего внутри помещения начнет раздаваться сигнал «звонок». Если человек внутри помещения в течении 10 секунд пока раздается звонок нажимает кнопку «Ответить» начинается разговор. Иначе подается сигнал «ошибка». Для того чтобы закончить разговор человеку внутри необходимо еще раз нажать кнопку «Ответить».

3.   Открыть замок (изнутри).
Для того чтобы открыть замок (изнутри), человеку находящемуся внутри необходимо нажать кнопку «Открыть» на внутренней панели. После нажатия кнопки электромеханический замок открывается.

4.   Сменить код доступа.
Для того чтобы сменить код доступа необходимо чтобы дверь была открыта. Для смены кода доступа необходимо на наружной панели нажать кнопку «Контроль», после чего ввести код контроля состоящий из 4-х цифр. Если код контроля введен верно, можно вводить новый код доступа. Система сохранит новый код доступа.

5.   Сменить код контроля.
Для того чтобы сменить код контроля необходимо чтобы дверь была открыта. Для смены кода контроля необходимо на наружной панели нажать кнопку «Вызов», после чего ввести текущий код контроля. Если код контроля введен верно, можно вводить новый код контроля. Система сохранит новый код контроля.

6.   Ответить.
Для того чтобы начать разговор с человеком снаружи, человеку находящемуся внутри необходимо в течении 10 секунд пока раздается сигнал «звонок» нажать кнопку «Ответить» на внутренней панели. После чего на обоих панелях включаются громкоговорители и микрофоны и начинается разговор.



Activity Diagram

ОКОНЧАТЕЛЬНЫЙ ВАРИАНТ КОТОРЫЙ БЫЛ СДАН



продолжение



Cобственно все, если что забыл запостить - пишите.

Выражаю огромную благодарность всем тем кто давал советы и оставлял комментарии!

Special thanks: Galogen, bas, Виктор Малышко, 474.

p.s. В настоящее время ведется работа по написанию дипломного проекта, там тоже будет использоваться UML при проектировании так что я не прощаюсь :).




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19