- •Санкт-Петербургский Государственный электротехнический университет «лэти»
- •2006 Задание (вариант 10)
- •Содержание
- •1. Проектирование базы данных
- •2. Структуры таблиц и постоянные связи между таблицами
- •3. Содержимое таблиц, на котором производилась отладка системы.
- •4. Схема иерархии интерфейса.
- •Справки
- •5. Описание экранных форм
- •5.1 Форма "Главная"
- •5.2 Форма "Кинотеатры"
- •5.2.1. Вкладка "Добавление фильма"
- •5.2.2. Вкладка "Удаление фильма"
- •5.2.3. Вкладка "Создание афиши"
- •5.3 Форма "Справочная служба"
- •5.4. Форма "Билеты"
- •5.5 Форма "Билеты"
- •5.5.1 Вкладка "Добавление кинотеатра"
- •5.5.2 Вкладка "Удаление кинотеатра"
- •5.6 Форма "Перечень фильмов"
- •5.6.1 Страница "Добавить фильм"
- •5.6.2 Страница "Удалить фильм"
- •5.10 Форма "с_фильмы"
- •5.11 Форма "с_жанр"
- •5.12 Форма "с_актеры"
- •5.13 Форма "с_призы"
- •6. Описание запросов
- •7. Описание отчетов
- •7.1 Отчет "Афиша"
- •7.3 Отчет "Отчет"
- •Заключение
5.10 Форма "с_фильмы"
Внешний вид:
Назначение: определение сведений о фильме
Источник данных: -
Компоненты:
1) поле со списком "Фильм" – источник данных – запрос
SELECT Фильмы.Название FROM Фильмы;
2) подчиненная форма "З_Фильмы" основана на запросе "З_Фильмы";
5.11 Форма "с_жанр"
Внешний вид:
Назначение: определение кинотеатров, где на определенном сеансе идет фильм определенного жанра
Источник данных: -
Компоненты:
1) поле со списком "Жанр" – источник данных – запрос
SELECT Фильмы.Жанр FROM Фильмы INNER JOIN Сеансы ON Фильмы.Название=Сеансы.Фильм GROUP BY Фильмы.Жанр;
2) поле со списком "Дата" – источник данных – запрос
SELECT Сеансы.Дата FROM Фильмы INNER JOIN Сеансы ON Фильмы.Название=Сеансы.Фильм WHERE (((Фильмы.Жанр)= Forms!С_жанр!жанр)) GROUP BY Сеансы.Дата ORDER BY Сеансы.Дата;
3) поле со списком "Время" – источник данных – запрос
SELECT Сеансы.Время FROM Фильмы INNER JOIN Сеансы ON Фильмы.Название=Сеансы.Фильм WHERE (((Сеансы.Дата)=Forms!С_жанр!дата) And ((Фильмы.Жанр)=Forms!С_жанр!жанр)) GROUP BY Сеансы.Время ORDER BY Сеансы.Время;
4) подчиненная форма "З_Жанр" основана на запросе "З_Жанр";
5.12 Форма "с_актеры"
Внешний вид:
Назначение: определение фильмов, где играет заданный актер и сеансов с этими фильмами
Источник данных: -
Компоненты:
1) поле со списком "Фильм" – источник данных – запрос
SELECT Роли.Актер FROM (Фильмы INNER JOIN Роли ON Фильмы.Название=Роли.Фильм) INNER JOIN Сеансы ON Фильмы.Название=Сеансы.Фильм GROUP BY Роли.Актер ORDER BY Роли.Актер;
2) подчиненная форма "З_акт_фильм" основана на запросе "З_акт_фильм";
3) подчиненная форма "З_Актеры" основана на запросе "З_Актеры", поле связи – "Фильм";
5.13 Форма "с_призы"
Внешний вид:
Назначение: определение фильмов, имеющих награды и сеансов с этими фильмами
Источник данных: - Запрос "З_награды";
Компоненты:
1) поле со списком "Фильм" – источник данных – поле "Фильм"
2) подчиненная форма "З_призы" - поле связи – "фильм";
3) подчиненная форма "З_нагр_сеансы" основана на запросе "З_нагр_сеансы";
6. Описание запросов
6.1 Запрос "З1_Фильм"
SQL-код: INSERT INTO Фильмы ( Название, Режиссер, Оператор, Жанр, Производство, Продолжительность, Стоимость, Кадр )
SELECT Forms![Перечень фильмов]!Name AS Выражение1, Forms![Перечень фильмов]!direct AS Выражение2, Forms![Перечень фильмов]!operator AS Выражение3, Forms![Перечень фильмов]!genre AS Выражение4, Forms![Перечень фильмов]!made AS Выражение5, Forms![Перечень фильмов]!last AS Выражение6, Forms![Перечень фильмов]!price AS Выражение7, Forms![Перечень фильмов]!кадр AS Выражение8;
Результат: добавление записи в таблицу "Фильмы"
6.2 Запрос "З1_Призы"
SQL-код: INSERT INTO Призы ( Приз, Фильм )
SELECT всп2.Приз, Forms![Перечень фильмов]!Name AS Выражение1
FROM всп2;
Результат: добавление записей в таблицу "Призы"
6.3 Запрос "З1_Акт"
SQL-код: INSERT INTO Роли ( Актер, Фильм )
SELECT всп.ФИО, Forms![Перечень фильмов]!Name AS Выражение1
FROM всп;
Результат: добавление записей в таблицу "Роли"
6.4 Запрос "З1_всп", "З1_всп2"
SQL-код: DELETE всп.ФИО FROM всп;
(в "З1_всп2" вместо "всп" – "всп2")
Результат: удаление записей из таблицы "всп" или "всп2"
6.5 Запрос "З2_Фильм"
SQL-код: DELETE Фильмы.Название
FROM Фильмы
WHERE (((Фильмы.Название)=[Forms]![Перечень фильмов]![Уд_ф]));
Результат: удаление записей из таблицы "Фильмы"
6.6 Запросы "З_С1", "З_C2", "З_С3"
SQL-код:
INSERT INTO Сеансы ( Кинотеатр, Фильм, Зал, Дата, Время, Цена, [Кол-во мест] )
SELECT Forms!Кинотеатры![к/т] AS Выражение1, Forms!Кинотеатры!Movie AS Выражение2, всп_сеансы.зал, всп_дни.[все дни], всп_сеансы.время, Round(((Round((Hour(всп_сеансы!время)+0.4)/4,0)/4)*(2-(Кинотеатры!Категория)*0.4)*(Фильмы!Стоимость/600))*(1+(всп_дни!выходные Is Not Null)/5)/10,0)*10 AS Выражение3, Залы.Вместимость
FROM всп_дни, Фильмы, Кинотеатры INNER JOIN (всп_сеансы INNER JOIN Залы ON всп_сеансы.зал = Залы.[№ зала]) ON Кинотеатры.Название = Залы.Кинотеатр
WHERE (((Залы.Кинотеатр)=[Forms]![Кинотеатры]![к/т]) AND ((всп_сеансы.дни)="все дни") AND ((Фильмы.Название)=[Forms]![Кинотеатры]![Movie]));
(В "З_С1" – вместо "все дни" – "выходные", в "З_С" – "будни")
Результат: добавление записей в таблицу "Сеансы"
6.7 Запросы "d_1", "d_2"
SQL-код: INSERT INTO всп_дни ( выходные, [все дни] )
SELECT Forms!Кинотеатры!Curdata AS Выражение1, Forms!Кинотеатры!Curdata AS Выражение2
FROM 1строка
WHERE (((Weekday([Forms]![Кинотеатры]![Curdata]))=1 Or (Weekday([Forms]![Кинотеатры]![Curdata]))=7));
( В d_2 вместо "выходные" – "будни" и вместо "=1", "=7" - "<>1", "<>7"
Результат: добавление записей в таблицу "Призы"
6.8 Запрос "З_всп_сеансы"
SQL-код: DELETE всп_сеансы.зал, всп_сеансы.дата AS Выражение1, всп_сеансы.время
FROM всп_сеансы;
Результат: удаление записей из таблицы "всп.сеансы"
6.9 Запрос "З_дни"
SQL-код: DELETE всп_дни.выходные, всп_дни.будни, всп_дни.[все дни]
FROM всп_дни;
Результат: удаление записей из таблицы "всп.дни"
6.10 Запрос "Удалитьфильм"
SQL-код: DELETE Сеансы.Фильм, Сеансы.Кинотеатр
FROM Сеансы
WHERE (((Сеансы.Фильм)=[Forms]![Кинотеатры]![DelMovie]) AND ((Сеансы.Кинотеатр)=[Forms]![Кинотеатры]![к/т]));
Результат: удаление записей с заданным кинотеатром и фильмом из таблицы "сеансы"
6.11 Запрос "З_Реперт"
SQL-код: SELECT Сеансы.Фильм, Min(Сеансы.Дата) AS [Min-Дата], Max(Сеансы.Дата) AS [Max-Дата]
FROM Сеансы
WHERE (((Сеансы.Кинотеатр)=[Forms]![С_Репертуар]![к/т]))
GROUP BY Сеансы.Фильм;
Результат: отображение всех фильмов из репертуара заданного кинотеатра, дат начала и конца их проката
6.12 Запрос "З_адрес"
SQL-код: SELECT Кинотеатры.Район, Кинотеатры.Адрес
FROM Кинотеатры
WHERE (((Кинотеатры.Название)=[Forms]![С_адрес]![к/т]));
Результат: отображение района и адреса заданного кинотеатра
6.13 Запрос "З_сеансы"
SQL-код: SELECT Сеансы.Цена, Сеансы.[Кол-во мест], Сеансы.Кинотеатр, Сеансы.Зал, Сеансы.Дата, Сеансы.Время
FROM Сеансы
WHERE (((Сеансы.Кинотеатр)=[Forms]![С_сеансы]![к/т]) AND ((Сеансы.Зал)=[Forms]![С_сеансы]![зал]) AND ((Сеансы.Дата)=[Forms]![С_сеансы]![Дата]) AND ((Сеансы.Время)=[Forms]![С_сеансы]![Время]));
Результат: отображение цены билета и количества свободных мест для заданного сеанса
6.14 Запрос "З_Фильмы"
SQL-код: SELECT Фильмы.Жанр, Фильмы.Производство, Фильмы.Режиссер, Фильмы.Кадр
FROM Фильмы
WHERE (((Фильмы.Название)=[Forms]![С_фильмы]![фильм]));
Результат: отображение сведений о фильме с заданным названием
6.15 Запрос "З_награды"
SQL-код: SELECT Призы.Фильм
FROM Призы
GROUP BY Призы.Фильм;
Результат: отображение всех фильмов, имеющих награды
6.16 Запрос "З_нагр_сеансы"
SQL-код: SELECT Сеансы.Кинотеатр, Сеансы.Дата, Сеансы.Зал, Сеансы.Время
FROM Сеансы
WHERE (((Сеансы.Фильм)=[Forms]![С_награды]![Фильм]))
ORDER BY Сеансы.Кинотеатр, Сеансы.Дата, Сеансы.Зал, Сеансы.Время;
Результат: отображение всех сеансов, на которых показывают фильм, имеющий награду
6.17 Запрос "З_Призы"
SQL-код: SELECT Призы.Приз
FROM Призы
WHERE (((Призы.Фильм)=[Forms]![С_награды]![Фильм]));
Результат: отображение всех призов заданного фильма
6.18 Запрос "Добавление кинотеатра"
SQL-код: INSERT INTO Кинотеатры ( Название, Район, Адрес, Категория )
SELECT Forms![Перечень кинотеатров]!Название AS Выражение1, Forms![Перечень кинотеатров]!Район AS Выражение2, Forms![Перечень кинотеатров]!Адрес AS Выражение3, Forms![Перечень кинотеатров]!Категория AS Выражение4
FROM 1строка;
Результат: добавление записи в таблицу "Кинотеатры"
6.19 Запрос "Удаление кинотеатра"
SQL-код: DELETE Кинотеатры.Название
FROM Кинотеатры
WHERE (((Кинотеатры.Название)=([Forms]![Перечень кинотеатров]![Уд к/т])));
Результат: удаление записи из таблицы "Кинотеатры"
6.20 Запрос "Вр удаление"
SQL-код: DELETE Сеансы.Кинотеатр
FROM Сеансы
WHERE (((Сеансы.Кинотеатр)=[Forms]![Перечень кинотеатров]![Уд к/т]));
Результат: удаление записей с заданны кинотеатром из таблицы "Сеансы"
6.21 Запрос "З_продать"
SQL-код: UPDATE Сеансы SET Сеансы.[Кол-во мест] = (Сеансы![Кол-во мест])-(Forms!Билеты!Поле14)
WHERE (((Сеансы.Кинотеатр)=[Forms]![Билеты]![к/т]) AND ((Сеансы.Зал)=[Forms]![Билеты]![зал]) AND ((Сеансы.Дата)=[Forms]![Билеты]![Дата]) AND ((Сеансы.Время)=[Forms]![Билеты]![Время]));
Результат: уменьшение количества свободных мест на заданном сеансе
6.22 Запрос "обн_доход"
SQL-код: UPDATE Доход SET Доход.Доход = Доход!Доход+Forms!Билеты!Сум
WHERE (((Доход.Кинотеатр)=[Forms]![Билеты]![к/т]) AND ((Доход.День)=[Forms]![Билеты]![Дата]));
Результат: увеличение дохода кинотеатра в заданный день
6.23 Запрос "з_афиша_вых","з_афиша_будни"
SQL-код: INSERT INTO всп_аф ( время, день )
SELECT Сеансы.Время, "выходные" AS Выражение1
FROM Сеансы
WHERE (((Сеансы.Кинотеатр)=[Forms]![Кинотеатры]![к/т]) AND ((Сеансы.Фильм)=[Forms]![Кинотеатры]![PresMovie]) AND ((Weekday([Сеансы]![Дата]))=1 Or (Weekday([Сеансы]![Дата]))=7))
GROUP BY Сеансы.Время;
(В "з_афиша_будни" вместо "выходные" - "будни", "=1", "=7" – "<>1", "<>7")
Результат: добавление записей в таблицу "всп_аф"
6.24 Запрос "З_афиша"
SQL-код: SELECT Фильмы.Название, Фильмы.Режиссер, Фильмы.Оператор, Фильмы.Жанр, Фильмы.Производство, Фильмы.Продолжительность, First(Фильмы.Кадр) AS [First-Кадр], Min(Сеансы.Дата) AS [Min-Дата], Max(Сеансы.Дата) AS [Max-Дата], всп_аф.день, всп_аф.время, Сеансы.Кинотеатр
FROM всп_аф, всп_аф AS всп_аф_1, Фильмы INNER JOIN Сеансы ON Фильмы.Название = Сеансы.Фильм
WHERE (((Сеансы.Кинотеатр)=[Forms]![Кинотеатры]![к/т]) AND ((Сеансы.Фильм)=[Forms]![Кинотеатры]![PresMovie]))
GROUP BY Фильмы.Название, Фильмы.Режиссер, Фильмы.Оператор, Фильмы.Жанр, Фильмы.Производство, Фильмы.Продолжительность, всп_аф.день, всп_аф.время, Сеансы.Кинотеатр;
Результат: отображение всех данных о заданном фильме
6.25 Запрос "кол-во по жанрам"
SQL-код: SELECT [кол-во фильмов].Жанр, Count([кол-во фильмов].Жанр) AS [Count-Жанр]
FROM [кол-во фильмов]
GROUP BY [кол-во фильмов].Жанр;
Результат: отображение количества фильмов каждого жанра
6.26 Запрос "д_отчета"
SQL-код: SELECT Кинотеатры.Район, Кинотеатры.Название, Count([кол-во фильмов].[Count-Название]) AS [Count-Count-Название], ср_цена.Название, ср_цена.[Avg-Цена], ([Sum-Доход])/[кол-во фильмов по к/т]![Count-Название] AS Выражение1
FROM [кол-во фильмов], [кол-во фильмов по к/т] INNER JOIN ((Кинотеатры INNER JOIN ср_цена ON Кинотеатры.Название = ср_цена.Кинотеатр) INNER JOIN дох ON Кинотеатры.Название = дох.Кинотеатр) ON [кол-во фильмов по к/т].Кинотеатр = Кинотеатры.Название
GROUP BY Кинотеатры.Район, Кинотеатры.Название, ср_цена.Название, ср_цена.[Avg-Цена], ([Sum-Доход])/[кол-во фильмов по к/т]![Count-Название];
Результат: отображение всех данных, необходимых для отчета – количество фильмов, средняя цена фильмов по кинотеатрам, доход кинотеатров