Розробка інформаційної системи для туристичної фірми "Fabulous Tour"

Проектування та реалізація реляційної бази даних для фірми з надання послуг у галузі міжнародного та внутрішнього туризму. Забезпечення можливості швидкого доступу до інформації про клієнтів та турів. Обґрунтування вибору портативної серверної платформи.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 18.01.2020
Размер файла 2,9 M

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

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

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

Одеський національний політехнічний університет

Кафедра економічної кібернетики та інформаційних технологій

КУРСОВИЙ ПРОЕКТ

на тему: Розробка інформаційної системи для туристичної фірми «Fabulous Tour»

з дисципліни «Технології проектування та адміністрування баз даних та сховищ даних»

Студентки 4 курсу Дубенчук Ю. О.

напряму підготовки 6.030502

Економічна кібернетика

Керівник Глава М. Г.

м. Одеса - 2017 рік

ЗМІСТ

ВСТУП

РОЗДІЛ 1. ПОСТАНОВКА ЗАДАЧІ ТА ПРОЕКТУВАННЯ БАЗИ ДАНИХ

1.1 Постановка задачі

1.2 Проектування бази даних

РОЗДІЛ 2. СТВОРЕННЯ БАЗИ ДАНИХ

2.1 Створення таблиць

2.2 Створення функцій та тригерів

2.3 Створення запитів до бази даних

РОЗДІЛ 3. ВИБІР ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

3.1 Аргументування вибору СУБД PostgreSQL 9.5

3.2 Обґрунтування вибору Open Server 5.2.2

РОЗДІЛ 4. ОПИС ПРОГРАМНОЇ РЕАЛІЗАЦІЇ ТА ТЕСТОВИЙ ПРИКЛАД

4.1 Опис програмної реалізації

4.2 Тестовий приклад

4.3 Інструкція користувача

ВИСНОВОК

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

ДОДАТКИ

ВСТУП

Основи сучасної інформаційної технології становлять бази даних (БД) і системи керування базами даних, роль яких як єдиного засобу зберігання, обробки й доступу до більших обсягів інформації постійно зростає. При цьому істотним є постійне підвищення обсягів інформації, збереженої в БД, що спричиняє вимогу збільшення продуктивності таких систем. Різко зростає також у різноманітних застосуваннях попит на інтелектуальний доступ до інформації. Це особливо проявляється при організації логічної обробки інформації в системах баз знань, на основі яких створюються сучасні експертні системи.

Поняття бази даних можна застосувати до будь-якої зв'язаної між собою, по певній ознаці інформації, збереженої й організованої особливим образом - як правило у вигляді таблиць.

Взагалі база даних - це набір записів і файлів, організованих спеціальним чином. У комп'ютері, наприклад, можна зберігати прізвища й адреси друзів або клієнтів. Один з типів баз даних - це документи, набрані за допомогою текстових редакторів і згруповані по темах. Інший тип - файли електронних таблиць, поєднувані в групи по характеру їхнього використання.

Дані - це інформація, зафіксована в певній формі, придатної для наступної обробки, зберігання й передачі. Будь-який користувач повинен мати можливість одержувати необхідну йому інформацію, модернізувати її, заносити нову й видаляти стару, причому кінцевий користувач може про всі ці операції й не знати.

База Даних (БД) - це структурована певним чином сукупність даних, що ставиться до конкретної задачі. БД може бути як локальна, так і розподілена.

Курсовий проект призначений для придбання практичних навичок у проектуванні баз даних для зберігання й обробки економічної інформації, використання сучасних інформаційних технологій для організації збору, обробки й зберігання даних, виявленні можливих шляхів підвищення ефективності прийняття рішень у керуванні підприємством.

Темою даної курсової роботи є проектування бази даних туристичної фірми.

Необхідно: спроектувати й реалізувати реляційну базу даних для централізованого зберігання інформації, з метою полегшення і систематизації даних замовлень клієнтів та швидкого доступу до інформації про клієнтів, працівників фірми та турів, які вони пропонують.

Метою розробки даної курсової роботи є створення масштабованої, безпечної й надійної бази даних та інтерфейсу до неї, яка б удосконалила процес введення та обробки інформації в туристичній фірмі.

При розробці даного проекту бази даних були визначені наступні цілі:

- ефективного керування інформацією про співробітників і клієнтів туристичної фірми;

- Реалізувати механізм ефективного розподілу зайнятості співробітників фірми між різними клієнтськими заявками;

- Якісно й вчасно обслужити всі заявки клієнтів.

РОЗДІЛ 1 ПОСТАНОВКА ЗАДАЧІ ТА ПРОЕКТУВАННЯ БАЗИ ДАНИХ

1.1 Постановка задачі

Туроператор «Fabulous Tour» - туристична фірма, яка активно працює в різноманітних сферах туризму. Основними видами діяльності туристичної фірми «Fabulous Tour» являються:

- освітні програми;

- корпоративний туризм;

- екзотичні тури;

- дитячі тури; автобусні тури; тури вихідного дня;

- тури по Україні; гастрономічні тури;

- бюджетні тури; лікувальні тури.

У туристичній фірмі ведеться облік обслугованих замовлень, що здійснюються кожним співробітником фірми. Штат фірми складається з 11 працівників. Відомості про працівника складаються з: ім'я, прізвища, посади, відділу в якому він працює, номеру телефону, адреса електронної пошти, домашньої адреси, внутрішнього номера, дати прийняття на роботу.

Штатний розклад туристичної фірми передбачає посади: директор, бухгалтер, керівник відділу рекламних агентів, маркетолог, менеджер по рекламі, керівник відділу туризму, менеджер внутрішнього туризму, менеджер виїзного туризму, менеджер по формуванню індивідуальних турпакетів, секретар, а також обслуговуючий персонал, що включає в себе прибиральницю та охоронця.

Туристична фірма збирає відомості про клієнтів: ім'я, прізвище, адреса, статус. Необхідно: спроектувати й реалізувати реляційну базу даних для централізованого зберігання інформації, з метою полегшення і систематизації даних замовлень клієнтів та розробити інтерфейс до неї.

Туристична фірма займається наданням послуг у галузі міжнародного та внутрішнього туризму. Метою є інформування потенційних клієнтів по різним турам, які фірма розробляє самостійно. Інформація, якою повинна володіти туристична фірма для своєї роботи: географічне місце відпочинку (країна), інформація про сам тур (маршрут, початок туру, фотографії), вартість туру, гіди туру, кількість днів, кількість місць. Таким чином, база даних повинна містити такі сутності:

- Клієнти (ПІБ, серія та номер паспорту, адрес і т. д.);

- Замовлення ( ПІБ замовника, тур, на який здійснюється замовлення та працівник, що буде це замовлення обслуговувати);

- Тури (назва, ціна, кількість днів, маршрут і т. д.);

- Співробітники (ПІБ, адреса, посада внутрішній номер і т. д.);

- Країни (назва країни, гід);

- Типи турів (назва типу тура);

- Відділи (назва відділу, внутрішній код, директор відділу).

1.2 Проектування бази даних

Спроектована база даних складається з десяти таблиць зв'язаних між собою. Розглянемо таблицю з описом сутностей (таблиця 1.1).

Таблиця 1.1 - Опис сутностей

Сутність

