Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
диплом_василевский.doc
Скачиваний:
31
Добавлен:
28.03.2015
Размер:
4.58 Mб
Скачать

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 сущностей:

  1. Akcii, в которой будет храниться информация о текущих акциях фирмы.

  2. Country, в которой хранится информация о странах отдыха.

  3. Exkurcii, в которой содержится информация о всех видах экскурсий во всех странах.

  4. Hotels, в которой хранится информация об отелях, сотрудничающих с данной туристической фирмой.

  5. News, в которой хранится информация о текущих новостях.

  6. Zakazi, в которой содержится информация обо всех заказах клиентов.

Сущность Akcii, будет содержать следующий набор полей:

  1. id – является уникальным идентификатором акции в таблице.

  2. descr – содержит в себе полную информацию об акции.

  3. descr_mini – содержит в себе краткую информацию об акции.

Сущность Сountry, будет содержать следующий набор полей:

  1. id – является уникальным идентификатором страны в таблице.

  2. Сountry – хранит в себе название страны.

Сущность Exkurcii, будет содержать следующий набор полей:

  1. id – является уникальным идентификатором экскурсии в таблице.

  2. name – название экскурсии.

  3. id_country – идентификатор страны, в которой проводится экскурсия.

  4. descr – описание экскурсии.

  5. price – цена экскурсии.

Сущность Hotels, будет содержать следующий набор полей:

  1. id – является уникальным идентификатором отеля в таблице.

  2. id_country – идентификатор страны, в которой расположен отель.

  3. name – название отеля.

  4. zvezd – количество звезд у отеля.

  5. pitanie – система питания отеля.

  6. nomera – общее количество номеров.

  7. kol_lux – количество люксовых номеров.

  8. kol_basic – количество базовых номеров.

  9. kol_econom – количество номеров эконом класса.

  10. cena_lux – цена люксового номера.

  11. cena_basic – цена базового номера.

  12. cena_econom – цена номера эконом класса.

  13. bassein – наличие у отеля бассейна.

Сущность News, будет содержать следующий набор полей:

  1. id – является уникальным идентификатором новости в таблице.

  2. descr – содержит в себе полную информацию о новости.

  3. descr_mini – содержит в себе краткую информацию о новости.

Сущность Zakazi, будет содержать следующий набор полей:

  1. id – является уникальным идентификатором заказа в таблице.

  2. id_country – идентификатор страны, в которую отправляется клиент.

  3. price – общая цена тура.

  4. kol_otdih – количество отдыхающих.

  5. kol_day – количество дней и ночей отдыха.

  6. fio – фамилия, имя и отчество клиента.

  7. 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 сущностей:

  1. Akcii, в которой будет храниться информация о текущих акциях фирмы.

  2. Country, в которой хранится информация о странах отдыха.

  3. Exkurcii, в которой содержится информация о всех видах экскурсий во всех странах.

  4. Hotels, в которой хранится информация об отелях, сотрудничающих с данной туристической фирмой.

  5. News, в которой хранится информация о текущих новостях.

  6. 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 – Контактная информация