Разработка программного обеспечения "Туристическая фирма"

Разработка программного обеспечения, предназначенного для автоматизации деятельности туристической фирмы. Анализ и проектирование базы данных предметной области. Создание концептуальной, логической и физической моделей данных и программы их обработки.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 05.02.2018
Размер файла 816,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.Allbest.ru/

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Алтайский государственный технический университет им. И.И. Ползунова

Пояснительная записка к курсовой работе

по дисциплине «Базы данных»

Тема:

Разработка программного обеспечения «Туристическая фирма»

Задание

Разработать базу данных и приложение обработки данных для конкретной предметной области (типовой предметной области или предметной области научных исследований студента)

Введение

Использование информационных технологий в производственной деятельности предприятий уже давно не является чем-то необычным. Скорее наоборот, их использование является необходимым условием для поддержания жизнеспособности любого предприятия, любого масштаба и сферы деятельности. Это обусловлено в первую очередь большой производительностью и широким функционалом современных информационных систем. Они позволяют не только хранить данные и формировать шаблонные документы, но и дают возможность составления различных прогнозов, помогают решать задачи планирования деятельности и управления как всем предприятием, так и отдельными его подразделениями.

Целью данной курсовой работы является разработка программного обеспечения, предназначенного для автоматизации деятельности туристической фирмы.

Для достижения поставленной цели необходимо решить следующий перечень задач:

• Проанализировать предметную область «Туристическая фирма».

• Спроектировать и создать базу данных для исследуемой предметной области.

• Разработать программу для работы с созданной базой данных.

• Провести тестирование разработанной программы.

1. Описание предметной области

Требуется создать базу данных и программу обработки данных, предназначенную для работников туристической фирмы. База данных должна обеспечивать хранение сведений об имеющихся в продаже путевках и о клиентах фирмы. Сведения о путевке включают ее стоимость, время отправления и возвращения, маршрут, способы перемещения, места для проживания, экскурсии и прочие услуги, например, в стоимость путевки полностью или частично может входить питание. Путевка может предполагать посещение одной или нескольких стран, одного или нескольких населенных пунктов. Сведения о клиентах - это фамилия, имя, отчество, номер контактного телефона, паспортные данные, дата регистрации, особые замечания. Если у клиента есть загранпаспорт, то его номер, дата выдачи, срок действия должны быть зафиксированы в БД уже при регистрации. То же касается и визы: если клиент имеет визу, то в БД должны быть указаны сроки ее действия и тип визы. Если паспорта и/или визы у клиента нет, то работник туристической фирмы должен ее оформить по существующим расценкам в установленные сроки. В обязанности работника туристической фирмы входит продажа стандартных путевок, подбор индивидуальных туров для клиентов не предусмотрен. Клиент может высказать свои пожелания относительно сроков поездки, ее стоимости, стран, которые он хотел бы посетить. Для постоянных клиентов существует система скидок.

Работнику туристической фирмы могут потребоваться следующие данные:

• Какие есть путевки по цене, не превышающей ту, которую указал клиент?

• Можно ли отдохнуть в указанной стране в указанные сроки? Показать все возможные варианты.

• Сколько будет стоить оформление визы и паспорта при условии покупки указанной путевки?

• Какие путевки позволяют отдохнуть в указанные сроки и не предполагают использования самолета в качестве средства перемещения?

• Какие путевки являются «горящими», то есть дата отправления, указанная в них, не более, чем на 5 дней больше текущей?

• Какие скидки возможны для постоянных клиентов фирмы?

• Что представляет собой самая дорогая путевка из имеющихся в продаже на текущий день?

• Какие путевки пользуются наибольшим спросом?

Необходимо предусмотреть возможность автоматической выдачи путевки клиенту. В этом документе указывается стоимость путевки, дата продажи, время отправления из каждого пункта маршрута и способ перемещения (транспорт), а также дата и способ возвращения, перечислены мероприятия каждого дня отдыха: переезды, отдых в гостинице, питание, экскурсии и тому подобное. Кроме того, следует предусмотреть возможность получения ежемесячного отчета о работе фирмы, в котором указываются сведения обо всех проданных путевках и оформленных документах, подсчитывается общая сумма выручки, приводятся данные о путевках, на которые в отчетном месяце был наибольший спрос, и о путевках оставшихся невостребованными.

2. Проектирование и создание баз данных

Первым этапом разработки базы данных является логическое проектирование системы, которое начинается с построения концептуальной модели предметной области. На концептуальной модели отображаются только основные объекты, характерные для рассматриваемой предметной области. В терминах реляционной модели данных такие объекты называются сущностями.

В данной предметной области можно выделить четыре сущности:

• Путевки;

• Маршруты;

• Точки маршрутов;

• Населенные пункты;

• Страны;

• Услуги;

• Услуги в путевках;

• Виды транспорта;

• Клиенты;

• Визы клиентов;

• Купленные путевки;

• Сотрудники.

Эти сущности связаны между собой.

Существует 3 типа связей между сущностями:

• Один-к-одному. Когда одному экземпляру одной сущности соответствует только один экземпляр другой, и наоборот;

• Один-ко-многим. Когда одному экземпляру одной сущности соответствует несколько экземпляров другой;

• Многие-ко-многим. Когда в каждой из связанных сущностей находятся экземпляры, которые могут быть связаны с несколькими экземплярами другой.

Каждый клиент может купить несколько путевок, поэтому связь между сущностями клиенты и купленные путевки один-ко-многим.

Аналогичные связи присутствуют и между сущностями остальными сущностями предметной области.

Концептуальная модель предметной области с выделенными сущностями и связями между ними изображена на рисунке 1.

На основе концептуальной модели стоится логическая модель предметной области. Для этого, необходимо выделить атрибуты каждой сущности. Атрибутами сущности называются характеристики, присущие экземплярам данной сущности.

Рисунок 1 - Концептуальная модель данных

Для каждой сущности также необходимо выбрать ключевой атрибут. Ключевым атрибутом (или первичным ключом сущности) называется такой атрибут, значение которого для каждого экземпляра сущности является уникальным. Первичный ключ служит для однозначной идентификации экземпляров сущности. В каждую сущность добавим атрибут Идентификатор, он и будет служить первичным ключом.

Построенная логическая модель со всеми атрибутами сущностей изображена на рисунке 2.

Рисунок 2 - Логическая модель данных

