Диаграмма деятельности представлена на рисунке 2.
В языке UML под состоянием понимается абстрактный класс, используемый для моделирования отдельной ситуации. Диаграмма состояний описывает процесс изменения состояний для одного класса. Главное предназначение этой диаграммы – описать возможные последовательности состояний и переходов, которые в совокупности характеризуют поведение элемента модели.
На рисунке 3 изображена диаграмма состояния.
2 Проектирование программного обеспечения. Логическое представление
2.1 Спецификации требований. Построение диаграммы классов
Центральное место в проектировании модели информационной системы занимает разработка логической модели статического представления моделируемой системы в виде диаграммы классов.
Диаграмма классов служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования.
Объектно-ориентированное программирование – это новый подход к созданию программ. По мере развития вычислительной техники возникали разные методики программирования. На каждом этапе создавался новый подход, который помогал программистам справляться с растущим усложнением программ. Первые программы создавались посредством ключевых переключателей на передней панели компьютера. Очевидно, что такой способ подходит только для очень небольших программ. Затем был изобретен язык ассемблера, который позволял писать длинные программы. Следующий шаг был сделан в 1950 году, когда был создан первый язык высокого уровня Фортран.
Используя язык высокого уровня, программисты могли писать программы до нескольких тысяч строк длинной. Для того времени указанный подход к программированию был наиболее перспективным. Однако язык программирования, легко понимаемый в коротких программах, когда дело касалось больших программ, становился нечитабельным (и неуправляемым). Избавление от таких неструктурированных программ пришло после изобретения в 1960 году языков структурного программирования (structuredprogramminglanguage). К ним относятся языки Алгол, Паскаль и С. Структурное программирование подразумевает точно обозначенные управляющие структуры, программные блоки, отсутствие (или, по крайней мере, минимальное использование) инструкций GOTO, автономные подпрограммы, в которых поддерживается рекурсия и локальные переменные. Сутью структурного программирования является возможность разбиения программы на составляющие ее элементы. Используя структурное программирование, средний программист может создавать и поддерживать программы свыше 50000 строк длиной.
Хотя структурное программирование, при его использовании для написания умеренно сложных программ, принесло выдающиеся результаты, даже оно оказывалось несостоятельным тогда, когда программа достигала определенной длины. Чтобы написать более сложную программу, необходим был новый подход к программированию. В итоге были разработаны принципы объектно-ориентированного программирования. OOP (ObjectOrientedProgramming) аккумулирует лучшие идеи, воплощенные в структурном программировании, и сочетает их с мощными новыми концепциями, которые позволяют оптимально организовывать ваши программы. Объектно-ориентированное программирование позволяет вам разложить проблему на составные части. Каждая составляющая становится самостоятельным объектом, содержащим свои собственные коды и данные, которые относятся к этому объекту. В этом случае вся процедура в целом упрощается, и программист получает возможность оперировать с гораздо большими по объему программами.
Объектно-ориентированное программирование основано на объектах. Под объектом понимается фрагмент кода, который обеспечивает выполнение некоторых операций, объединяет переменные и методы управления ими. Все элементы управления интерфейса (кнопки, панели, и т.д.) являются объектами.
Можно также определить объект как совокупность свойств и методов, а также событий, на которые он может реагировать. Внешнее управление объектом осуществляется через обработчики событий. Эти обработчики обращаются к свойствам и методам объекта. Начальные значения объекта могут задаваться также в процессе проектирования установкой различных свойств. В результате выполнения методов объекта могут генерироваться новые события, воспринимаемые другими объектами программы или пользователем.
Таким образом, объектно-ориентированное программирование основано также и на событиях. Приложение отслеживает события и реагирует на необходимые.
Включать объекты в программу можно вручную, через соответствующие операторы (это делается нечасто), или путем визуального программирования, используя заготовки — компоненты.
Диаграмма классов отражает различные взаимосвязи между отдельными сущностями предметной области, такими как объекты и подсистемы, а также описывает их внутреннюю структуру и типы отношений. Диаграмма классов является дальнейшим развитием концептуальной модели проектируемой системы.
Nomer |
Nomer_mesta: IntegerKlass: StringKolichestvo_mest: IntegerOpisanie: StringStoimost: Integer |
Postoyalec | |
Imya_postoyalca: StringNomer_mesta: IntegerData_zaseleniya:StringData_vuseleniya: StringNomer_ydostovereniya_postoyalca: Integer | |
Dopolnitelnue_yslygi | |
Naimenovanie: StringCena: Integer |
Рисунок 4 – Диаграмма классов
2.2 Анализ структуры базы данных информационной системы «Отель» и блок-схемы системы
После построения модели, необходимо определить, в какой базе данных её строить: локальной или клиент-серверной.
Автономные (локальные) базы данных хранят все данные на том ПК, на котором установлены, при этом вся сеть не используется.
В данном случае это применимо, так как информационная система разрабатывается для АРМ администратора небольшой отеля. Поэтому, основываясь на специфике информационной системы, решено использовать локальную базу данных.
Клиент-серверную модель базы данных можно построить при дальнейшем усовершенствовании этой системы. Например, при добавлении АРМ бухгалтера, АРМ администратора кафе при отелю и так далее.
Единицей хранящейся в БД информации является таблица. Каждая таблица представляет совокупность строк и столбцов. Строки соответствуют экземпляру объекта, конкретному событию или явлению, а столбцы – атрибутам (признакам, характеристикам, параметрам) этого объекта, события, явления.
Теперь определим состав таблиц и их поля и связи. В данной базе данных используется шесть таблиц.
Таблица 1 – Структура таблицы «Номера» (Nomera.db)
Наименование поля | Поле | Тип поля | Ширина поля |
Номер комнаты | Nom_kom | Short | |
Класс | Klass | Alpha | 20 |
Количество мест | Kolvo_mest | Short | |
Стоимость | Stoimost | $ | |
Описание | Opisanie | Alpha | 255 |
Таблица 2 – Структура таблицы «Постояльцы» (Post.db)
Наименование поля | Поле | Тип поля | Ширина поля |
Код постояльца | K_post | Short | |
Фамилия | Fam | Alpha | 20 |
Имя | Im | Alpha | 15 |
Отчество | Otch | Alpha | 20 |
Название организации | Nazv_org | Alpha | 20 |
Номер удостоверения | Nom_ydost | Alpha | 7 |
Таблица 3 – Структура таблицы «Занятость номеров» (Zan_nom.db)
Наименование поля | Поле | Тип поля | Ширина поля |
Номер комнаты | Nom_kom | Short | |
Код постояльца | K_post | Short | |
Дата заселения | Data_zas | Date | |
Дата выселения | Data_vus | Date | |
Код занятости | K_zan | Short |
Таблица 4 – Структура таблицы «Архив выбывших постояльцев» (Arhiv.db)
Наименование поля | Поле | Тип поля | Ширина поля |
Код постояльца | K_post | Short | |
Фамилия | Fam | Alpha | 20 |
Имя | Im | Alpha | 15 |
Отчество | Otch | Alpha | 20 |
Номер удостоверения | Nom_ydost | Alpha | 7 |
Номер комнаты | Nom_kom | Short | |
Срок проживания | Srok_proj | Short |
Таблица 5 – Структура таблицы «Дополнительные услуги» (Dop_ys.db)
Наименование поля | Поле | Тип поля | Ширина поля |
Код услуги | K_ysl | Short | |
Наименование услуги | Naim | Alpha | 20 |
Цена | Cena | Long integer |
Таблица 6 – Структура таблицы «Оказание дополнительных услуг» (Okaz_dy.db)
Наименование поля | Поле | Тип поля | Ширина поля |
Код услуги | K_ysl | Short | |
Номер комнаты | Nom_kom | Short | |
Дата оказания | Data_okaz | Date | |
Код занятости | K_zan | Short |
В каждой таблице определен первичный ключ – поле, однозначно идентифицирующее запись и облегчающее установление связи между таблицами. Первичными ключами являются все первые поля в каждой таблице.
Также были определены индексы. Индексы отличаются от первичных ключей тем, что не требуют непременной уникальности значений входящих в их состав полей. Они устанавливаются по полям, которые часто используются при поиске и сортировке данных: индексы помогут системе значительно быстрее найти нужные данные или отсортировать их в нужной последовательности.
На рисунке 5 приводится алгоритм основной работы информационной системы «Отель».
На рисунках 6 и 7 отображены соответственно процессы фильтрации таблиц и поиска записей в таблицах.