Специальные электрические машины с внедрением в учебный процесс / test_ramka
.DOC
УИТС.161ХХХ.020
ПЗ
Лист
Изм.
Лист № докум. Подп.
Дата
Копировал
Формат А4
3 РАЗРАБОТКА ТЕСТИРУЮЩЕЙ ЧАСТИ ММУП ПО РАЗДЕЛУ “СПЕЦИАЛЬНЫЕ ЭЛЕКТРИЧЕСКИЕ МАШИНЫ"
Тестирование широко применяется для оценки уровня знаний в учебных заведениях, при приеме на работу, для оценки квалификации персонала учреждений, то есть практически во всех сферах деятельности человека. Испытуемому предлагается ряд вопросов теста, на которые он должен ответить.
Обычно к каждому вопросу дается несколько вариантов ответа, из которых необходимо выбрать правильный, каждому варианту ответа соответствует некоторая оценка. Суммированием оценок за ответы получается общий балл, на основе которого делается вывод об уровне подготовленности испытуемого.
В результате анализа различных вариантов теста были сформулированы следующие требования к программе:
- программа должна обеспечивать работу с тестом произвольной длины, то есть без ограничения на количество вопросов в тесте.
- для каждого вопроса может быть до четырех возможных вариантов ответа со своей оценкой в баллах.
- результат тестирования может быть отнесен к одному из четырех уровней, например, «отлично», «хорошо», «удовлетворительно» или «плохо». В конце теста программа в случае неудовлетворительных ответов на вопросы должна выдавать рекомендации учащемуся о повторении того или иного раздела учебного пособия.
- тест представляет собой текстовый файл.
- программа должна быть инвариантна к различным тестам, то есть изменения в тесте не должны вызывать требование изменения программы.
- в программе должна быть заблокирована возможность возврата к предыдущему вопросу. Если вопрос предложен, то на него должен быть дан ответ.
- порядок следования вопросов и ответов должен меняться для исключения возможности появления одинаковых тестов.
- должен создаваться файл протокола, в который должна заноситься информация об успеваемости обучающегося. Если такой файл был создан ранее, то должно обеспечиваться добавление информации к уже существующему протоколу.
- в случаях, когда файл не может быть создан, должно выдаваться соответствующее предупреждение.
- должна быть обеспечена возможность задания определенного теста. Это необходимо в случае, когда необходимо пройти определенный тест, или в случае, когда необходимо подключить к тестовой системе новый файл теста.
- если файлов теста нет, то должно быть выдано соответствующее предупреждение.
Тест представляет собой последовательность вопросов, на которые тестируемый должен ответить путем выбора правильного ответа из нескольких предложенных вариантов.
Файл теста состоит из трех разделов:
- раздел заголовка
- раздел оценок
- раздел вопросов
На рисунке приведен пример диалогового окна программы тестирования во время ее работы.

Рисунок 4 - Диалоговое окно программы тестирования
Файл теста начинается с заголовка, который содержит общую информацию о тесте, например, о его назначении. Заголовок может состоять из нескольких строк. Признаком конца заголовка является точка, стоящая в начале строки.
Вот пример заголовка файла теста:
«Входной контроль: Сейчас Вам будут предложены вопросы входного контроля по теме исполнительные двигатели. Вы должны из нескольких вариантов ответа выбрать правильный.»
За заголовком следует раздел оценок, в котором приводятся названия оценочных уровней и количество баллов, необходимое для достижения этих уровней. Название уровня должно располагаться на одной строке. Вот пример раздела оценок:
«Поздравляем, вы отлично справились!
10
Вы обладаете хорошими знаниями в данной области
7
Вы плохо усвоили данный раздел знаний
6
Вам необходимо пройти повторный курс обучения по разделу «Теоретические основы электротехники»
5»
За разделом оценок следует раздел вопросов теста. Каждый вопрос начинается текстом вопроса. После текста вопроса на отдельной строке ставиться точка.
После вопроса следуют альтернативные ответы. Текст альтернативного ответа может занимать несколько строк. В строке, следующей за текстом ответа, располагается оценка, количество баллов за выбор этого ответа. Если альтернативный ответ не является последним для текущего вопроса, то перед оценкой ставиться запятая, если последний – то точка.
Вот пример вопроса:
«По двум одинаковым металлическим обручам, расположенных один горизонтально, другой вертикально, идут одинаковые токи. Найти направление вектора индукции магнитного поля в их общем центре:
.
под углом 45 градусов к плоскостям обручей
,1
индукция магнитного поля в центре равна нулю
,0
вектора магнитной индукции будут исходить по всем направлениям из центра системы
.0»
В приведенном вопросе второй и третий ответы помечены как неправильные, за выбор этих вариантов нулевая оценка. При этом видно, что за выбор первого ответа начисляется балл.
На рисунке 5 приведен вид стартовой формы Form1 во время разработки программы. Эта форма используется как для вывода вопросов теста и ввода ответов пользователя, так и для вывода начальной информации о тесте и результатов тестирования.

