Диплом: Разработка автоматизированной системы подбора и бронирования круизов на примере ООО «Технологиятур»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
67
Таблица 8
Таблица Country (Страны)
Наименование поля
Идентификатор поля
Тип поля
Длина
поля
Прочее
Идентификатор
id
int
11
AI
Наименование
caption
varchar
255
Состояние
active
boolean
1
Дата изменения
modifiedat
datetime
Таблица 9
Таблица Laner (Лайнер)
Наименование поля
Идентификатор поля
Тип поля
Длина
поля
Прочее
Идентификатор
id
int
11
AI
Наименование
caption
varchar
255
Описание
description
text
65565
Количество палуб
palub
integer
8
Количество
бассейнов
bassein
integer
8
Фотография
photo
varchar
255
Длина
length
decimal
10
Ширина
width
decimal
10
Скорость
speed
decimal
10
Водоизмещение
volume
decimal
10
Максимальное
количество
пассажиров
numpas
integer
8
Дата изменения
modifiedat
datetime
Состояние
active
boolean
1
Таблица 10
Таблица CruiseInsurance (страхования в круизе)
Наименование поля
Идентификатор
поля
Тип поля
Длина
поля
Прочее
Идентификатор
id
integer
8
AI
Цена
price
decimal
10
Код страхования
insuranceid
integer
8
FK
Код круиза
cruiseid
integer
8
FK
Таблица 11
Таблица Insurance (Страхование)
Наименование поля
Идентификатор поля
Тип поля
Длина
поля
Прочее
Идентификатор
id
int
11
AI
Наименование
caption
varchar
255
Состояние
active
boolean
1
Дата изменения
modifiedat
datetime
68
Таблица 12
Таблица TypeCabin (Типы кабин)
Наименование поля
Идентификатор поля
Тип поля
Длина
поля
Прочее
Идентификатор
id
int
11
AI
Наименование
caption
varchar
255
Состояние
active
boolean
1
Дата изменения
modifiedat
datetime
Таблица 13
Таблица Cabin (Каюты)
Наименование поля
Идентификатор поля
Тип поля
Длина
поля
Прочее
Идентификатор
id
integer
11
AI
Наименование
caption
varchar
255
Состояние
active
boolean
1
Дата изменения
modifiedat
datetime
10
Лайнер
lanerid
integer
8
FK
Количество мест
place
integer
8
Номер палубы
palub
integer
8
Площадь
square
decimal
10
Тип каюты
typeid
integer
8
FK
Таблица 14
Таблица Place еста в каютах)
Наименование поля
Идентификатор поля
Тип поля
Длина
поля
Прочее
Идентификатор
id
int
11
AI
Наименование
caption
varchar
255
Состояние
active
boolean
1
Дата изменения
modifiedat
datetime
Каюта
cabinid
integer
8
FK
Цена
price
decimal
10
Таблица 15
Таблица Cruise (Круизы)
Наименование поля
Идентификатор поля
Тип поля
Длина
поля
Прочее
Идентификатор
id
int
11
AI
Наименование
caption
varchar
255
Описание
description
text
65565
Дата и время начала
beginat
tinyint
1
Дата и время
окончания
endat
datetime
Состояние
avtice
boolean
1
Лайнер
lainerid
integer
8
FK
Дата изменения
modifiedat
datetime
69
Таблица 16
Таблица OrderClient (Клиенты в заказе)
Наименование поля
Идентификатор поля
Тип поля
Длина
поля
Прочее
Идентификатор
id
int
11
AI
Заказ
orderid
integer
8
FK
Клиент
clientid
integer
8
FK
Таблица 17
Таблица CruiseCountry (Страны круиза)
Наименование поля
Идентификатор поля
Тип поля
Длина
поля
Прочее
Идентификатор
id
int
11
AI
Номер по порядку
следования
маршрута
number
integer
255
Страна
countryid
integer
8
FK
Круиз
cruiseid
integer
8
FK
Таблица 18
Таблица Order (Заказы)
Наименование поля
Идентификатор поля
Тип поля
Длина
поля
Прочее
Идентификатор
id
int
11
AI
Статус
status
integer
8
Дата создания
createdat
datetime
Дата изменения
modifiedat
datetime
Страхование
insuranceid
integer
8
FK
Круиз
cruiseid
integer
8
FK
Контактные ФИО
fio
Контактный телефон
phone
Комментарий
comment
Таблица 19
Таблица OrderPlace (Места в заказе)
Наименование поля
Идентификатор поля
Тип поля
Длина
поля
Прочее
Идентификатор
id
int
11
AI
Цена
price
decimal
10
Заказ
orderid
integer
8
FK
Место
placeid
integer
8
FK
Таблица 20
70
Таблица Client (Клиенты)
Наименование поля
Идентификатор поля
Тип поля
Длина
поля
Прочее
Идентификатор
id
int
11
AI
ФИО
FIO
varchar
255
Телефон
phone
varchar
255
FK
Email
email
varchar
255
FK
Пол
male
boolean
1
Страна гражданства
countryid
integer
FK
Дата рождения
bithdate
datetime
Дата создания
createdat
datetime
Дата изменения
modifiedat
datetime
SQL-скрипт для создания базы данных приведен в приложении 2.
2.3.3. Структурная схема пакета (дерево вызова программных
модулей)
Популярность языка php обусловила появление большого числа
фреймворков для него. Фреймворк – это программная платформа, определяющая
общую внутреннюю структуру программного обеспечения. Фреймворки создают
для того, чтобы облегчить разработку ПО, т.к. большая часть стандартных для
систем функций там в том или ином виде уже реализована.
Для написания информационной системы использовался фреймворк
языка php Phalcon.
Phalcon – кроссплатформенный PHP-фреймворк. Он включает в себя весь
набор инструментов, используемый для быстрой разработки веб-приложений, и
при этом абсолютно ничего не навязывает создаваемому приложению.
Разработчик может быстро начать работу, используя дистрибутив Phalcon.
Сильные стороны Phalcon:
Расширения Zephir / C загружаются вместе с PHP один раз в
процессе запуска демона веб-сервера
Классы и функции, предоставляемые расширением, готовы к
использованию в любом приложении.
Код скомпилирован и не интерпретируется, потому что он уже
скомпилирован для конкретной платформы и процессора
71
Благодаря своей низкоуровневой архитектуре и оптимизации
Phalcon обеспечивает минимальные издержки для приложений на основе MVC
Все выше перечисленное обеспечивает значительный прирост скорости
работы приложений, созданных с помощью Phalcon. При сравнении скорости
работы фреймворка с другими он показывает значительные преимущества
(Рисунок 20).
Рисунок 20 – Сравнение Phalcon с другими фреймворками php
Также к достоинствам Phalcon можно отнести:
Расширяемость – поскольку Phalcon основан на концепции DI
(слабая связанность), программист может в любое время расширять приложение
за счет подключения новых бандлов, которые минимально влияют на работу
других бандлов, но зато возможна конфигурация их совместной работы;
Стабильность – длительное время поддержки версий;
Ориентированность на разработчика - Phalcon имеет очень удобную
консоль и для того, чтобы программист не выполнял рутинную работу, консоль
Phalcon делает генерацию определенного кода вместо программиста с помощью
определенных команд.
72
Данный фреймворк работает с подходом к программированию,
называемый Model-view-controller (MVC). С английский этот подход дословно
переводится как «модель-представление-контроллер» или «модель-вид-
контроллер»
Основная идея данного подхода заключается в разделении данных, их
представлениях пользователям и обработку действий пользователей на три
больших группы:
Модель (англ. Model). Модель отвечает за знание о предметной
области. Чаще всего она включает классы, которые являются программными
прообразами реальных объектов предметной области. Данные классы содержат
информацию об объектах в виде атрибутов, которым задаются определенные
значения. Классы данной группы по сути лишь хранят данные но пользователю
их никаком образом не выводят.
Представление, вид (англ. View). Основная задача представлений, в
отличие от модели, - отображение данные пользователю. Чаще всего
представление – это форма интерфейса ИС. Главная задача – представить
информацию, хранимой в модели в виде, воспринимаемым пользователем.
Контроллер (англ. Controller). В этих классах обычно реализована
обработка действий пользователя в формах пользовательского интерфейса.
В рамках веб-приложений можно сказать, что пользователь, выполняя
какие-то действия в формах представления, отправляет запросы контролерам,
которые выполняют нужные манипуляции с моделью данных и передают
результат в представление.
Стоит отметить, что от модели зависят и представление, и контроллер.
Тогда как сама модель от них не зависит. По сути она зависит лишь от
предметной области, для которой создается ИС. Это позволяет строить модель
независимо от способа представления данных. То есть для одной и той же
модели можно создать сколь угодно разных представлений и контроллеров.
В рамках данного диплома была создана информационная система,
которая не имеет пользовательского интерфейса, то есть она запускается через
73
командную консоль, поэтому в перечне разработанных программных модулей
нет классов, относящихся к представлениям.
В таблице 21 приведен список программных модулей, содержащих
описание модели данных, а также краткое описание назначение данного класса.
Таблица 21
Программные модули Model
Номер
Название
Описание
1
Model.php
Родительский класс для всех моделей
2
Lainer.php
Класс модели, содержащий атрибуты и
методы для работы с объектом лайнера
3
CruiseInsurance.php
Класс модели, содержащий атрибуты и
методы для работы с объектом страхования в
круизе
4
Insurance.php
Класс модели, содержащий атрибуты и
методы для работы с объектом страхования
5
Cabin.php
Класс модели, содержащий атрибуты и
методы для работы с объектом каюты
6
TypeCabin.php
Класс модели, содержащий атрибуты и
методы для работы с объектом типа каюты
7
Place.php
Класс модели, содержащий атрибуты и
методы для работы с объектом места в каюте
8
OrderPlace.php
Класс модели, содержащий атрибуты и
методы для работы с объектом места в заказе
9
Order.php
Класс модели, содержащий атрибуты и
методы для работы с объектом заказа
10
Country.php
Класс модели, содержащий атрибуты и
методы для работы с объектом страны
11
CruiseCountry.php
Класс модели, содержащий атрибуты и
методы для работы с объектом страны в
круизе
12
Cruise.php
Класс модели, содержащий атрибуты и
методы для работы с объектом круиза
13
OrderClient.php
Класс модели, содержащий атрибуты и
методы для работы с объектом пассажира в
заказе
14
Client.php
Класс модели, содержащий атрибуты и
методы для работы с объектом клиента
В таблице 22 приведен список программных модулей-контроллеров,
реализующих всю логику работы информационной системы.
74
Таблица 22
Программные модули Controller
Номер
Название
Описание
1
DefaultContoller.php
Родительский класс контроллера для всех
остальных контроллеров, содержит общие
методы
2
SyncController.php
Класс контроллера для реализации подгрузки
данных о круизах и актуализацию
справочников через API MSC Cruises
3
ReserveController.php
Класс контроллера для реализации
бронирования
4
SerachController.php
Класс контроллера для подбора круиза на
основании данных запроса
2.3.4. Описание программных модулей
Главная особенность объектно-ориентированного программирования
(ООП) заключается в том, что при использовании этого метода происходит
оперирование объектами. Под объектом в программировании понимается
совокупность свойств, методов их обработки и событий, на которые данные
объект может реагировать. Под свойствами объекта обычно понимают
структуры данных, характерные для данного объекта, или другими словами –
набор свойств характеризуют какой-либо объект. Метод – это способ влияния на
свойства объекта, обычно используют два метода – установка какому-то
свойству определенного значения, и считывание значения этого свойства.
Инкапсуляцией называют объединение данных и процедур в одном
объекте. Инкапсуляция – один из ключевых принципов ООП.
Еще одним фундаментальным понятием ООП является класс.
Классом называют шаблон, на основе которого создается конкретный
программные объект. То есть в классе описаны все свойства и методы,
определяющие поведение каждого объекта, созданного на основе этого класса.
Также принято каждый объект, созданный на основе класса называть
экземпляром этого класса.
Следующими важнейшими принципами ООП являются наследование и
полиморфизм.
75
Наследование – такая организация классов, которая подразумевает
создание новых классов на базе существующих и позволяет классу потомку
иметь (наследовать) все свойства класса – родителя.
Полиморфизм – означает, что рожденные объекты обладают
информацией о том, какие методы они должны использовать в зависимости от
того, в каком месте цепочки (дерева классов) они находятся, иными словами это
концепция, реализующая «множество методов в одном интерфейсе».
Другим важнейшим принципом ООП является модульность.
Под модульностью понимают такую организацию объектов, при
которого каждый объект заключает в себе полное описание своих характеристик
(свойств, методов). Это позволяет свободное копирование объектов (модулей) и
внедрение одного объекта в другие.
На основе объектно-ориентированной парадигмы выросла объектно-
событийная парадигма (методология). Эта парадигма позволяет конструировать,
программировать распределенные вычислительные среды, в том числе среды
реального времени, SCADA и пр.
Событием в объектно-ориентированном программировании называют
сообщение, которое возникает в различных местах исполняемого программного
кода при выполнении определенных условий. Главное назначение события –
возможность предусмотреть реакцию создаваемого программного продукта. Для
решения такой задачи существуют обработчики событий. То есть, как только
программа попадает в предопределенное состояние (возникает событие), то
соответствующего обработчику отправляется сообщение. В общем случае в
обработчик не передаётся ничего, либо передаётся ссылка на объект,
инициировавший (породивший) обрабатываемое событие. В особых случаях в
обработчик передаются значения некоторых переменных или ссылки на какие-то
другие объекты, чтобы обработка данного события могла учесть контекст
возникновения события. Самое простое событие - это событие, сообщающее о
начале или о завершении некоторой процедуры.
Первый ряд примеров событий доставляет собственно сам жизненный
цикл объекта:
создание объекта;
76
уничтожение объекта.
Каждый программный модель, представленный в таблицах 21 и 22
описывают определенные классы. Классы модели описывают модель данных,
фактически повторяя структуру соответствующих таблиц базы данных.
Каждому полю таблицы БД соответствует свойство класса. В методы
классов Model включают обычно по два метода на каждое свойство (методы get
и set).
Классы Контроллеры отвечают за обработку запросов, присылаемых к
ИС и выполнение синхронизации данных с API MSC Cruises.
Связь с API MSC Cruises как и добавление заказов в ПО Мастер-Тур
выполняется посредством приема и отправки http-запросов типа GET и POST.
Пример такого запроса на подбор круиза:
GET /v1/cruises/find?adults=2&regions[]=87&flightFrom=598&
available=1&dateFrom=2019-05-01&dateTill=2019-11-
31&minLength=7&maxLength=7&minPrice=0&maxPrice=6520
HTTP/1.1
Host: dev-api.gocruise.ru
После того, как от сайта компании получен такой запрос контроллер
SearchController.php выбирает из базы данных те круизы, которые подходят под
указанные параметры и возвращает ответ в формате JSON.
JSON (JavaScript Object Notation) простой формат обмена данными,
удобный для чтения и написания как человеком, так и компьютером. Он основан
на подмножестве языка программирования JavaScript, определенного в
стандарте ECMA-262 3rd Edition - December 1999.
JSON - текстовый формат, полностью независимый от языка реализации,
но он использует соглашения, знакомые программистам C-подобных языков,
таких как C, C++, C#, Java, JavaScript, Perl, Python и многих других. Эти свойства
делают JSON идеальным языком обмена данными.
JSON основан на двух структурах данных:
Коллекция пар ключ/значение. В разных языках, эта концепция
реализована как объект, запись, структура, словарь, хэш, именованный список
или ассоциативный массив.

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран