Форма создания и отправки сообщения
Эта форма (рисунок 17) предназначена для создания сообщения и отправки его выбранным будущим абитуриентам. Форма вызывается с формы просмотра абитуриентов с выбранным адресатом или открывается по вкладке Отправить сообщение на панели навигации пустая. Пользователь пишет тему и текст сообщения, добавляет файлы к сообщению и выбирает абитуриентов из представленного в таблице списка, проставляя напротив каждого из них галочку.
Кнопки управления в блоке со списком абитуриентов предназначены для выделения всех абитуриентов или снятия всех галочек. Программный код:
{Обрабатываем нажатие кнопки Выделить все или Снять выделение}
procedure TFPost.cxBAllClick(Sender: TObject);
var i:integer;
begin
pFIBDS_Post.DisableControls;
pFIBDS_Post.First;
for i := 0 to cxGrid1DBTableView1.
DataController.RecordCount + 1 do
begin
pFIBDS_Post.Edit;
pFIBDS_Post.FieldByName('CB').AsInteger := {если
выделить}1{снять выделение}0;
pFIBDS_Post.Post;
cxGrid1DBTableView1.DataController.RecNo := i;
end;
pFIBDS_Post.EnableControls;
end;
Нажатие на кнопку Сохранить приведет к сохранению параметров сообщения в базе данных. Нажатие на кнопку Отправить запустит процесс отправки. Этот процесс отображается в строке загрузки. На рисунке 18 представлена форма сообщения в процессе отправки. В нижнем правом углу рисунка можно видеть, что адресат получает сообщение на указанную почту.
Рис.18 Форма сообщения в процессе отправки
Форма просмотра сообщений
Форма открывается при выборе на панели навигации вкладки Просмотреть сообщения. Форма просмотра сообщений (рисунок 19) дает возможность проследить кто из пользователей, кому из абитуриентов и когда отправил сообщение. Первая таблица отражает основную информацию о сообщении: пользователь, тема, дата создания сообщения и скольким возможным абитуриентам оно было отправлено. Вторая таблица показывает персональную информацию об абитуриентах, которым было отправлено выделенное сообщение, и их интересы. В смежных текстовых полях отображаются текст выделенного сообщения и прикрепленные файлы через запятую. Эта форма требует доработки. Необходимо добавить кнопки управления, которые будут отсортировывать неотправленные (просто сохраненные) сообщения и открывать форму создания сообщения для последующей отправки.
Рис.19 Форма просмотра сообщений
Отчеты
Главным отчетом в разработанном приложении является «Карточка абитуриента», направленная на расширение возможностей актуализации. «Карточка абитуриента» показана на рисунке 20. Этот отчет выдается на руки возможному абитуриенту в печатном виде. Абитуриент будет знать какую информацию о себе он оставил в вузе и что с ним обязательно смогут связаться если возникнет такая необходимость. Если его контактные данные изменяться, а карточка абитуриента ему всегда напомнит, какая информация о нем известна Университету, в его интересах будет сообщить о произошедших изменениях. Также на карточке абитуриента отражен его ID в университетской базе данных, которое он может использовать, чтобы сообщить о повторном посещении Университета. ID изображен в виде штрих кода для дальнейшей автоматизации учебного процесса.
Рис.20 «Карточка абитуриента»
Отчеты, вызываемые с формы просмотра зарегистрированных будущих абитуриентов, предназначены для ведения статистики по регистрируемым и тех кто их регистрирует.
«Общий» отчет на рисунке 21 дает сводную информацию по всем мероприятиям и зарегистрированным на них абитуриентам. На отчете показана дата его формирования.
«Ваш» отчет на рисунке 22 похож на «Общий» отчет, но формируется только на пользователя авторизованного в системе.
Рис.21 «Общий» отчет
Рис.22 «Ваш» отчет
Отчеты в виде диаграмм дают наглядную статистику по количеству необходимых мест в общежитии – «Общежитие», рисунок 23, по количеству студентов из разных учебных заведений – «Откуда к нам идут», рисунок 24, показывают, кто из сотрудников ЦПК сколько будущих абитуриентов зарегистрировал – «Рейтинг среди сотрудников», рисунок 25.
Рис.23 «Общежитие»
Рис.24 «Откуда к нам идут»
Рис.25 «Рейтинг среди сотрудников»
7.1. Интерфейс – «Галочки»
Для корректной работы Галочек на формах регистрации и создания сообщения в базе данных были реализованы представления. Представление (англ. View) — виртуальная (логическая) таблица, представляющая собой поименованный запрос (алиас к запросу), который будет подставлен как подзапрос при использовании представления. Типичным способом создания представлений для СУБД, поддерживающих язык запросов SQL, является связывание представления с определённым SQL-запросом. Соответственно, содержимое представления — это результат выполнения этого запроса, а возможности построения представления ограничиваются только степенью сложности диалекта SQL, поддерживаемого конкретной СУБД.
Представления используются в запросах к БД тем же образом, как и обычные таблицы. В случае SQL-СУБД имя представления может находиться в SQL-запросе на месте имени таблицы (в предложении FROM). Запрос из представления обрабатывается СУБД точно так же, как запрос, в котором на месте имени представления находится подзапрос, определяющий это представление. При этом СУБД с развитыми возможностями оптимизации запросов перед выполнением запроса из представления могут проводить совместную оптимизацию запроса верхнего уровня и запроса, определяющего представление, с целью минимизации затрат на выборку данных.
Использование представлений не даёт каких-то совершенно новых возможностей в работе с БД, но может быть очень удобно:
· Представления скрывают от прикладной программы сложность запросов и саму структуру таблиц БД. Когда прикладной программе требуется таблица с определённым набором данных, она делает простейший запрос из подготовленного представления. При этом даже если для получения этих данных требуется чрезвычайно сложный запрос, сама программа этого запроса не содержит.
· Использование представлений позволяет отделить прикладную схему представления данных от схемы хранения. С точки зрения прикладной программы структура данных соответствует тем представлениям, из которых программа эти данные извлекает. В действительности данные могут храниться совершенно иным образом, достаточно лишь создать представления, отвечающие потребностям программы. Разделение позволяет независимо модифицировать прикладную программу и схему хранения данных: как при изменении структуры физических таблиц, так и при изменении программы достаточно изменить представления соответствующим образом. Изменение программы не затрагивает физические таблицы, а изменение физической структуры таблиц не требует корректировки программы.
· С помощью представлений обеспечивается ещё один уровень защиты данных. Пользователю могут предоставляться права только на представление, благодаря чему он не будет иметь доступа к данным, находящимся в тех же таблицах, но не предназначенных для него.
· Поскольку SQL-запрос, выбирающий данные представления, зафиксирован на момент его создания, СУБД получает возможность применить к этому запросу оптимизацию или предварительную компиляцию, что положительно сказывается на скорости обращения к представлению, по сравнению с прямым выполнением того же запроса из прикладной программы.
Первое представление ONE_VIEW отвечает за наличие связки между абитуриентом и выбранными им для поступления факультетами:
CREATE VIEW ONE_VIEW(
ID,
NAME,
CB,
FST_PD_ID)
AS
SELECT
s.id,
s.NAME,
case when pr.id is null then 0 else 1 end as cb,
per.id as pers_id
FROM STU_KL_FACULTY s
left join fst_pers_data per on (1=1)
left join fst_fprof pr on (pr.facult_id = s.id and
pr.fst_pd_id = per.id);
За проставление галочки в данном представлении отвечает параметр CB. По запросу проверяется если в таблице-связке абитуриента с факультетом отсутствует связка, от галочка не ставится, иначе галочка ставится. За создание связки между абитуриентом и факультетами при изменении состояния галочки на форме отвечает триггер базы данных ONE_VIEW_BU0:
AS
begin
if (old.cb != new.cb) then
if (new.cb = 1) then
INSERT INTO FST_FPROF(FST_PD_ID, FACULT_ID)
VALUES (old.fst_pd_id, old.id);
else
DELETE FROM FST_FPROF
WHERE (new.fst_pd_id = fst_fprof.fst_pd_id and
new.id = fst_fprof.facult_id);
end
Данный триггер проверяет, если старое значение параметра (значение галочки) не равно новому, то выполнить следующие действия:
· если новое значение равно единице, то создать связь между абитуриентом и факультетом;
· иначе удалить связь.
Второе представление TWO_VIEW отвечает за наличие связки между абитуриентом и выбранными им для поступления специальностями:
CREATE VIEW TWO_VIEW(
ID,
NAME,
CB,
PERS_ID)
AS
SELECT
s.id,
s.NAME,
case when pr.id is null then 0 else 1 end as cb,
per.id as pers_id
FROM stu_kl_specialization s
left join fst_pers_data per on (1=1)
left join fst_fprof pr on (pr.spec_id = s.id and
pr.fst_pd_id = per.id);
За проставление галочки в данном представлении отвечает параметр CB. По запросу проверяется, если в таблице-связке абитуриента со специальностью отсутствует связка, то галочка не ставится, иначе галочка ставится. За создание связки между абитуриентом и специальностью при изменении состояния галочки на форме отвечает триггер базы данных TWO_VIEW_BU0:
AS
begin
if (new.cb != old.cb) then
if (new.cb = 1) then
INSERT INTO FST_FPROF(SPEC_ID, FST_PD_ID)
VALUES (old.id, old.pers_id);
else
DELETE FROM FST_FPROF
WHERE (old.id = fst_fprof.spec_id and old.pers_id =
fst_fprof.fst_pd_id);
end
Данный триггер проверяет, если старое значение параметра (значение галочки) не равно новому, то выполнить следующие действия:
· если новое значение равно единице, то создать связь между абитуриентом и специальностью;
· иначе удалить связь.
Третье представление MES_VIEW отвечает за наличие связки между абитуриентом и отправленным ему сообщением:
CREATE VIEW MES_VIEW(
ID,
THEME,
CB,
PERS_ID)
AS
SELECT
m.id,
m.theme,
case when pr.pers_data_id is null then 0 else 1 end
as cb,
per.id as pers_id
FROM FST_MESSAGE m
left join fst_pers_data per on (1=1)
left join fst_l_persdata_message pr on (pr.message_id =
m.id and pr.pers_data_id = per.id);
За проставление галочки в данном представлении отвечает параметр CB. По запросу проверяется, если в таблице-связке абитуриента с отправленным ему сообщением отсутствует связка, то галочка не ставится, иначе галочка ставится. За создание связки между абитуриентом и сообщением при изменении состояния галочки на форме отвечает триггер базы данных MES:
AS
begin
if (old.cb != new.cb) then
if (new.cb = 1) then
INSERT INTO FST_L_PERSDATA_MESSAGE(PERS_DATA_ID,
MESSAGE_ID)
VALUES (old.PERS_ID, old.ID);
else
DELETE FROM FST_L_PERSDATA_MESSAGE
WHERE(new.PERS_ID =
fst_l_persdata_message.pers_data_id) AND (new.ID
= FST_L_PERSDATA_MESSAGE.message_id);
end
Данный триггер проверяет, если старое значение параметра (значение галочки) не равно новому, то выполнить следующие действия:
· если новое значение равно единице, то создать связь между абитуриентом и сообщением;
· иначе удалить связь.
Результаты тестирования
В процессе разработки программного обеспечения приложение тестировалось по следующим параметрам:
· соединение с базой данных;
· функциональные возможности формы авторизации;
· корректное открытие панели навигации;
· функциональные возможности формы регистрации;
· функциональные возможности формы выбора источника;
· функциональные возможности формы редактирования;
· функциональные возможности формы просмотра возможных абитуриентов;
· функциональные возможности формы создания сообщения;
· функциональные возможности формы просмотра сообщений.
В таблице 16 показаны результаты тестирования по указанным параметрам.
Таблица 16. Результаты тестирования
Параметры тестирования | Выполнение | ||||
Соединение с базой данных | Если путь к базе данных неверный, то вывод сообщения | ||||
Форма авторизации | Если введенное имя пользователя существует в базе данных, то изменение цвета поля на зеленый | Если введен правильный пароль, то изменение цвета поля на зеленый | Открытие формы с именем пользователя, который был авторизован ранее, цвет поля зеленый | ||
По нажатию кнопки ОК открыть главную форму программы | По нажатию кнопки отмена открыть главную форму программы с ограниченным функционалом | ||||
Открытие главной формы | Отображение названия программного обеспечения | Отображение пути к exe-файлу для запуска программы | Отображение имени авторизованного пользователя | ||
Параметры тестирования | Выполнение | ||||
Форма регистрации | При первом открытии формы сначала указывается источник данных | Загрузка списков из базы данных, добавление введенного значения к списку в БД | Если нет списка классификаторов, то в этих объектах формы, при введении данных, они проверяются на совпадение с данными БД за один день | ||
По нажатию кнопки Регистрация в БД генерируется ID новой записи и добавляются персональные данные | По нажатию кнопки Готово сохраняются внесенные данные и форма закрывается | По нажатию кнопки Отмена форма закрывается, и внесенные данные не сохраняются | |||
Если в поле ID вводится ID существующего в БД абитуриента, то кнопка Регистрация становится неактивной | После нажатия кнопки Регистрация вносятся интересы регистрируемого | По нажатию кнопки Печать ID открывается окно предварительного просмотра карточки абитуриента | |||
В объекты формы с масками нельзя внести данные, не соответствующие указанной маске | В таблице с факультетами отображаются факультеты | В таблице со специальностями отображаются специальности | |||
Есть возможность в обоих таблицах ставить галочки | При установке галочки в таблице БД создается связь между абитуриентом и его интересами | Если в поле ID введен ID существующего в БД абит., на форме загружается информация о нем | |||
Форма выбора источника. Работа кнопок управления | Если нажата кнопка ОК, то выбранный источник используется при регистрации | После нажатия кнопки ОК открывается форма регистрации | Если нажата кнопка Отмена, то форма закрывается | ||
Форма редактирования | Форма редактирования открывается с информацией по выбранному абитуриенту | Форма редактирования - это форма регистрации с ограниченным функционалом | Не активны кнопки регистрация, печать ID | ||
Не отображается поле с ID возможного абитуриента | |||||
Форма для просмотра возможных абитуриентов | Открытие формы с сгруппированными данными в таблице | При нажатии на кнопку разгруппировать, данные разгруппировываются | При нажатии на кнопку сгруппировать данные группируются | ||
Если в процессе работы был выделен абитуриент в таблице, то группировка на выделение не воздействует | Форма редактирования открывается с информацией по выбранному абитуриенту | Форма создания сообщения открывается с установленной галочкой в таблице | |||
Галочка устанавливается напротив фамилии выбранного абитуриента | "Ваш отчет" формируется на авторизованного пользователя | Диаграммы отображают информацию, используя разные цвета | |||
Параметры тестирования | Выполнение | ||||
Форма создания сообщения | При внесении данных они проверяются на наличие совпадений в БД | Формируется сообщение и отправляется каждому из выбранных адресатов | Статус отправки отображается в процессе отправки | ||
При установке галочки в таблице БД формируется связь между сообщением и адресатом | |||||
Форма просмотра сообщений | Корректное отображение информации о сообщении | Подсчет количества абитуриентов, которым было отправлено сообщение | |||