ЗНАЕТЕ ЛИ ВЫ?

Создание проекта «Тест» с использованием условного оператора и переключателей



 

Пример. Создать проект «Тест» по информатике. Пользователю предлагается несколько вопросов, каждый из которых имеет один вариант ответа. При щелчке на кнопке «Результат» должна появиться надпись с количеством правильных ответов. Оценка за тест выдается по щелчку на кнопке «Оценка».

Рис. 104 Графический интерфейс проекта «Тест»

 

Создадим графический интерфейс проекта по образцу рис. 103.

В данном проекте необходимо ввести переменную целого типа S, в которой будет храниться количество правильных ответов. При каждом правильном ответе переменная S должна увеличиваться на единицу. В начале программы ее необходимо обнулить. Для этого, создадим обработчик события OnCreate у формы, в котором запишем один оператор S:=0.

 

 

procedure TForm1.FormCreate(Sender: TObject);
Begin
S:=0;
end;

 

Для каждого компонента TRadioGroup необходимо создать обработчик события OnClick, в котором следует проверить, соответствует ли индекс выбранного ответа правильному. Если это условие выполняется, то переменная S должна увеличиваться на 1. Например, у первой группы переключателей RadioGroup1 будет следующий текст программного кода:

 

var
Form1: TForm1;
s:integer;
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex=0 then S:=S+1;
end;

 

Для вывода числа правильных ответов создадим следующий обработчик события OnClick у кнопки с заголовком «Результат».

 

procedure TForm1. Button1Click (Sender: TObject);
begin
Label5.Caption:= 'Количество правильных ответов '+IntToStr(S);
end;

 

Чтобы вывести оценку, необходимо снова использовать условный оператор:

 

procedure TForm1. Button2Click (Sender: TObject);
begin
if s=4 then Label6.Caption:='Ваша оценка 5';
if s=3 then Label6.Caption:='Ваша оценка 4';
if s=2 then Label6.Caption:='Ваша оценка 3';
if (s=1) or (s=0) then Label6.Caption:='Ваша оценка 2';
end;

 

 

Рис. 105 Работающее приложение

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

Рассмотрим создание теста, в котором каждый вопрос выводится в новой форме.

Первую форму сделаем титульной и разместим на ней заголовок теста, рисунок и кнопку «Начать».

 

Рис. 106 Графической интерфейс первой формы проекта

 

Для подключения к проекту новой формы необходимо в главном меню выбрать команду [File – New].Если задержать указатель мыши на данной команде, то справа от нее появится список элементов, которые можно добавить в проект. Выберем из списка вариант Form.После этого в проекте появится дополнительная форма. В нашем случае это будет Form2.

Далее необходимо добавить оператор в основной программный модуль unit1, который открывал бы вторую форму. Для этого применяется процедура FormN.Show, где N — порядковый номер открываемого дополнительного окна.

В данном проекте вторая форма должна открыться при щелчке на кнопке «Начать», поэтому текст программного кода обработчика события OnClick у данной кнопки будет следующим:

 

procedure TForm1. Button1Click (Sender: TObject);
begin
Form2.Show;
Form1.hide; //скрываем первую форму
end;

 

Далее необходимо разработать графический интерфейс подключаемого окна. Для того чтобы вывести на экран необходимую форму, нужно выбрать команду меню [View-Forms]. После выполнения данной команды на экран компьютера выводится диалоговое окно, которое содержит список всех форм, используемых в данном проекте. Выбираем вторую из них, после чего данная форма будет выведена на передний план. Сам же процесс создания графического интерфейса аналогичен соответствующему процессу для основной формы.

 

Рис. 107 Графический интерфейс дополнительного окна Form2

 

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

Код, описывающий действия, производимые пользователем в дополнительном окне, будет содержаться в дополнительном модуле unit2. Для того чтобы вывести на экран текст данного модуля, нужно выбрать команду меню [View – Units].После щелчка на этой команде открывается диалоговое окно со списком модулей, в котором выбираем нужный нам (в данном случае – это Unit2).

Сам по себе процесс написания кода аналогичен соответствующему процессу для основного окна, но нужно учесть, что модуль unit2 должен быть подключен к основному модулю unit1. Данное подключение производится так: в основной части программы после заголовка указывается список используемых в данной программе дополнительных модулей. Этот список начинается со служебного слова uses, после которого через запятую перечисляются модули. В этот список следует добавить модуль unit2. Тогда список будет выглядеть следующим образом:

 

Uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Menus, Unit2;

 

После выполнения всех указанных ранее операций дополнительное окно становится полноценной частью проекта.

Аналогично добавляются остальные окна теста Form3-Form6.

а) б)

в) г)

Рис. 108 Графический интерфейс дополнительных окон Form3-Form6

Разработаем код программного модуля unit2.pas для второй формы.

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

 

procedure TForm2.RadioGroup1Click (Sender: TObject);
begin
if RadioGroup1.ItemIndex=0 then
Form6.Label1.Caption:=IntToStr(StrToInt(Form6.Label1.Caption)+1);
end;

Количество правильных ответов выводится в компонент Label1 шестой формы.

При щелчке на кнопке «Следующий» третья форма должна появиться, а вторая скрыться.

 

procedure TForm2.Button1Click (Sender: TObject);
begin
Form3.show;
Form2.hide;
end;

Так как в программном модуле unit2.pas были использованы объекты Form3 и Form6, то необходимо подключить их модули к модулю unit2.pas. Т.е. добавить их в список Uses к уже имеющимся модулям.

Uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls, Unit3, Unit6;

 

Аналогично разрабатываются программные модули unit3.pas-unit5.pas.

В программном модуле unit6.pas у шестой формы необходимо прописать обработчики событий для кнопок «Оценка» (выводит соответствующую оценку) и «Выход» (закрывает все формы).

 

procedure TForm6.Button1Click (Sender: TObject);
begin
ifstrtoint(label1.Caption)=4 then Label2.Caption:='Ваша оценка 5';
if strtoint(label1.Caption)=3 thenLabel2.Caption:='Ваша оценка 4';
ifstrtoint(label1.Caption)=2 then Label2.Caption:='Ваша оценка 3';
if (strtoint(label1.Caption)=1) or(strtoint(label1.Caption)=0) then
Label2.Caption:='Ваша оценка 2' ;
end;

 

procedure TForm6.Button2Click (Sender: TObject);
begin
Form1.close;
Form2.close;
Form3.close;
Form4.close;
Form5.close;
Form6.close;
end;

 

Задания

1. Изменить проект «Тест» таким образом, чтобы при правильном ответе на экран выводилось сообщение «Верно». Если ответ неверный, то должно выводиться сообщение «Ошибка».

2. Изменить проект «Тест» таким образом, чтобы вопросы могли иметь несколько правильных ответов.

3. Дополнить проект «Тест» вопросами открытого типа, ответы на которые необходимо вводить в текстовое поле.





Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.216.79.60 (0.006 с.)