Опис

1

2

customers

Зберігається інформація про клієнтів: ПІБ, день народження, серія та номер паспорту, дата отримання паспорту, стать, адрес електронної пошти, телефон, адрес.

orders

Зберігається інформація про замовлення: код клієнта, код тура, код співробітника, що обслуговує дане замовлення.

tours

Зберігаються дані про тури: назва туру, ціна в гривні та доларах, кількість днів, маршрут, кількість місць, опис туру, фото туру, дата туру.

employees

Зберігається повна інформація про співробітників фірми: ПІБ, день народження, стать, адрес, відділ, посада, внутрішній номер, дата прийняття на роботу, телефон, адрес електронної пошти.

offices

Зберігається інформація про відділи фірми: назва відділу, внутрішній код, ПІБ директора відділу.

typetour

Зберігається інформація про тип турів.

countries

Зберігається інформація про країни.

guides

Зберігається інформація про гідів.

linktourtype

Слугує для зв'язку з таблицями tours та typetour.

linktourcountry

Слугує для зв'язку з таблицями tours та countries.

Схема даних представлена на рисунку А.1 ( див. в ДОДАТКАХ). Визначимо атрибути об'єктів та їх типи даних, первині та зовнішні ключі. Інформація представлена в таблиці 1.2.

Таблиця 1.2 - Типи даних та атрибути сутностей

Сутність

Атрибут

Тип даних

Ключ

1

2

3

4

customers

id_customer

Лічильник (int)

Первинний

name

Текстовий (varchar)

birthday

Дата (date)

series_passport

Текстовий (char(2))

number_passport

Числовий (int)

date_of_issue_passport

Дата (date)

sex

Текстовий (sex)

email

Текстовий (char(30))

phone_number

Числовий (bigint)

address

Текстовий (address)

orders

id_order

Лічильник (int)

Первинний

customer

Числовий (int)

Зовнішній

tour

Числовий (int)

Зовнішній

employee

Числовий (int)

Зовнішній

tours

id_tour

Лічильник (int)

Первинний

tour_name

Текстовий (varchar)

price

Числовий (int)

price_dollar

Числовий (int)

count_day

Числовий (int)

route

Текстовий (varchar)

seats

Числовий (int)

description

Текстовий (varchar)

image

Масив (text[])

date_travel

Дата (date)

route_dow

Текстовий (varchar)

icon

Текстовий (varchar)

employees

id_employee

Лічильник (int)

Первинний

name

Текстовий (varchar)

birthday

Дата (date)

sex

Текстовий (sex)

address

Текстовий (address)

office

Числовий (int)

Зовнішній

post

Текстовий (varchar)

internal_number

Числовий (int)

date_of_employment

Дата (date)

phone_number

Числовий (bigint)

email

Текстовий (char(30))

offices

id_office

Лічильник (int)

Первинний

office

Текстовий (varchar)

internal_code

Числовий (bigint)

director

Текстовий (varchar)

typetour

id_type

Лічильник (int)

Первинний

type

Текстовий (varchar)

countries

id_country

Лічильник (int)

Первинний

country

Текстовий (varchar)

flag

Текстовий (varchar)

guide

Числовий (int)

Зовнішній

guides

id_guide

Лічильник (int)

Первинний

employee

Числовий (int)

Зовнішній

photo

Текстовий (varchar)

linktourtype

id_tour

Числовий (int)

Первинний складений, зовнішній

id_type

Числовий (int)

linktourcountry

id_tour

Числовий (int)

Первинний складений, зовнішній

id_country

Числовий (int)

РОЗДІЛ 2. СТВОРЕННЯ БАЗИ ДАНИХ

2.1 Створення таблиць

За спроектованою схемою бази даних необхідно створити десять таблиць. Для того, щоб інтерфейс користувача був зручніше, та прискорити процедуру заповнення даних, атрибути з ідентифікаційним номером повинні створюватись автоматично.

Це здійснювалось за допомогою створювання послідовності:

create sequence s_customers;

create sequence s_orders;

create sequence s_tours;

create sequence s_typetour;

create sequence s_countries;

create sequence s_guides;

create sequence s_employees;

create sequence s_offices;

create sequence s_linktourtype;

create sequence s_linktourcountry;

Для того, щоб уникнути допущення помилок при введенні даних у базу та щоб прискорити цей процес було створено домен та складений тип даних.

Приклад створення домену для атрибута sex:

create domain sex char(10)

default 'мужской'

check(value in('мужской', 'женский'));

Приклад складеного типу даних для атрибута address:

create type address as

(city varchar, street varchar, house smallint, flat smallint);

Код створення таблиці Клієнти:

create table customers

(id_customer int primary key default nextval('s_customers'),

name varchar,

birthday date,

series_passport char(2),

number_passport int,

date_of_issue_passport date,

sex sex,

email char(30),

phone_number bigint,

address address

);

Код створення таблиці Замовлення:

create table orders

(id_order int primary key default nextval('s_orders'),

customer int references customers(id_customer),

tour int references tours(id_tour),

employee int references employees(id_employee)

);

Код створення таблиці Тури:

create table tours

(id_tour int primary key default nextval('s_tours'),

tour_name varchar,

price int,

price_dollar int,

count_day int,

route varchar,

seats int,

description varchar,

image text[],

date_travel date,

route_dow varchar,

icon varchar

);

Код створення таблиці Співробітники:

create table employees

(id_employee int primary key default nextval('s_employees'),

name varchar,

birthday date,

sex sex,

address address,

office int references offices(id_office),

post varchar,

internal_number int,

date_of_employment date,

phone_number bigint,

email char(30)

);

Код створення таблиці Відділи:

create table offices

(id_office int primary key default nextval('s_offices'),

office varchar,

internal_code bigint,

director varchar

);

Код створення таблиці Тип турів:

create table typetour

(id_type int primary key default nextval('s_typetour'),

type varchar

);

Код створення таблиці Країни:

create table countries

(id_country int primary key default nextval('s_countries'),

country varchar,

flag varchar,

guide int references guides(id_guide)

);

Код створення таблиці Гіди:

create table guides

(id_guide int primary key default nextval('s_guides'),

employee int references employees(id_employee),

photo varchar

);

Код створення зв'язаної таблиці, що зв'язує таблиці Тури та Типи турів:

create table linktourtype

(id_tour int references tours(id_tour),

id_type int references typetour(id_type),

primary key (id_tour, id_type)

);

Код створення зв'язаної таблиці, що зв'язує таблиці Тури та Країни:

create table linktourcountry

(id_tour int references tours(id_tour),

id_country int references countries(id_country),

primary key (id_tour, id_country)

);

2.2 Створення функцій та тригерів

Функція, яка рахує загальну суму по одному туру:

create or replace function summ_tour(int)

RETURNS float

AS 'declare

summ float;

BEGIN

select into summ (price*seats) from tours where id_tour = $1 group by price, seats;

return summ;

END;'

LANGUAGE 'plpgsql';

Виклик функції:

select summ_tour(4);

Функція, яка рахує кількість турів по типу туру:

create or replace function count_typetour(int)

RETURNS int

AS 'declare

count int;

BEGIN

select into count count(T.id_tour) from tours T, linktourtype LT, typetour TT where T.id_tour = LT.id_tour and TT.id_type=LT.id_type and TT.id_type=$1;