На основе логической модели строится физическая модель данных. Основное её отличие от логической - она стоится с учетом особенностей выбранной СУБД. В данном курсовом проекте в качестве СУБД выбрана Mysql. Физическая модель представлена на рисунке 3.

Рисунок 3 - Физическая модель данных

Все схемы были созданы в программе Erwin Data Modeller, которая также позволяет генерировать набор SQL-команд для создания базы данных по созданной модели (представлен в приложении).

3. Описание программы обработки данных

Для разработки программы обработки данных использовался язык php.

PHP (Personal Home Page Tools - «Инструмент для создания персональных веб-страниц») - является скриптовым языком программирования общего пользования, используемый для создания Web-приложений. В данный момент времени поддерживают подавляющие большинство хостинг-провайдеров и стал одним из ведущих языком программирования, использующих для разработки динамических Web-сайтов.

Популярность языка в создании web-сайтов определяется наличием большого набора средств предназначенных на разработку web-приложений. Основные из них:

• автоматически извлекаемые GET и POST -параметров, а также переменных окружения веб-сервера в предопределённые массивы;

• взаимодействует с очень большим количеством разных СУБД (MySQL, SQLite, MySQLi, Oracle (OCI8), Postgre SQL, Microsoft SQL Server и пр.);

• автоматическая отправка HTTP-заголовков;

• работает с HTTP-авторизацией;

• работает с сессиями и cookies;

• работает с удалёнными и локальными файлами, сокетами;

• обрабатывает файлы, загруженные на сервер;

Для реализации всех требуемых функции были разработаны отдельные программные модули. Всего было разработано модулей, описание которые представлено в виде таблицы 1

Таблица 1

Описание программных модулей

Наименование модуля

Описание

index.php

Отображает главную страницу АИС, на которой расположены элементы для перехода к работе с основными разделами

config.php

Содержит настройки подключения к базе данных и инициализирует это подключение

check.php

Проверка корректности ввода логина и пароля при авторизации, открытие сессии администратора

checkauth.php

Проверка корректности текущей сессии администратора

login.php

Отображает и обрабатывает форму авторизации пользователя

logout.php

Принудительно завершает текущую сессию прользователя

city.php

Предназначен для отображения списка городов и обработки операций работы с ними

client.php

Предназначен для отображения списка клиентов и обработки операций работы с ними

country.php

Предназначен для отображения списка стран и обработки операций работы с ними

panel.php

permit.php

Предназначен для отображения списка путевок и обработки операций работы с ними

route.php

Предназначен для отображения списка маршрутов и обработки операций работы с ними

routepoint.php

Предназначен для отображения списка точек маршрута и обработки операций работы с ними

sale.php

Предназначен для отображения списка продаж и обработки операций работы с ними

service.php

Предназначен для отображения списка услуг и обработки операций работы с ними

transport.php

Предназначен для отображения списка видов транспорта и обработки операций работы с ними

user.php

Предназначен для обработки операций добавления и редактирования пользователей

users.php

Предназначен для обработки операций добавления и редактирования статусов заявок

Рассмотрим механизм, обеспечивающий авторизацию пользователей в системе.

Авторизация осуществляется с помощью сохранения в базе данных и в cookies браузера пользователя хэш-строки сессии пользователя.

При вводе логина и пароля в форму авторизации к базе данных отправляется запрос, который выбирает данные пользователя, у которого логин совпадает с введенным в форму. Если такой пользователь есть, то сравнивается зашифрованный пароль, хранимый в базе данных и зашифрованный введенный пароль, если они совпадают, то генерируется хэш-строка сессии, записывается в базу данных и cookies пользователя. Также в cookies записывается уникальный идентификатор пользователя (id).

Кроме того, по умолчанию настроена привязка сессии к ip адресу пользователя, в момент авторизации. Это сделано для того, чтобы при хищении сессии (то есть хищении cookies авторизованного пользователя) и заходе с другого ip-адреса система прерывала такую похищенную сессию. Тем не менее, эту привязку можно отключить, поставив соответствующую галочку на форме авторизации.

В дальнейшем, при выполнении любых действий, требующих авторизации, происходит сравнение хэш-строки, сохраненной в cookies, с хэш-строкой, сохраненной в базе данных, а также сравнение текущего ip-адреса пользователя с сохраненным в базе данных (если привязка сесиии в ip не была отключена). И в том случае, если один из сравниваемых параметров не совпадает, то запрошенное действие не выполняется, а пользователь перенаправляется на форму авторизации.

Выполнение остальных функций системы осуществляется с помощью простых операций отправки запросов к базе данных и отображения результатов их выполнения, поскольку эти операции являются простыми, то подробно рассмотрены они не будут. Исходный код всех программных модулей представлен в приложении.

Для работы с программой необходимо пройти авторизацию с помощью формы входа (Рисунок 4).

Рисунок 4 - Форма авторизации

Отобразится главная страница АИС, на которой расположены ссылки для перехода работы с основными разделами (Рисунок 5) и кнопка выхода из системы.

Рисунок 5 - Главная страница

Работа со всеми данными, хранимыми в таблицах строится по одному принципу, при переходе в соответствующий раздел открывается страница со списком уже добавленных данных, на которой находятся кнопки для открытия формы добавления новой записи в таблицу или формы редактирования выбранной записи (Рисунок 6).

Рисунок 6 - Страница работы с таблицей

Рисунок 7 - Форма добавления нового населенного пункта

Для заполнения данных в связанных таблицах используются выпадающие списки. Например, при добавлении нового населенного пункта, поле Страна заполняется путем выбора элемента из выпадающего списка, который содержит список стран из соответствующей таблицы базы данных (Рисунок 7).

4. Тестирование программы обработки данных

Для запуска программы необходим настроенный веб-сервер. Для тестирования использовался набор программ Denwer. В этот набор входит утилита phpmyadmin, предназначенная дла работы с базами данных mysql. Посредством этой утилиты была создана база данных turizm, в которую были импортированы все таблицы и тестовые данные с помощью скрипта из приложения А.

Затем на сервер были скопированы все файлы и папки созданного сайта, в файле config.php были прописаны настройки подключения к базе данных.

Изначально в базе данных имеется только одна учетная запись - это запись Администратор (логин admin, пароль admin), также там добавлены тестовые данных, в достаточном для демонстрации возможностей программы количестве.

