Добавлен: 01.04.2023
Просмотров: 210
Скачиваний: 6
СОДЕРЖАНИЕ
1. Техническое задание и выбор средств реализации
2. Описание модулей серверной части программы и их взаимодействие
3.Описание структуры базы данных и ее функций.
4. Описание структуры клиентской части.
4.1 Описание интерфейса «Обычный пользователь».
Рисунок 2.2 – Главная страница сайта
Несмотря на различное назначение и наполнение разных страниц и используемых для их формирования модулей, каждая из них содержит заголовок, меню и подвал сайта.
Для отображения данных подразделов страниц информационного ресурса имеет смысл вынести их формирование в отдельные модули и подключать их по мере необходимости.
Так модуль showMenu.php[2] – используется для показа меню системы, модуль header.php[3] – для вывода заголовка сайта, footer.php[4] – для отображения подвала.
Для контроля пользовательского входа в систему применяется механизм сессий.
Для отслеживания авторизации пользователей и их прав в системе используется механизм сессий. Сессии в PHP представляют из себя механизм сохранения на стороне сервера информации о компьютере клиента.
Сессии – это группы переменных, которые хранятся на сервере, но относятся к одному уникальному посетителю. Повторю, это ключевой момент: сессии хранятся на сервере.
Для того, чтобы обеспечить взаимодействие каждого посетителя с его данными из его сессии используется файл cookie, команду создать который PHP даёт сам, вам об это беспокоится не нужно. Этот cookie имеет значение только для сервера и не может быть использован для получения данных о пользователе.
На сервере данные сессии хранятся в текстовом файле, и они доступны в программе PHP в массиве $_SESSION. Чтобы сохранить переменную в сессии нужно присвоить ей значение в этом массиве.
Для проверки был ли осуществлен вход пользователя в систему и с какими правами создан модуль chkSession.php, вызываемый перед началом обработки каждого скрипта или вывода страницы сайта.
В данном модуле содержится следующий код:
session_start();
$id_us = 0;
$usRole = 0;
$usName = "";
if(isset($_SESSION["id_us"]))
$id_us = (int)$_SESSION["id_us"];
if(isset($_SESSION["usRole"]))
$usRole = (int)$_SESSION["usRole"];
if(isset($_SESSION["usName"]))
$usName = $_SESSION["usName"];
Здесь переменные $id_us, $usRole, $usName используются для получения информации о коде пользователя, его имени и правах входа. Если переменная $id_us после проверки равна 0 – значит пользователя в системе не зарегистрировано.
Если $id_us > 0 и $гsRole>0 значит в систему вошел администратор, если при не нулевом $id_us значение $usRole равно 0 – в настоящее время работу с сайтом осуществляет рядовой пользователь.
В зависимости от значений данных переменных система будет выдавать ту или иную информацию, откроет или наоборот запретит доступ к определенным пунктам меню системы.
Также для организации связи с базой данных и получения или добавления в нее информации необходимо установить соединение с сервером базы данных. Связь с базой данных устанавливается при помощи определенных параметров, характеризующих соединение. Для упрощения и параметризации организации связи с базой данных системы подготовим модуль ini.php, в котором определим параметры конфигурации соединения. Исходный код данного модуля:
<?php
// авторизация роли
const USER = 0;
const ADMIN = 1;
// база данных, соединение
const DB_NAME = "kino_pravda";
const DB_USER = "root";
const DB_HOST = "127.0.0.1";
const DB_PASS = ""
?>
3.Описание структуры базы данных и ее функций.
После проработки структуры сайта и разработаем базу данных системы. Сначала необходимо подготовить инфологическую модель базы данных.
Инфологическая модель предметной области представляет собой описание структуры и динамики предметной области, характера информационных потребностей пользователей в терминах, понятных пользователю и не зависимых от реализации БД. Это описание выражается в терминах не отдельных объектов предметной области и связей между ними, а их типов, связанных с ними ограничений целостности и тех процессов, которые приводят к переходу предметной области из одного состояния в другое.
Описание каждой сущности производится при помощи данных, называемых атрибутами или свойствами сущности. Атрибуты, как правило, представляют собой определения в высказывании о сущности и для их обозначения, используют имена существительные естественного языка. Сущности имеют связи друг с другом при посредстве включенных в них атрибутов. Каждое объединение атрибутов, составляющих описание одного реального проявления сущности, представляет из себя экземпляр сущности. Прочими словами, экземпляры сущности – это ее реализации, которые отличаются друг от друга и допускают однозначную идентификацию.
Каждый из атрибутов сущности имеет домен. Домен – это некоторое определенное выражение, описывающее значения, которые может принимать данный атрибут. Другими словами, домен – это определенная область возможных значений атрибута. На информационном уровне моделирования данных сопоставление домена атрибуту носит общий характер. К примеру, текстовый атрибут, числовой атрибут, бинарный, дата или "не определен".
Одним из главных компьютерных способов распознавания сущностей в базе данных является присвоение сущностям идентификаторов. Идентификатор сущности также называется ключом.
Построим описание атрибутов сущностей разрабатываемой системы.
Описание сущности Жанр (Таблица 3.1).
Таблица 3.1 – Атрибуты сущности Жанр
Атрибут |
Ключ |
Значение |
Домен |
Код жанра |
+ |
Идентификатор записи |
Число |
Наименование |
Наименование жанра |
Текст |
Описание сущности Производство (Таблица 3.2).
Таблица 3.2 – Атрибуты сущности Производство
Атрибут |
Ключ |
Значение |
Домен |
Код производства |
+ |
Идентификатор записи |
Число |
Наименование |
Наименование производителя фильма |
Текст |
Описание сущности Фильм (Таблица 3.3).
Таблица 3.3 – Атрибуты сущности Фильм
Атрибут |
Ключ |
Значение |
Домен |
Код фильма |
+ |
Идентификатор записи |
Число |
Название |
Наименование фильма |
Текст |
|
Год выпуска |
Год производства |
Число |
|
Анонс |
Краткий анонс, описание произведения |
Текст |
|
Режиссер |
Режиссер фильма |
Текст |
|
Актеры |
Актерский состав |
Текст |
|
Продолжительность |
Продолжительность в минутах |
Число |
|
Возраст |
Возрастные ограничения |
Текст |
|
Обложка |
Имя файла с обложкой |
Текст |
|
Код жанра |
Жанр, к которому относится |
Число |
|
Код производства |
Производитель фильма |
Число |
Описание сущности Пользователь (Таблица 3.4).
Таблица 3.4 – Атрибуты сущности Пользователь
Атрибут |
Ключ |
Значение |
Домен |
Код пользователя |
+ |
Идентификатор записи |
Число |
|
e-mail пользователя |
Текст |
|
Пароль |
Пароль для входа в систему |
Текст |
|
Роль |
Роль пользователя |
Число |
|
Имя |
Имя пользователя |
Текст |
Описание сущности Сеансы (Таблица 3.5).
Таблица 3.5 – Атрибуты сущности Сеансы
Атрибут |
Ключ |
Значение |
Домен |
Код записи |
+ |
Идентификатор записи |
Число |
Дата/время |
Дата, время трансляции |
Датавремя |
|
Код фильма |
Фильм, показываемый во время сеанса |
Число |
Описание сущности Посещение (Таблица 3.6).
Таблица 3.6 – Атрибуты сущности Посещение
Атрибут |
Ключ |
Значение |
Домен |
Код пользователя |
+ |
Пользователь, посетивший сеанс |
Число |
Код записи |
Сеанс, на котором присутствовал пользователь |
Число |
|
Код типа |
Тип выкупленного места |
Число |
|
Билет |
Номер места |
Число |
|
Стоимость |
Стоимость билета |
Число |
Описание сущности Типы мест (Таблица 3.7).
Таблица 3.7 – Атрибуты сущности Типы мест
Атрибут |
Ключ |
Значение |
Домен |
Код типа |
+ |
Идентификатор записи |
Число |
Ряд |
Название ряда |
Текст |
|
К-во мест |
Количество мест в ряду |
Число |
|
Цена |
Стоимость билета для данного типа |
Число |
На основе построенных описаний сущностей и их атрибутов построим инфологическую схему базы данных, представленную далее (Рисунок 3.1).
Рисунок 3.1 – Инфологическая схема база данных
Согласно подготовленной концептуальной схемы, построим физическую реализацию базы данных.
Физическое представление схемы базы данных приведено далее (Рисунок 3.2).
Рисунок 3.2 – Физическая схема базы данных
Для доступа и управления данными в программном комплексе системы кинотеатра «Правда», на уровне бизнес-логики приложения используются хранимые процедуры MySQL.
При помощи данных процедур организовывается управление данными, добавление записей в таблицы, удаление записей, проведение комплексных изменений в нескольких таблицах системы путем использования транзакций.
Приведем пример кода для процедуры afishaSel:
CREATE DEFINER = 'root'@'%'
PROCEDURE kino_pravda.afishaSel(IN _snDate date)
BEGIN
SELECT
seance.id_sn,
seance.snDate,
seance.id_fl,
films.flName,
films.flYear,
films.flNotes,
films.flRegisser,
films.flActors,
films.flTime,
films.flAge,
films.id_gr,
genree.grName,
films.id_pr,
produced.prName,
films.flCover
FROM seance
INNER JOIN films
ON seance.id_fl = films.id_fl
INNER JOIN genree
ON films.id_gr = genree.id_gr
INNER JOIN produced
ON films.id_pr = produced.id_pr
WHERE date (snDate) = _snDate
ORDER BY snDate;
END
Данная процедура используется для получения информации о демонстрации фильмов на определенную дату.
4. Описание структуры клиентской части.
4.1 Описание интерфейса «Обычный пользователь».
Начало работы начинается с главной страницы сайта (Рисунок 4.1). Для
Рисунок 4.1 – Главная страница сайта
Для получения доступа к функционалу пользователя, необходимо воспользоваться кнопкой вход, которая направит пользователя на форму запроса данных для входа в систему, после использования которой меню системы примет вид (Рисунок 4.2).
Рисунок 4.2 – Меню обычного пользователя
Появившийся новый пункт меню История служит для просмотра истории посещений кинотеатра пользователем. Для завершения работы необходимо использовать кнопку Выход.
4.2 Описание интерфейса «Администратор».
Если воспользоваться входом в систему под аккаунтом администратора меню системы кинотеатра примет следующий вид (Рисунок 4.3).
Рисунок 4.3 – Меню администратора
В данном виде меню появится пункт Управление. При помощи данного пункта администратор системы имеет возможность вносить изменения в справочники системы, регистрировать новые фильмы, назначать показы сеансов.