return count;

END;'

LANGUAGE 'plpgsql';

Функція, яка рахує кількість турів по країні

create or replace function count_countrytour(int)

RETURNS int

AS 'declare

count int;

BEGIN

select into count count(T.id_tour) from tours T, linktourcountry LC, countries C where T.id_tour = LC.id_tour and C.id_country=LC.id_country and C.id_country=$1;

return count;

END;'

LANGUAGE 'plpgsql';

Функція, яка виводить суму проданих турів по країні

create or replace function sum_country(int)

RETURNS float

AS 'declare

summ float;

BEGIN

select into summ sum(T.price) from tours T, linktourcountry LC, countries C, orders O where T.id_tour = LC.id_tour and C.id_country=LC.id_country and

O.tour=T.id_tour and C.id_country=$1;

return summ;

END;'

LANGUAGE 'plpgsql';

Тригерна функція для видалення туру:

create function delete_tours()

RETURNS trigger

AS 'BEGIN

delete from orders linktourtype

where id_order=old.id_tour;

delete from linktourtype

where id_tour=old.id_tour;

delete from linktourcountry

where id_tour=old.id_tour;

return old;

END;'

LANGUAGE 'plpgsql';

create trigger delete_tours

before delete on tours

for each row

execute procedure delete_tours();

Тригерна функція для видалення клієнтів:

create function delete_customers()

RETURNS trigger

AS 'BEGIN

delete from orders

where customer=old.id_customer;

return old;

END;'

LANGUAGE 'plpgsql';

create trigger delete_customers

before delete on customers

for each row

execute procedure delete_customers();

Тригерна функція для видалення співробітника:

create function delete_employees()

RETURNS trigger

AS 'BEGIN

delete from guides

where employee=old.id_employee;

update orders set employee=null

where employee=old.id_employee;

return old;

END;'

LANGUAGE 'plpgsql';

create trigger delete_employees

before delete on employees

for each row

execute procedure delete_employees();

Тригерна функція для видалення гіда:

create function delemployee()

RETURNS trigger

AS 'BEGIN

update countries set guide=null

where guide=old.id_guide;

return old;

END;'

LANGUAGE 'plpgsql';

create trigger delemployee

before delete on guides

for each row

execute procedure delemployee();

2.3 Створення запитів до бази даних

Інтерфейс програми написаний на мові програмування PHP. В інтерфейс були інтегровані sql-запити, які забезпечують його взаємодію з базою даних.

Вони включають в себе запити на додавання, видалення, редагування даних, вибірку з діапазону та ін.

Для зручності користування інтерфейсу були створені SQL-запити, які відображають інформацію з таблиць в зрозумілому вигляді.

Нижче приведений список SQL-запитів, які використовувалися при створені інтерфейсу.

Запит на додавання нового туру:

$insert = "insert into tours (tour_name, price, price_dollar, count_day, route, seats, description, image, date_travel, route_dow, icon) Values ('%s', '%d', '%d', '%d', '%s', '%d', '%s', '%s', '%s', '%s', '%s')";

Запит на додавання id в зв'язані таблиці:

$insert1 = "INSERT INTO linktourtype (id_tour,id_type) VALUES ('$id','%d')";

$insert2 = "INSERT INTO linktourcountry(id_tour,id_country) VALUES ('$id','%d')";

Запит на додавання нового клієнта:

$insert = "insert into customers (name, birthday, series_passport, number_passport, date_of_issue_passport, sex, email, phone_number, address) Values ('%s', '%s', '%s', '%d', '%s', '%s', '%s', '%d', '%s')";

Запит на додавання нового замовлення:

$insert = "insert into orders (customer, tour, employee) Values ('%d', '%d', '%d')";

Запит на додавання нового співробітника:

$insert = "insert into employees (name, birthday, sex, address, office, post, internal_number, date_of_employment, phone_number, email) Values ('%s', '%s', '%s', '%s', '%d', '%s', '%d', '%s', '%d', '%s')";

Запит на додавання нового відділу:

$insert = "insert into offices (office, internal_code, director) Values ('%s', '%d', '%s')";

Запит на додавання нового типу турів:

$insert = "insert into typetour (type) Values ('%s')";

Запит на додавання нової країни:

$insert = "insert into countries (country, flag, guide) Values ('%s', '%s', '%d')";

Запит на додавання нового гіда:

$insert = "insert into guides (employee, photo) Values ('%d', '%s')";

Запит на редагування туру:

$update = "update tours set tour_name='%s', price='%d', price_dollar='%d', count_day='%d', route='%s', seats='%d', description='%s', image='%s', date_travel='%s', route_dow='%s', icon='%s' where id_tour='%d'";

Запит на редагування зв'язаних таблиць:

$update1 = "update linktourtype set id_type='%d' where id_tour='%d'";

$update2 = "update linktourcountry(id_tour,id_country) VALUES ('$id','%d')";

Запит на редагування клієнта:

$update = "update customers set name='%s', birthday='%s', series_passport='%s', number_passport='%d', date_of_issue_passport='%s', sex='%s', email='%s', phone_number='%d', address='%s' where id_customer='%d'";

Запит на редагування замовлення:

$update = "update orders set customer='%d', tour='%d', employee='%d' where id_order='%d'";

Запит на редагування співробітника:

$update = "update employees set name='%s', birthday='%s', sex='%s', address='%s', office='%d', post='%s', internal_number='%d', date_of_employment='%s', phone_number='%d', email='%s' where id_employee='%d'";

Запит на редагування відділу:

$update = "update offices set office='%s', internal_code='%d', director='%s' where id_office='%d'";

Запит на редагування типу туру:

$update = "update typetour set type='%s' where id_type='%d'";

Запит на редагування країни:

$update = "update countries set country='%s', flag='%s', guide='%d' where id_country='%d'";

Запит на редагування гіда:

$update = "update guides set employee='%d', photo='%s' where id_guide='%d'";

Запит виведення тура:

$query = sprintf("SELECT * FROM tours where id_tour='%d'", (int)$id);

Запит виведення кортежу по id, що зв'язує таблиці турів та країни:

$query = sprintf("SELECT * FROM linktourcountry where id_tour='%d'", (int)$id);

Запит виведення кортежу по id, що зв'язує таблиці турів та типів турів:

$query = sprintf("SELECT * FROM linktourtype where id_tour='%d'", (int)$id);

Запит виведення клієнта:

$query = sprintf("SELECT * FROM customers where id_customer='%d'", (int)$id);

Запит виведення частин складеного типу даних адрес:

$query = sprintf("select (address).city, (address).street, (address).house, (address).flat from customers where id_customer='%d'", (int)$id);

Запит виведення замовлення:

$query = sprintf("SELECT * FROM orders where id_order='%d'", (int)$id);

Запит виведення таблиці співробітників:

$query = sprintf("SELECT * FROM employees where id_employee='%d'", (int)$id);

Запит виведення відділу:

$query = sprintf("SELECT * FROM offices where id_office='%d'", (int)$id);

Запит виведення типу тура:

$query = sprintf("SELECT * FROM typetour where id_type='%d'", (int)$id);

Запит виведення країни:

$query = sprintf("SELECT * FROM countries where id_country='%d'", (int)$id);