Тестирование методов выполняющих запросы к базе данных:

1) Какие есть путевки по цене, не превышающей ту, которую указал клиент?

В справочнике «Путевки» в форму фильтрации необходимо ввести максимальную стоимость путевки и нажать кнопку Применить фильтр

Ожидаемый результат: получить информацию о путевках.

Полученный результат: список путевок отфильтровался, в соответствии с указанной ценой.

Вывод: получена информация о путевках, цена которых не превышает указанную клиентом.

2) Можно ли отдохнуть в указанной стране в указанные сроки? Показать все возможные варианты.

В справочнике «Путевки» в форме фильтрации необходимо выбрать интересующую страну и нажать кнопку Применить фильтр.

Ожидаемый результат: получить информацию о путевках.

Полученный результат: список путевок отфильтровался, в соответствии с выбранной страной.

Вывод: получена информация о путевках в указанную страну, по каждой путевке указываются даты начала и окончания.

3) Сколько будет стоить оформление визы и паспорта при условии покупки указанной путевки?

Необходимо открыть справочник Страны, чтобы увидеть стоимость и обязательность оформления визы и загранпаспорта для визита в данную страну.

Ожидаемый результат: получить информацию о стоимость оформления визы и паспорта.

Полученный результат: отобразился список стран с необходимыми данными для каждой.

Вывод: Получена информация о стоимости оформления визы и загранпаспорта.

4) Какие путевки позволяют отдохнуть в указанные сроки и не предполагают использования самолета в качестве средства перемещения?

В справочнике «Путевки» в форму фильтрации необходимо выбрать только интересующие виды транспорта.

Ожидаемый результат: получить информацию о путевках.

Полученный результат: отобразился список путевок с интересующими видами транспорта.

Вывод: Получена информация о об интересующих путевках.

5) Какие путевки являются «горящими», то есть дата отправления, указанная в них, не более, чем на 5 дней больше текущей?

В списке путевок необходимо выбрать способ сортировки: по дате отправления, все путевки отсортируются в порядке возрастания даты отправления.

Ожидаемый результат: получить информацию о путевках.

Полученный результат: отобразился список путевок в порядке возрастания даты отправления.

Вывод: Получена информация об интересующих путевках.

6) Какие скидки возможны для постоянных клиентов фирмы?

При оформлении продажи менеджер указывает скидку в процентах (от базовой цены путевки). Размеры возможных скидок устанавливаются руководством.

Ожидаемый результат: стоимость путевки уменьшится на указанную величину скидки.

Полученный результат: Итоговая стоимость путевки уменьшилась на указанный процент скидки.

Вывод: Скидки клиентов корректно учитываются.

7) Что представляет собой самая дорогая путевка из имеющихся в продаже на текущий день?

В списке путевок необходимо выбрать способ сортировки: по цене, все путевки отсортируются в порядке убывания цены.

Ожидаемый результат: получить информацию о путевках.

Полученный результат: отобразился список путевок в порядке убывания цены.

Вывод: Получена информация об интересующих путевках.

8) Какие путевки пользуются наибольшим спросом?

В списке путевок необходимо выбрать способ сортировки: по количеству продаж, все путевки отсортируются в порядке убывания количества продаж.

Ожидаемый результат: получить информацию о путевках.

Полученный результат: отобразился список путевок в порядке убывания количества продаж.

Вывод: Получена информация об интересующих путевках.

Тестирование методов, которые заносят и модифицируют информацию в базе данных.

1) Добавление нового клиента:

В справочнике «Клиенты» кликаем по кнопке «Добавить нового», заполняем информацию о новом клиенте, кликаем по «ОК»

Ожидаемый результат: В базу данных запишется информация о новом клиенте.

Полученный результат: в справочнике «Клиенты» появился новый клиент.

Выводы: в программе реализована функция добавления данных в таблицы БД.

2) Изменение данных о клиенте

В справочнике клиенты напротив нужного клиента необходимо нажать на кнопку «Изменить» и откорректировано необходимые данные, после чего нужно нажать на кнопку «Сохранить»

Ожидаемый результат: в БД изменится информация о клиенте.

Полученный результат: в справочнике «Клиенты» изменилась информация о клиенте.

Выводы: в программе реализована функция изменения данных в таблицах БД.

база данный автоматизация туристический

Заключение

В ходе выполнения курсовой работы был проведен анализ предметной области Туристическая фирма, была спроектирована БД в исследуемой предметной области, и создана с помощью СУБД Mysql.

Также была разработана программа для работы с таблицами созданной базы данных в виде web-сайта. Для разработки программы использовался язык php.

Разработанная база данных совместно с программой работы с ней позволяют добавлять новую информацию и изменять добавленную ранее.

Таким образом, все задачи, поставленные перед данным курсовым проектом, выполнены, а значит и основная цель - достигнута.

Список использованных источников

1. Жадеев А. PHP для начинающих / А. Жадеев. - Спб.: «Питер», 2014. - 592 c.

2. Колисниченко Д. PHP и MySQL. Разработка WEB-приложений / Д. Колисниченков - Спб: БХВ-Петербург, 2013. - 560 с.

3. Конналли Т. Базы данных. Проектирование, реализация и сопровождение. Теория и практика / Т. Коналли, К. Бегг. - М.: Издательский дом «Вильямс», 2003. - 592 c.

4. Хомоненко А.Д. и др. Базы данных: Учебник для вузов / Под ред. проф. А.Д. Хомоненко. -- СПб.: КОРОНА принт, 2004 -- 736 с

Приложение А

SQL-Скрипт создания базы данных

Структура таблицы `city`

CREATE TABLE IF NOT EXISTS `city` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`caption` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`countryid` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;

--

-- Дамп данных таблицы `city`

--

INSERT INTO `city` (`id`, `caption`, `countryid`) VALUES

(1, 'Париж', 1),

(2, 'Анапа', 2),

(3, 'Сочи', 2),

(4, 'Геленджик', 2);

--

-- Структура таблицы `client`

--

CREATE TABLE IF NOT EXISTS `client` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`fio` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`phone` varchar(20) COLLATE utf8_unicode_ci NOT NULL,

`passport` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`registedate` date NOT NULL,

`comment` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,

`zagranpassport` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;

--

-- Дамп данных таблицы `client`

--

