Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ_2012.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
922.77 Кб
Скачать
      1. Реализация компоненты «тестировщик»

После сформулированных требований к данной компоненте и всех спроектированных планов по реализации, приступаем к программированию. Первое что было сделано, так это реализован интерфейс тестировщика, как будет выглядеть ввод ответов и как будет учащийся переходить между заданиями. На первых этапах программирования компоненты, интерфейс имел вид не особо привлекательный: область ввода ответов располагалась в неудобном для учащегося месте, панель кнопок состояла лишь из кнопок навигации между заданиями и проверки задания. Причиной такого интерфейса послужило использование стандартной компоненты StringGrid программной среды Delphi, которая имеет не мало недостатков. После значительных доработок, было решено реализовать следующее решение. На форме разместить стандартный компонент Delphi, WebBrowser, благодаря которому изменилась сама структура заданий, загрузка их и интерфейс тестировщика. Используя данный компонент, была реализована технология подачи заданий в компонент WebBrowser. То есть для реализации не потребовалось множество форм, как обычно применяют в тестируемых системах. Достаточно было сверстать html страницу с полями ввода для ответов на одно задание и отправить компоненте WebBrowser. В итоге получилась система следующего вида: каждое задание разбивается на семь файлов, из них два файла отправляются в компоненту WebBrowser, благодаря написанной процедуре WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string).Параметры которой есть сама компонента WebBrowser, и текст задания написанный на языке html. Первый файл задания-это условие задания с полями ввода ответа куда учащийся вводит свой ответ, то есть каркас задания. Второй же файл-это уже решённая задача для пояснения ошибки. Этот файл может быть разбит на несколько частей, так как пояснение ошибки даётся не сплошным текстом, а по пунктам условия. Таким образом форма, где располагается WebBrowser один, а заданий может быть неограниченное количество, загружаясь через определённую процедуру WB_LoadHTML по нажатию соответствующей кнопки. Остальные пять файлов задания-это условие, ответы, пояснение, сущности задания для поля рисования своих предположения над решением задачи, параметры задания для редактирования его в дальнейшем, пункты условий задания и каркас задания для пояснения ошибки. Все семь файлов для каждого задания являются текстового формата и хранятся в соответствующей директории ПС. Файлы имеют следующие названия: n.txt само задание в html коде, n_o.txt ответы, n_y.txt условие, n_poisn_txt.txt пояснение текстовое и n_poisn_otv.txt ответы для отображения ответов, n_ris.txt сущности задания для поля рисования, n_param.txt параметры задания и n_pynkt.txt пункты условия задания.

После реализации загрузки заданий в тестировщик, писалась процедура для проверки ответов. На данном этапе возникла сложность с проверкой, так как взятие значений из ячеек ввода затруднялась следующем:

  • нет оптимального метода у компоненты WebBrowser для взятия значений из html кода,

  • нестабильность работы при использовании такого метода.

Поэтому на просторах интернета был найден модуль jsWebBrowser, который позволяет без лишних трудностей брать значение из html кода. То есть в этом модуле есть необходимые методы для компоненты WebBrowser и при этом присутствует поддержка javascript, что вполне может пригодиться в будущем. Процедура проверки ответов proverka_to_test принимает в качестве параметра номер задания. Таким образом, процедура proverka_to_test подходит как для проверки задания на основе схем, так и на основе таблиц. Алгоритм проверки ответов в данной процедуре довольно простой. Из файла считываются ответы и считается их количество, это нужно для удобного сравнения значений введённых учащимся с ответами из файла, ведь поля ввода ответов пронумерованы и заранее нельзя знать сколько их всего, полей. В зависимости от режима прохождения тестирования, учащийся либо переходит на следующее задание, ответив на данное, либо остаётся на данном задании, но может просмотреть пояснение ошибки своей. Все эти тонкости режимов предусмотрены в процедуре proverka_to_test. После реализации процедуры для проверки ответов, приступил к работе над запоминанием времени, потраченного на каждое задание. Суть такой процедуры, time_test(rej:integer), заключалась в запоминании времени для каждого задания отдельно, при этом время должно было выводиться опционально, то есть показ времени устанавливался в настройках учителем. Параметром процедуры выступает флаг на включение и выключение запоминания времени потраченного на задание. Далее было решено улучшить работу процедуры proverka_to_test следующим образом. Вызывать её в специализированной процедуре perehod(), которая уже отвечает за переход между заданиями. После улучшения и создания необходимых процедур для перехода и запоминания времени, начал реализовывать функцию free_ris() для рисования, то есть поле, на котором учащийся выстраивает ход своего решения. Потом приступил к реализации процедуры, которая бы выделяла ячейку в таблице, если учащийся ответил неверно в режиме «обучение». Для этого анализировался html код задания и программно заменялся цвет ячейки при необходимости. Далее было создана функция запоминания верных ответов и количество подсказок, то есть сколько раз учащийся в режиме «обучение» зашёл в подсказку по определённому заданию. Все эти результаты сохраняются в потоковый массив и передаются в таблицу результатов. Таблица результатов была реализована на основе стандартного компонента Delphi StringGrid и имеет такие атрибуты как номер задания, тип теста, сложность, время прохождения, и в зависимости от режима, правильные ответы или количество подсказок. Далее следовала реализация метода, который служит основой для связи с БД. То есть с помощью этого метода компонента тестировщик связывается с БД и получает необходимые данные, а именно пути к файлам задания, кто вошёл в систему, учитель или ученик, и запись статистики ученика. Все эти результаты заносятся в БД программного средства конкретного учащегося. Последним этапом реализации компоненты тестировщик была адаптация под различные разрешения мониторов.