Запит виведення гіда:

$query = sprintf("SELECT * FROM guides where id_guide='%d'", (int)$id);

Запит на видалення тура:

$query = sprintf("Delete from tours where id_tour='%d'", $id);

Запит на видалення клієнта:

$query = sprintf("Delete from customers where id_customer='%d'", $id);

Запит на видалення замовлення:

$query = sprintf("Delete from orders where id_order='%d'", $id);

Запит на видалення співробітника:

$query = sprintf("Delete from employees where id_employee='%d'", $id);

Запит на видалення відділення:

$query = sprintf("Delete from offices where id_office='%d'", $id);

Запит на видалення типу тура:

$query = sprintf("Delete from typetours where id_type='%d'", $id);

Запит на видалення країни:

$query = sprintf("Delete from countries where id_country='%d'", $id);

Запит на видалення гіда:

$query = sprintf("Delete from guides where id_guide='%d'", $id);

Запит, який виводить інформацію про тури (назву тура, кількість заказів, ціну в гривнях, ціну в доларах):

select tour_name, count(O.tour), sum(price), sum(price_dollar) from tours T, orders O

where T.id_tour=O.tour

group by tour_name

order by tour_name;

Запит, який виводить ПІБ клієнтів і тури, на які було зроблено замовлення:

select name, tour_name from customers, tours, orders

where id_customer = customer and id_tour = tour;

Запит, який виводить кількість і ціну проданих путівок по типам турів:

select type, count(tour), sum(price), sum(price_dollar) from typetour TT, tours T, orders, linktourtype LT

where TT.id_type = LT.id_type and T.id_tour = LT.id_tour and tour = T.id_tour

group by type

order by type;

Запит, який виводить тури і типи турів на які ще не було зроблено жодного замовлення:

select distinct tour_name, type from tours T, typetour TT, linktourtype LT

where T.id_tour=LT.id_tour and TT.id_type=LT.id_type and T.id_tour not in(select tour from orders);

Запит, який виводить тур, тип туру і дату тура на які не залишилося вільних місць

select tour_name, type, date_travel from tours T, linktourtype LT, typetour TT

where TT.id_type = LT.id_type and T.id_tour = LT.id_tour and seats =

(select count(tour) from orders where tour=T.id_tour

group by tour);

Запит, який виводить тур, тип туру і залишок місць по туру

with count_seats as

(select T.id_tour, type, tour_name, seats from tours T, typetour TT, linktourtype LT

where TT.id_type = LT.id_type and T.id_tour = LT.id_tour),

count_order as

(select id_tour, count(tour) as kolvo from tours T, orders

where tour = T.id_tour

group by id_tour)

select S.tour_name, S.type, seats-kolvo as tail

from count_seats S, count_order O

where O.id_tour=S.id_tour order by S.tour_name;

Запит пошуку по таблиці клієнтів:

$q = "select * from customers WHERE upper(name) LIKE '%" . $query . "%'";

Запит пошуку по таблиці замовлень:

$q = "select distinct O.id_order, C.name, T.tour_name, E.name from orders O, customers C, tours T, employees E

WHERE C.id_customer=O.customer and T.id_tour=O.tour and E.id_employee=O.employee and upper(C.name) LIKE '%" . $query . "%'";

Запит пошуку по таблиці турів:

$q = "select * from tours WHERE upper(tour_name) LIKE '%" . $query . "%'";

Запит пошуку по таблиці співробітників:

$q = "select id_employee, name, birthday, sex, address, O.office, post, internal_number, date_of_employment, phone_number, email from employees E, offices O WHERE E.office=O.id_office and upper(name) LIKE '%" . $query . "%'";

Запит пошуку по таблиці відділення:

$q = "select * from offices WHERE upper(office) LIKE '%" . $query . "%'";

Запит пошуку по таблиці типи турів:

$q = "select * from typetour WHERE upper(type) LIKE '%" . $query . "%'";

Запит пошуку по таблиці країн:

$q = "select id_country, country, flag, E.name from countries, employees E WHERE guide=E.id_employee and upper(country) LIKE '%" . $query . "%'";

Запит пошуку по таблиці гідів:

$q = "select id_guide, E.name, photo from employees E, guides WHERE employee=E.id_employee and upper(E.name) LIKE '%" . $query . "%'";

РОЗДІЛ 3. ВИБІР ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

При розробці Бази даних для туристичної фірми «Fabulous Tour» було використане таке програмне забезпечення:

1) СУБД PostgreSQL 9.5;

2) Open Server 5.2.2 (мова програмування PHP 7);

3) вбудований в Open Server HTTP сервер Apache;

4) Microsoft Access (для створення інформаційної моделі бази даних).

3.1 Аргументування вибору СУБД PostgreSQL 9.5

PostgreSQL - це об'єктно-реляційна система управління базами даних (ОРСУБД, ORDBMS), заснована на POSTGRES, Version 4.2 - програмою, розробленою на факультеті комп'ютерних наук Каліфорнійського університету в Берклі. У POSTGRES з'явилося безліч нововведень, які були реалізовані в деяких комерційних СУБД набагато пізніше.

Це система управління даними, представленими у вигляді відносин (relation). Відношення - це математично точне позначення таблиці. Зберігання даних в таблицях так поширене сьогодні, що це здається найочевиднішим варіантом, хоча є безліч інших способів організації баз даних. Наприклад, файли і каталоги в Unix-подібних операційних системах утворюють ієрархічну базу даних, а сьогодні активно розвиваються об'єктно-орієнтовані бази даних.

Будь-яка таблиця є іменований набір рядків. Всі рядки таблиці мають однаковий набір іменованих стовпців, при цьому кожній колонці призначається певний тип даних. Хоча порядок стовпців у всіх рядках фіксований, важливо пам'ятати, що SQL не гарантує будь-який порядок рядків у таблиці (хоча їх можна явно впорядкувати при виведенні).

Таблиці об'єднуються в бази даних, а набір баз даних, керований одним екземпляром сервера PostgreSQL, утворює кластер баз даних.

PostgreSQL - СУБД з відкритим вихідним кодом, основою якого був код, написаний в Берклі. Вона підтримує більшу частину стандарту SQL і пропонує безліч сучасних функцій:

- складні запити;

- зовнішні ключі;

- тригери;

- змінювані уявлення;

- транзакційна цілісність;

- багатоверсійність.

Крім того, користувачі можуть всіляко розширювати можливості PostgreSQL, наприклад створюючи свої:

- типи даних;

- функції;

- оператори;

- агрегатні функції;

- методи індексування;

- процедурні мови.

А завдяки вільній ліцензії, PostgreSQL дозволяється безкоштовно використовувати, змінювати і поширювати всім і для будь-яких цілей - особистих, комерційних чи навчальних [4].

PostgreSQL і більшість інших СУБД використовують SQL як мови запитів. SQL добре переносим і простий у вивченні. Однак кожен оператор SQL виконується індивідуально на сервері бази даних.

Це означає, що ваш клієнтський додаток повинен кожен запит відправляти на сервер, чекати поки він буде оброблений, отримувати результат, робити деякі обчислення, потім відправляти наступні запити на сервер. Все це вимагає взаємодії між процесами, а також несе навантаження на мережу, якщо клієнт і сервер бази даних розташовані на різних комп'ютерах.

