Файл: Разработка серверного WEB приложения для туристического агентства «Travelerland».pdf
Добавлен: 28.03.2023
Просмотров: 477
Скачиваний: 8
Каждая страница ресурса представлена отдельным php модулем.
Так главная страница – модуль index.php. Страница «О нас» - модуль about.php.
Несмотря на различное назначение и наполнение разных страниц и используемых для их формирования модулей, каждая из них содержит заголовок, меню и подвал сайта.
Для отображения данных подразделов страниц информационного ресурса имеет смысл вынести их формирование в отдельные модули и подключать их по мере необходимости.
Так модуль nav.php – используется для показа меню, модуль footer.php – для отображения подвала.
Для организации связи с базой данных и получения из нее информации необходимо установить соединение с сервером базы данных. Связь с базой данных устанавливается при помощи определенных параметров, характеризующих соединение. Для упрощения и параметризации организации связи с базой данных системы подготовим модуль database.php, в котором определим параметры конфигурации соединения. Исходный код данного модуля:
<?php
$host = "91.227.16.31";
$user = "h146736_travel";
$password = "5O6m7Z3r";
$database = "h146736_travel";
$port = 3306;
?>
Описание структуры базы данных и ее функций
После проработки структуры сайта и разработаем базу данных системы. Сначала необходимо подготовить инфологическую модель базы данных.
Инфологическая модель предметной области представляет собой описание структуры и динамики предметной области, характера информационных потребностей пользователей в терминах, понятных пользователю и не зависимых от реализации БД. Это описание выражается в терминах не отдельных объектов предметной области и связей между ними, а их типов, связанных с ними ограничений целостности и тех процессов, которые приводят к переходу предметной области из одного состояния в другое.
Описание каждой сущности производится при помощи данных, называемых атрибутами или свойствами сущности. Атрибуты, как правило, представляют собой определения в высказывании о сущности и для их обозначения, используют имена существительные естественного языка. Сущности имеют связи друг с другом при посредстве включенных в них атрибутов. Каждое объединение атрибутов, составляющих описание одного реального проявления сущности, представляет из себя экземпляр сущности. Прочими словами, экземпляры сущности – это ее реализации, которые отличаются друг от друга и допускают однозначную идентификацию.
Каждый из атрибутов сущности имеет домен. Домен – это некоторое определенное выражение, описывающее значения, которые может принимать данный атрибут. Другими словами, домен – это определенная область возможных значений атрибута. На информационном уровне моделирования данных сопоставление домена атрибуту носит общий характер. К примеру, текстовый атрибут, числовой атрибут, бинарный, дата или "не определен".
Одним из главных компьютерных способов распознавания сущностей в базе данных является присвоение сущностям идентификаторов. Идентификатор сущности также называется ключом.
Построим описание атрибутов сущностей разрабатываемой системы.
Описание сущности Путевки (Таблица 3.1).
Таблица 3.1 – Атрибуты сущности Путевки
|
Атрибут |
Ключ |
Значение |
Домен |
|
Код |
+ |
Идентификатор путевки |
Число |
|
Наименование |
Наименование тура |
Текст |
|
|
Продолжительность |
Продолжительность тура в днях |
Число |
|
|
Стоимость |
Стоимость тура в долларах |
Число |
|
|
Комментарии |
Кол-во комментариев |
Число |
|
|
Картинка |
Имя картинки для обложки |
Текст |
Описание сущности Отели (Таблица 3.2).
Таблица 3.2 – Атрибуты сущности Отели
|
Атрибут |
Ключ |
Значение |
Домен |
|
Код |
+ |
Идентификатор отеля |
Число |
|
Наименование |
Наименование отеля |
Текст |
|
|
Комментарии |
Кол-во комментариев |
Число |
|
|
Картинка |
Имя картинки для обложки |
Текст |
|
|
Стоимость |
Стоимость отеля в долларах |
Число |
Описание сущности Обратная связь (Таблица 3.3).
Таблица 3.3 – Атрибуты сущности Обратная связь
|
Атрибут |
Ключ |
Значение |
Домен |
|
Код |
+ |
Идентификатор обращения |
Число |
|
Имя |
Имя пользователя |
Текст |
|
|
Почта |
Почта пользователя |
Текст |
|
|
Тема |
Тема письма |
Текст |
|
|
Сообщение |
Сообщение пользователя |
Текст |
|
|
Дата |
Дата отправленного письма |
Дата |
Описание сущности Блог (Таблица 3.4).
Таблица 3.4 – Атрибуты сущности Блог
|
Атрибут |
Ключ |
Значение |
Домен |
|
Код |
+ |
Идентификатор новости |
Число |
|
Заголовок |
Заголовок новости |
Текст |
|
|
Текст |
Текст новости |
Текст |
|
|
Картинка |
Имя картинки для обложки |
Число |
|
|
Дата |
Дата новости |
Дата |
Описание сущности Рассылка (Таблица 3.5).
Таблица 3.5 – Атрибуты сущности Рассылка
|
Атрибут |
Ключ |
Значение |
Домен |
|
Код |
+ |
Идентификатор почты |
Число |
|
Почта |
Почта пользователя для рассылки |
Текст |
|
|
Дата |
Дата подписки |
Дата |
На основе построенных описаний сущностей и их атрибутов построим физическую схему базы данных, представленную далее (Рисунок 3.1).
Рисунок 3.1 – Физическая схема базы данных
Для доступа и управления данными в программном комплексе системы туристического агентства «Travelerland», на уровне бизнес-логики приложения используются хранимые процедуры MySQL.
При помощи данных процедур организовывается управление данными, добавление записей в таблицы, удаление записей, проведение комплексных изменений в нескольких таблицах системы путем использования транзакций.
Описание структуры клиентской части
Описание интерфейса «Главная»
Начало работы начинается с главной страницы сайта (Рисунок 4.1).
Рисунок 4.1 – Главная страница сайта
Главная страница содержит рейтинг 4 лучших туров основанный на количестве отзывов, а также 3 самых популярных отеля (Рисунок 4.2).
Рисунок 4.2 – Лучшие туры и рестораны
Описание интерфейса «Контакты»
Данная страница служит для связи пользователя с администратором для бронирования туров, либо же для решение каких-либо вопросов (Рисунок 4.3).
Рисунок 4.3 – Контакты
4.3 Описание интерфейса «Путевки»
На данной странице (Рисунок 4.4) размещаются все актуальные туры отсортированные по количеству отзывов. Пользователь выбирает интересующий его тур после чего связывается с администрацией через форму обратной связи на странице или же по телефону для бронирования.
Рисунок 4.4 – Путевки
4.4 Описание интерфейса «Блог»
На данной странице представлены все новости агентства отсортированные по дате публикации (Рисунок 4.5)
Рисунок 4.5 – Блог
Заключение
В ходе выполнения данной работы были решены следующие задачи
- дано общее описание автоматизируемого объекта;
- построена модель базы данных;
- спроектировано и реализовано приложение для работы и управления созданной базой данных с применением web-технологий.
В процессе выполнения работы была создана база данных, с применением среды MySQL. Реализация проекта велась с применением языков CSS, HTML, PHP, а также м использованием языка SQL запросов для обращения и изменения информации в связанной базе данных системы.
Результатом работы явилось достижение целей:
- закрепление теоретического материала по дисциплинам, связанных с изучением баз данных;
- практические навыки создания web-ресурса с применением языка программирования PHP.
Разработана информационная система туристического агентства «Travelerland». Система создана с применением современных средств и технологий, имеет адаптивный дизайн, проверена и протестирована для отображения на мобильных и десктопных устройствах.
Литература
- Пирогов, В.Ю. Информационные системы и базы данных: организация и проектирование: Учебное пособие / В.Ю. Пирогов. - СПб.: БХВ-Петербург, 2009. - 528 c.
- Вадим Дунаев. HTML, скрипты и стили. BHV, Санкт-Петербург, 2015. ISBN 978-5-9775-3317-1.
- Н. Закас, Джереми Мак-Пик, Джо Фосетт. Ajax для профессионалов. Перевод: Александр Киселев. Символ, Санкт-Петербург, 2015. ISBN 978 5 93286-081-6.
- К. Блессинг, Роб Черни, К. Шмитт. Применение Web-стандартов CSS и Ajax для больших сайтов. Корона-Век, Санкт-Петербург, 2011. ISBN 978 5 7931-0844-7.
- Adobe Dreamweaver CS6. Официальный учебный курс. Эксмо, Москва, 2014. ISBN 978-5-699-69655-0.
- Чои Вин. Как спроектировать современный сайт. Питер, Санкт-Петербург, 2011. ISBN 978-5-459-00579-0.
- А. Годин, К. Джонсон, К. Уоррен, М. Уэбер, Брайан Хоган. Книга веб-программиста: секреты профессиональной разработки веб-сайтов. Питер, Санкт-Петербург, 2013. ISBN 978-5-459-01510-2.
- Алан Купер, Дэйв Кронин, Кристофер Носсел, Роберт Рейман. Алан Купер об интерфейсе. Основы проектирования взаимодействия. Символ, Санкт-Петербург, 2015. ISBN 978-5-93286-132-5.
- Стив Круг. Как сделать сайт удобным. Юзабилити по методу Стива Круга. Питер, Санкт-Петербург, 2010. ISBN 978-5-49807-515-0.
- Кирилл Сухов. HTML 5. Путеводитель по технологии. ДМК, Москва, 2013. ISBN 978-5-94074-910-3.
Исходные коды
Index.php
<?php
include 'database.php';
$mysqlConnect = mysqli_connect($host, $user, $password, $database, $port);
if ($mysqlConnect)
{
$sql = "SELECT * FROM `destinations` ORDER BY `comments` DESC LIMIT 4";
$destinations = mysqli_query($mysqlConnect, $sql);
$sql = "SELECT * FROM `hotels` ORDER BY `comments` DESC LIMIT 3";
$hotels = mysqli_query($mysqlConnect, $sql);
}
if(isset($_POST['button']))
{
$sql = "INSERT INTO mailing (`mail`) VALUES ('".$_POST['mail']."')";
mysqli_query($mysqlConnect, $sql);
}
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<title>Travelerland - Путешествия по всему миру</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,800,900" rel="stylesheet">
<link rel="stylesheet" href="css/open-iconic-bootstrap.min.css">
<link rel="stylesheet" href="css/animate.css">
<link rel="stylesheet" href="css/owl.carousel.min.css">
<link rel="stylesheet" href="css/owl.theme.default.min.css">
<link rel="stylesheet" href="css/magnific-popup.css">
<link rel="stylesheet" href="css/aos.css">
<link rel="stylesheet" href="css/ionicons.min.css">
<link rel="stylesheet" href="css/bootstrap-datepicker.css">
<link rel="stylesheet" href="css/jquery.timepicker.css">
<link rel="stylesheet" href="css/flaticon.css">
<link rel="stylesheet" href="css/icomoon.css">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<?php
include 'nav.php';
?>
<div class="hero-wrap js-fullheight" style="background-image: url('images/bg_1.jpg');" data-stellar-background-ratio="0.5">