Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Заболотников_Максим_9373_КурсоваяРабота_Кинотеатры

.pdf
Скачиваний:
11
Добавлен:
20.06.2023
Размер:
812.98 Кб
Скачать

Рисунок 8 После выбора кинотеатра и пункта "Посмотреть главную информацию".

Рисунок 96 После выбора пункта "Посмотреть репертуар"

2)Информация о сеансах и билетах на эти сеансы

Теперь, при нажатии на один из фильмов, покажется информация о

сеансах на этот фильм:

21

Рисунок 107 Информация о сеансах

При желании, можно посмотреть всю информацию о фильме. Для этого

необходимо нажать на кнопку "О фильме".

Рисунок 11 Отображение поставщиков.

3)Действия администратора

Если войти как администратор, можно выполнить три действия:

добавить информацию о новом кинотеатре (если построен новый кинотеатр),

снять какой-либо фильм с проката или же изменить репертуар кинотеатра.

22

Рисунок 12 Отображение реквизитов

Чтобы добавить сведения об открывшемся кинотеатре, нужно нажать кнопку "Добавить сведения о новом кинотеатре". Чтобы изменения вступили в силу, надо нажать на кружок у каждого пункта.

Рисунок 13 Заполнение информации о новом кинотеатре

Также администратор может снять какой-то фильм с проката:

23

Рисунок 14 Выбор фильма для снятия я проката

В случае изменения репертуара, администратор добавить информацию о новом фильме (чтобы изменения вступили в силу, надо нажать на кружок у каждого пункта):

Рисунок 15 Изменение репертуара кинотеатров

24

ПРИЛОЖЕНИЕ Б

ЛИСТИНГ ПРОГРАММНОГО КОДА

1. Код SQL-запросов:

1.1.Создание составленных отношений:

create table if not exists Cinemas( cinema_id int primary key, cinema_name text,

district char, adress text

);

create table if not exists Categories( category_n int primary key, capacity int

);

create table if not exists Cinema_Categ( bond_id int primary key,

cinema_id int references Cinemas(cinema_id), category_id int references Categories(category_n)

);

create table if not exists Titles( title_id int primary key, title_name text,

production text, director text, genre text

);

create table if not exists Playbill( playbill_id int primary key,

cinema_id int references Cinemas(cinema_id), title_id int references Titles(title_id)

);

create table if not exists Tiket_Prices( cost_id int primary key,

title_id int references Titles(title_id), category_n int references Categories(category_n), price int

);

create table if not exists Session( session_id int primary key,

playbill_id int references Playbill(playbill_id), cost_id int references Tiket_Prices(cost_id), free_places_n int,

session_date date

);

1.2.Запросы по разграничению прав доступа:

1) Администратор БД

create user admin with password '123456789';

grant select, update, insert, delete on Cinemas to admin; grant select, update, insert, delete on Categories to admin; grant select, update, insert, delete on Cinema_Categ to admin; grant select, update, insert, delete on Titles to admin;

grant select, update, insert, delete on Playbill to admin; grant select, update, insert, delete on Tiket_Prices to admin; grant select, update, insert, delete on Session to admin;

25

2) Менеджер

create user manager with password '666'; grant select, insert on Cinemas to manager;

grant select, insert on Categories to manager;

grant select, update, insert on Cinema_Categ to manager; grant select, insert on Titles to manager;

grant select, insert on Playbill to manager; grant select, insert on Tiket_Prices to manager; grant select, insert on Session to manager;

3) Работник справочной службы

create user worker with password '0000'; grant select on Cinemas to worker;

grant select on Categories to worker; grant select on Cinema_Categ to worker; grant select on Titles to worker;

grant select on Playbill to worker; grant select on Tiket_Prices to worker; grant select on Session to worker;

1.3.Запросы для отображения информации.

1) Вывод репертуара кинотеатра

select c.cinema_name, t.title_name from Cinemas c join Playbill p on c.cinema_id = p.cinema_id

join Titles t on p.title_id = t.title_id where c.cinema_name = 'РусьКино';

2) Вывод адреса и района кинотеатра

select cinema_name, district, adress from Cinemas where cinema_name = 'РусьКино';

3) Вывод числа свободных мест на данный сеанс

select c.cinema_name, t.title_name, s.session_date, s.free_places_n from Cinemas c

join Playbill p on c.cinema_id = p.cinema_id join Titles t on p.title_id = t.title_id

join Session s on p.playbill_id = s.playbill_id

where t.title_name = 'Люди Х' and c.cinema_name = 'Киномакс';

4) Цена билетов на данный сеанс

select price from Tiket_Prices tp

join Session s on s.cost_id = tp.cost_id where tp.category_n = (

select category_n from Cinema_Categ cc

join Cinemas c on cc.cinema_id = c.cinema_id where c.cinema_name = 'Великан-Парк'

)

26

and s.playbill_id = (

select playbill_id from Playbill p

join Cinemas c on p.cinema_id = c.cinema_id join Titles t on p.title_id = t.title_id

where t.title_name = 'Человек Паук' and c.cinema_name = 'Великан-Парк'

)

and s.session_date = '2021-02-07';

5) Жанр, производство и режиссёр данного фильма

select title_name, genre, production, director from Titles where title_name = 'Гарри Поттер: Орден Феникса';

6) Вместимость данного кинотеатра

select cin.cinema_name, c.capacity from Cinemas cin join Cinema_Categ cc on cin.cinema_id = cc.cinema_id join Categories c on c.category_n = cc.category_id where cin.cinema_name = 'Пик';

7) Открытие нового кинотеатра (для администратора)

insert into Cinemas(cinema_id, cinema_name, district, adress) values

(5, 'КиноХайп', 'Октябрьский р-н', 'Пр-кт Фегина, д.15');

8) Снятие фильма с проката (для администратора)

delete from Titles

where title_name = 'Люди Х';

9) Изменение репертуара кинотеатра (для администратора)

begin;

insert into Titles(title_id, title_name, production, director, genre) values

(4, 'Рождество на двоих', 'Feigco Entertainment', ' Пол Фиг', 'Драма');

insert into Playbill(playbill_id, cinema_id, title_id) values (5, 1, 4), (6, 2, 4), (7, 3, 4), (8, 4, 4);

insert into Tiket_Prices(cost_id, title_id, category_n, price) values

(2, 2, 1, 100), (5, 2, 2, 150);

insert into Session(session_id, playbill_id, cost_id, free_places_n, session_date) values

(5, 5, 5, 5000, '2021-02-13'), (6, 6, 2, 2000, '2021-02-14'), (7, 7, 5, 5000, '2021-02-15'), (8, 8, 2, 2000, '2021-02-16'), (17, 5, 5, 5000, '2021-02-13'), (18, 6, 2, 2000, '2021-02-14'), (19, 7, 5, 5000, '2021-02-15'),

27

(20, 8, 2, 2000, '2021-02-16'); commit;

2. SQL-запросы для отчётов и справок

2.1.Для справки о сеансах фильма в указанном кинотеатре

select s.session_date, s.free_places_n, s.session_id, t.title_name, tp.price from Tiket_Prices tp

join Session s on s.cost_id = tp.cost_id join Titles t on tp.title_id = t.title_id where tp.category_n = (

select cc.category_id from Cinema_Categ cc join Cinemas c on cc.cinema_id = c.cinema_id where c.cinema_name = 'Великан-Парк'

)

and s.playbill_id = (

select playbill_id from Playbill p

join Cinemas c on p.cinema_id = c.cinema_id join Titles t on p.title_id = t.title_id

where t.title_name = 'Человек Паук' and c.cinema_name = 'Великан-

Парк' );

2.2.SQL-запрос для отчета о прокате фильмов в районах города

select title_name, cinema_name, price from Titles t join Playbill p on t.title_id = p.title_id

join Cinemas c on p.cinema_id = c.cinema_id join Session s on p.playbill_id = s.playbill_id join Tiket_Prices tp on s.cost_id = tp.cost_id

where s.session_date = '2021-01-05' or s.session_date = '2021-01-07';

28