PL / pgSQL дозволяє згрупувати блок обчислень і послідовність запитів всередині сервера бази даних, таким чином, ми отримуємо силу процедурного мови і простоту використання SQL при значній економії накладних витрат на клієнт-серверне взаємодія. Крім того PL/pgSQL дозволяє використовувати всі типи даних, оператори і функції SQL.

3.2 Обґрунтування вибору Open Server 5.2.2

Open Server Panel - це портативна серверна платформа і програмне середовище, створене спеціально для веб-розробників з урахуванням їх рекомендацій і побажань.

Програмний комплекс має багатий набір серверного програмного забезпечення, зручний, багатофункціональний продуманий інтерфейс, має потужні можливості з адміністрування та налаштування компонентів. Платформа широко використовується з метою розробки, налагодження і тестування веб-проектів, а також для надання веб-сервісів в локальних мережах. реляційний туризм інформація серверний

Хоча спочатку програмні продукти, що входять до складу комплексу, не розроблялись спеціально для роботи один з одним, така зв'язка стала дуже популярною серед користувачів Windows, в першу чергу через те, що вони отримували безкоштовний комплекс програм з надійністю на рівні Linux серверів.

Зручність і простота управління безумовно не залишать вас байдужими, за час свого існування Open Server зарекомендував себе як першокласний і надійний інструмент необхідний кожному веб-майстру.

Склад програмного комплексу:

- OSPanel 5.2.6;

- Apache 2.2.31 / 2.4.25;

- Bind 9.11;

- Nginx 1.6.3 / 1.8.1 / 1.10.2 / 1.11.7;

- MySQL 5.1.73 / 5.5.53 / 5.6.34 / 5.7.16;

- MariaDB 5.5.53 / 10.0.28 / 10.1.19;

- MongoDB 2.4.14 / 2.6.12 / 3.0.14 / 3.2.11 / 3.4.0;

- PostgreSQL 9.2.19 / 9.3.15 / 9.4.10 / 9.5.5 / 9.6.1;

- Redis 2.8.2402 / 3.0.504 / 3.2.100;

- Memcached 1.2.6 / 1.4.5;

- FTP FileZilla 0.9.59;

- PHP 5.2.17; (Zend Optimizer 3.3.3, IonCube 4.0.7, Memcache 2.2.4);

- PHP 5.3.29; (Xdebug 2.2.7, Memcache 3.0.8, Mongo 1.6.14, Redis 2.2.7, Imagick 3.2.0);

- PHP 5.4.45; (Xdebug 2.4.1, Memcache 3.0.8, Mongo 1.6.14, Redis 2.2.7, Imagick 3.2.0);

- PHP 5.5.38; (Xdebug 2.5.0, Memcache 3.0.8, Mongo 1.6.14, MongoDB 1.2.2, Redis 2.2.7, Imagick 3.2.0);

- PHP 5.6.29; (Xdebug 2.5.0, Memcache 3.0.8, Mongo 1.6.14, MongoDB 1.2.2, Redis 2.2.7, Imagick 3.2.0);

- PHP 7.0.14; (Xdebug 2.5.0, PDFlib 9.1.0, MongoDB 1.2.7, Redis 3.1.0);

- PHP 7.1.00; (Xdebug 2.5.0, PDFlib 9.1.0, MongoDB 1.2.7);

- ImageMagick 6.8.9-9-Q16;

- Ghostscript 9.20;

- Sendmail 32;

- Wget 1.11.4;

- NNCron Lite 1.17;

- Adminer 4.2.5;

- ConEmu 16.12.06;

- HeidiSQL 9.4.0.5125;

- RockMongo 1.1.7;

- PHPRedisAdmin 1.6.0;

- PHPMyAdmin 4.6.5.2;

- PHPPgAdmin 5.2;

- PHPMemcachedAdmin 1.2.2.

Компоненти збірки представлені в 32-бітній і 64-бітній (частково) версіях.

Можливості програми:

- Непомітна робота в треї Windows;

- Швидкий старт і зупинка;

- Автостарт сервера при запуску програми;

- Кілька режимів управління доменами;

- Монтування віртуального диска;

- Підтримка управління через командний рядок;

- Підтримка профілів налаштувань;

- Зручний перегляд логів всіх компонентів;

- Перемикання HTTP, MySQL і PHP модулів;

- Вичерпна і зрозуміла документація;

- Доступ до доменів в один клік;

- Швидкий доступ до шаблонів конфігурації;

- Багатомовний інтерфейс;

- Автозапуск програм за списком.

Особливості комплексу:

- Не вимагає установки (портативність);

- Можливість роботи з USB накопичувачами;

- Одночасна робота з Denwer, Xampp і т.д .;

- Робота на локальному / мережевому / зовнішньому IP адресу;

- Підтримка SSL без всяких додаткових налаштувань;

- Створення домену шляхом створення звичайної папки;

- Підтримка кириличних доменів;

- Підтримка аліасів (доменних покажчиків);

- Захист сервера від зовнішнього доступу;

- Punycode конвертер доменних імен;

- Пакет з понад 40 портативних програм;

- Планувальник завдань (cron);

- Створення локального піддомену без втрати видимості основного домену в мережі інтернет [5].

РОЗДІЛ 4. ОПИС ПРОГРАМНОЇ РЕАЛІЗАЦІЇ ТА ТЕСТОВИЙ ПРИКЛАД

4.1 Опис програмної реалізації

Програмна реалізація даної роботи складається з трьох частин:

- cтворення бази даних в PostgreSQL, який вбудований в платформу Open Server;

- cтворення інтерфейсу користувача за допомогою мови програмування PHP 7, а також використовується HTML 5 та CSS 3;

- зв'язування бази даних та готового інтерфейсу за допомогою платформи Open Server.

Розглянемо опис програмної реалізації на прикладі таблиці Клієнти (рис. 4.1).

Підключення до бази даних:

$dbconn = pg_connect("host=localhost port=5432 dbname=fabuloustour user=postgres password=uferal47") or die('Could not connect: ' . pg_last_error());

Рисунок 4.1 - Таблиця Клієнти

Для відображення даних із бази даних на сторінці в виді таблиці використовується наступний код:

include("database.php");

$query = 'select * from customers order by id_customer';

$result = pg_query($query) or die('Ошибка запроса: ' . pg_last_error());

$rows = pg_num_rows($result);

// Вывод результатов в HTML

echo "<table>

<tr>

<th>ФИО</th>

<th>Дата рождения</th>

<th>Серия паспорта</th>

<th>Номер паспорта</th>

<th>Дата выдачи паспорта</th>

<th>Пол</th>

<th>Email</th>

<th>Номер телефона</th>

<th>Адрес</th>

</tr>";

for ($i=0; $i < $rows; $i++) {

$row = pg_fetch_row($result);

echo "\t<tr>\n";

for($j=1; $j<10; $j++){

echo "\t\t<td><a href='table.php?id_table=1&p=1&id_tour=$row[0]'>

$row[$j]</a></td>\n";

}

echo "\t</tr>\n";

}

echo "</table>\n";

// Очистка результата

pg_free_result($result);

// Закрытие соединения

pg_close($dbconn);

