Разработка лабораторного практикума "Создание тестирующей программы"
ВВЕДЕНИЕ
Оглядываясь назад, в эпоху становления средств вычислительной техники, можно условно выделить ступени развития автоматизированных обучающих систем.
Первые, самые ранние, представляли собой лишь электронные версии печатных изданий и содержали только текстовую информацию. Достоинством таких систем в сравнении с бумажными аналогами, по существу, являлась лишь интеграция информации.
Постепенно, с развитием вычислительной техники, их стали сменять системы, которыми можно было пользоваться и как справочниками, то есть поисковые системы. Далее арсенал автоматизированных обучающих систем пополняется статической графикой, компонентами мультимедиа (звук и видео), компьютерной анимацией.
Таким образом системы развивались в области информационных баз знаний, поддерживающих уже не только текстовое, но и аудио-видеовоздействие на обучаемого.
Колоссальный скачок был сделан и в сфере развития систем контроля, ведь без них, по существу, обучающая система мало чем отличается от справочного пособия. Итак, средства контроля обеспечивают ввод ответа обучаемого, обработку полученной информации и выдачу управляющего воздействия (например, вы вводите ответ, а система одобряет или отвергает его).
Следуя дальше по ступеням интеллектуализации обучающих систем, можно заметить, как плавно механизмы контроля перетекают в механизмы анализа высказываний обучающегося. Отметим, однако, что не следует путать их с простым контролем как простой оценки единичного события с интегральным оцениванием, являющимся результатом анализа и систематизации множества разнородных ответов данных в разное время. Не вдаваясь в теорию обучения, давайте рассмотрим простой пример. Ведь чем по сути отличается средство для создания обучающего курса от средства для создания мультимедийных энциклопедий? Примерно тем же, чем учебник отличается от лектора, ведущего лекции в учебном заведении.
Ведь учебник дает ответы на конкретные вопросы, помогает решать конкретные задачи и позволяет контролировать себя, заглядывая на последнюю страничку и сверяя правильный ответ с полученным. А как быть тем, кто не знает, какой вопрос задать или не может правильно его сформулировать? В классических учебных заведениях для этого существует лектор, который заботливо проводит студента по коридору знаний, понимает, с чего начать, и по ответам студента, на основе собственного опыта, делает выводы об уровне знаний студента в целом (то есть дает ему интегральную оценку).
Иными словами, анализ высказываний обучающегося позволяет не только контролировать учебный процесс, но и определяет стратегию обучения в зависимости от предыстории ответов и исходя из определенного набора правил.
В свою очередь, из анализа высказываний обучаемого проистекает управляющее воздействие на него, которое в частном случае может быть и удаленным. Последний метод, который называется дистанционной формой обучения, в настоящее время находится в стадии становления. Вследствие данного обстоятельства в последнее время технологии автоматизированного обучения все больше тяготеют к Internet -технологиям.
В данной курсовой работе речь пойдет о создании лабораторной работы по теме «Создание тестирующей программы», которая и будет являться объектом исследования.
1. СОЗДАНИЕ ТЕСТИРУЮЩИХ ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ ВИЗУАЛЬНЫХ КОМПОНЕНТОВ
1.1. Аналитический обзор
В качестве инструментального средства целесообразно использовать систему компьютерного тестирования (СКТ), удовлетворяющую следующим требованиям (1):
· простота подготовки тестовых заданий (задания могут создаваться преподавателями в минимальной степени владеющими компьютером)
· широкий диапазон применения (возможность использования для подготовки тестов по широкому спектру дисциплин)
· удобная система управления базами тестовых заданий (удаление, добавление заданий, объединение баз заданий)
· наличие систем сбора и обработки статистической информации по результатам тестирования (для тестируемых и для тестовых заданий)
· лёгкость организации оперативного контроля знаний в учебном процессе
· удобные средства решения задач (например, наличие встроенного микрокалькулятора с расширенными возможностями)
· встроенные мультимедийные возможности
· компактность (система тестирования с количеством тестовых заданий до нескольких сотен должна помещаться на одну дискету)
· низкие системные требования (достаточно Windows 95/98/NT).
Бурное развитие глобальной компьютерной сети показало перспективность удаленного тестирования студентов с помощью интерактивных Web-тестов, устанавливаемых на серверах, подключенных к локальной компьютерной сети или сети Интернет. Более широкому распространению таких информационных технологий в образовании, позволяющих не только повысить интенсивность и эффективность процесса обучения, но и существенно расширить аудиторию потенциальных слушателей ведущих университетов страны, препятствует трудоемкость процесса разработки тестов, предназначенных для работы в Web-сети.
Для создания интерактивных Web-тестов преподавателю помимо знаний по курсу, для которого предназначен тест, требуются специальные навыки в области применения Интернет-технологий, либо необходима помощь соответствующего специалиста. При использовании для разработки учебных материалов любого из большого количества имеющихся инструментальных средств создания и редактирования HTML-документов, например, таких как Netscape Composer или Microsoft FrontPage, требуются базовые сведения о гипертексте и определенные навыки в области программирования. Кроме того, для придания Web-документам интерактивных свойств, позволяющих оперативно реагировать на информацию, введенную пользователем, автору потребуются еще более глубокие знания Интернет-технологий, связанные с необходимостью написания программ-обработчиков с использованием Java, JavaScript или CGI-приложений. Таким образом, создание учебных материалов для дистанционного обучения в Web-сети предъявляет весьма высокие требования к квалификации преподавателя-разработчика в области практического использования современных информационных технологий. В противном случае необходима совместная работа коллектива специалистов различного профиля. Эти обстоятельства существенно повышают трудоемкость создания учебных Web-пособий и, в определенной степени, сдерживают процесс развития такой формы дистанционного образования.
1.2. Описание компонентов, используемых при реализации практической части курсовой работы
В практической части данной курсовой работы используются следующие визуальные и невизуальные компоненты (2, 3, 4, 5) среды программирования Borland Delphi 6.0.
1.2.1. Компонент TLabel
TLabel служит для отображения текста на экране. Можно изменить шрифт и цвет метки, если дважды щелкнуть на свойство Font в Инспекторе Объектов. Видно, что это легко сделать и во время выполнения программы, написав всего одну строчку кода.
Этот компонент доступен из модуля STDCTRLS, и находится на странице Палитры компонентов Standard.
Компонент представляет собой статический текст. С помощью этого компонента на рабочей поверхности формы можно отобразить информацию, сделать пояснения и показать названия других компонентов. Но он имеет и другую важную функцию — если в составе текста TLabel есть символы-акселераторы, информация об их нажатии может передаваться от TLabel другому элементу управления.
Свойства компонента приведены в табл.1:
Таблица 1
Свойства компонента TLabel
Свойство |
Описание |
(Pb) property Caption: TCaption; TCaption = string[255]; |
Содержит строку с выводимым текстом. |
(Pb) property Alignment: TAlignment; |
Устанавливает правило выравнивания текста — по правому, левому краю или по центру клиентской области. |
(Pb) property AutoSize: Boolean; |
В случае True происходит автоматическое приведение размеров компонента к размерам текста и высоте шрифта. |
Продолжение табл.1 |
|
(Pb) property ShowAccelChar: Boolean; |
Показывает, отображается ли в TLabel акселератор (символ, перед которым стоит знак амперсанда — '&'). Если оно равно False, амперсанд никак не интерпретируется. В случае True акселератор выделяется в строке подчеркиванием и нажатие клавиш <Аlt>+<символ> приводит к передаче фокуса окну FocusControl (т.к. TLabel сам не является оконным компонентом). |
(Pb) property FocusControl: TWinControl; |
Определяет оконный компонент, которому посылаются сообщения о вводе акселератора. |
(Pb) property Transparent: Boolean; |
Прозрачность фона компонента. Если свойство установлено в True, то при перерисовке элемента управления не происходит закрашивание клиентской области. В противном случае — происходит закрашивание кистью bsSolid и цветом Color. |
(Pb) property WordMrap: Boolean; |
Определяет возможность разрыва слов в случае, если длина выводимого текста превышает ширину компонента. |
1.2.2. Компонент TImage
TImage - отображает графическое изображение на форме. Воспринимает форматы BMP, ICO, WMF. Если картинку подключить во время дизайна программы, то она прикомпилируется к EXE файлу.
Этот компонент доступен из модуля EXTCTRLS, и находится на странице Палитры компонентов Additional.
Этот компонент служит надстройкой над классом TPicture и замыкает всю иерархию графических объектов VCL. Он предназначен для показа на форме изображения: битовой карты (TBitmap), метафайла (TMetafile), значка (TIcon).
Свойство (Pb) property Picture: TPicture; служит контейнером для графического объекта одного из перечисленных классов.
В качестве канвы используется канва объекта Picture. Graphic — только если поле Graphic ссылается на объект класса TBitmap:
(Pb) property Canvas: TCanvas;
Если это не так, то попытка обращения к свойству вызовет исключительную ситуацию EInvalidOperation, так как рисовать на метафайле или значке нельзя.
Следующие три свойства определяют, как именно Tpicture располагается в рабочей области компонента:
(Pb) property AutoSize: Boolean;
— означает, что размеры компонента настраиваются по размерам содержащегося в нем графического объекта. Устанавливать его в True нужно перед загрузкой изображения из файла или буфера обмена;
(Pb) property Stretch: Boolean;
— если это свойство установлено в True, то изображение "натягивается" на рабочую область, при необходимости уменьшая или увеличивая свои размеры. Если оно установлено в False, то играет роль следующее свойство;
(Pb)
— если это свойство установлено в True, изображение центрируется в пределах рабочей области. В противном случае — располагается в ее верхнем левом углу.
1.2.3. Компонент TTimer
TTimer - таймер, событие OnTimer периодически вызывается через промежуток времени, указанный в свойстве Interval. Период времени может составлять от 1 до 65535 мс.
Этот компонент доступен из модуля EXTCTRLS, и находится на странице Палитры компонентов System.
Этот невизуальный компонент предназначен для уведомления программы об истечении определенных промежутков времени. Компонент инкапсулирует системный таймер Windows и работает через посылку сообщений WM_TIMER.
Свойство (Pb) property Enabled: Boolean; включает/выключает таймер, влияя на генерацию им событий. Будучи установлен в Enabled, таймер начинает генерировать события OnTimer через интервал времени
(Рb) property Interval: Word;
который измеряется в миллисекундах. После каждого истечения такого интервала инициируется обработчик, связанный с событием:
(Pb) property OnTimer: TNotifyEvent;
При этом программист получает очередной квант времени.
При активизации и деактивизации таймера или изменении интервала в системе может не оказаться свободных таймеров. В этом случае генерируется исключительная ситуация EOutOfResources.
1.2.4. Компонент TButton
TButton позволяет выполнить какие-либо действия при нажатии кнопки во время выполнения программы. В Delphi все делается очень просто. Поместив TButton на форму, по двойному щелчку можно создать заготовку обработчика события нажатия кнопки. Далее нужно заполнить заготовку кодом:
procedure TForm1.Button1Click(Sender: TObject);
begin
MessageDlg('Are you there?',mtConfirmation,mbYesNoCancel,0);
end;
Этот компонент доступен из модуля STDCTRL, и находится на странице Палитры компонентов Standard.
Двойной щелчок на кнопке не предусмотрен.
Основным событием, связанным с нажатием кнопки (любым способом) является:
(Pb) property OnClick: TNotifyEvent;
Под "любым способом" здесь подразумевается щелчок мышью, нажатие комбинации клавиши — акселератора, нажатие <Enter> или <Esc> (только для некоторых кнопок) или вызов метода Click из программы.
Текст кнопки, появляющийся на ее поверхности, определен в свойстве:
(Pb) property Caption: string;
Если в составе текста есть амперсанд ('&'), то следующий за ним символ используется в акселераторе, и нажатие комбинации клавиш <Аlt>+<символ> вызывает нажатие кнопки.
Водораздел среди кнопок проходит по тому, что именно означает нажатие. Ряд кнопок — TRadioButton, TCheckBox и группа TRadioGroup — предназначен для ввода или переключения фиксированных параметров, и программиста более интересует их состояние в некоторый момент времени, чем сам факт нажатия. Кнопки TButton, TSpinButton и TBitBtn напротив, как правило, своим нажатием инициируют немедленные действия. Кнопка TSpeedButton может успешно служить для решения обеих задач.
Как уже было сказано, нажатие влечет за собой OnClick. Но это не означает, что всегда нужно писать код для обработки всех нажатий. Например, исключением из этого правила является использование кнопок в модальных формах.
Модальная форма, или модальный диалог — специальная разновидность окон Windows (и форм Delphi), предназначенная для ввода пользователем необходимых программе данных или выбора одного ответа из нескольких вариантов. Обычно при этом ему предоставляется несколько кнопок, соответствующих вариантам. Вплоть до получения ответа в модальном диалоге пользователь не может переключиться на другие окна той же задачи, а в системном модальном диалоге — и на другие задачи. Для использования в таких случаях предназначены стандартная кнопка Windows TButton и ее младшая сестра TBitBtn, отличающаяся только наличием картинки на ее поверхности. При их нажатии значение свойства ModalResult кнопки передается одноименному свойству формы, где такое изменение означает вывод формы из модального состояния и ее закрытие:
(Pb) property ModalResult: TModalResult;
TModalResult = Low(Integer) ..High(Integer);
В модальной форме могут быть предусмотрены две специальные кнопки, соответствующие положительному и отрицательному решениям. Одна из них срабатывает при нажатии на клавиатуре <Enter>, другая — <Esc>. Любая кнопка может получить такой статус, установив в True соответственно одно из свойств:
(Pb) property Default: Boolean;
(Pb) property Cancel: Boolean;
У двух рассмотренных кнопок результат, который при нажатии кнопки передается модальной форме, будет соответственно равен mrOk и mrCancel.
1.2.5. Компонент TEdit
TEdit - стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы.
Этот компонент доступен из модуля STDCTRL, и находится на странице Палитры компонентов Standard.
Этот компонент не содержит собственного кода, в нем только опубликованы свойства его предка TCustomEdit. Он представляет собой редактируемую строку (далее — просто редактор).
Стиль обрамления этого компонента
(Pb) property BorderStyle: TBorderStyle;
по умолчанию равен bsSingle.
Если свойство
(Pb) property AutoSize: Boolean;
равно True, компонент изменяет свою высоту в зависимости от размера шрифта (свойство Font). Для того чтобы изменения имели место, должен еще быть установлен стиль обрамления bsSingle.
Вводимый в редактор текст может автоматически подвергаться некоторым преобразованиям.
Преобразование, задаваемое свойством CharCase, позволяет автоматически преобразовывать все символы только в верхний или только в нижний регистр:
(Pb) property CharCase: TEditCharCase;
TEditCharCase = (ecNormal, ecUpperCase, ecLowerCase) ;
По умолчанию установлен стиль ecNormal и преобразования не происходит.
Аналогично, свойство
(Pb) property OEMConvert: Boolean;
определяет необходимость автоматического преобразования вводимых символов из кодировки OEM в ANSI и обратно. Такое свойство часто бывает нужно при обработке текста в кодировке MS-DOS.
Два следующих свойства описывают поведение выделенного текста при переходе фокуса. Первое из них
(Pb) property AutoSelect: Boolean;
описывает реакцию редактирующего элемента при получении фокуса. Если оно установлено в True (по умолчанию это так), то при получении фокуса ввода весь текст в нем выделяется независимо от состояния свойства SelText. Если AutoSelect установлено в False, то при получении фокуса выделяется лишь то, что было выделено до его утери.
После утери фокуса редактором выделенный в нем текст обычно теряет цветовое выделение. Чтобы оно оставалось, установите в False второе свойство:
(Pb) property HideSelection: Boolean;
На длину текста может быть наложено ограничение. Свойство
(Pb) property MaxLength: Integer;
определяет максимальную длину текста редактора в символах. Если значение этого свойства равно 0, то ограничений на длину текста нет.
Свойство PasswordChar предназначено для ввода пароля с использованием редактора:
(Pb) property PasswordChar: Char;
Его значение — это символ, используемый для отображения вместо любых вводимых символов.
Можно запретить возможность редактирования текста. Если значение свойства: (Pb) property ReadOnly: Boolean;
равно True, текст изменить нельзя.
Можно отследить изменения текста в редакторе, обрабатывая поступающие события:
(Pb) property OnChange: TNotifyEvent ;
1.2.6. Компонент TRadioButton
TRadioButton позволяет выбрать только одну опцию из нескольких. Если опять открыть диалог Options | Project и выбрать страницу Linker Options, то можно видеть, что секции Map file и Link buffer file состоят из наборов RadioButton.
Этот компонент доступен из модуля STDCTRL, и находится на странице Палитры компонентов Standard.
Радиокнопка (переключатель), или кнопка с зависимой фиксацией — также стандартный элемент управления Windows. Особенностью радиокнопок является механизм их переключения. Они группируются автоматически, то есть при выборе одной из них все остальные, принадлежащие тому же элементу управления или форме, освобождаются. Для того чтобы в форме можно было использовать несколько независимых групп радиокнопок, используйте специальные компоненты.
Свойство
(Pb) property Checked: Boolean;
определяет, нажата ли данная радиокнопка. При изменении этого свойства генерируется событие OnClick.
У радиокнопки имеется свойство Caption, содержащее связанный с ней текст. Выравнивание текста радиокнопки определяется свойством
(Pb) property Alignment: TLeftRight;
и может проводиться только по левому или по правому краю. У этого компонента предусмотрено также событие:
(Pb) property OnDblClick;
Такое событие посылается только уже нажатой радиокнопке, в то время как OnClick — только ненажатой.
1.2.7. Компонент TComboBox
TComboBox во многом напоминает ListBox, за исключением того, что позволяет вводить информацию в маленьком поле ввода сверху ListBox. Есть несколько типов ComboBox, но наиболее популярен спадающий вниз (drop-down combo box), который можно видеть внизу окна диалога выбора файла.
Этот компонент доступен из модуля STDCTRL, и находится на странице Палитры компонентов Standard.
Этот стандартный элемент управления Windows — комбинированный список — имеет много общего с TListBox. Он состоит из собственно списка и помещенного рядом поля ввода редактирующего элемента. Таким образом, пользователь может выбрать одно из готовых значений какой-то величины или ввести свое. Стиль компонента в части правил взаимного сочетания списка и редактора определяется свойством:
(Рb) property Style: TComboBoxStyle;
TComboBoxStyle = (csDropDown, csSimple, csDropDownList,csOwnerDrawFixed, csOwnerDrawVariable) ;
Его значения имеют следующий смысл:
· csSimple — весь список виден все время. Текущий выбор отображается в редакторе, его можно изменить;
· csDropDown — список открывается (выпадает) и скрывается при нажатии кнопки, расположенной справа от текста. Такой список будем называть выпадающим;
· csDropDownList — список выпадающий, но редактирующий элемент заменен статическим текстом и вводить свои данные пользователь не может;
· csOwnerDrawFixed — определяемый пользователем стиль списка с постоянной высотой элемента;
· csOwnerDrawVariable — определяемый пользователем стиль списка с переменной высотой элемента.
Принципы пользовательской отрисовки списка для csOwnerDrawFixed и csOwnerDrawVariable, а также связанные с этим методы и события остались такими же, как в TListBox. По умолчанию устанавливается стиль csDropDown.
Организация списка также сходна с предыдущей. Приведенные свойства и методы имеют то же назначение:
(Pb) property Items: TStrings;
property ItemIndex: Integer;
procedure Clear;
(Pb) property Sorted: Boolean;
(Ro) property Canvas: TCanvas;
Текст, содержащийся в редактирующем элементе списка, доступен через свойство:
(Pb) property Text: TCaption;
Его максимальная длина ограничена числом символов, равным значению свойства:
(Pb) property MaxLength: Integer;
Если MaxLength равно 0, то ограничений на длину строки нет (до 255 символов).
При изменении текста (а также при смене выбранного элемента) возникает событие OnChange.
Часть текста может быть выделена. Три свойства содержат выделенный текст, его положение и длину:
property SelText: string;
property SelStart:. Integer;
property SelLength: Integer;
Метод procedure SelectAll; выделяет весь текст. Значение свойства
property DroppedDown: Boolean;
соответствует состоянию списка: True соответствует открытому ("выпавшему") списку. С его помощью можно показывать или скрывать список из программы. При изменении состояния списка возникает событие:
(Pb) property OnDropDown: TNotifyEvent;
Максимальное число элементов, которые показываются при выпадении списка:
(Pb) property DropDownCount: integer;
по умолчанию оно равно 8. В первой версии VCL это свойство описано, но не реализовано (не играет роли).
1.2.8. Компонент TCheckBox
TCheckBox отображает строку текста с маленьким окошком рядом. В окошке можно поставить отметку, которая означает, что что-то выбрано. Например, если посмотреть окно диалога настроек компилятора (пункт меню Options | Project, страница Compiler), то можно увидеть, что оно состоит преимущественно из CheckBox’ов.
Этот компонент доступен из модуля STDCTRL, и находится на странице Палитры компонентов Standard.
Кнопка с независимой фиксацией, или флажок. Является стандартным элементом управления Windows.
Состояние кнопки отражает свойство:
(Pb) property State: TCheckBoxState;
Оно может принимать одно из трех значений: .
TCheckBoxState = (cbUnchecked, cbChecked, cbGrayed);
Способ перехода из состояния в состояние при нажатии устанавливается свойством:
(Pb) property AllowGrayed: Boolean;
Если оно равно False, кнопка имеет два состояния и при каждом нажатии переходит из cbUnchecked в cbChecked и обратно. Если AllowGrayed = True, кнопка имеет три состояния и при нажатиях движется по циклу cbGrayed — cbChecked — cbUnchecked.
Показывает, отмечена ли кнопка (т. е. State = cbChecked), свойство:
(Pb) property Checked: Boolean;
Оно доступно для записи — с его помощью можно и отмечать кнопки. Значение False соответствует cbUnchecked.
Выравнивание текста (только по правому или левому краю) задается при помощи свойства:
(Pb) property Alignment: TLeftRight; TLeftRight = taLeftJustify..taRightJustify;
Кнопка также имеет свойство Caption. Двойной щелчок на кнопке не предусмотрен.
2. РАЗРАБОТКА ПРОГРАММЫ
2.1. Постановка задачи
Разработать лабораторный практикум по теме: «Создание тестирующей программы». Программа должна содержать заставку с названием проекта, и перечень вопросов с вариантами ответов, из которых нужно выбрать правильный. По окончании тестирования должен быть выдан результат тестирования.
2.2. Алгоритм реализации работы
Лабораторный практикум реализуется в десять этапов, в каждом из них происходит усложнение задачи.
На первом этапе создается заставка, содержащая название тестирующей программы. В качестве примера производится тестирование на знание программы Microsoft Excel из пакета программ Microsoft Office 2000.
Необходимо создать проект для запуска заставки тестирующей программы, которая будет отображаться на экране 10 секунд (рис.1).
Для этого необходимо задать свойства компонентов (табл.2), и создать процедуру завершения показа заставки TForm1.Timer1Timer (Приложение 1).
Таблица 2
Свойства компонентов
Form1 |
Caption |
Приглашение к тестированию |
WindowState |
максимальное окно |
|
Color |
clGreen |
|
Image1 |
Picture |
вставка из файла, в котором сохранена копия экрана окна EXCEL |
Label1 |
Caption |
Программа тестирования по пакету Microsoft EXCEL |
WordWrap |
True |
|
Font |
Times New Roman, 20 p, полужирный, белый, выровнен по центру |
|
Color |
clGreen |
|
Timer1 |
Interval |
5000 |
Events |
OnTimer – Close; (закрытие формы) |
Рис.1. Задание 1, форма 1
На втором этапе создается проект для запуска вопроса с вводом ответа тестирующей программы (Project2, Unit2.pas, Form2). Пример проекта приведен на рис.2.
Рис.2. Проект второго этапа
Таблица 3
Свойства компонентов
Form2 |
Caption |
Вопрос с вводом ответа |
WindowState |
нормальное окно |
|
Color |
clInfoBk |
|
Label1 |
Caption |
Текст вопроса |
WordWrap |
True |
|
Font |
Times New Roman, 16 p, полужирный, синий, выровнен по центру, на белом фоне |
|
Edit1 |
Font |
Times New Roman, 16 p, красный |
Button2 |
(Exit) |
процедура закрытия формы |
Button1 |
(OK) |
обработка введенного ответа |
Для этого необходимо задать свойства компонентов (табл.3), и создать процедуру проверки правильности ответа на вопрос TForm2.Button1Click (Приложение 1).
На форме показывается вопрос, и в поле ввода ожидается ответ. После ввода ответа происходит его передача в переменную S (блок 2), перевод всех букв в верхний регистр, и проверка этой переменной (блок 3). Если введенный ответ совпадает с правильным, то происходит вывод сообщения о правильности ответа (блок 5), и закрытие формы (блок 6). Иначе происходит вывод сообщения о том, что ответ неверен (блок 4).
На форме также присутствует кнопка Exit, которая позволяет прервать работу программы и выйти в систему (кнопка выхода).
На третьем этапе необходимо создать проект для запуска заставки, а затем через 10 сек вопроса с вводом ответа (Project3, Unit1.pas, Unit2.pas). Для этого необходимо открыть первый проект, добавить в него модуль Unit2 из проекта 2. В коде модуля Unit1 необходимо в разделе описания модулей добавить второй модуль (Unit2), а в процедуре Timer1Timer убрать команду Close, вместо которой необходимо отключить таймер, сделать первую форму невидимой, и активизировать вторую форму (Приложение 1 и 2). А также в коде модуля Unit2 вместо Close необходимо ввести команду Application.Terminate (блок 2).
На четвертом этапе нужно создать проект для вопроса с выбором ответа из выпадающего списка (Project4, Unit4.pas, Form4). Пример такой формы приведен на рис.3.
Необходимо задать также свойства компонентов (табл.4).
Таблица 4
Свойства компонентов
ComboBox1 |
Text |
Ответ из списка |
Items |
Список ответов (например, Простой Вычисляемый Сравнивающий) |
|
Button1 |
(OK) |
обработка выбранного ответа |
Рис.3. Вопрос с выбором ответа из выпадающего списка
В списке варианты ответов заранее заданы, поэтому необходимо выполнить обычный выбор необходимо ответа. Выбранный ответ сравнивается с эталонным (Приложение 2), и если он правильный, программа завершает свою работу (блок 3).
На пятом этапе необходимо создать проект для вопроса с выбором одного ответа (Project5, Unit5.pas, Form5). Пример такого проекта приведен на рис.4.
Рис.4. Вопрос с выбором ответа
Необходимо задать свойства компонентов, используемых в этом проекте (табл.4).
Таблица 4
Свойства компонентов
RadioButton1 |
Caption |
Первый ответ |
RadioButton2 |
Caption |
Второй ответ |
RadioButton3 |
Caption |
Третий ответ |
RadioButton4 |
Caption |
Четвертый ответ |
Button1 |
(OK) |
обработка выбранного ответа |
Правильный ответ находится в третьей радиокнопке, поэтому при выборе ответа, и нажатии на кнопку OK, происходит следующее: проверяется, какая радиокнопка была выбрана (Приложение 2, рис.14, блок 2), и если результат проверки положителен, то происходит завершение работы приложения (блок 3).
На шестом этапе нужно создать проект для вопроса с выбором нескольких правильных ответов (Project6, Unit6.pas, Form6). Пример такого проекта приведен на рис.5.
Рис.5. Вопрос с несколькими ответами
При выделении правильных ответов, и нажатии кнопки OK, происходит обработка ответа (Приложение 2). Если, при проверки условия, происходит совпадение (рис.15, блок2), то приложение завершает свою работу (блок 3). Кнопка Exit позволяет не отвечать на вопрос, и прервать выполнение этого приложения, т.е. она работает аналогично кнопкам Exit, описанным выше.
На седьмом этапе необходимо создать проект для вопроса с выбором ответа с помощью картинки (Project7, Unit7.pas, Form7). Пример такого проекта приведен на рис.6.
Рис.6. Вопрос с картинкой
В этом случае на форму помещаются компоненты CheckBox, а картинка создается в любом графическом редакторе, например в Adobe PhotoShop 6.0.
Обработка правильного ответа осуществляется аналогично предыдущему проекту (Приложение 2, рис.16). Проверяется условие совпадения ответа (блок 2), и в случае совпадения приложение завершает свою работу (блок 3).
На восьмом этапе необходимо дополнить Project3 новыми вопросами, представленными в этапах 4-7. Сохранить проект предлагается под именем Project8.
Для этого в каждом модуле при обработке кнопки ОК нужно сделать невидимой текущую форму и вызывать следующую форму по аналогии с третьим этапом, и по окончании тестирования сделать вывод количества и процента правильных ответов (рис.7).
Рис.7. Результат тестирования
Глобальные переменные, необходимые для подсчета количества и процента правильных ответов, необходимо объявить в специальном модуле UNIT0.pas. Этот модуль, не содержащий никакой формы, вставляется в проект по команде FILE à NEW с выбором UNIT, а затем сохраняется как модуль UNIT0.pas. В каждом модуле в конструкции USES … нужно добавить UNIT0 (Приложение 6).
При вычислении результатов тестирования используется модуль Unit8, в котором вызывается процедура TForm8.FormActivate (Приложение 2, рис.17).
Здесь происходит преобразование переменных и вывод их на форму. Во-первых, общее количество вопросов (блоки 2 и 3), во-вторых, количество правильных ответов (блоки 4 и 5), и в-третьих подсчет процента правильных ответов и вывод его (блоки 6 и 7).
Все остальные процедуры построены аналогичным образом, согласно этапам 3-7 (Приложение 3).
На девятом этапе необходимо модифицировать проект восьмого этапа (Project8), разработав процедуру ввода исходной информации о вопросах и ответах из текстовых файлов. Для этого нужно создать пять (по количеству видов вопросов) текстовых файлов – 1.ТХТ, 2.ТХТ, 3.ТХТ, 4.ТХТ, 5.ТХТ.
Информацию в каждом файле набрать в виде:
Первая строка – текст вопроса
Вторая строка – номера правильных ответов
Третья, четвертая, пятая и шестая строки – варианты ответов
Седьмая строка – вид вопроса (1 – 5).
В модуле UNIT0 необходимо написать процедуру ввода из текстового файла (Приложение 4, рис.23). Здесь сначала открывается необходимый текстовый файл (блоки 2 и 3) и переменной-счетчику NSTR присваивается значение 1 (блок 4). После этого производится ввод вопроса из этого файла (блоки 5 и 6), потом читается правильный ответ (блоки 7 и 8). Далее считываются варианты ответов, которые помещаются в специальный массив Otvet (блоки 9-11), и номер (вид) вопроса (блоки 12 и 13).
После этого файл закрывается (блок 14) и процедура завершает свою работу (блок 15).
Для события формы FORM2 OnShow необходимо записать операторы вызова процедуры VVOD и назначения текста вопроса (Приложение 4, рис.24). В этой процедуре задается имя тестового файла 1.txt (блок 2), и вызывается процедура VVOD для чтения данных (блок 3). Далее проверяется условие совпадения вида вопроса (блок 4), и в положительном случае на форму выводится вопрос (блок 5).
Также необходимо исправить проверку на введенный ответ в обработке кнопки ОК (Приложение 4, рис.25).
Сначала обнуляются переменные количества правильных ответов, и общего количества вопросов. Потом считывается ответ из поля ввода (блок 2). В блоке 3 ответ проверяется, и при положительном результате проверки выводится сообщение, что ответ был правильным (блок 5) и к счетчику правильных ответов прибавляется единица (блок 6). В противном случае выводится сообщение о том, что ответ неверен (блок 4).
Далее, пройденный вопрос считается, с рабочего стола исчезает форма 2 и выводится форма 4 (блок 7). В случае нажатия кнопки Exit активизируется процедура Button2Click (Приложение 4, рис.26), которая завершает работу данного приложения.
При появлении на рабочем столе формы 4 активизируется процедура FormShow (Приложение 4, рис.27) в которой происходит аналогичная работа по вводу данных (блоки 2 и 3), и обработка номера вопроса для вывода (блоки 4 и 5). Далее выводятся возможные варианты ответов в компонент ComboBox (блоки 6 и 7).
При ответе на вопрос активизируется процедура Button1Click (Приложение 4, рис.29), которая работает аналогично процедуре Button1Click предыдущей формы, в которой вызывается следующая форма.
Во всех остальных формах работа процедур происходит аналогично вышеописанным (Приложение 4, рис.28 - 38).
В последней форме происходит преобразование необходимых переменных и вывод их на форму (Приложение 4, рис.39). Во-первых, общее количество вопросов (блоки 2 и 3), во-вторых, количество правильных ответов (блоки 4 и 5), и в-третьих подсчет процента правильных ответов и вывод его (блоки 6 и 7).
На десятом, последнем, этапе нужно продолжить модификацию проекта Project8, выполнив ввод исходной информации о вопросах и ответах из одного текстового файла 0.ТХТ.
Во всех модулях необходимо убрать назначение имени файла.
В модуле Unit0 в процедуре VVOD нужно добавить назначение имени файла 0.ТХТ.
В модуле Unit0 в процедуре VVOD требуется записать операторы вычисления номера строки NSTR начала ввода информации нового вопроса и цикл пустого чтения для пропуска ненужной информации (Приложение 5, рис.41).
Сначала, в этой процедуре, задается имя тестового файла 0.txt (блок 2), потом этот файл открывается (блок 3). Далее вычисляется номер строки начала ввода информации нового вопроса и пропускается ненужная информация (блоки 4-7).
После этого производится ввод вопроса из файла (блоки 8 и 9), потом читается правильный ответ (блоки 10 и 11). Далее считываются варианты ответов, которые помещаются в специальный массив Otvet (блоки 12-14), и номер (вид) вопроса (блоки 15 и 16).
После этого файл закрывается (блок 17) и процедура завершает свою работу (блок 18).
После этого во всех модулях отображения вопросов задать оператор изменения номера вопроса q:=q+1.
Все процедуры показа форм и обработки ответов остаются аналогичными девятому этапу (Приложение 5, рис.42 - 59).
ЗАКЛЮЧЕНИЕ
В результате выполнения данной курсовой работы был разработан лабораторный практикум. Было проведено исследование компонентов программной среды Borland Delphi 6.0, которые использовались при создании данного практикума.
В результате исследования были выявлены следующие недостатки полученного лабораторного практикума:
1. Невозможность вернуться к предыдущему вопросу тестирующей программы;
2. Незащищенность исходного текстового файла с вопросами и ответами, в результате чего есть возможность обойти ответы и получить положительную оценку;
3. Жесткая привязка к линейке операционных систем Windows.
Однако, помимо недостатков, есть и достоинства у получаемого программного продукта и использования лабораторного практикума:
1. Программный продукт малотребователен к системным ресурсам компьютера. Минимальная конфигурация: процессор – не ниже Pentium, оперативная память – не ниже 16 Mb, операционная система – Windows 95 / 98/ Me / NT / 2000 / XP;
2. Программный продукт можно использовать для контроля знаний по любым дисциплинам, достаточно изменить текстовый файл с вопросами и ответами;
3. Лабораторный практикум легок в изучении, и дает достаточно необходимых знаний для создания тестирующих программ.
В результате учета всех сделанных выше замечаний возможно улучшение создаваемого программного продукта, на которое потребуется минимум изменений исходного кода программы.