Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие_Информатика_v3.doc
Скачиваний:
38
Добавлен:
09.11.2019
Размер:
1.13 Mб
Скачать

Задание 2. Программные компоненты для внесения анкетных данных в бд

Страница AnketsMenu.xhtml выдает пользователю окно формы, соответствующее представленному на рис.3.4 в разделе «Разработка пользовательского интерфейса» настоящего учебного пособия. При помощи этой формы пользователь может выбрать дисциплину и конкретное занятие по ней для введения анкетных данных. Страница AnketsMenu.xhtml работает с классами Student, DisciplineBean, Zanyatie, ZanyatieBean, AnketaForZan (см. рис. 5.3).

Класс Student должен осуществлять поддержку хранения профильных данных по студенту в течение всей сессии пользователя и отображение их на экран.

Страница AnketsMenu.xhtml должна связываться с классом DisciplineBean, брать от него данные по дисциплинам и выводить их на экран в виде выпадающего списка.

Класс DisciplineBean представляет собой ManagedBean с видимостью SessionScoped и осуществляет выбор всех дисциплин, имеющихся в БД в таблице disciplines, возвращая их в виде списка SelectItem.

После выбора дисциплины на интерфейс пользователю должны выводиться все проведенные занятия по этой дисциплине в двух таблицах – отдельно для лекций и для семинаров. Для каждого занятия должна быть представлена его тема и дата проведения. Также у каждого занятия должна стоять ссылка на анкету для этого типа занятия. При этом система должна видеть, заполнял ли уже данный пользователь анкету по конкретному занятию и, если заполнял, то не выдавать ссылки на анкету, а вместо этого писать серым цветом (аналог погашенной ссылки) строку «Анкета заполнена».

Данные о лекциях и о семинарах целесообразно отобразить на интерфейсе в виде структуры DataTable. За выдачу данных о занятиях отвечает класс ZanyatieBean, являющийся ManagedBean с видимостью SessionScoped. Данный класс осуществляет выбор всех занятий для указанной пользователем дисциплины по первичному ключу этой дисциплины и возвращает результат в виде списка занятий.

Определение статуса заполнения анкеты должно осуществляться с помощью метода anketaStatus класса ZanyatieBean. Данный метод соединяется с БД и осуществляет поиск в таблице lections_ankets на предмет наличия записи с ID занятия и ID студента. Если такой записи не обнаружено, то метод возвращает 0, если запись есть – 1.

При получении значения 0 программа AnketsMenu.xhtml отрисовывает у занятия ссылку «Заполнить анкету». Ссылка переводит на метод fillLecAnketa класса AnketaForZan, передавая ему в качестве параметров ID занятия, тему занятия и название дисциплины. При получении значения 1 программа AnketsMenu.xhtml не прорисовывает у занятия ссылку на анкету, выводя надпись «Анкета заполнена».

При нажатии на ссылку «Заполнить анкету» срабатывает метод fillLecAnketa класса AnketaForZan, который возвращает либо значение «blankLec», при работе с лекциями, либо «blankSem», при работе с семинарами. Данный метод призван только обеспечить управление навигацией, которая при значении «blankLec» осуществляется на страницу AnketaForLec.xhtml, а при значении «blankSem» – на AnketaForSem.xhtml.

После перехода на страницу AnketaForLec.xhtml пользователю выдается анкета для выбранной им лекции. В анкете присутствуют вопросы, полностью описанные в разделе «Разработка пользовательского интерфейса» настоящего учебного пособия и оценочная шкала от 1 до 5 для выбора соответствующей оценки. То же самое верно для семинаров.

AnketaForLec.xhtml взаимодействует с классом AnketaLecData, который является ManagedBean с видимостью RequestScoped. Этот класс собирает все оценки и заносит их в БД в таблицу lections_ankets (для лекций) или seminar_ankets (для семинаров) при помощи метода insertIntoDB. При успешном внесении информации в БД метод возвращает значение «insertOK», по которому осуществляется навигация обратно на страницу AnketsMenu.xhtml, на которой пользователь может либо продолжить заполнение анкет по другим занятиям, либо выйти из системы.