Файл: «Автоматизация продажи театральных билетов» (Технико-экономические показатели объекта управления).pdf
Добавлен: 28.03.2023
Просмотров: 88
Скачиваний: 2
Дополнительные преимущества появляются при использовании БД в многопользовательской среде, поскольку становится возможным осуществлять централизованное управление данными.
В данной работе была задействована СУБД MySQL созданная на основе реляционной модели базы данных и предназначена для создания быстрых, эффективных баз данных, применяемых в быту и бизнесе. Кроме того, она способна подключаться к другим базам данных, подключаться к веб-сайтам создавая для вас широкий фронт работы с данными, независимо от того, где они находятся.
Оценивая преимущества и недостатки СУБД MySQL и ее функциональные возможности, можно утверждать, что данная система обладает всеми необходимыми инструментами для создания, редактирования, хранения и ежедневного использования баз данных. Главным преимуществом является то, что СУБД бесплатная. Интерфейс программы прост и удобен, работа не требует получения большого количества дополнительных знаний. При проектировании ИС была создана ER-Модель. В ней определены все основные объекты (сущности) и связи, которые существуют между ними. Были выделены 5 сущностей: Зритель, Билет, Спектакли, Роли, Актеры.
Рисунок 3.2 Диаграмма ERD-сущность-связь
Структура сущностей БД Таблица 3
Сущность “Зритель” Таблица 3.1
Наименование поля |
Идентификатор поля |
Тип поля |
Длина поля |
Прочее |
Идентификатор |
id |
Счетчик |
10 |
Первичный ключ |
Имя |
first_name |
Короткий текст |
25 |
|
Фамилия |
last_name |
Короткий текст |
25 |
|
Пол |
sex |
Короткий текст |
3 |
|
Дата рождения |
birthdate |
Дата |
Сущность “Билет” Таблица 3.2
Наименование поля |
Идентификатор поля |
Тип поля |
Длина поля |
Прочее |
Идентификатор |
_id |
Счетчик |
10 |
Первичный ключ |
Идентификатор зрителя |
customer |
Число |
5 |
|
Спектакли |
show |
Число |
1 |
Внешний ключ |
Дата покупки |
buy_time |
Дата |
||
Дата использования |
use_time |
Дата |
Сущность “Спектакли” Таблица 3.3
Наименование поля |
Идентификатор поля |
Тип поля |
Длина поля |
Прочее |
Идентификатор |
_id |
Счетчик |
10 |
Первичный ключ |
Имя |
name |
Короткий текст |
40 |
|
Место |
seats |
Число |
10 |
|
Время начала |
start_time |
Дата |
5 |
Внешний ключ |
Время окончания |
end_time |
Число |
5 |
|
Описание |
description |
Длинный текст |
250 |
|
Стоимость билета |
cost |
Число |
5 |
Сущность “Роли” Таблица 3.4
Наименование поля |
Идентификатор поля |
Тип поля |
Длина поля |
Прочее |
Идентификатор |
_id |
Счетчик |
5 |
Первичный ключ |
Имя |
name |
Короткий текст |
1 |
|
Роль |
show |
Число |
3 |
Внешний ключ |
Актер |
actor |
Число |
Внешний ключ |
Сущность “Актёр” Таблица 3.5
Наименование поля |
Идентификатор поля |
Тип поля |
Длина поля |
Прочее |
Идентификатор |
_id |
Счетчик |
5 |
Первичный ключ |
Имя |
First_name |
Короткий текст |
40 |
|
Фамилия |
Last_name |
Короткий текст |
40 |
Внешний ключ |
Рисунок 3.3 Сценарии диалога
При разработке структуры диалога необходимо предусмотреть возможность работы с экранными формами входных документов, формирование выходных документов, корректировки вводимых данных, просмотра введенной информации, работу с таблицами нормативно-справочной информации, протоколирования действий пользователя, а также помощь на всех этапах работы.
Рисунок 3.4 ER-модель
ИС состоит из 2 модулей: серверная часть и клиентская часть.
Серверная часть прямо отвечает за работу Веб-Сервера NodeJS:
- Отправка запросов к БД.
- Обработка запросов от пользователя и БД.
- Перенаправление на страницы.
Клиентская часть отвечает за:
- Изменение и отображение HTML.
- Интерфейс для работы с БД.
- Покупка билетов.
- Сортировка и проверка получаемой информации от БД или пользователя.
Серверная часть написана с использованием языка JavaScript и библиотек:
- MySQL – Работа с запросами к БД.
- Express – работа с HTTP запросами..
- Html-pdf – Создание PDF файла из HTML страницы.
- Crypto – Шифрование и дешифрование текста.
Клиентская часть написана с использование языка TypeScript, фреймворка Angular 7.
Фреймворк Angular 7 - JavaScript-фреймворк с открытым исходным кодом. Предназначен для разработки одностраничных приложений. Его цель — расширение браузерных приложений на основе MVC-шаблона, а также упрощение тестирования и разработки.
Фреймворк работает с HTML, содержащим дополнительные пользовательские атрибуты, которые описываются директивами, и связывает ввод или вывод области страницы с моделью, представляющей собой обычные переменные JavaScript. Значения этих переменных задаются вручную или извлекаются из статических или динамических JSON-данных.
Angular 7 написан на язык TypeScript, который требуется для использования Angular.
TypeScript — язык программирования, представленный Microsoft в 2012 году и позиционируемый как средство разработки веб-приложений, расширяющее возможности JavaScript.
Для работы сайта требуется поддержка HTML
На странице “Покупка билетов” Веб-Приложения расположен список спектаклей в виде таблицы.
Нажав на заголовок колонки таблицы отсортируются по убыванию или возрастанию.
Нажатие на строку в таблице перенаправляет на страницу с детальной информацией по полёту, см. рисунок 4.2.
Рисунок 4.1 Пример страницы “Покупка билетов” Веб-приложения
Адрес страницы “Покупка билетов” выглядит как: http://rosavia.com/flights.
Адрес страницы с информацией о рейсе выглядит как:
http://limbo.com/flight/id, где: id – номер рейса.
Например: http://limbo.com/flight/1
Рисунок 4.2 Информация о рейсе
На странице с информацией о рейсе можно вернуться на страницу со списком спектаклей или купить билет. При нажатии на кнопку “Купить билет” происходит перенаправление по адресу http://limbo.com/buy/id, где: id – номер рейса. Например: http://limbo.com/buy/1
Рисунок 4.3 Покупка билета
Рисунок 4.4 Ошибка ввода
Если данные прошли проверку на сайте – они отправляются на Веб-Сервер, где обязательно проходят повторную проверку и, если есть ошибка – возвращается код и описание ошибки. В случае если ошибки не обнаружено – сервер делает запрос к БД и ищет на наличие уже купленного билета на данный рейс данным клиентом. Если билет на рейс уже куплен – возвращается ответ клиенту о том, что билет был куплен. Если билет не был куплен ранее – в БД заносится новая запись в таблицу “Билет”.
После успешных запросов к БД, сервер шифрует комбинацию персональных данных и информацию о билете и тем самым создаёт уникальный хэш купленного билета, по которому можно идентифицировать его.
Шифрование необходимо для усложнения перебора запросов к серверу в целях получения билетов клиентов. Обычный хэш билета выглядит так: “071669e4391a354e8f518c2fe75c9948fdfa318667db2abf44e9307f443eсdc38fe11097f32545a7f8a4b8ee9acc026d76cd7a909304b3f1375b69ie3d9caad11”
После получения хэша на сервере – он возвращает его клиенту и переводит на страницу http://limbo.com/ticket/hash, где: hash – хэш билета.
Например:
http://limbo.com/ticket/071669e491a354e8f518c2fe75c9948fd0a366867db6abf44e9397f443eddc38fe11097532545a7f8a4b8ee9acc028d76cd7a909304b3f1375b690e3d9caad21
Уникальный номер билета такого вида очень и очень сложно подбирать, в качестве шифрования используется алгоритм AES-192. К нему добавляется пароль, который также требуется для шифрования и дешифрования хэша.
Рисунок 4.5 Пример билета
При переходе на страницу билета – выдаётся PDF файл, который распечатывается и используется как билет. Вёрстка билета была выполнена очень минималистично и в чёрно-белых цветах в целях доступности печати без траты красок.
Ниже верхней части билета расположена информация, которая получается с помощью хэша билета и поэтому может быть отрезана. Необходимо только знание хэша.
Весь билет помещается на лист A4.
Заключение
В ходе курсовой работы была создана ИС в виде Веб-приложения автоматизирующая продажу авиабилетов. Для ИС была разработана база данных с использованием MySQL и был продемонстрирован пример реализации данной ИС.
Перед созданием ИС были проанализированы различные СУБД и возможные способы реализации системы. Было решено что MySQL является надёжной и проверенной СУБД, а Веб-приложение – современный и удобный способ автоматизировать бизнес-процессы.
Веб-приложение позволяет предоставить пользовательский интерфейс клиентам без необходимости устанавливать дополнительное программное обеспечение, для работы с ИС требуется любой современный браузер, без которого современный пользователь не обходится. Нет нужды покупать или устанавливать дорогое, или ресурсоёмкое приложение как клиенту – так и компании. MySQL и веб-сайт занимают совсем небольшое пространство на диске и не требуют много ресурсов, но позволяют взаимодействовать с ИС большому количеству людей, а также разделять полномочии между сотрудниками.
Для создания данной ИС не требовалось большого количества времени благодаря уже разработанной СУБД, веб-серверу NodeJS и фреймворку Angular.
Веб-сервер NodeJS также был выбран благодаря бесплатности, открытому коду и огромной популярности среди разработчиков по всему миру. Для NodeJS было создано огромное количество библиотек и фреймворков, которые позволяют решить любую проблему без необходимости в собственной реализации и тестирований.
Фреймворк Angular, как и веб-сервер, имеет огромную известность и популярность среди разработчиков, в основном благодаря тому – что авторами фреймворка являются работники компании Google.
Единственный возможный недостаток связан с использованием фреймворка Angular – он требует язык TypeScript, который является производным от JavaScript, но он не сложен в освоении и схож с JavaScript.
Также, для СУБД был изучен язык запросов, с помощью которого осуществляются все манипуляции с базой данных, метод создания ERD, проектирование и создание таблиц, их нормализация, создание внешних ключей, создание запросов.
Была изучена процедура настройки сервера и маршрутизации при создании веб-сервера.
Использование такого набора инструментов имеет собственное название – “стэк MEAN”. Стэк MEAN подразумевает под собой создание Веб-приложения с помощью языка JavaScript на всех уровнях информационной системы. Если раньше на уровне веб-сервера необходимо было использовать язык PHP, а на уровне клиентской части – JavaScript, то сейчас нет необходимости изучать два языка, можно использовать только один – JavaScript. Кроме этого – в стэк MEAN входит: