Разработка лабораторного практикума Создание тестирующей программы

Разработка лабораторного практикума Создание тестирующей программы

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: |Показывает, отображается ли в TLabel |

|Boolean; |акселератор (символ, перед которым |

| |стоит знак амперсанда — '&'). Если оно |

| |равно False, амперсанд никак не |

| |интерпретируется. В случае True |

| |акселератор выделяется в строке |

| |подчеркиванием и нажатие клавиш |

| |+ приводит к передаче |

| |фокуса окну 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) property Center: Boolean;

— если это свойство установлено в 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;

Под "любым способом" здесь подразумевается щелчок мышью, нажатие

комбинации клавиши — акселератора, нажатие или (только для

некоторых кнопок) или вызов метода Click из программы.

Текст кнопки, появляющийся на ее поверхности, определен в свойстве:

(Pb) property Caption: string;

Если в составе текста есть амперсанд ('&'), то следующий за ним символ

используется в акселераторе, и нажатие комбинации клавиш +

вызывает нажатие кнопки.

Водораздел среди кнопок проходит по тому, что именно означает нажатие.

Ряд кнопок — TRadioButton, TCheckBox и группа TRadioGroup — предназначен

для ввода или переключения фиксированных параметров, и программиста более

интересует их состояние в некоторый момент времени, чем сам факт нажатия.

Кнопки TButton, TSpinButton и TBitBtn напротив, как правило, своим нажатием

инициируют немедленные действия. Кнопка TSpeedButton может успешно служить

для решения обеих задач.

Как уже было сказано, нажатие влечет за собой OnClick. Но это не

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

исключением из этого правила является использование кнопок в модальных

формах.

Модальная форма, или модальный диалог — специальная разновидность окон

Windows (и форм Delphi), предназначенная для ввода пользователем

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

вариантов. Обычно при этом ему предоставляется несколько кнопок,

соответствующих вариантам. Вплоть до получения ответа в модальном диалоге

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

системном модальном диалоге — и на другие задачи. Для использования в таких

случаях предназначены стандартная кнопка Windows TButton и ее младшая

сестра TBitBtn, отличающаяся только наличием картинки на ее поверхности.

При их нажатии значение свойства ModalResult кнопки передается одноименному

свойству формы, где такое изменение означает вывод формы из модального

состояния и ее закрытие:

(Pb) property ModalResult: TModalResult;

TModalResult = Low(Integer) ..High(Integer);

В модальной форме могут быть предусмотрены две специальные кнопки,

соответствующие положительному и отрицательному решениям. Одна из них

срабатывает при нажатии на клавиатуре , другая — . Любая кнопка

может получить такой статус, установив в 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. Двойной щелчок на кнопке не

предусмотрен.

-----------------------

[pic]

[pic]

[pic]