Редагування інформації про клієнта здійснюється на сторінці редагування , для цього необхідно вибрати клієнта і натиснути кнопку «Редактировать». Після редагування даних натиснути кнопку «Сохранить».

Програмний код функції, що здійснює редагування даних по клієнту:

function customers_edit($dbconn, $id, $name, $birthday, $series_passport, $number_passport, $date_of_issue_passport, $sex, $email, $phone_number, $city, $street, $house, $flat){

// Подготовка

$name = trim($name);

$birthday = trim($birthday);

$series_passport = trim($series_passport);

$date_of_issue_passport = trim($date_of_issue_passport);

$sex = trim($sex);

$email = trim($email);

$city = trim($city);

$street = trim($street);

$house = trim($house);

$flat = trim($flat);

$id = (int)$id;

$address ='('. $city.','.$street.','.$house.','.$flat.')';

//Проверка

if($name == "")

return false;

// Запрос

$update = "update customers set name='%s', birthday='%s', series_passport='%s', number_passport='%d', date_of_issue_passport='%s', sex='%s', email='%s', phone_number='%d', address='%s'

where id_customer='%d'";

$query = sprintf($update,

pg_escape_string($dbconn, $name),

pg_escape_string($dbconn, $birthday),

pg_escape_string($dbconn, $series_passport),

pg_escape_string($dbconn, $number_passport),

pg_escape_string($dbconn, $date_of_issue_passport),

pg_escape_string($dbconn, $sex),

pg_escape_string($dbconn, $email),

pg_escape_string($dbconn, $phone_number),

pg_escape_string($dbconn, $address),

$id);

$result = pg_query($dbconn, $query);

if(!$result)

die(pg_error($dbconn));

return true;

}

Код виклику функції редагування таблиці клієнти:

customers_new($dbconn, $_POST['name'], $_POST['birthday'], $_POST['series_passport'], $_POST['number_passport'], $_POST['date_of_issue_passport'], $_POST['sex'], $_POST['email'], $_POST['phone_number'], $_POST['city'], $_POST['street'], $_POST['house'], $_POST['flat']);

Якщо редагування здійсниться успішно, про це буде повідомлено користувача за допомогою прописаного скріпта на javascript(рис.4.2).

Рисунок 4.2 - Редагування даних клієнта

Приклад програмного коду:

echo '<script>alert("Редактирование выполнено успешно!")</script>';

Якщо в процесі редагування здійсниться помилка, зреагує HTML і не буде відправляти форму доки всі дані не будуть введені коректно (рис. 4.3).

Рисунок 4.3 - Не коректно введені дані виводиться помилка

Видалення вибраного рядка з таблиці здійснюється при натисненні користувачем на кнопку «Удалить».

Код функції, що здійснює видалення клієнта:

function customers_delete($dbconn, $id){

// Подготовка

$id = (int)$id;

//Проверка

if($id == 0)

return false;

// Запрос

$query = sprintf("Delete from customers where id_customer='%d'", $id);

$result = pg_query($dbconn, $query);

if (!result)

die(pg_error($dbconn));

return true;

}

Виклик функції видалення:

customers_delete($dbconn, $id);

Видалення співробітника виконується по первинному ключу id_customer, значення якого береться з нульової колонки поточного рядку та передається у SQL-запит.

Додавання запису про нового клієнта виконується на новій сторінці, яка відкривається при натисненні користувачем на кнопку «Добавить» (рис.4.4).

Рисунок 4.4 - Сторінка додавання нового клієнта

Після заповнення необхідних полів користувачем і натиску кнопки «Сохранить» викликається функція, яка записує дані із полів сторінки у базу даних.

Програмний код має вигляд:

function customers_new($dbconn, $name, $birthday, $series_passport, $number_passport, $date_of_issue_passport, $sex, $email, $phone_number, $city, $street, $house, $flat){

//Подготовка

$name = trim($name);

$birthday = trim($birthday);

$series_passport = trim($series_passport);

$date_of_issue_passport = trim($date_of_issue_passport);

$sex = trim($sex);

$email = trim($email);

$city = trim($city);

$street = trim($street);

$house = trim($house);

$flat = trim($flat);

$address ='('. $city.','.$street.','.$house.','.$flat.')';

//Проверка

if($name == "")

return false;

//Запрос

$insert = "insert into customers (name, birthday, series_passport, number_passport, date_of_issue_passport, sex, email, phone_number, address)

Values ('%s', '%s', '%s', '%d', '%s', '%s', '%s', '%d', '%s')";

$query = sprintf($insert,

pg_escape_string($dbconn, $name),

pg_escape_string($dbconn, $birthday),

pg_escape_string($dbconn, $series_passport),

pg_escape_string($dbconn, $number_passport),

pg_escape_string($dbconn, $date_of_issue_passport),

pg_escape_string($dbconn, $sex),

pg_escape_string($dbconn, $email),

pg_escape_string($dbconn, $phone_number),

pg_escape_string($dbconn, $address));

$result = pg_query($dbconn, $query);

if(!$result)

die(pg_error($dbconn));

return true;

}

Виклик функції:

customers_new($dbconn, $_POST['name'], $_POST['birthday'], $_POST['series_passport'], $_POST['number_passport'], $_POST['date_of_issue_passport'], $_POST['sex'], $_POST['email'], $_POST['phone_number'], $_POST['city'], $_POST['street'], $_POST['house'], $_POST['flat']);

Пошук в даній інформаційній системі організований таким чином, щоб максимізувати зручність інтерфейсу для користувача. Для цього в разі успішного пошуку, на сторінці появляються знайдені рядки.

Приклад програмного коду пошуку введених значень:

$q = "select * from customers WHERE upper(name) LIKE '%" . $query . "%'";

$result = pg_query($q) or die('Ошибка запроса: ' . pg_last_error());

$rows = pg_num_rows($result);

// Вывод результатов в HTML

if($rows>0){

echo "<table>

<tr>

<th>№</th>

<th>ФИО</th>

<th>Дата рождения</th>

<th>Серия паспорта</th>

<th>Номер паспорта</th>

<th>Дата выдачи паспорта</th>

<th>Пол</th>

<th>Email</th>

<th>Номер телефона</th>

<th>Адрес</th>

</tr>";

for ($i=0; $i < $rows; $i++) {

$row = pg_fetch_row($result);

echo "\t<tr>\n";

for($j=1; $j<10; $j++){

echo "\t\t<td><a href='table.php?id_table=3&id_tour=$row[0]'>

$row[$j]</a></td>\n";

}

echo "\t</tr>\n";

}

echo "</table>\n";

} else{

echo '<p>По вашему запросу ничего не найдено.</p>';

}

// Очистка результата

pg_free_result($result);

// Закрытие соединения

pg_close($dbconn);

Приклад пошуку інформації в таблиці представлений на рис. 4.5.

Рисунок 4.5 - Приклад пошуку

Програмна реалізація додавання, редагування, видалення та пошуку інформації побудована в інших таблицях аналогічно розглянутому прикладу.

На сторінці «Отчеты» є можливість переглянути виведення таких запитів:

1) рахує загальну вартість турів по типу турів;

2) виводить лише тих клієнтів та тури на які було зролено замовлення;

3) виводить тури та типи турів на які було продано всі путівки;

4) виводить тури та типи турів на які не було зроблено жодного замовлення;

