Уроки Delphi | Система проверки знаний. (оболочка теста на Delphi)

Требования к программе
В результате анализа различных тестов были сформулированы следующие требования к программе:
  • программа должна обеспечить работу с тестом произвольной длины, т. е. не должно быть ограничения на количество вопросов в тесте;
  • вопрос может сопровождаться иллюстрацией;
  • для каждого вопроса может быть до четырех возможных вариантов ответа со своей оценкой в баллах;
  • результат тестирования должен быть отнесен к одному из четырех уровней, например, "отлично", "хорошо", "удовлетворительно" или "плохо";
  • вопросы теста должны находиться в текстовом файле;
  • программа должна быть инвариантна к различным тестам, т. е. изменения в тесте не должны вызывать требование изменения программы;
  • в программе должна быть заблокирована возможность возврата к предыдущему вопросу. Если вопрос предложен, то на него должен быть дан ответ.

 На рис. 15.1 приведен пример диалогового окна программы тестирования во время ее работы.

Рис. 15.1. Диалоговое окно программы тестирования 

 

Файл теста

Тест представляет собой последовательность вопросов, на которые испытуемый должен ответить путем выбора правильного ответа из нескольких предложенных вариантов.

Файл теста состоит из трех разделов:

  • раздел заголовка;
  • раздел оценок;
  • раздел вопросов.

 Заголовок содержит общую информацию о тесте, например, о его назначении. Заголовок может состоять из нескольких строк. Признаком конца заголовка является точка, стоящая в начале строки.

Вот пример заголовка файла теста:

 Сейчас Вам будут предложены вопросы о знаменитых памятниках

и архитектурных сооружениях Санкт-Петербурга.

Вы должны из предложенных нескольких вариантов ответа выбрать правильный.

 За заголовком следует раздел оценок, в котором приводятся названия оценочных уровней и количество баллов, необходимое для достижения этих уровней. Название уровня должно располагаться в одной строке. Вот пример раздела оценок:

 

Отлично

100

Хорошо

85

Удо влет ворит ел ь но

60

Плохо

50

 

За разделом оценок следует раздел вопросов теста.

Каждый вопрос начинается текстом вопроса, за которым может следовать имя файла иллюстрации, размещаемое на отдельной строке и начинающееся символом \. Имя файла иллюстрации является признаком конца текста вопроса. Если к вопросу нет иллюстрации, то вместо имени файла ставится точка.

После вопроса следуют альтернативные ответы. Текст альтернативного ответа может занимать несколько строк. В строке, следующей за текстом ответа, располагается оценка (количество баллов) за выбор этого ответа. Если альтернативный ответ не является последним для текущего ответа, то перед оценкой ставится запятая, если последний — то точка.

Вот пример вопроса:

Какую форумулу формулу следует записать в ячейку В5, чтобы

вычислить сумму выплаты?

 

\tabl.bmp

-сумма (В2-В4)

,0

=сумма (В2:В4)

,2

=В2+ВЗ+В4

Л

 

 В приведенном вопросе второй и третий ответы помечены как правильные (оценка за их выбор не равна нулю). При этом видно, что выбор второго альтернативного ответа дает более весомый вклад в обшую сумму баллов.

Ниже, в качестве примера, приведен текст файла вопросов для контроля знания истории памятников и архитектурных сооружений СанктПетербурга.

 

01.Сейчас Вам будут предложены вопросы о знаменитых памятниках и архитектур-
02.ных сооружениях Санкт-Петербурга. Вы должны из предложенных нескольких
03.вариантов ответа выбрать правильный.
04.Вы прекрасно знаете историю Санкт-Петербурга !
05.3
06.Вы много знаете о Санкт-Петербурге, но на некоторые вопросы ответили не-
07.верно. .
08.т
09.Вы недостаточно хорошо знаете историю Санкт -Петербурга .
10.6
11.Вы, наверное, только начали знакомиться с историей Санкт-Петербурга?
12.Архитектор Исаакиевского собора ;
13.\isaak. Ьшр
14.Доменико Трезини
15.,0
16.Огюст Монферран
17.,1
18.Карл Росси
19..0
20.Александровская колонна воздвигнута как памятник, посвященный:
21.\aleks . bmp
22.деяниям императора Александра I
23.,0
24.подвигу народа в Отечественной войне 1812 года
25..1
26.Архитектор Зимнего дворца :
27.\herm.bmp
28.Бартоломео Растрелли
29.,1
30.Огкст Монферран
31.,0
32.Карл Росси
33..0
34.Памятник русской военной славы собор Божией Матери Казанской (Казанский
35.собор) построен по проекту русского зодчего:
36.A. Н. Воронихина
37.,1
38.И. Е. Старова
39.,0
40.B. И. Баженова
41..0
42.Остров, на котором находится Ботанический сад, основанный императором
43.Петром I, называется:
44.\bot.lmip
45.Заячий
46.,0
47.Медицинский
48.,0
49.Аптекарский
50._ ]_
51.Невский проспект получил свое название:
52.по имени реки, на берегах которой расположен Санкт-Петербург
53.,0
54.по имени близко расположенной Александре-Невской лавры
55.,1
56.в память о знаменитом полководце Александре Невском
57..0
58.Создатель скульптурных групп Аничкова моста "Укрощение коня человеком":
59.\klodt.bmp
60.П. Клодт
61.,1
62.Э. Фальконе
63..0
64.Скульптор знаменитого монумента "Медный всадник":
65.Э. Фальконе
66.,1
67.П. Клодт
68..0

 

