Таблица «ticket» имеет атрибуты: «ticket_id», «time_session», «cinema_id», «film_id». Отношение находится в первой нормальной форме. Связана отношением «Один ко многим» к таблицам «film», «sale» и «cinema».
Таблица «sale» имеет атрибты: «sale_id», «data_sale», «ticket_id», «user_id», «price», «line», «place».
Таблица «length_category» имеет атрибуты: «length_id», «length_from», «length_to», «description», «coef».
Таблица «place_category» имеет атрибуты: «place_id», «place_from», «place_to», «description», «coef».
Таблица «time_category» имеет атрибуты: «time_id», «time_from», «time_to», «description», «coef».
2.2 Описание классов приложения
Для проектирования пользовательского интерфейса использована технология WPF. Интерфейс обеспечивает взаимодействие пользователя с программной системой и служит переводчиком в диалоге пользователя и программы.
Для описания информационной системы для реализации билетов в кинотеатры города понадобится представить данные с базы данных в виде сущностей.
Сущностями будут являться:
- пользователи;
- кинотеатры;
- фильмы;
- сеансы;
- категории;
- заказы.
Каждую сущность нужно представить в виде класса или иерархии классов, так как используется объектно-ориентированный подход.
В программе к системе имеют доступ пользователи трёх категорий, который имеют разные права доступа. Пользователи с разными правами доступа выполняют разные действия.
Незарегистрированный пользователем является гостем. У гостя самые низкие права доступа. Гость способен просматривать афиши каждого кинотеатра и регистрироваться в системе.
После регистрации пользователя - его права становятся выше. Кроме стандартного функционала гостя, у него появляется возможность заказывать билеты, выбрав кинотеатр, фильм и необходимую категорию билетов c последующим отображением стоимости каждого их них. После заказа билетов имеется возможность просмотреть все заказанные билеты. Если пользователю необходимо отменить покупку, то можно собственноручно сделать это. После покупки билетов, зарегистрированный пользователь может просмотреть доступные билеты. Также пользователь может просматривать и редактировать личную информацию в профиле. В конце сеанса пользователь может выйти из личного профиля.
Диаграмма вариантов использования - это динамическая диаграмма. Диаграммы прецедентов моделируют функциональность системы с использованием действующих лиц и прецедентов. Варианты использования - это набор действий, сервисов и функций, которые должна выполнять система. В этом контексте «система» - это то, что разрабатывается или эксплуатируется, например, настольное приложение. «Действующие лица» - это люди или организации, работающие под определенными ролями в системе.
Пользователи, обладающие правами администратора, имеют следующие дополнительные функции:
- изменение информации об администраторах;
- создание кинотеатров, фильмов, киносеансов;
- просмотр всех заказанных билетов;
- просмотр самых популярных фильмов;
- просмотр статистики о проданных билетах.
- по каждому времени вывести среднее количество зрителей
Администратор может добавлять фильмы.
Полностью ознакомиться с программным комплексом можно в третьей главе.
Для моделирования пользователя в программе создан класс User. Данный класс содержит свойства, моделирующие пользователя в системе:
- user_id отвечает за уникальность записи пользователя;
- login отвечает за логин пользователя;
- password отвечает за пароль, при авторизации в системе;
- fullname отвечает за полное имя пользователя;
- birth_year отвечает за год рождения пользователя.
Структура класса User приведена в таблице 2.1.
Таблица 2.1 - Структура класса «User»
|
Название свойства |
Тип свойства |
|
|
user_id |
int |
|
|
login |
string |
|
|
password |
string |
|
|
fullname |
string |
|
|
birth_year |
int |
Для определения кинотеатров, категорий мест и цен в определенной категории в программе реализован класс Cinema. Класс содержит следующие свойства:
-cinema_id отвечает за уникальность записи кинотеатра;
-name отвечает за наименование кинотеатра;
-description описание кинотеатра;
-сountPlaceCategory1 отвечают за формирование билетов 1 категории;
- сountPlaceCategory2 отвечают за формирование билетов 2 категории;
- сountPlaceCategory3 отвечают за формирование билетов 3 категории;
Структура класса Cinema приведена в таблице 2.2
Таблица 2.2 - Структура класса «Cinema»
|
Название свойства |
Тип свойства |
|
|
cinema_id |
int |
|
|
name |
string |
|
|
description |
string |
|
|
сountPlaceCategory1 |
int |
|
|
сountPlaceCategory2 |
int |
|
|
сountPlaceCategorу3 |
int |
Для моделирования киносеанса в программе реализован класс Sale. Класс содержит соответствующие свойства:
- sale_id отвечает за уникальность записи покупки;
- data_sale отвечает за дату сеанса;
- user_id отвечает за покупателя;
- price отвечает за цену.
- line отвечает за длительность сеанса.
- place отвечает за ряд.
Структура класса Sales приведена в таблице 2.3.
Таблица 2.3 - Структура класса «Sales»
|
Название свойства |
Тип свойства |
|
|
sale_id |
int |
|
|
data_sale |
DateTime |
|
|
user_id |
int |
|
|
price |
int |
|
|
line |
int |
|
|
place |
int |
Для моделирования фильмов в программе реализован класс Film. Класс содержит соответствующие свойства:
- film_id отвечает за уникальность записи фильма;
- name отвечает за наименование фильма;
- description отвечает за описание фильма;
- cost отвечает за цену фильма;
- length отвечает за длительность фильма.
Структура класса Film приведена в таблице 2.4.
Таблица 2.4 - Структура класса «Film»
|
Название свойства |
Типсво йства |
|
|
film_id |
int |
|
|
name |
string |
|
|
description |
string |
|
|
cost |
int |
|
|
length |
int |
Для моделирования билетов в программе реализован класс ticket. Класс содержит соответствующие свойства:
- ticket_id отвечает за уникальность записи билета;
- time_seans отвечает за дату сеанса;
-name название фильма;
Структура класса Ticket приведена в таблице 2.5
Таблица 2.5 - Структура класса «Ticket»
|
Название свойства |
Тип свойства |
|
|
ticket_id |
int |
|
|
time_seans |
DataTime |
|
|
name |
string |
Для моделирования категорий длинны фильма в программе реализован класс LengthCategory. Класс содержит соответствующие свойства:
- lengthFrom отвечает за длину от времени;
- lengthTo отвечает за длину до времени;
-coef отвечает за коэффиценты для определенных длинн сеансов;
Структура класса LengthCategory приведена в таблице 2.6
Таблица 2.6 - Структура класса «LengthCategory t»
|
Название свойства |
Тип свойства |
|
|
lengthFrom |
int |
|
|
lengthTo |
int |
|
|
coef |
double |
Для моделирования категорий ряда в программе реализован класс PlaceCategory. Класс содержит соответствующие свойства:
- PlaceFrom отвечает за ряд;
- PlaceTo отвечает за ряд;
-coef отвечает за коэффиценты для определенных рядов;
Структура класса PlaceCategory приведена в таблице 2.7
Таблица 2.7 - Структура класса «LengthCategory t»
|
Название свойства |
Тип свойства |
|
|
PlaceFrom |
int |
|
|
PlaceTo |
int |
|
|
coef |
double |
Для моделирования категорий времени сеанса в программе реализован класс TimeCategory. Класс содержит соответствующие свойства:
- TimeFrom отвечает за ряд;
- TimeTo отвечает за ряд;
-coef отвечает за коэффиценты для определенных рядов;
Структура класса TimeCategory приведена в таблице 2.8
Таблица 2.8 - Структура класса «TimeCategory»
|
Название свойства |
Тип свойства |
|
|
TimeFrom |
int |
|
|
TimeTo |
int |
|
|
coef |
double |
Схемы описанных классов в приложении Б.
Описанные классы получают данные благодаря слою доступа к данным использующих в качестве источника базу данных SQL и технологии доступа ADO.NET, которые в данной задаче реализуют язык интеграрованных запросовLINQ, выполняют работу над данными, группируют и передают данные в представления для последующего вывода.
В результате проектирования создана масштабируемая архитектура программного комплекс. Для использования данного приложения пользователями разработан графический интерфейс.
Листинг описанных классов представлен в приложении В.
3. ОПИСАНИЕ ЭТАПОВ ПРОВЕДЕНИЯ ВЕРИФИКАЦИИ И ТЕСТИРОВАНИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ
3.1 Результаты проведения интегрированного тестирования
Для работы с программой необходимо открыть файл «bilet.exe». После появления оконного приложения, нужно нажать на «вход» в приложении в левом нижнеем углу, как показано на рисунке 3.1.
Рисунок 3.1 - Главное окно приложения
После чего откроется раздел авторизации, как представлено на рисунке 3.2, зарегистрированному пользователю нужно ввести логин, пароль и авторизироваться в приложении. Логин и пароль проверяются на наличие в Базе данных.
Рисунок 3.2 - Главное окно авторизации
После заполнения полей персональными данными, необходимо нажать на кнопку «Вход». Произойдёт проверка введённых полей. Если поля будут пустым или логин с паролем будут являться неверно введенными, откроется всплывающее окно, которое сообщит об ошибке (рисунок 3.3).
Рисунок 3.3 - Оповещение об ошибке поле ввода
После входа в кабинет администратора, возможна фильтрация по следующим параметрам: кинотеатр, фильм. Доступно управление кинотеатрами, сеансами, фильмами. Доступен просмотр заказов. Доступен просмотр отчетов о популярных фильмах по каждому кинотеатру и сразу по всем, и сохранение данных в xml-файл. Пример просмотра отчета о популярных фильмах представлен на рисунке 3.4.
Рисунок 3.4 - Ошибка при покупке билетов без выбора фильма
При необходимости приобретения билетов, необходимо зарегистрироваться или войти в систему под своей учетной записью. В случае попытки приобретения билетов, без выбора кинофильма, выводится предупреждение (рисунок 3.5).
Рисунок 3.5 - Ошибка при покупке билетов без выбора фильма
Для регистрации пользователю необходимо перейти в раздел «Регистрация» и ввести свои персональные данные в поля ввода. Переход в раздел «Регистрация» осуществляется по нажатию на кнопку «Регистрация» на главном окне приложения (рисунок 3.1). К персональным данным относятся: «ФИО», «Логин», «Пароль», «Возраст».
Рисунок 3.4 - Поля ввода на вкладке «Регистрация»
После заполнения полей персональными данными, необходимо нажать на кнопку «Зарегистрировать». Произойдёт проверка введённых полей. Если поля будут пустыми, откроется всплывающее окно, которое оповестит об ошибке. Пример ошибки показан на рисунке 3.5.
Рисунок 3.5 - Оповещение об ошибке поле ввода
При введённых корректных данных выведет соответствующее оповещение о том, что аккаунты был создан как это видно на рисунке 3.6.
Рисунок 3.6 - Оповещение о подтверждении создания аккаунта
При нажатии на «ОК» откроется окно главной стран в котором необходимо перейти в раздел авторизации и заполнить поля «Логин» и «Пароль». Введённые данные подтверждаем, нажатием на кнопку «Вход». Система проверяет на наличие сведений о данном пользователе. Если введены ошибочные данные или не найдены сведения о пользователе, произойдёт оповещение об этом (рисунок 3.7).
Рисунок 3.7 - Оповещение об ошибке ведённых данных
В случае успешного входа в систему, пользователь перенаправляется в личный кабинет, в котором можно просмотреть афиши каждого кинотеатра и приобрести билеты (рисунок 3.8).
Рисунок 3.8 - Раздел «афиши» в личном кабинете пользователя
Кроме возможности просмотра афиш и заказа билетов, открывается раздел «Мои билеты» в котором содержатся все заказанные пользователем билеты как показано на рисунке 3.9.