Форма создания и отправки сообщения

Эта форма (рисунок 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 возможного абитуриента    
Форма для просмотра возможных абитуриентов Открытие формы с сгруппированными данными в таблице При нажатии на кнопку разгруппировать, данные разгруппировываются При нажатии на кнопку сгруппировать данные группируются
Если в процессе работы был выделен абитуриент в таблице, то группировка на выделение не воздействует Форма редактирования открывается с информацией по выбранному абитуриенту Форма создания сообщения открывается с установленной галочкой в таблице
Галочка устанавливается напротив фамилии выбранного абитуриента "Ваш отчет" формируется на авторизованного пользователя Диаграммы отображают информацию, используя разные цвета
Параметры тестирования Выполнение
Форма создания сообщения При внесении данных они проверяются на наличие совпадений в БД Формируется сообщение и отправляется каждому из выбранных адресатов Статус отправки отображается в процессе отправки
При установке галочки в таблице БД формируется связь между сообщением и адресатом    
Форма просмотра сообщений Корректное отображение информации о сообщении Подсчет количества абитуриентов, которым было отправлено сообщение