5) здійснює підрахунок вартості обраного туру (рис. 4.6);

6) підраховує залишок путівок;

7) підраховує суму на яку було продано турів по вибраній країні;

8) підраховує кількість турів по обраній країні;

9) підраховує кількість турів по вибраному типу тура.

Приклад програмного коду для здійснення підрахунку вартості обраного туру:

require('templates/query.php');

$tour=$_POST['id_tour'];

if($tour == ""){

return false;

}

$query = "select summ_tour('$tour');";

$result = pg_query($query) or die('Ошибка запроса: ' . pg_last_error());

$rows = pg_num_rows($result);

// Вывод результатов в HTML

echo "<table>

<tr>

<th> Общая сумма по туру</th>

</tr>";

for ($i=0; $i < $rows; $i++) {

$row = pg_fetch_row($result);

echo "\t<tr>\n";

for($j=0; $j<1; $j++){

echo "\t\t<td>

$row[$j]</td>\n";

}

echo "\t</tr>\n";

}

echo "</table>\n";

// Очистка результата

pg_free_result($result);

// Закрытие соединения

pg_close($dbconn);

Рисунок 4.6 - Приклад підрахунку загальної вартості по обраному туру

Інші звіти формуються аналогічно лише для них прописуються різні запити, які приведені в розділі 2 пункт 2.2.

4.3 Тестовий приклад

При вході в базу перш за все відкривається вікно авторизації (рис. 4.7). Потрібно ввести логін та пароль. Потім натиснути кнопку «Войти».

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

Якщо були введені коректні дані, з'являється головна сторінка (рис. 4.8). Якщо введені дані були неправильними, то на екрані з'явиться повідомлення: «Логин и пароль введен не правильно!».

З головної сторінки Ви маєте можливість перейти до будь-якої таблиці бази даних де можна знайти всю потрібну інформацію.

Розглянемо приклад переходу на сторінку «Тури» (рис. 4.9). Даний перехід можливий після натиску на головній сторінці меню(рис. 4.8) кнопки «Тури». Після цього буде відкрита сторінка з інформацією про тури.

Для створення нового запису у таблиці необхідно натиснути на кнопку «Добавить» у лівій частині екрану. Відкривається форма додавання нового тура (рис. 4.10).

Рисунок 4.8 - Головна сторінка

Рисунок 4.9 - Сторінка Тури

Рисунок 4.10 - Сторінка додавання нового Тура

Приклад заповнення даних на сторінці додавання тура рис. 4.11. Якщо дані були введені коректно, то дані про новий тур будуть додані до бази (рис. 4.12). В противній ситуації на екрані з'явиться повідомлення про некоректно введені дані (рис. 4.13).

Рисунок 4.11 - Заповнення таблиці додавання тура

Рисунок 4.12 - Результат правильного введення даних

Рисунок 4.13 - Некоректно заповнена форма

Якщо ж необхідно провести редагування даних, то необхідно поставити курсор у місці де необхідно відредагувати дані і потім натиснути на кнопку. «Редактировать». Відкривається сторінка редагування турів з заповненими полями по вибраному туру (рис. 4.14). Якщо дані були відредаговані коректно, то на екрані з'явиться повідомлення про успішне редагування і дані будуть відредаговані (рис. 4.15), а якщо некоректно, то з'явиться повідомлення і данні не будуть відредаговані.

Рисунок 4.14 - Редагування вибраного тура

Рисунок 4.15 - Редагування туру виконано успішно

Якщо необхідно видалити дані з таблиці, то спочатку необхідно обрати рядок, який треба видалити і потім натиснути на кнопку «Удалить».

Якщо необхідно здійснити пошук по даним в таблиці, то для цього треба встановити курсор в поле для пошуку ввести текст пошуку та натиснути на кнопку «Найти». Якщо дані, які шукаються існують то на екрані з'являться рядки які містять текст заданий в пошуку (рис. 4.16) у разі відсутності даних у таблиці на екрані з'явиться повідомлення з відповідним текстом(рис. 4.17).

Рисунок 4.16 - Результат успішного пошуку

Рисунок 4.17 - Повідомлення про відсутність шуканих даних

Примітка: функція пошуку має строгий синтаксис, тому необхідно вводити текст згідно прикладу вже існуючих даних. Операції над іншими таблицями виконується аналогічно.

4.4 Інструкція користувача

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

Програмна система призначена для надання співробітникам туристичної фірми можливості швидко працювати з інформаційними даними фірми.

1. Перша сторінка (рис. 4.18) являється сторінкою авторизації, де користувач для подальшої роботи повинен ввести логін та пароль.

Рисунок 4.18 - Сторінка авторизації

2. З сторінки авторизації користувач потрапляєте на сторінку головного меню бази, де у нього є можливість обрати з якою таблицею Він хоче працювати в подальшому, або ж закінчити роботу за допомогою кнопки «Выйти» (рис. 4.19).

Рисунок 4.19 - Сторінка, яка містить головне меню бази

3. Робота програми буде показана на прикладі таблиці Співробітники. Вибираємо пункт меню «Сотрудники». Далі ми перейдемо на сторінку де будуть виводитися всі дані по цій таблиці (рис. 4.20).

Рисунок 4.20 - Сторінка з даними про співробітників

Тепер більш детально розглянемо, що знаходиться на цій сторінці. У верхній частині сторінки знаходиться меню за допомогою якого можна переключатися між таблицями, це досить зручно, так як не потрібно кожен раз повертатися на сторінку з меню. А якщо користувач захоче завершити свою роботу він може нажати на кнопку «Главная» перейти на сторінку з меню і вийти з програми. Нижче цього меню знаходиться меню для роботи з даною таблицею. Ми можемо добавити дані до таблиці, редагувати дані та видалити їх, а також існує можливість пошуку по таблиці. На рисунку 4.21 відзначено всі особливості даної сторінки.

Рисунок 4.21 - Робота з таблицею співробітників

4. Далі нажимаємо на кнопку «Добавить» і переходимо на сторінку з формою додавання нового співробітника (рис. 4.22).

Рисунок 4.22 - Сторінка додавання нового співробітника

Як правильно заповняти дану сторінку показано на рисунку 4.23.

Рисунок 4.23 - Сторінка на якій показано як правильно записувати дані в форму

Після того як користувач увів дані він нажимає кнопку «Сохранить» і дані записуються в базі даних та коли користувач нажме кнапку «НАЗАД» він повернеться до сторінки з таблицею на якій відобразиться добавлений ним співробітник (рис. 4.24). Також якщо користувач передумає відправляти свою форму він може нажати кнопку «Очистить» і всі його дані введені у форму видаляться.

Рисунок 4.24 - Добавлений співробітник відобразився у базі

5. Для редагування даних про співробітника вибираємо його з бази даних нажимаємо на його поле і нажимаємо на кнопку «Редактировать». Здійснюється перехід на сторінку з формою, у якій усі поля уже заповнені потрібно лише ввести необхідні корективи і нажати кнопку «Сохранить» (рис. 4.25).

Рисунок 4.25 - Сторінка редагування, на якій показано, що наш співробітник змінив адресу проживання

На рисунку 4.26 показано, що корективи були успішно внесені в базу даних.

Рисунок 4.26 - Дані успішно відредагувалися і записалися в БД

