Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab / Создание теста

.pdf
Скачиваний:
8
Добавлен:
21.03.2015
Размер:
291.02 Кб
Скачать

ЗАДАНИЕ

Разработайте тестирующую систему в среде Delphi. Описание построения одного из

вариантов ТЕСТЕРА для вопросов с одним верным вариантом ответа приведено в тексте лабораторной работы.

Требования к оформлению

Для разработки системы рекомендуется использовать традиционный интерфейс (формы, кнопки, информационные сообщения и т.п.).

Работа с тестирующей системой должна начинаться с информационного сообщения для тестируемых (тема теста, краткая инструкция и/или т.п.).

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

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

оформленного в соответствии со структурой.

Итогом работы тестовой системы должна быть статистика ответов (подсчет числа верных, неверных и не отвеченных).

ОПИСАНИЕ ПРОЦЕССА СОЗДАНИЯ ПРОГРАММЫ «ТЕСТЕР»

I.Создание «пустого» проекта

1Создайте новый проект в среде Delphi File\New\Application (Если открыт уже существующий).

2Сохраните проект File\Save All. Файл модуля главной формы (*.pas) сохраните под именем Main_Form.pas, файл проекта (*.dpr) сохраните под именем

Tester.dpr.

II.Создание главной формы

1Перед Вами новый проект и главная форма. Если она не видна, нажмите F12. Выберите форму щелчком мыши. Далее переустановите следующие свойства

формы в Инспекторе объектов (если не виден, то нажмите F11)

Caption=ТЕСТЕР

Width=800

{т.к. мониторы с расширением ниже 800х600 теперь

Height=600

почти не встречаются}

Position=poScreenCenter {расположение формы по центру}

FormStyle=fsStayOnTop

{расположение формы поверх всех приложений}

BorderStyle=bsNone

{убираем системные кнопки и запрещаем изменение

размеров}

{задаем имя формы}

Name=Main

2Предотвратим закрытие формы методом ALT+F4. Для этого обработаем событие OnClose для данной формы. В созданной процедуре введем команду abort.

Процедура будет иметь вид:

procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction); begin

abort;

end;

III.Создание формы «черного экрана»

1Добавьте в проект новую форму (File\New|Form) сохраните проект (File\Save All) и укажите имя модуля новой формы BlackScreen_form.pas.

2Далее переустановите следующие свойства формы в Инспекторе объектов:

Caption = '' {пустая надпись оформляется с целью удаления верхней строки окна}

left=0

PDF created with pdfFactory trial version www.pdffactory.com

Top=0

Name=BlackScreen

FormStyle=fsStayOnTop

WindowState=wsMaximized

Color=clBlack

BorderStyle=bsNone

3 Предотвратим закрытие формы методом ALT+F4 (см. пункт II.2).

IV. Порядок вывода форм

1При запуске ТЕСТЕРА необходимо сначала вывести черный экран, а затем на него главную форму. Это можно сделать, добавив процедуру для обработки

события OnShow для главной формы: procedure TMain.FormShow(Sender: TObject);

begin

{порядок вывода форм}

blackscreen.Show;

main.Show;

{отключаем форму blackscreen, чтобы

blackscreen.Enabled:=false;

исключить возможность ее активации} end;

2Установите связь главной формы Main с формой BlackScreen. Для этого в

файле модуля главной формы в разделе implementation добавим строку uses

BlackScreen_form. Это будет выглядеть так: implementation

uses BlackScreen_form;

Сохраните проект и запустите его на выполнение. Если все выполнено без ошибок, Вы увидите форму прямоугольник на черном фоне.

Выйти из запуска можно прерыванием программы по нажатию CTRL+F2.

V.Оформление главной формы

1Помещаем на форму панель Panel1 (находится на палитре Standart) и задаем

еесвойства:

Caption ='' {пустая надпись}

Align=alClient

BevelOuter=bvNone

2 На панель помещаем картинку Image1 (палитра Additional) и задаем свойства:

Align=alClient

Strech=True

Picture=FileName.jpg {указывается имя файла, содержащего фоновую картинку}

3 На панель помещаем метку Label1 (палитра Standart) и задаем свойства:

Caption = "ТЕСТЕР"

Transparent = True

Font= Times New Roman / Размер 48 / Жирный

