CREATE PROCEDURE otchet(sub integer, sem int,
o_year integer)
BEGIN
declare semester,id int;
declare ida int;
declare spec varchar(10);
declare avgm float;
declare done integer default 0;
declare c1 cursor for select T_id, dep_id from T_plan
where sub_id=sub and semester=sem;
declare continue handler for Not found set done=1;
open c1;
repeat
fetch c1 into id,spec;
if (done=0) then
begin
select AVG(mark) into avgm
from Exam E, Vedomost V, Sgroup G
where E.E_id=V.E_id and E.G_id=G.G_id and
Year(E_date)=o_year and E.Semester =sem
and G.Dep_id =sub;
insert Avg_mark values(NULL,id,o_year,avgm);
end;
end if;
until done=1 end repeat;
END
Итоговая логическая модель БД
Итоговая модель базы данных получена объединением таблиц, описанных в п. 5.6, и таблиц, добавленных в ходе разработки структуры отчетов.
Таблица «Студент – Student»
S_Id | Name | G_Id |
Таблица «Преподаватель – Teacher»
T_Id | T_Name |
Таблица «Экзамен – Exam»
E_Id | E_date | S_id | Semester | G_Id |
Таблица «Дисциплина – Subject»
S_id | S_name | Dep_id |
Таблица «Студент-Экзамен – Vedomost»
E_Id | S_Id | Mark |
Таблица «Преподаватель-Экзамен – TeX»
T_Id | E_Id |
Таблица «Кафедра – Department»
Dep_id | D_name | Telefon |
Таблица «Учебный план – T_plan»
T_Id | Sub_id | Dep_id | Semester |
Таблица «Группа – Sgroup»
G_Id | S_index | Dep_id |
Таблица «Отчет 1 – Avg_mark»
Am_Id | T_id | A_year | A_mark |
Рис. 6. Логическая модель базы данных.
Разработка приложения конечного пользователя.
Предполагаем, что все статические HTML страницы и управляющие скипты на языке PHP (д алее - контроллеры), необходимые для работы приложения, хранятся в директории Localhost/Kusovaja на персональном компьютере студента.
Запуск приложения.
Для запуска приложения загружается статическая HTML страница menu.html, которая отсылает пользователю меню, состоящее из 8 пунктов.
Первые 6 пунктов меню позволяют перейти к выполнению одного из оперативных запросов.
При этом управление передается контроллеру соответствующего запроса.
Седьмой пункт – к запуску хранимой процедуры для создания стандартного статистического отчета. Восьмой пункт позволяет просмотреть отчеты, созданные для разных временных периодов. При выборе одного из пунктов меню управление передается соответствующему контроллеру. По окончании работы все контроллеры возвращают управление в главное меню приложения.
Контроллеры запросов 1-6.
В самом простом варианте все контроллеры запросов выполняют однотипные действия.
- Подключаются к базе данных
- Формируют текст соответствующего запроса и передают его на выполнение SQL серверу.
- Переносят результаты запроса в двумерный ассоциированный массив.
- Построчно переносят ассоциированный массив в результирующую динамическую HTML страницу и отсылают ее пользователю. Все сформированные таким образом динамические HTML страницы имеют ссылку для возврата в главное меню.
Контроллер создания стандартного статистического отчета и форма ввода параметров отчета.
Контроллер должен запустить отлаженную ранее процедуру для создания в базе данных новых записей в таблице Avg_mark. При запуске хранимой процедуры необходимо передать ей входные параметры – id дисциплины, семестр и год. Для получения входных параметров от пользователя разработана статическая HTML страница Param_otchet.html. Форма ввода с этой страницы содержит все необходимые поля для ввода параметров и кнопку для отправки их контроллеру создания отчета. При отправке параметров форма передает управление контроллеру создания отчета.
Контроллер создания отчетов выполняет следующие действия.
· Соединяется с базой данных.
· Проверяет, не создавались ранее отчеты с полученными от пользователя параметрами.
· Если отчеты ранее не создавались, то запускает хранимую процедуру создания отчетов и передает в нее полученные от пользователя параметры.
· По окончании работы процедуры передает пользователю сообщение об успешном создании отчетов и ссылкой для возврата в главное меню.
· Если запрошенный для создания отчет уже создавался ранее, то контроллер сообщает об этом пользователю и предлагает вернуться в главное меню.
Контроллер просмотра отчетов за период и форма ввода параметров отчета.
Контроллер просмотра отчетов должен выполнить параметризованный запрос к таблице отчетов. Поэтому при выборе соответствующего пункта главного меню вызывается статическая HTML страница для ввода параметров отчета – id дисциплины, семестр и год. После ввода и отсылки параметров на сервер управление передается контроллеру просмотра отчетов, который выполняет следующие действия.
- Соединяется с базой данных.
- Формирует Select запрос для выбора необходимых строк из таблицы отчетов, используя полученные параметры отчета.
- Передает запрос для выполнения SQL серверу.
- Получает результаты запроса и переносит их в двумерный ассоциированный массив.
- Построчно переносит ассоциированный массив в результирующую динамическую HTML страницу и отсылает ее пользователю.