Рисунок 5 – Форма приложения тестирующей программы
Поле метки Label5 предназначено для вывода текста вопроса, начальной информации о тесте и результатов тестирования. Поля Label1, Label2, Label3, Label4 предназначены для вывода текста альтернативных ответов, а радиокнопки RadioButton1, RadioButton2, RadioButton3, RadioButton4 – для выбора ответа. Командная кнопка Button1 предназначена для подтверждения выбора альтернативного ответа и перехода к следующему вопросу теста. Под панелью Panel1 находится недоступная во время работы программы радиокнопка RadioButton5. Эта кнопка программно устанавливается в выбранное положение перед выводом в окно программы очередного вопроса, что обеспечивает установку в невыбранное состояние кнопок выбора ответа (RadioButton1, RadioButton2, RadioButton3 и RadioButton4).
Порядок добавления в форму большинства компонентов не имеет значения, перед добавлением в форму кнопки Button1 и панели Panel1 предварительно необходимо создать радиокнопку RadioButton5, а затем поверх нее поместить компоненты Panel1 и Button1.
Файл теста выбирается программой случайным образом из набора заранее созданных тестов, для этой цели в ходе выбора файла вопросов теста активизируется генератор случайных чисел. Для возможности работы с заранее определенным тестом предусмотрена возможность задания теста пользователем. Имя файла теста можно предать программе путем настройки свойств ярлычка, изображающего эту программу на рабочем столе Windows или в одной из папок компьютера. Например, для настройки программы тестирования, которая находится в файле in_test.exe, на работу с файлом теста in1.dll необходимо щелкнуть правой кнопкой мыши значок программы тестирования и выбрать в появившемся контекстном меню команду «Свойства». В открывшемся диалоговом окне «Свойства» на вкладке «Ярлык» в поле «Файл» необходимо после имени файла программы in_test.exe ввести имя файла теста in1.dll.
Также возможно задать определенный тест при помощи командной строки, для этого после имени запускаемого файла необходимо ввести название файла требуемого теста, который должен находиться в том же каталоге что и запускаемый файл.
Программа может получить параметр из командной строки, используя значение глобальной переменной ParamCount, обозначающей число параметров, и функцию ParamStr(n), возвращающую параметр командной строки с указанным, равным n, номером. Для приведенного выше примера командной строки запуска программы тестирования значение переменной ParamCount равно 1, а функции ParamStr(1) – in1.dll.
После создания формы в окно редактора кода вводится описание глобальных переменных программы и процедур общего назначения. Затем создаются процедуры обработки событий. Листинг программы тестирования приведен в Приложении А.
После запуска программы и вывода на экран стартовой формы происходит событие OnActivate. Процедура FormActivate сначала вызывает процедуру ResetForm, которая, присваивая значение False свойству Visible, делает невидимыми поля вывода альтернативных ответов и радиокнопки. Также процедура устанавливает максимально возможную ширину полей меток альтернативных ответов.
После очистки формы проверяется, указан ли при запуске программы параметр – имя тестового файла. Если параметр не указан, то есть значение ParamCount в этом случае равно нулю, то файл теста выбирается с помощью генератора случайных чисел. В случае если файл был задан, но не был найден на диске, то присвоением значения свойству Caption метки Label5 выводится сообщение: «Нет файла вопросов теста» и свойству Tag кнопки Button1 присваивается значение 2, то есть Button1.Tag:=2. Если файл задан и существует, то он открывается.
Программа тестирования получает имя файла теста как результат функции ParamStr(1). Реализация программы предполагает, что если имя файла задано без указания пути к нему, то файл теста находится в том же каталоге что и программа тестирования. Открывается файл теста следующим образом, сначала обращением к процедуре AssignFile имя файла связывается с файловой переменной, а затем вызывается инструкция открытия файла для чтения.
После успешного открытия файла вызывается процедура Info, которая считывает из файла информацию о тесте и выводит её присваиванием прочитанного текста свойству Caption поля метки Label5. затем вызывается процедура GetLevel, которая считывает из файла теста информацию об уровнях оценки. Эта процедура заполняет массивы level и mes в которые заносится информация о количестве баллов соответствующих определенному уровню и текст сообщения соответствующего данному уровню.
После вывода информационного сообщения программа ждет, когда пользователь нажмет кнопку «OK».
Командная кнопка Button1 используется для:
- аварийного завершения работы приложения, в случае если файла теста не существует
- начала тестирования после прочтения информационного сообщения
- перехода к следующему вопросу после выбора одного из предложенных ответов
- завершения работы программы после прочтения результатов тестирования
Свойство Tag кнопки Button1 используется для идентификации текущего состояния формы и выбора действия при щелчке кнопки Button1. по умолчанию значение свойства Tag равно нулю.
После успешного вывода информации о тесте значение Tag равно нулю. Поэтому после щелчка кнопки Button1 выполняется та часть программы, которая обеспечивает вывод первого вопроса, замену текста кнопки «OK» на текст «Дальше», делает выбранным переключатель RadioButton5, который закрыт панель и поэтому не виден пользователю. Кроме того, установкой значения False свойству Enabled кнопка Button1 делается недоступной, тем самым блокируется переход к следующему вопросу до тех пор, пока не выбран альтернативный ответ. Значению свойства Button1.Tag присваивается единица, тем самым осуществляется подготовка к обработке следующего щелчка кнопки Button1.
После выбора ответа и нажатия кнопки «Дальше» к набранной сумме баллов прибавляется количество баллов за выбранный ответ. Затем, если не достигнут конец файла, вызывается процедура вывода очередного вопроса. Если достигнут конец файла, то сначала закрывается файл теста, изменяется текст на кнопке Button1 и значение Button1.Tag, а затем посредством процедуры Itog выводятся результаты тестирования.
Если значение Button1.Tag равно двум, то применением метода Close к форме Form1 закрывается окно программы, в результате чего программа завершает работу.
Вывод вопроса и альтернативных ответов выполняет процедура VoprosToScr. Сначала процедура увеличивает счетчик вопросов vopros и присвоением значения свойству Caption формы выводит номер текущего вопроса в заголовок окна. После вывода текста вопроса делается проверка признака конца вопроса.
Так как количество символов в тексте вопроса и число альтернативных ответов от вопроса к вопросу может меняться, и, следовательно, на экране они могут занимать разное количество строк, то каждый раз перед выводом текста очередного ответа устанавливается значение свойства Top как расстояние от нижней границы предыдущего альтернативного ответа. Для поля вывода первого альтернативного ответа Label1 значение Top вычисляется от нижней границы поля вопроса Label5. выбор ответа пользователь осуществляет щелчком одной из радиокнопок. После вывода вопроса ни один из переключателей, соответствующих альтернативному ответу, не является выбранным. Выбран только переключатель RadioButton5, который находится за панелью Panel1 и поэтому не виден пользователю.
Для обработки события OnClick радиокнопок RadioButton1, RadioButton2, RadioButton3 и RadioButton4 в программе используются процедуры TForm1.RadioButton1Click, TForm1.RadioButton2Click, TForm1.Radio-Button3Click и TForm1.RadioButton4Click соответственно. Эти процедуры возвращают в качестве ответа идентификатор объекта, на котором произошло событие, данным идентификатором является значение глобальной переменной otv, которая используется процедурой VoprosToScr для увеличения набранной суммы баллов. Кроме того, рассмотренные процедуры делают доступной кнопку перехода к следующему вопросу Button1, которая после вывода очередного вопроса недоступна.
Процедура Itog, сравнивая набранную сумму баллов summa со значением элементов массива level, определяет, какого уровня достиг испытуемый, и выводит соответствующее сообщение присвоением значения свойству Label5.Caption.
6