Left=262 { Это приблизительно центр } Top=100

4 На панель помещаем метку Label2 и задаем свойства:

Caption = "С ОДНИМ ВАРИАНТОМ ОТВЕТА" Transparent = True

Font = Times New Roman / Размер 28 / Жирный Left=92

Top=260

5 Вот так все должно выглядеть после сохранения и запуска:

PDF created with pdfFactory trial version www.pdffactory.com

 

 

 

6

Помещаем на панель таймер Timer1 (палитра System) и задаем свойство:

 

Interval=3000

 

7

Пишем обработчик события OnTimer для таймера:

 

procedure TMain.Timer1Timer(Sender:TObject);

 

begin

{скрытьпанель}

 

panel1.Hide;

 

timer1.Enabled:=false;

{отключить таймер}

 

end;

 

 

Сохраняем и запускаем. Через 3 секунды заставка должна пропасть.

8

Далее помещаем на форму еще одну панель Panel2 и задаем свойства:

 

Caption ='' {пустая надпись}

 

Align = alClient

 

 

BevelOuter = bvNone

 

9

На панель Panel2 помещаем картинку Image2. Задаем свойства:

 

Align = alClient

 

 

Strech = True

{указывается имя файла, содержащего картинку}

 

Picture = FileName.jpg

10

Помещаем на панель Panel2 метку Label3 и задаем свойства:

 

Caption="В каждом вопросе только 1 правильный ответ. Для выбора ответа

 

нажмите на панель с этим ответом. На выполнение отводится 30 минут."

 

AutoSize=False

 

 

Aligment=taCenter

 

 

Transparent=True

 

 

Wordwrap=True

 

 

Font=Times New Roman / Размер 28 / Жирный

 

Помещаем метку Label3 в центр.

11

Над ней помещаем еще одну метку Label4 и задаем ее свойства:

 

Caption="Инструкция"

 

 

Transparent=True

 

 

Font=Times New Roman / Размер 28 / Жирный / Подчеркнутый

12

Помещаем кнопку Button1 (палитра Standart) в самый низ формы и задаем

 

свойства:

 

 

Caption = "Начать !!!"

 

 

Name = Start

 

 

Font = Times New Roman / Размер 28 / Жирный

13

Теперь обработаем событие OnClick для кнопки. Для этого создадим процедуру:

 

procedure TMain.StartClick(Sender: TObject);

 

begin

 

 

Panel2.Hide;

 

 

end;

 

14

В процессе конструирования приложения компоненты Panel2 и Image2 могут

 

оказаться внутри компонента Panel1. Если это произошло, необходимо с

PDF created with pdfFactory trial version www.pdffactory.com

помощью окна Object TreeView (если окна нет, то нажмите Shift+Alt+F11) разместить объекты так, как на рисунке ниже.

15Далее следует разместить компонент Panel2 на заднем плане (позади Panel1).

Для этого необходимо в окне Object TreeView выбрать компонент Panel2 и выполнить команду Edit, Send to Back.

16Вот так это должно выглядеть после сохранения и запуска:

17 Помещаем на форму, главную панель Panel3 и задаем ее свойства:

Caption ='' {пустая надпись} Align = alClient

BevelOuter = bvNone

18 Помещаем на панель таймер Timer2, его свойства:

Interval=1000

{Секундомер. Временной интервал можно изменять.}

Enabled=false

 

19 Добавим метку Label5. Задаем свойства:

Font=Times New Roman / Размер 28 / Жирный / Подчеркнутый

Name=Qnumber

Transparent=True Caption="Вопрос № 1"

20 Добавляем на панель строку состояния StatusBar1 (палитра Win32) и задаем свойства:

Height = 30

Font = Times New Roman / Размер 12 / Жирный UseSystemFont = False

21Разделим строку состояния StatusBar1 на три информационные панели. Для этого вызываем окно Editing StatusBar1.Panels (см. рисунок ниже) используя

свойство Panels для компонента StatusBar1.

PDF created with pdfFactory trial version www.pdffactory.com

Нажимаем в данном окне три раза на кнопку Add New (Ins) или на клавишу Insert. Окно будет иметь вид:

Задаем свойства для каждой из панелей.

Для Panels[0]:

Width=150 Text="Время: " Alignment=taCenter