6. Для того, щоб видалити дані потрібно вибрати співробітника, якого потрібно видалити з таблиці і нажати кнопку «Удалить» (рис. 4.27).

Рисунок 4.27 - Співробітник Пупкін видалився з БД

6. Далі розглянемо, як працює пошук по таблиці. В полі пошук можна вводити кількість символів, що не повинна бути менше 3 і не повинна перевищувати 128 символів, якщо це обмеження не бути виконуватися то виведеться відповідне повідомлення (рис. 4.28):

Рисунок 4.28 - Повідомлення про короткий пошуковий запит

Якщо по введеним даним нічого не буде знайдено, то також виведеться відповідне повідомлення (рис. 4.29).

Рисунок 4.29 - Повідомлення про те, що нічого не знайдено по введеному запиті

Якщо ж запит було введено коректно і база знайшла відповідного співробітника, то на сторінці відобразиться результат показаний на рисунку 4.30.

Рисунок 4.30 - Запит дав результат і було виведено шуканого співробітника

Робота з іншими таблицями бази даних аналогічна показаній роботі з таблицею співробітники.

В даному програмі ще присутня таблиця Звіти. Потрапити на неї можна, якщо нажати на кнопку «Отчеты» у верхньому меню, а також ця кнопка присутня і на головному меню програми.

Опинившись на цій сторінці одразу виведеться інформація про тури. І замість меню таблицю з'явилося меню звітів. За допомогою цього меню можна обрати будь-який звіт і отримати по ньому результати (рис. 4.31). Всі звіти працюють аналогічно тому розглянемо звіт який виводить кількість і ціну проданих путівок по типам туру (рис. 4.32), а також звіт який виводить загальну суму тура, який користувач обирає сам за допомогою відповідного поля (рис. 4.33).

Рисунок 4.31 - Сторінка звітів по базі з випадаючим меню

Рисунок 4.32 - Сторінка з звітом, який показує кількість та ціну проданих путівок по типу тура

Рисунок 4.33 - Сторінка з звітом, що показує загальну суму тура по вбраному туру, який користувач обирає з відповідного випадаючого списку

ВИСНОВОК

Завданням даної роботи була розробка інформаційної системи для туристичної фірми «Fabulous Tou», яка б включала в себе базу даних компанії.

Розроблена інформаційна система дає можливість користувачеві здійснювати перегляд, редагування, пошук, за необхідності, видалення даних із основних інформаційних блоків, такі як клієнтb, замовлення, звільнити працівника, видалити замовлення тощо.

В ході даної роботи були здобуті практичні навички у роботі зі СУБД PostgreSQL, створенні бази даних та схеми даних та удосконалення практичних навичок у роботі з платформою Open Server та застосуванням мови програмування PHP.

В проекті застосована лише одна з можливих стратегій роботи з замовленнями. Для подальшої діяльності можливе збільшення гнучкості замовлень не обмежуючись наявною кількістю турів, а й враховувати дані замовлень при плануванні розробки турів.

За допомогою СУБД PostgreSQL було створено ряд таблиць, функцій, та тригерів, які дозволяються правильно користуватися базою даних.

Розроблена БД не може претендувати на повне охоплення всієї інформаційної області обліку замовлень, але основна мета досягнута.

Створена інформаційна система є універсальною та може бути застосована з невеликими змінами у будь-якій туристичній фірмі.

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

1. Малахов Є.В., Блажко О.А., Глава М.Г. Проектування баз даних та їх реалізація засобами стандартного SQL та PostgreSQL: Навч. посіб. Для студ. вищих навч. закладів / Є.В. Малахов, О.А. Блажко, М.Г. Глава. - О: ВМВ, 2012. - 248 с.

2. PostgreSQL [Електронний ресурс]. - Режим доступу: http://ua2.php.net/manual/ru/ref.pgsql.php (13.05.2017).

3. Работа с сесcиями. Создание простой авторизации на PHP [Електронний ресурс]. - Режим доступу: http://blog.ox2.ru/php/avtorizaciya-i-rabota-sessii/ (14.05.2017).

4. 2.Документация по PostgreSQL 9.5 і PostgresPro [Електронний ресурс]. - Режим доступу: https://postgrespro.ru/docs/ (10.05.2017).

5. Open Server [Електронний ресурс]. - Режим доступу: https://ospanel.io/ (10.05.2017).

6. PHP. Личный блог [Електронний ресурс]. - Режим доступу: https://geekbrains.ru/courses/65/chapters/927 (01.05.2017).

ДОДАТКИ

Схема даних

Рисунок А.1 - Схема даних туристичної фірми «Fabulous Tour»

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


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

  • Проектування і реалізація реляційної бази даних для централізованого зберігання інформації з метою полегшення і систематизації даних замовлень клієнтів готельного комплексу. Розробка сценаріїв для створення бази даних і базових таблиць проекту.

    курсовая работа [147,2 K], добавлен 02.06.2019

  • Проектування бази даних у середовищі Visual FoxPro 9.0. Реалізація можливості вносити та зберігати дані про клієнтів салону, про співробітників, перелік послуг, які надає салон. Створення форм та таблиць. Керівництво користувача і лістинг програми.

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

  • Побудова інформаційної системи "Магазин товарів для настільного тенісу" з автоматизації роботи магазину. Концептуальне моделювання бази даних. Обґрунтування вибору СУБД. Логічне проектування бази даних. Схема бази даних. Створення таблиць в конструкторі.

    курсовая работа [8,8 M], добавлен 16.12.2015

  • Створення баз даних для автоматизування роботи торгового представника в середовищі програмування Delрhі. Опис вхідної та результуючої інформації, формалізований опис задачі. Розробка технічного та робочого проекту, опис та обґрунтування вибору структури.

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

  • База даних як організована структура, призначена для зберігання інформації. Проектування та реалізація в СУБД MS Access інформаційної системи "База даних Internet-ресурсів тестів з психології". Розробка логічної системи даних, інструкції користувача.

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

  • Розробка бази даних "Автовокзал". Функціональні залежності між атрибутами. Ідентифікація атрибутів, які в реляційної моделі даних використовуються в якості первинних ключів реляційних відносин. Організація вибірки інформації з бази за допомогою запиту.

    курсовая работа [35,6 K], добавлен 19.08.2012

  • Специфікація вимог користувачів підсистеми, нормативні документи. Опис вхідної та вихідної інформації, алгоритм проектування. Побудова реляційної бази даних. Тестування підсистеми. Формування запитів на мові SQL. Розробка інформаційної підсистеми.

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

  • Аналіз предметної галузі, постановка задачі, проектування бази даних. UML-моделювання, побудова ER-діаграми, схеми реляційної бази даних у третій нормальній формі. Призначення і логічна структура. Опис фізичної моделі бази даних, програмної реалізації.

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

  • Розробка інформаційної системи, що містить дані про товари, їх поставку і доставку за допомогою моделі "Сутність-зв'язок". Вибір засобів її реалізації Структурна схема реляційної бази даних та таблиці БД. Інструкція для користувача програмним продуктом.

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

  • Систематизація знань як основна функція бази даних. Логічне та фізичне проектування бази даних. Створення таблиць у базі даних, визначення основних зв'язків. Інструментальні засоби проектування та створення програмного забезпечення для обробки даних.

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

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