INSERT INTO `client` (`id`, `fio`, `phone`, `passport`, `registedate`, `comment`, `zagranpassport`) VALUES

(1, 'Иванов Иван Иванович', '+7962545874', '0102214547 Выдан РОВД центрального района г. Мытищи', '2016-12-18', NULL, '');

-- Структура таблицы `clientsvisa`

CREATE TABLE IF NOT EXISTS `clientsvisa` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`caption` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`validdate` date NOT NULL,

`clientid` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

-- Структура таблицы `country`

--

CREATE TABLE IF NOT EXISTS `country` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`caption` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`visarequred` tinyint(1) NOT NULL,

`pasrequred` tinyint(1) NOT NULL,

`visacurrency` decimal(10,0) DEFAULT NULL,

`pascurrency` decimal(10,0) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

--

-- Дамп данных таблицы `country`

--

INSERT INTO `country` (`id`, `caption`, `visarequred`, `pasrequred`, `visacurrency`, `pascurrency`) VALUES

(1, 'Франция', 1, 1, '2500', '4000'),

(2, 'Россия', 0, 0, '0', '0');

--

-- Структура таблицы `permit`

--

CREATE TABLE IF NOT EXISTS `permit` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`caption` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`description` text COLLATE utf8_unicode_ci,

`price` decimal(10,0) NOT NULL,

`begindate` date NOT NULL,

`enddate` date NOT NULL,

`routeid` int(11) NOT NULL,

`active` tinyint(1) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

--

-- Дамп данных таблицы `permit`

--

INSERT INTO `permit` (`id`, `caption`, `description`, `price`, `begindate`, `enddate`, `routeid`, `active`) VALUES

(1, 'Париж весной', NULL, '10000', '2016-12-01', '2016-12-18', 1, 1),

(2, 'На юга', NULL, '40000', '2015-11-01', '2016-02-01', 2, 1);

--

-- Структура таблицы `permitservice`

--

CREATE TABLE IF NOT EXISTS `permitservice` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`serviceid` int(11) NOT NULL,

`permitid` int(11) NOT NULL,

`price` decimal(10,0) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

--

-- Структура таблицы `route`

--

CREATE TABLE IF NOT EXISTS `route` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`caption` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`description` text COLLATE utf8_unicode_ci,

`active` tinyint(1) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;

--

-- Дамп данных таблицы `route`

--

INSERT INTO `route` (`id`, `caption`, `description`, `active`) VALUES

(1, 'В Париж!', '111', 1),

(2, 'Сочи-Анапа-Геленджик', '', 1);

--

-- Структура таблицы `routepoint`

--

CREATE TABLE IF NOT EXISTS `routepoint` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`pointorder` int(11) NOT NULL,

`transporttypeid` int(11) NOT NULL,

`hotel` varchar(20) COLLATE utf8_unicode_ci NOT NULL,

`hotelclass` int(11) NOT NULL,

`hoteldescription` text COLLATE utf8_unicode_ci,

`excursions` text COLLATE utf8_unicode_ci,

`cityid` int(11) NOT NULL,

`routeid` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;

--

-- Дамп данных таблицы `routepoint`

INSERT INTO `routepoint` (`id`, `pointorder`, `transporttypeid`, `hotel`, `hotelclass`, `hoteldescription`, `excursions`, `cityid`, `routeid`) VALUES

(1, 1, 1, 'Pentilion', 4, '', 'Эйфелевабашня, Лувр', 1, 1),

(2, 1, 1, 'Мариот', 4, '', '', 3, 2),

(3, 2, 2, 'не нужен', 0, '', '', 2, 2),

(4, 3, 2, 'Парамаунт', 4, '', '', 4, 2);

--

-- Структура таблицы `sale`

CREATE TABLE IF NOT EXISTS `sale` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`permitid` int(11) NOT NULL,

`saledate` datetime NOT NULL,

`price` decimal(10,0) NOT NULL,

`discount` decimal(10,0) NOT NULL,

`pricedisc` decimal(10,0) NOT NULL,

`userid` int(11) NOT NULL,

`clientid` int(11) NOT NULL,

`comment` text COLLATE utf8_unicode_ci,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;

--

-- Дамп данных таблицы `sale`

--

INSERT INTO `sale` (`id`, `permitid`, `saledate`, `price`, `discount`, `pricedisc`, `userid`, `clientid`, `comment`) VALUES

(1, 1, '2016-12-18 12:52:08', '10000', '2', '9800', 1, 1, '1');

--

-- Структура таблицы `service`

--

CREATE TABLE IF NOT EXISTS `service` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`caption` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

--

-- Дамп данных таблицы `service`

INSERT INTO `service` (`id`, `caption`) VALUES

(1, 'Питание'),

(2, '');

--

-- Структура таблицы `transporttype`

--

CREATE TABLE IF NOT EXISTS `transporttype` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`caption` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;

--

-- Дамп данных таблицы `transporttype`

--

INSERT INTO `transporttype` (`id`, `caption`) VALUES

(1, 'Самолет'),

(2, 'Автобус'),

(3, 'Пароход');

--

-- Структура таблицы `user`

--