Файл теста может быть подготовлен в текстовом редакторе Notepad или Microsoft Word. В случае использования Microsoft Word при сохранении текста следует указать, что надо сохранить только текст. Дяя этого в диалоговом окне Сохранить в списке Тип файла следует выбрать вариант Только текст (*.lxt).

 

Форма приложения

На рис. 15.2 приведен вид стартовой формы Forml во время разработки программы. Эта форма будет использоваться как для вывода вопросов теста и ввода ответов пользователя, так и для вывода начальной информации о тесте и резу3льтатов тестирования.

Поле метки Labels предназначено для вывода текста вопроса, начальной информации о тесте и результатов тестирования. Поля Label1, Label2, Label3 и Label4 предназначены для вывода текста альтернативных ответов, а переключатели RadioButtonl, RadioButton2, RadioButtonS и RadioButton4 — для выбора ответа. Командная кнопка Buttonl предназначена для подтверждения выбора альтернативного ответа и перехода к следующему вопросу теста.

Следует обратить внимание на недоступный (невидимый) во время работы переключатель RadioButtonb. Перед выводом очередного вопроса он программно устанавливается в выбранное положение, что обеспечивает сброс (установку в невыбранное состояние) переключателей выбора ответа (RadioButtonl, RadioButton2, RadioButtonS И RadioButton4).

Рис. 15.2. Форма приложения Test

Значения свойств стартовой формы приведены в табл. 15.1.

Таблица 15.1. Значения свойств стартовой формы

Следует обратить внимание, что несмотря на то, что свойства Bordericons.biMinimize И Borderlcons.biMaximize ИМСЮТ значение False, КНОПКИ Свернуть окно и Развернуть окно отображены в форме. Реальное воздействие значения этих свойств па вид окна проявляется только во время работы программы. Значение свойства Borderstyle также проявляет себя только во время работы программы.

В табл. 15.2—15.5 приведены значения свойств компонентов формы.

Таблица 15.2. Значения свойств компонентов

Label1 -Label5 

 

Таблица 15,3. Значения свойств компонентов

RadioButton1 —RadioButton5 

Таблица 15.4. Значения свойств кнопки Button1 

  

 


 

 Вывод иллюстрации

Для вывода иллюстрации в форму добавлен компонент image, значок которого (рис. 15.3) находится на вкладке Additional палитры компонентов. В табл. 15.7 приведены свойства компонента image.

Таблица 15.6. Свойства компонента Image

 

Картинку, отображаемую в области image, можно задать во время создания формы или во время работы программы. Во время создания формы картинка задается установкой значения свойства Picture. Во время работы программы — применением метода LoadFromFiie. Например, для разрабатываемого приложения инструкция вывода иллюстрации, находящейся в файле Isaak.bmp (изображение Исаакиевского собора), может быть такой:

 

1.Image1.Picture.LoadFromFile('isaak.bmp');

 

Очевидно, что размер области формы, которая может использоваться для вывода иллюстрации, зависит от длины (количества слов) вопроса, длины и количества альтернативных ответов. Чем длиннее вопрос и ответы, тем больше места в поле формы они занимают, и тем меньше места остается для иллюстрации.

При проектировании формы можно задать жесткие ограничения на размер областей, предназначенных для вопроса и альтернативных ответов, и жестко задать предельный размер иллюстрации. Однако можно поступить иначе. После прочтения из файла очередного вопроса вычислить, сколько места займут тексты вопроса и ответов и сколько места можно выделить для вы- вода иллюстрации (рис. 15.4).

Рис. 15.4. Вычисление размера области вывода иллюстрации

 Если реальный размер иллюстрации превышает размер области, выделенной для ее вывода, то необходимо вычислить коэффициент масштабирования и установить максимально возможные, пропорциональные ширине и высоте иллюстрации, значения свойств width и Height области вывода иллюстрации. Реальные размеры иллюстрации, загруженной в область imagei, МОЖНО получить из СВОЙСТВ Imagel.Picture.Bitmap.Width И Imagei.Picture.Bitmap.Height. 

 


 

 Загрузка файла теста 

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

Например, для настройки программы тестирования, значок запуска которой находится на рабочем столе, на работу с файлом теста Peterb.txt необходимо щелкнуть правой кнопкой мыши на значке программы, из появившегося контекстного меню выбрать команду Свойства и в поле Объект, после имени файла программы (Testl.exe), ввести имя файла теста (Peterb.txt), заключив его в двойные кавычки (рис. 15.5).

Рис. 15.5. Настройка программы тестирования 

Примечание: Текст, находящийся в поле Объект вкладки Ярлык диалогового окна Свойства, называется командной строкой.

Программа может получить параметр, указанный в командной строке запуска программы, как значение функции Paramstr(n), где л — номер параметра. Количество параметров командной строки находится в глобальной переменной Paramcount. Для приведенного выше примера командной строки запуска программы тестирования значение переменной Paramcount равно 1, а функции ParamStr(1) — peterb.txt.

Ниже приведен фрагмент программы, обеспечивающий прием параметра из командной строки:

 

1.if ParamCount = 0 then
2.begin.
3.ShowMessage('Ошибка! He задан файл вопросов теста.');
4.goto bye; // аварийное завершение программы
5.end;
6.FileName := ParamStr(l); // имя файла - параметр командной строки

 

 При запуске программы, использующей параметры командной строки, из среды разработки параметры нужно ввести в поле Parameters диалогового окна Run Parameters (рис. 15.6), которое открывается в результате выбора из меню Run команды Parameters.

Рис. 15.6. Диалоговое окно Run Parameters

 

 Исходник программы находится в разделе сайта "исходники", а именно тут.

 

 

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: