- •Содержание
- •1 Аналитическая часть
- •1.1 Обзор существующих систем
- •1.2 Основные характеристики проекта
- •1.3 Выбор языка программирования
- •1.4 Www-сайт
- •1.5 3-Х уровневая модель
- •1.6 Выбор технологии разработки www-сайта
- •1.7 Microsoft sql Server
- •2 Проектная часть
- •3 Технико-экономическая часть
- •3.1 Расчет затрат на создание веб-ресурса
2 Проектная часть
2.1 Техническое задание
Пользователь взаимодействует с сайтом по следующей схеме.
При открытии главной странице сайта, пользователь видит информацию о сайте, новостной блок и навигационное меню.
Навигационное меню состоит из следующих разделов:
Главная
Галерея
Подбор тура
Контакты
Раздел «Галерея» содержит в себе различные картинки и фотографии наиболее красивых мест планеты. Раздел представляет собой ряд изображений не большого размера, кликнув по любому из которых, откроется его увеличенное отображение, закрыть которое можно лишь кликнув по нему.
Подбор тура – это сервис позволяющих пользователю подобрать тур, наиболее для него подходящий. Подбор тура представляет собой выбор пользователем таких критериев поиска как: страна вылета; город вылета; страна прибытия; даты вылета и количество ночей; количество взрослых и детей, если есть дети, то необходимо указать дни их рождения; стоимость тура и валюта; город выбранной страны прилета; название отеля; количество звезд в отеле и тип пансиона отеля.
После того как пользователь выбрал нужные ему критерии поиска тура, ему необходимо нажать кнопку «Подобрать тур», после чего откроется окно, содержащее название отеля, город отлета и прилета, название курорта, стоимость тура и наличие свободных мест.
В разделе «Контакты» хранится контактная информация о туристической фирме.
2.2 Требование для установки программного продукта
2.2.1 Аппаратный носитель
В качестве аппаратного носителя был выбран сервер компании НИКС, модель sS6000B/pro2U. Он имеет следующую конфигурацию:
- Case SuperMicro 2U 6026T-URF4 + (LGA1366, i5520, UIO, SVGA, DVD, SATA RAID, 8xHS SAS/SATA, 4xGbLAN, 18DDRIII 920W HS)
- CPU CPU Intel Xeon E5645 2.40 ГГц/12Мб/5.86 ГТ/с LGA1366
- RAM 3 шт. Kingston <KVR1333D3D8R9S/4G> DDR-III DIMM 4Gb <PC3-10600> ECC Registered with Parity CL9
- HDD 2 шт. HDD 600 Gb SAS 2.0 Seagate Cheetah 15K.7 <ST3600057SS> 15000rpm 16Mb
- I/O Card Adaptec RAID 6805 ASR-6805 Single PCI-E x8, 8-port SAS/SATA, RAID 0/1/1E/10/5/5EE/6/50/60/JBOD, Cache 512Mb
- ПО PTS-DOS (OEM)
2.2.2 Выбранная ОС
В качестве используемой операционной системы была выбрана Ubuntu 12.04 LTS. Ubuntu — это разрабатываемая сообществом, основанная на ядре Linux операционная система, которая идеально подходит для использования на персональных компьютерах, ноутбуках и серверах. Она содержит все необходимые программы: программу просмотра Интернет, офисный пакет для работы с текстами, электронными таблицами и презентациями, программы для общения в Интернет и много других.
Преимущества:
Ubuntu всегда будет распространяться бесплатно, включая корпоративные версии и обновления безопасности.
Для Ubuntu доступна полная коммерческая поддержка от Canonical Ltd. и сотен компаний по всему миру.
Ubuntu включает наилучшие переводы и средства доступности для людей с ограниченными возможностями, которые только существуют в виде открытого ПО.
Диски c Ubuntu содержат только свободное программное обеспечение; мы поощряем использование свободно распространяемого и открытого ПО, его улучшение и распространение.
2.3 Установка веб сервера
Для работы данного приложения необходимо установить Apache.
2.3.1 Установка Apache
sudo apt-get install apache2 libapache2-mod-auth-mysql
2.3.2. Устанавливаем php:
sudo apt-get install php5-common php5 libapache2-mod-php5 php5-cli php5-cgi php5-mysql
Перезапустим apache:
sudo /etc/init.d/apache2 restart
Проверим работоспособность php. Для этого создаем файл /var/www/test.php и поместим в него следующие строки:
<?php
print_r (phpinfo());
?>
Запускаем Firefox и вводим адрес http://localhost/test.php. На экране должна отобразиться служебная информация о php.
2.3.3. Устанавливаем MySQL:
sudo apt-get install mysql-server mysql-client
Во время установки будет запрошен ввод пароля root-а MySQL-ного сервера.
2.3.4. Ставим phpmyadmin.
phpmyadmin - веб-инструмент для управлениями MySQL-ными базами данных. Очень удобный инструмент для разработчиков.
Установим командой:
sudo apt-get install phpmyadmin
Во время установки от нас запросят об используемом веб-сервере - выбираем "apache2".
Вход в phpmyadmin: http://localhost/phpmyadmin
2.3.5 Подключение модулей.
По умолчанию некторые модули отключены. Включить их можно командой:
sudo a2enmod имя_модуля
Например, подключение модуля mod_rewrite:
sudo a2enmod rewrite
После подключения модулей необходимо перезапустить apache:
sudo /etc/init.d/apache2 restart
2.4 Настройка Apache
Для создания виртуального хоста Apache2 под Linux Ubuntu необходимо проделать следующие шаги:
1. В файл /etc/hosts добавить запись о новом хосте, например: 127.0.0.1 test
2. В директории /etc/apache2/sites-available/ создать файл с именем нового хоста, и в него добавить следующие строки:
<VirtualHost APPLICATION.RU:80>
ServerAdmin webmaster@APPLICATION.RU
ServerName APPLICATION.RU
DocumentRoot /var/www/aplication
ErrorLog /var/www/aplication/app.ru.log
CustomLog /var/www/aplication/app.ru.log combined
HostnameLookups Off
UseCanonicalName Off
ServerSignature On
ScriptAlias /cgi-bin/ "/home/407/www/cgi-bin/"
<Directory "/home/407/www/cgi-bin">
AllowOverride None
Options +ExecCGI -Includes
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/aplication">
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
AddDefaultCharset utf-8
</VirtualHost>
3. Вклюсить виртуальный хост: sudo a2ensite test
4. Перечитать конфигурацию: sudo /etc/init.d/apache2 reload
2.5 Структура базы данных
2.5.1 Структура базы данных
На данном сайте в базе данных должна храниться информация о всех турах во все страны предлагаемые данной туристической фирмой. Так же в базе должна храниться информация об отелях, наличие свободных мест в них, предлагаемой системы питания, дополнительных услугах и развлечениях. Так же база должна хранить в себе информацию о заказах, текущих новостях и акциях.
База данных будет иметь 6 сущностей:
Akcii, в которой будет храниться информация о текущих акциях фирмы.
Country, в которой хранится информация о странах отдыха.
Exkurcii, в которой содержится информация о всех видах экскурсий во всех странах.
Hotels, в которой хранится информация об отелях, сотрудничающих с данной туристической фирмой.
News, в которой хранится информация о текущих новостях.
Zakazi, в которой содержится информация обо всех заказах клиентов.
Сущность Akcii, будет содержать следующий набор полей:
id – является уникальным идентификатором акции в таблице.
descr – содержит в себе полную информацию об акции.
descr_mini – содержит в себе краткую информацию об акции.
Сущность Сountry, будет содержать следующий набор полей:
id – является уникальным идентификатором страны в таблице.
Сountry – хранит в себе название страны.
Сущность Exkurcii, будет содержать следующий набор полей:
id – является уникальным идентификатором экскурсии в таблице.
name – название экскурсии.
id_country – идентификатор страны, в которой проводится экскурсия.
descr – описание экскурсии.
price – цена экскурсии.
Сущность Hotels, будет содержать следующий набор полей:
id – является уникальным идентификатором отеля в таблице.
id_country – идентификатор страны, в которой расположен отель.
name – название отеля.
zvezd – количество звезд у отеля.
pitanie – система питания отеля.
nomera – общее количество номеров.
kol_lux – количество люксовых номеров.
kol_basic – количество базовых номеров.
kol_econom – количество номеров эконом класса.
cena_lux – цена люксового номера.
cena_basic – цена базового номера.
cena_econom – цена номера эконом класса.
bassein – наличие у отеля бассейна.
Сущность News, будет содержать следующий набор полей:
id – является уникальным идентификатором новости в таблице.
descr – содержит в себе полную информацию о новости.
descr_mini – содержит в себе краткую информацию о новости.
Сущность Zakazi, будет содержать следующий набор полей:
id – является уникальным идентификатором заказа в таблице.
id_country – идентификатор страны, в которую отправляется клиент.
price – общая цена тура.
kol_otdih – количество отдыхающих.
kol_day – количество дней и ночей отдыха.
fio – фамилия, имя и отчество клиента.
contact – контактные данные клиента (телефон, адрес).
pasport – паспортные данные клиента.
2.5.2 Схема данных – набор таблиц
Таблица 2.1 – akcii
Имя поля |
SQL - тип поля |
Особенности |
Назначение |
id |
INT |
PRIMARY KEY (первичный ключ) автоматически увеличивается — AUTO_INCREMENT |
Уникальный код акции.
|
descr |
TEXT |
NOT NULL |
Полное описание акции. |
descr_mini |
TEXT |
NOT NULL |
Краткое описание акции. |
Таблица 2.2 – country
Имя поля |
SQL - тип поля |
Особенности |
Назначение |
id |
INT |
PRIMARY KEY (первичный ключ) автоматически увеличивается — AUTO_INCREMENT |
Уникальный код страны.
|
country |
VARCHAR(255) |
NOT NULL |
Название страны |
Таблица 2.3 – exkurcii
Имя поля |
SQL - тип поля |
Особенности |
Назначение |
id |
INT |
PRIMARY KEY (первичный ключ) автоматически увеличивается — AUTO_INCREMENT |
Уникальный код страны.
|
name |
VARCHAR(255) |
NOT NULL |
Название экскурсии |
id_country |
INT(10) |
NOT NULL |
Идентификатор страны |
descr |
TEXT |
NOT NULL |
Описание |
price |
INT(10) |
NOT NULL |
Цена экскурсии |
Таблица 2.4 – hotels
Имя поля |
SQL - тип поля |
Особенности |
Назначение |
id |
INT |
PRIMARY KEY (первичный ключ) автоматически увеличивается — AUTO_INCREMENT |
Уникальный код страны.
|
id_country |
INT(10) |
NOT NULL |
Идентификатор страны |
name |
VARCHAR(255) |
NOT NULL |
Название отеля |
zvezd |
INT(2) |
NOT NULL |
Количество звезд отеля |
Таблица 2.4 – hotels (продолжение)
pitanie |
VARCHAR(255) |
NOT NULL |
Система питания отеля |
nomera |
INT(10) |
NOT NULL |
Количество номеров |
kol_lux |
INT(10) |
NOT NULL |
Количество люксовых номеров |
kol_basic |
INT(10) |
NOT NULL |
Количество базовых номер |
kol_econom |
INT(10) |
NOT NULL |
Количество номеров эконом класса |
cena_lux |
INT(10) |
NOT NULL |
Цена люксового номера |
cena_basic |
INT(10) |
NOT NULL |
Цена базового номера |
cena_econom |
INT(10) |
NOT NULL |
Цена номера эконом класса |
bassein |
INT(2) |
NOT NULL |
Наличие бассейна |
Таблица 2.5 – news
Имя поля |
SQL - тип поля |
Особенности |
Назначение |
id |
INT |
PRIMARY KEY (первичный ключ) автоматически увеличивается — AUTO_INCREMENT |
Уникальный код акции.
|
descr |
TEXT |
NOT NULL |
Полное описание новости. |
descr_mini |
TEXT |
NOT NULL |
Краткое описание новости. |
Таблица 2.6 – zakazi
Имя поля |
SQL - тип поля |
Особенности |
Назначение |
id |
INT |
PRIMARY KEY (первичный ключ) автоматически увеличивается — AUTO_INCREMENT |
Уникальный код акции.
|
id_country |
INT(10) |
NOT NULL |
Идентификатор страны |
price |
INT(10) |
NOT NULL |
Цена тура |
kol_otdih |
INT(10) |
NOT NULL |
Количество отдыхающих |
kol_day |
INT(10) |
NOT NULL |
Количество дней |
fio |
VARCHAR(255) |
NOT NULL |
ФИО |
Таблица 2.6 – zakazi (продолжение)
contact |
VARCHAR(255) |
NOT NULL |
Контактные данные |
pasport |
INT(10) |
NOT NULL |
Серия и номер паспорта |
id_hotel |
INT(10) |
NOT NULL |
Идентификатор отеля |
2.5.3 Создание БД
Чтобы подключиться к серверу базы данных и работать с БД посредством SQL-команд, надо запустить консольную программу mysql:
mysql -u имя_пользователя -p
В случае, если сервер БД запущен на той же машине, на которой работает пользователь.
Начальный главный пользователь — root.
Если сервер БД на другой машине, то запуск выполняется следующим образом:
mysql -h имя_или_IP_машины -u имя пользователя –p
После запуска перед пользователем открывается строка команд утилиты mysql. Любая команда и SQL-запрос могут вводиться на нескольких строках подряд, завершать команду надо, вводя точку с запятой.
Создание новой БД выполняется командой:
CREATE DATABASE <имя>;
Чтобы посмотреть произошло ли создание нашей базы данных можно выполнить команду, которая перечисляет все существующие базы данных:
SHOW DATABASES;
2.5.4 Создание таблиц в базе данных tour
База данных будет иметь 6 сущностей:
Akcii, в которой будет храниться информация о текущих акциях фирмы.
Country, в которой хранится информация о странах отдыха.
Exkurcii, в которой содержится информация о всех видах экскурсий во всех странах.
Hotels, в которой хранится информация об отелях, сотрудничающих с данной туристической фирмой.
News, в которой хранится информация о текущих новостях.
Zakazi, в которой содержится информация обо всех заказах клиентов.
Чтобы создать первую таблицу Akcii надо выполнить команду в строке команд:
CREATE TABLE IF NOT EXISTS `akcii` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`descr` text NOT NULL,
`descr_mini` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;
Чтобы создать вторую таблицу country надо выполнить команду в строке команд:
CREATE TABLE IF NOT EXISTS `country` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`country` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;
Чтобы создать третью таблицу exkurcii надо выполнить команду в строке команд:
CREATE TABLE IF NOT EXISTS `exkurcii` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`id_country` int(10) NOT NULL,
`descr` text NOT NULL,
`price` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
Чтобы создать четвертую таблицу hotels надо выполнить команду в строке команд:
CREATE TABLE IF NOT EXISTS `hotels` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`id_country` int(10) NOT NULL,
`name` varchar(255) NOT NULL,
`zvezd` int(2) NOT NULL,
`pitanie` varchar(255) NOT NULL,
`nomera` int(10) NOT NULL,
`kol_lux` int(10) NOT NULL,
`kol_basic` int(10) NOT NULL,
`kol_econom` int(10) NOT NULL,
`cena_lux` int(255) NOT NULL,
`cena_basic` int(255) NOT NULL,
`cena_econom` int(255) NOT NULL,
`bassein` int(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
Чтобы создать пятую таблицу news надо выполнить команду в строке команд:
CREATE TABLE IF NOT EXISTS `news` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`descr` text NOT NULL,
`descr_mini` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
Чтобы создать шестую таблицу zakazi надо выполнить команду в строке команд:
CREATE TABLE IF NOT EXISTS `zakazi` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`id_country` int(10) NOT NULL,
`price` int(10) NOT NULL,
`kol_otdih` int(10) NOT NULL,
`kol_day` int(10) NOT NULL,
`fio` varchar(255) NOT NULL,
`contact` varchar(255) NOT NULL,
`pasport` int(10) NOT NULL,
`id_hotel` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
2.6 Структура приложения
Рисунок 2.1 – Структура приложения
2.7 Логика работы приложения
Рисунок 2.2 – Логика работы приложения
2.8 Описание логики приложения
При открытии браузера набираем в строке localhost/tour/ и попадаем на главную страницу сайта, изображенного на рисунке 2.3
Рисунок 2.3 – Главная страница
Раздел «Галерея» содержит в себе различные картинки и фотографии наиболее красивых мест планеты. Раздел представляет собой ряд изображений не большого размера (рисунок 2.4), кликнув по любому из которых, откроется его увеличенное отображение (рисунок 2.5), закрыть которое можно лишь кликнув по нему.
Рисунок 2.4 – Миниатюры раздела «Галерея»
Рисунок 2.5 – Увеличенное изображение
Подбор тура – это сервис позволяющих пользователю подобрать тур, наиболее для него подходящий. Подбор тура представляет собой выбор пользователем таких критериев поиска как: страна вылета; город вылета; страна прибытия; даты вылета и количество ночей; количество взрослых и детей, если есть дети, то необходимо указать дни их рождения; стоимость тура и валюта; город выбранной страны прилета; название отеля; количество звезд в отеле и тип пансиона отеля (рисунок 2.6):
Рисунок 2.6 – Подбор тура
После того как пользователь выбрал нужные ему критерии поиска тура, ему необходимо нажать кнопку «Подобрать тур», после чего откроется окно, содержащее название отеля, город отлета и прилета, название курорта, стоимость тура и наличие свободных мест (рисунок 2.7):
Рисунок 2.6 – Список туров
Если кликнуть по названию отеля, то откроется страница с описанием этого отеля (рисунок 2.7):
Рисунок 2.7 – Информация об отеле
В разделе «Контакты» содержится информация о туристической фирме (рисунок 2.8):
Рисунок 2.8 – Контактная информация