CREATE TABLE IF NOT EXISTS `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`fio` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`login` varchar(30) COLLATE utf8_unicode_ci NOT NULL,

`password` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`hash` varchar(32) COLLATE utf8_unicode_ci NOT NULL,

`ip` int(10) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;

--

-- Дамп данных таблицы `user`

--

INSERT INTO `user` (`id`, `fio`, `login`, `password`, `email`, `hash`, `ip`) VALUES

(1, 'Администратор', 'admin', 'c3284d0f94606de1fd2af172aba15bf3', 'admin@noemail.ru', 'f7dcb4b8f0ca0db1755e216df0d54342', 2130706433);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Приложение Б

Исходный код программы

Исходный код модуля index.php

<?php

include('config.php');

include('checkauth.php');

if ($auth)

{

print "

<div class='page'>

<h1>Управление системой</h1>

<hr>

<div class='container'>

<div class='row main-menu'>

<div class='col-xs-12 col-sm-6 col-md-3'>

<div class='panel panel-success'>

<div class='panel-heading'>

<h3 class='panel-title'>Путевки</h3>

</div>

<div class='panel-body'>

<div class='text-success icon'>

<span class='glyphicon glyphicon-folder-open' aria-hidden='true'></span>

</div>

Просмотр и управление данными путевок<br>

<a href='panel.php'>Перейти</a>

</div>

</div>

</div>

<div class='col-xs-12 col-sm-6 col-md-3'>

<div class='panel panel-info'>

<div class='panel-heading'>

<h3 class='panel-title'>Клиенты</h3>

</div>

<div class='panel-body'>

<div class='text-warning icon'>

<span class='glyphicon glyphicon-magnet' aria-hidden='true'></span>

</div>

Управление данными клиентов<br>

<a href='client.php?action=index'>Перейти</a>

</div>

</div>

</div>

<div class='col-xs-12 col-sm-6 col-md-3'>

<div class='panel panel-primary'>

<div class='panel-heading'>

<h3 class='panel-title'>Продажи</h3>

</div>

<div class='panel-body'>

<div class='text-warning icon'>

<span class='glyphicon glyphicon-education' aria-hidden='true'></span>

</div>

Управление продажами путевок, статистика<br>

<a href='sale.php?action=index'>Перейти</a>

</div>

</div>

</div>

<div class='col-xs-12 col-sm-6 col-md-3'>

<div class='panel panel-warning'>

<div class='panel-heading'>

<h3 class='panel-title'>Пользователи</h3>

</div>

<div class='panel-body'>

<div class='text-warning icon'>

<span class='glyphicon glyphicon-user' aria-hidden='true'></span>

</div>

Управление пользователями<br>

<a href='users.php'>Перейти</a>

</div>

</div>

</div>

</div>

<div class='exit'>

<a href='logout.php' class='btn btn-danger btn-lg'>Выход</a>

</div>

</div>

</div>

";

}

else

{ header("Location: login.php"); exit();

}

?>

Исходный код модуля config.php

<?php

$username = "root"; // пользователь

$password = ""; // пароль

$server = "localhost"; //сервер

$database = "turizm"; // база данных

header('Content-Type: text/html; charset=utf-8'); //кодировка

//соединяемся с БД

$link=mysqli_connect($server, $username, $password, $database);

mysqli_query($link,"set names utf8");

//ставим титл

Print "<head>

<title>АИС Туризм</title>

<link rel='stylesheet' href='/css/style.css'>

</head>";

?>

Исходный код модуля check.php

<?php

include('config.php');

if (isset($_COOKIE['id']) and isset($_COOKIE['hash']))

{

$query = mysqli_query($link, "SELECT *, INET_NTOA(ip) AS ip FROM user WHERE id = '".$_COOKIE['id']."' LIMIT 1");

$userdata = mysqli_fetch_assoc($query);

if(($userdata['hash'] !== $_COOKIE['hash']) or ($userdata['id'] !== $_COOKIE['id'])

or (($userdata['ip'] !== $_SERVER['REMOTE_ADDR']) and ($userdata['ip'] !== "0")))

{ setcookie("id", "", time() - 3600*24*30*12, "/");

setcookie("hash", "", time() - 3600*24*30*12, "/");

print "Хм, что-то не получилось";

}

else {$auth=true; header("Location: index.php"); exit(); }

}

else { print "Включитекуки";}?>

Исходный код модуля check auth.php

<?php

include('config.php');

if (isset($_COOKIE['id']) and isset($_COOKIE['hash']))

{

$query = mysqli_query($link, "SELECT *,INET_NTOA(ip) AS ip FROM user WHERE id = '".intval($_COOKIE['id'])."' LIMIT 1");

$userdata = mysqli_fetch_assoc($query);

if(($userdata['hash'] !== $_COOKIE['hash']) or ($userdata['id'] !== $_COOKIE['id'])

or (($userdata['ip'] !== $_SERVER['REMOTE_ADDR']) and ($userdata['ip'] !== "0")))

{

setcookie("id", "", time() - 3600*24*30*12, "/");

setcookie("hash", "", time() - 3600*24*30*12, "/");

print "Хм, что-то не получилось";

}

else

{

$auth=true;

}

}

else{ header("Location: login.php"); exit();}

?>

Исходный код модуля login.php

<?php

function generateCode($length=6) {

$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";

$code = "";

$clen = strlen($chars) - 1;

while (strlen($code) < $length) {

$code .= $chars[mt_rand(0,$clen)];

}

return $code;

}

include('config.php');

if(isset($_POST['login']))

{

# Вытаскиваем из БД запись, у которой логин равняеться введенному

$query = mysqli_query($link,"SELECT id, password FROM user WHERE login='".mysqli_real_escape_string($link,$_POST['login'])."' LIMIT 1");

$data = mysqli_fetch_assoc($query);

# Сравниваем пароли

if($data['password'] === md5(md5($_POST['password'])))

{

# Генерируем случайное число и шифруем его

$hash = md5(generateCode(10));

if(!@$_POST['not_attach_ip'])

{

# Если пользователя выбрал привязку к IP

# Переводим IP в строку

$insip = ", ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";

}

# Записываем в БД новый хеш авторизации и IP

mysqli_query($link, "UPDATE user SET hash='".$hash."' ".$insip." WHERE id='".$data['id']."'");

# Ставим куки

setcookie("id", $data['id'], time()+60*60*24*30);

setcookie("hash", $hash, time()+60*60*24*30);

# Переадресовываем браузер на страницу проверки нашего скрипта

header("Location: check.php"); exit();

}

else

{

print "Вы ввели неправильный логин/пароль";

}

}

?>

<body style='height:100%;padding-bottom: 52px;' cz-shortcut-listen='true'>

<div class='container-fluid' style='min-height:100%'>

<form class='form-login' method='POST'>

<h1>Управление заявками. Вход</h1>

<div class='form-group'>

Логин<span class='text-danger'>*</span>

<input type='text' id='login' name='login' required class='form-control' placeholder='Логин' autofocus>

</div>

<div class='form-group'>

Пароль<span class='text-danger'>*</span>

<input type='password' id='password' name='password' required class='form-control' placeholder='Пароль'>

</div>

Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br>

<button type='submit' class='btn btn-lg btn-primary btn-block'>Войти</button>

</form>

</div></body>

Исходный код модуля logout.php

<?php

include('config.php');

setcookie("id", "", time() - 3600*24*30*12, "/");

setcookie("hash", "", time() - 3600*24*30*12, "/");

header("Location: login.php"); exit();

?>

Исходный код модуля city.php

<?php

include('config.php');

include('checkauth.php');

if ($auth)

{ if ($_GET['action']=='add'){

print " <div class='page'>

<h1>Управление системой</h1>

<hr>

<form class='form-ticket' method='GET'>

<h2>Добавление нового города</h2>

<div class='form-group'>

Наименование<span class='text-danger'>*</span>

<input type='text' class='form-control' name='caption' required id='caption' placeholder='Наименование'>

</div> ";

//запрос стран

$querycountryes = mysqli_query($link, "SELECT * FROM country");

print"

<div class='form-group'>

Страна<span class='text-danger'>*</span>

<select class='form-control' name='countryid'>";

While ($country = mysqli_fetch_assoc($querycountryes)) {

print"<option value='".$country['id']."'>".$country['caption']."</option>";

}

print"

</select>

</div>

<input type='hidden' name='action' value='adding'>

<em>Знаком <span class='text-danger'>*</span> отмечены поля, обязательные для заполнения</em><hr>

<a href='city.php?action=index' class='btn btn-lg btn-default'>Назад</a>

<button type='submit' class='btn btn-lg btn-primary '>Сохранить</button>

</form>

</div>

";}

elseif ($_GET['action']=='edit') {

$query = mysqli_query($link, "SELECT * FROM city WHERE id=".$_GET['id']." LIMIT 1");

$data = mysqli_fetch_assoc($query);

print " <div class='page'>

<h1>Управление системой</h1>

<hr>

<form class='form-ticket' method='GET'>

<h2>Изменение населенного пункта</h2>

<div class='form-group'>

Наименование<span class='text-danger'>*</span>

<input type='text' class='form-control' name='caption' required id='caption' placeholder='Наименование' value='".$data['caption']."'>

</div> ";

//запрос стран

$querycountryes = mysqli_query($link, "SELECT * FROM country");

print"

<div class='form-group'>

Страна<span class='text-danger'>*</span>

<select class='form-control' name='countryid'>";

While ($country = mysqli_fetch_assoc($querycountryes)) {

if ($country['id'] == $data['countryid']){

print "<option selected value='".$country['id']."'>".$country['caption']."</option>";

}

else {

print"<option value='".$country['id']."'>".$country['caption']."</option>";

}

}

print"

</select>

</div>

<input type='hidden' name='action' value='editing'>

<input type='hidden' name='id' value='".$data['id']."'>

<em>Знаком <span class='text-danger'>*</span> отмечены поля, обязательные для заполнения</em><hr>

<a href='city.php?action=index' class='btn btn-lg btn-default'>Назад</a>

<button type='submit' class='btn btn-lg btn-primary '>Сохранить</button>

</form>

</div>";

}

elseif ($_GET['action']=='index' ) {

$querycities = mysqli_query($link, "SELECT city.id As id, city.caption As citycaption, country.caption As countrycaption FROM city INNER JOIN country ON country.id=city.countryid");

print "

<div class='page'>

<h1>Управление системой</h1>

<hr>

<h2>Список населенных пунктов</h2>

<a href='panel.php' class='btn btn-default'>Назад</a>

<a href='city.php?action=add' class='btn btn-success'>Добавитьновый</a>

<table class=\"table table-striped\">

<thead>

<tr>

<th>Наименование</th>

<th>Страна</th>

<th>Действия</th>

</tr>

</thead>

<tbody>";

While ($city = mysqli_fetch_assoc($querycities)) {

print "<tr>

<td>".$city['citycaption']."</td>

<td>".$city['countrycaption']."</td>

<td><a href='city.php?action=edit&id=".$city['id']."' class=\"btn btn-primary\">Изменить</td>

</tr>";

}

print "</tbody>

</table>

</div>

"; }

elseif ($_GET['action']=='adding' ) {

mysqli_query($link,"INSERT INTO city (caption, countryid) VALUES ('".$_GET['caption']."', ".$_GET['countryid'].")");

header("Location: city.php?action=index"); exit();

}

elseif ($_GET['action']=='editing' && isset ($_GET['id'])) {

mysqli_query($link,"UPDATE city SET caption='".$_GET['caption']."', countryid=".$_GET['countryid']." WHERE id=".$_GET['id']);

header("Location: city.php?action=index"); exit();

}

else {

header("Location: panel.php"); exit();

}

}else{ header("Location: login.php"); exit();} ?>

Исходный код модуля client.php

<?php

include('config.php');

include('checkauth.php');

if ($auth)

{ if ($_GET['action']=='add'){

print " <div class='page'>

<h1>Управление системой</h1>

<hr>

<form class='form-ticket' method='GET'>

<h2>Добавление нового клиента</h2>

<div class='form-group'>

ФамилияИмяОтчество<span class='text-danger'>*</span>

<input type='text' class='form-control' name='fio' required placeholder='ФИО'>

</div>

<div class='form-group'>

Телефон<span class='text-danger'>*</span>

<input type='text' class='form-control' name='phone' required >

</div>

<div class='form-group'>

Данныепаспорта<span class='text-danger'>*</span>

<input type='text' class='form-control' name='passport' required>

</div>

<div class='form-group'>

Данные загранпаспорта (если есть)<span class='text-danger'>*</span>

<input type='text' class='form-control' name='zagranpassport'>

</div>

<input type='hidden' name='action' value='adding'>

<em>Знаком <span class='text-danger'>*</span> отмечены поля, обязательные для заполнения</em><hr>

<a href='client.php?action=index' class='btn btn-lg btn-default'>Назад</a>

<button type='submit' class='btn btn-lg btn-primary '>Сохранить</button>

</form>

</div> "; }

elseif ($_GET['action']=='edit') {

$query = mysqli_query($link, "SELECT * FROM client WHERE id=".$_GET['id']." LIMIT 1");

$data = mysqli_fetch_assoc($query);

print " <div class='page'>

<h1>Управление системой</h1>

<hr>

<form class='form-ticket' method='GET'>

<h2>Изменение данных клиента</h2>

<div class='form-group'>

ФамилияИмяОтчество<span class='text-danger'>*</span>

<input type='text' class='form-control' name='fio' required placeholder='ФИО' value='".$data['fio']."'>

</div>

<div class='form-group'>

Телефон<span class='text-danger'>*</span>

<input type='text' class='form-control' name='phone' required value='".$data['phone']."' >

</div>

<div class='form-group'>

Данныепаспорта<span class='text-danger'>*</span>

<input type='text' class='form-control' name='passport' required value='".$data['passport']."'>

</div>

<div class='form-group'>

Данные загранпаспорта (если есть)<span class='text-danger'>*</span>

<input type='text' class='form-control' name='zagranpassport' value='".$data['zagranpassport']."'>

</div>

<input type='hidden' name='action' value='editing'>

<input type='hidden' name='id' value='".$data['id']."'>

<em>Знаком <span class='text-danger'>*</span> отмечены поля, обязательные для заполнения</em><hr>

<a href='client.php?action=index' class='btn btn-lg btn-default'>Назад</a>

<button type='submit' class='btn btn-lg btn-primary '>Сохранить</button>

</form>

</div> "; }

elseif ($_GET['action']=='index' ) {

$queryclients = mysqli_query($link, "SELECT client.id, client.fio, client.phone, client.registedate, client.passport, client.zagranpassport, Count(clientsvisa.id) As countvisa, COUNT(sale.id) As countsales FROM client

LEFT JOIN clientsvisa ON clientsvisa.clientid=client.id LEFT JOIN sale ON sale.clientid=client.id

GROUP BY client.id, client.fio, client.registedate, client.passport, client. zagranpassport");

print "

<div class='page'>

<h1>Управление системой</h1>

<hr>

<h2>Список клиентов</h2>

<a href='index.php' class='btn btn-default'>Назад</a>

<a href='client.php?action=add' class='btn btn-success'>Добавитьнового</a>

<table class=\"table table-striped\">

<thead>

<tr>

<th>ФИО</th>

<th>Телефон</th>

<th>Дата регистрации</th>

<th>Данные паспорта</th>

<th>Данные загранпаспорта</th>

<th>Визы</th>

<th>Количество покупок</th>

<th>Действия</th>

</tr>

</thead>

<tbody>";

While ($client = mysqli_fetch_assoc($queryclients)) {

print "<tr>

<td>".$client['fio']."</td>

<td>".$client['phone']."</td>

<td>".$client['registedate']."</td>

<td>".$client['passport']."</td>

<td>".$client['zagranpassport']."</td>

<td>".$client['countvisa']."</td>

<td>".$client['countsales']."</td>

<td><a href='client.php?action=edit&id=".$client['id']."' class=\"btn btn-primary\">Изменить</td>

</tr>";

}

print "</tbody>

</table>

</div>

"; }

elseif ($_GET['action']=='adding' ) {

mysqli_query($link,"INSERT INTO client (fio, phone, passport, zagranpassport, registedate ) VALUES ('".$_GET['fio']."', '".$_GET['phone']."', '".$_GET['passport']."', '".$_GET['zagranpassport']."', NOW())");

header("Location: client.php?action=index"); exit();

}

elseif ($_GET['action']=='editing' && isset ($_GET['id'])) {

mysqli_query($link,"UPDATE client SET fio='".$_GET['fio']."', phone='".$_GET['phone']."' , passport= '".$_GET['passport']."', zagranpassport='".$_GET['zagranpassport']."' WHERE id=".$_GET['id']);

header("Location: client.php?action=index"); exit();

}

else { header("Location: panel.php"); exit(); }

}else{ header("Location: login.php"); exit();}?>

Исходный код модуля country.php

<?php

include('config.php');

include('checkauth.php');

if ($auth)

{ if ($_GET['action']=='add'){

print " <div class='page'>

<h1>Управление системой</h1>

<hr>

<form class='form-ticket' method='GET'>

<h2>Добавление новой страны</h2>

<div class='form-group'>

Наименование<span class='text-danger'>*</span>

<input type='text' class='form-control' name='caption' required id='caption' placeholder='Наименование'>

</div>

<div class='form-group'>

<input type='checkbox' name='visarequred'>Визаобязательна?

</div>

<div class='form-group'>

Стоимость оформления визы (руб.)

<input type='number' class='form-control' name='visacurrency' placeholder='Стоимостьоформлениявизы (руб.) ' value='0'>

</div>

<div class='form-group'>

<input type='checkbox' name='pasrequred' id='caption'>Загранпаспортобязателен?

</div>

<div class='form-group'>

Стоимость оформления загранпаспорта (руб.)

<input type='text' class='form-control' name='pascurrency' placeholder=' Стоимостьоформлениязагранпаспорта (руб.)' value='0'>

</div>

<input type='hidden' name='action' value='adding'>

<em>Знаком <span class='text-danger'>*</span> отмечены поля, обязательные для заполнения</em><hr>

<a href='country.php?action=index' class='btn btn-lg btn-default'>Назад</a>

<button type='submit' class='btn btn-lg btn-primary '>Сохранить</button>

</form>

</div>";}

elseif ($_GET['action']=='edit') {

$query = mysqli_query($link, "SELECT * FROM country WHERE id=".$_GET['id']." LIMIT 1");

$data = mysqli_fetch_assoc($query);

print " <div class='page'>

<h1>Управление системой</h1>

<hr>

<form class='form-ticket' method='GET'>

<h2>Изменение страны</h2>

<div class='form-group'>

Наименование<span class='text-danger'>*</span>

<input type='text' class='form-control' name='caption' required id='caption' placeholder='Наименование' value='".$data['caption']."'>

</div>

<div class='form-group'> ";

if ($data['visarequred']) {

print " <input type='checkbox' name='visarequred' checked >Визаобязательна?"; }

else {

print " <input type='checkbox' name='visarequred'>Визаобязательна?"; }

print "</div>

<div class='form-group'>

Стоимость оформления визы (руб.)

<input type='number' class='form-control' name='visacurrency' placeholder='Стоимостьоформлениявизы (руб.) ' value='".$data['visacurrency']."'>

</div>

<div class='form-group'>";

if ($data['pasrequred']) {

print " <input type='checkbox' name='pasrequred' checked >Загранпаспортобязателен?";

}

else {

print " <input type='checkbox' name='pasrequred' >Загранпаспорт обязателен?"; }

print "

</div>

<div class='form-group'>

Стоимость оформления загранпаспорта (руб.)

<input type='text' class='form-control' name='pascurrency' placeholder=' Стоимостьоформлениязагранпаспорта (руб.)' value='".$data['pascurrency']."'>

</div>

<input type='hidden' name='action' value='editing'>

<input type='hidden' name='id' value='".$data['id']."'>

<em>Знаком <span class='text-danger'>*</span> отмечены поля, обязательные для заполнения</em><hr>

<a href='country.php?action=index' class='btn btn-lg btn-default'>Назад</a>

<button type='submit' class='btn btn-lg btn-primary '>Сохранить</button>

</form>

</div>";

}

elseif ($_GET['action']=='index' ) {

$querycountries = mysqli_query($link, "SELECT * FROM country");

print "

<div class='page'>

<h1>Управление системой</h1>

<hr>

<h2>Список стран</h2>

<a href='panel.php' class='btn btn-default'>Назад</a>

<a href='country.php?action=add' class='btn btn-success'>Добавитьновую</a>

<table class=\"table table-striped\">

<thead>

<tr>

<th>Наименование</th>

<th>Виза?</th>

<th>Стоимость получения визы</th>

<th>Обязательн загранпаспорт?</th>

<th>Стоимость получения загранпаспорта</th>

<th>Действия</th>

</tr>

</thead>

<tbody>";

While ($country = mysqli_fetch_assoc($querycountries)) {

print "<tr>

<td>".$country['caption']."</td>

<td>";

if ($country['visarequred']) {

print "Обязательна";

}

else {

print "Не нужна";

}

print"

</td>

<td>".$country['visacurrency']." руб.</td>

<td>";

if ($country['pasrequred']) {

print "Обязателен";

}

else {

print "Не нужен";

}

print"

</td>

<td>".$country['pascurrency']." руб.</td>

<td><a href='country.php?action=edit&id=".$country['id']."' class=\"btn btn-primary\">Изменить</td>

</tr>";

}

print "</tbody>

</table>

</div> "; }

elseif ($_GET['action']=='adding' ) {

if (isset($_GET['visarequred'])) {$visarequred=1;} else {$visarequred=0;}

if (isset($_GET['pasrequred'])) {$pasrequred=1;} else {$pasrequred=0;}

if (isset($_GET['visacurrency'])) {$visacurrency=$_GET['visacurrency'];} else {$visacurrency=0;}

if (isset($_GET['pascurrency'])) {$pascurrency=$_GET['pascurrency'];} else {$pascurrency=0;}

mysqli_query($link,"INSERT INTO country (caption, visarequred, pasrequred, visacurrency, pascurrency) VALUES ('".$_GET['caption']."', ".$visarequred.", ".$pasrequred.", ".$visacurrency.", ".$pascurrency.")");

header("Location: country.php?action=index"); exit(); }

elseif ($_GET['action']=='editing' && isset ($_GET['id'])) {

if (isset($_GET['visarequred'])) {$visarequred=1;} else {$visarequred=0;}

if (isset($_GET['pasrequred'])) {$pasrequred=1;} else {$pasrequred=0;}

if (isset($_GET['visacurrency'])) {$visacurrency=$_GET['visacurrency'];} else {$visacurrency=0;}

if (isset($_GET['pascurrency'])) {$pascurrency=$_GET['pascurrency'];} else {$pascurrency=0;}

mysqli_query($link,"UPDATE country SET caption='".$_GET['caption']."',visarequred=".$visarequred.", pasrequred= ".$pasrequred.",visacurrency=".$visacurrency.",pascurrency=".$pascurrency." WHERE id=".$_GET['id']);

header("Location: country.php?action=index"); exit();

}

else { header("Location: panel.php"); exit(); }

}else{ header("Location: login.php"); exit();}?>

Размещено на Allbest.ru


Подобные документы

  • Проектирование логической схемы данных для предметной области, физической модели базы данных. Разработка алгоритмов функциональных модулей программного приложения. Принципы тестирования спроектированного программного обеспечения, анализ эффективности.

    курсовая работа [926,7 K], добавлен 20.05.2015

  • Автоматизация учёта поступления и обучения детей в "Доме детского творчества". Проектирование программного продукта ИС; выбор системы управления базы данных, языка программирования. Разработка концептуальной, логической и физической моделей данных.

    дипломная работа [1,5 M], добавлен 10.10.2015

  • Создание концептуальной (инфологической) модели системы, которая позволила описать сущности предметной области и отношения между ними. Диаграммы функциональных зависимостей атрибутов сущностей базы данных. Разработка программного обеспечения для ЭВМ.

    курсовая работа [877,8 K], добавлен 28.05.2012

  • Этапы создания и разработки базы данных. Построение модели предметной области. Разработка даталогической и физической моделей данных, способы обработки данных о сотрудниках организации. Проектирование приложений пользователя. Создание кнопочной формы.

    курсовая работа [2,1 M], добавлен 14.02.2011

  • Проектирование концептуальной, логической и физической модели базы данных. Формирование сущностей и связей между ними. Создание форм с функциями добавления, редактирования, удаления, поиска, печати. Разработка клиентской части БД с помощью среды Lazarus.

    курсовая работа [1,3 M], добавлен 05.04.2015

  • Разработка базы данных "Учет движения товара в магазине", ее основные функции. Разработка инфологической, концептуальной и физической моделей, предметная область. Определение объектов и связей между объектами. Структура программного обеспечения.

    курсовая работа [1023,7 K], добавлен 05.12.2012

  • Анализ предметной области. Проектирование концептуальной модели. Разработка логической структуры базы данных. Выделение информационных объектов. Создание глобальной схемы связей. Поддержка целостности данных. Структура и назначение существующих форм.

    курсовая работа [1,4 M], добавлен 23.09.2016

  • Построение инфологической (концептуальной) модели предметной области. Проектирование логической и физической структуры базы данных. Реализация проекта в среде конкретной СУБД. Организация корректировки и ввода данных в БД. Разработка интерфейса.

    курсовая работа [1,4 M], добавлен 14.01.2018

  • Построение инфологической концептуальной модели предметной области. Структура базы данных Microsoft Office Access. Формы, запросы и отчеты. Создание форм, запросов и отчетов в базах данных. Схема данных физической и логической сущности в Erwin 4.0.

    курсовая работа [5,1 M], добавлен 13.12.2011

  • Создание программного обеспечения информационной системы автоматизации учебно-учетной деятельности в школе. Формирование логической и концептуальной моделей структурирования данных с использованием CASE-средств. Организация пользовательского интерфейса.

    дипломная работа [1,6 M], добавлен 11.06.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.