Для Panels[1]:

Width=200

Text=" Вопрос № 1" Alignment=taCenter

Для Panels[2]:

Width=400

Text="В этом тесте только 1 верный ответ" Alignment=taCenter

22 Помещаем на главную панель Panel3 для вывода текста вопроса метку Label5. Задаем свойства:

Alignment=taCenter

AutoSize=False

Font=Times New Roman / Размер 16 / Жирный Heigth=250

Name=Question

Left=20

Top=70

Width=750

Transparent=True

Wordwrap=True

23 Помещаем на главную панель Panel3 компонент для чтения вариантов ответов ListBox1 (палитра Standart) и задаем его свойства:

BevelKind = bkFlat

Font = Times New Roman / Размер26 / Жирный Heigth = 208

ItemHeigth = 40 Left = 25 TabStop = false Top = 260 Width = 745 Name = Answer

24Также помещаем на панель Panel3 компонент BitBtn1 (палитра Additional) и задаем его свойства:

PDF created with pdfFactory trial version www.pdffactory.com

Name = Button

Caption = 'Принять'

Font = Times New Roman / Размер14 / Жирный

Heigth = 45

Left = 24

Top = 480

Width = 745

25 Сверху на главную панель Panel3 помещаем кнопку BitBtn2 со свойствами:

Kind = bkCancel Name = Exit Caption = "Выход"

26 Обработаем событие OnClick для кнопки Exit. Процедура будет иметь вид: procedure TMain.ExitClick(Sender: TObject);

begin application.Terminate; end;

27Оформление интерфейса завершено. В итоге главная панель Panel3 проекта должна выглядеть следующим образом:

28Разместим компонент Panel3 на заднем плане (позади Panel1 и Panel2). Дерево объектов должно выглядеть:

PDF created with pdfFactory trial version www.pdffactory.com

VI. Оформление рабочей части проекта

VI.1. Оформление таймера

1 Описываем 3 глобальные переменные Min, Hour, Sec: integer; (это надо делать там, где описывается главная форма перед разделом implementation)

var

Main: TMain;

Min, Hour, Sec : integer; implementation

2 Для формы Main описываем обработчик события создания формы OnCreate, где задаем переменным начальные значения.

procedure TMain.FormCreate(Sender: TObject); begin

hour := 0; min := 30; sec := 0; end;

3 Для таймера Timer2 создадим процедуры обработку события работы таймера

OnTimer:

procedure TMain.Timer2Timer(Sender: TObject); var time : string;

begin

if (sec > 0) then sec:=sec-1 else

if (sec = 0) and (min > 0) then begin

min:=min-1; sec:=59; end

else

if (sec = 0) and (min = 0) and (hour > 0) then begin

hour:=hour-1; min:=59; sec:=59;

end

else if (sec = 0) and (min = 0) and (hour = 0) then timer1.Enabled:=false; if hour < 10 then time := '0'+inttostr(hour) else time := inttostr(hour); time:=time+':';

if min < 10 then time := time+'0'+inttostr(min) else time :=

PDF created with pdfFactory trial version www.pdffactory.com

time+inttostr(min);

time:=time+':';

if sec < 10 then time := time+'0'+inttostr(sec) else time := time+inttostr(sec);

Statusbar1.Panels[0].Text := 'Время: '+time; end;

На данный момент, когда заканчивается время (в нашем случае 30 минут), таймер останавливается. Сохраним проект.

4При работе с тестером необходимо, чтобы таймер начинал работать сразу после инструкции. Для этого вернемся к панели Panel2 и для кнопки Start (кнопка с надписью «Начать!!!») в процедуре обработки события OnClick (procedure

TMain.StartClick(Sender: TObject); – эта процедура уже создана ранее) надо добавить: timer2.enabled := true;

Оформление таймера завершено. Сохраним проект.

VI.2. Оформление процесса обработки вопросов и ответов

1 Создадим текстовый файл Test.txt (лучше это выполнить с помощью Блокнота), который должен выглядеть следующим образом:

4

4Текст Вопроса +Ответ1 -Ответ2 -Ответ3 -Ответ4 5Текст вопроса +Ответ1 -Ответ2 -Ответ3 -Ответ4 -Ответ5 4Текст Вопроса +Ответ1 -Ответ2 -Ответ3 -Ответ4 3Текст Вопроса +Ответ1 -Ответ2 -Ответ3

Поясним требования к оформлению.

В начале файла находится число, которое определяет общее количество вопросов. Цифра перед вопросом обозначает количество ответов, далее идет текст вопроса. На каждой строке перед вариантом ответа помещается символ «-», если ответ неправильный, или символ «+», если правильный. Оптимальным считается не более 5 вариантов ответа на один вопрос.

2Объявляем глобальную переменную txt типа Text (это надо делать там, где описывается главная форма перед разделом implementation).

В процедуре обработки события OnCreat для главной формы (procedure

TMain.FormCreate(Sender: TObject); эта процедура создана ранее) допишем процедуру открытия файла следующим образом:

assignfile(txt,'test.txt');

reset(txt);

3Теперь оформим процесс считывания вопросов/ответов в процедуру NextQ.

Но перед этим объявим новые глобальные переменные: cnt счетчик верных ответов и total общее количество вопросов cnt, total: integer; (это надо

делать там, где описывается главная форма перед разделом implementation). procedure NextQ;

PDF created with pdfFactory trial version www.pdffactory.com

var str : string; num : integer; begin readln(txt,str);

num := strtoint(copy(str,1,1)); delete(str,1,1); Main.Question.Caption := str; main.Answer.Items.Clear;

for cnt:=0 to num-1 do begin readln(txt,str);

if copy(str,1,1) = '+' then main.Question.Tag := cnt; delete(str,1,1);

main.Answer.Items.Add(str);

end;

end;

Поясним работу процедуры NextQ. При чтении из файла Test.txt свойства компонента Question содержат соответственно: Caption текст вопроса, Тag номер правильного ответа.

4В обработчике события создания формы OnCreate (процедура уже создана ранее) считаем из файла значение переменной total. Для этого добавим строку readln(txt,total);.

Сохраним проект.

VI.3. Оформление процесса перехода по вопросам и создание отчета

1 На главную форму помещаем панель Panel4 и задаем ее свойства:

Align = alClient BevelOuter = bvNone Caption = ' '

Эта панель будет содержать итоги тестирования.

2 На панель помещаем картинку Image3 (палитра Additional). Задаем свойства:

Align = alClient Strech = True

Picture = FileName.jpg {указывается имя файла, содержащего фоновую картинку}

3 Для создания отчетной таблицы используем компонент StringGrid (палитра Additional) со свойствами:

ColCount = 100 {количество столбцов в таблице (число вопросов)} RowCount = 2 {количество строк в таблице}

FixedCols = 0

FixedRows = 0 DefaultColWidth = 23 Heigth = 71

Name = Result Left = 8

ScrollBars = ssHorizontal Top = 448

Width = 777

4 Поместим на картинку Image3 кнопку BitBtn1 и зададим ее свойства:

Kind = bkCancel Caption = 'Выход' Name = Exit2

Font = MS Sans Serif / Размер 12 / Жирный Heigth = 33

Left = 300

Top = 527

Width = 177

5 Обработаем событие OnClick для кнопки Exit2: procedure TMain.Exit2Click(Sender: TObject); begin

application.Terminate;

PDF created with pdfFactory trial version www.pdffactory.com

end;

6Поместим на картинку Image3 три метки (Label) с именами и надписями соответственно:

Nright (Верных ответов ->) Nwrong (Неверных ответов ->) Nnoans (Не отвечено ->)

7Далее все оформите как на рисунке:

Оформление интерфейса завершено. Сохраните проект.

8Разместим компонент Panel4 на заднем плане (позади всех панелей). Дерево объектов имеет следующий вид:

9Для обработки ответов объявим 3 переменные: wrong, right, nq: Integer; где wrong количество неправильных ответов, right количество правильных ответов, nq номер вопроса.

10Вернемся к ранее созданной процедуре обработки события OnCreat для главной формы (procedure TMain.FormCreate(Sender: TObject);). Выполним ее

редактирование следующим образом: procedure TMain.FormCreate(Sender: TObject); begin

hour := 0; min := 30; sec := 0; assignfile(txt,'test.txt'); reset(txt);

readln(txt,total); nq := 1;

nextq;

PDF created with pdfFactory trial version www.pdffactory.com

Соседние файлы в папке lab