Лабораторная работа №2
Якунин М.С

Тема: “Разработка теста по информатике”

[На главную страницу сайта] [Другие темы раздела] [Скачать исходный текст]

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

const

{Константа в которой храниться количество вопросов в тесте}

kol_v=5;

{Константа, определяющая максимальное количество времени на ответ}

Max_time=30;

Type

{Создаем структуру описывающую вопрос}

vopros=record

{Данное поле служит для хранения текста вопроса}

text: string;

{Данные поля служат для хранения вариантов ответов}

var1,var2,var3: string;

{Это поле служит для хранения номера верного ответа}

n: integer;

end;

TForm1 = class(TForm)

RadioGroup1: TRadioGroup;

Label1: TLabel;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

Button1: TButton;

Label2: TLabel;

Memo1: TMemo;

Timer1: TTimer;

Label3: TLabel;

Label4: TLabel;

procedure FormCreate(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure Button1Click(Sender: TObject);

{Описание процедур добавленных нами}

{Процедура, которая отображает вопрос на форме}

procedure SetVopros(n: integer);

{Процедурв проверки ответа на правильность}

procedure Prov(k: integer);

private

{Текущее время ответа}

Vremya: integer;

{Количество правильных ответов}

Kol_prav: integer;

{Номер текущего вопроса}

TVopros: integer;

public

{ Public declarations }

end;

var

{Массив в котором хранятся вопросы}

Mtest: array[1..kol_v] of vopros;

Form1: TForm1;

implementation

{$R *.dfm}

{Процедура проверяет является ли ответ на вопрос n правильным

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

количество правильных ответов}

procedure TForm1.Prov(k: integer);

begin

{Проверяем соответствует ли выбранная радио-кнопка правильному ответу

в к-м вопросе. Если да то увеличиваем счетчик правильных ответов}

if (RadioButton1.Checked) and (Mtest[k].n=1) then inc(kol_prav);

if (RadioButton2.Checked) and (Mtest[k].n=2) then inc(kol_prav);

if (RadioButton3.Checked) and (Mtest[k].n=3) then inc(kol_prav);

{Сбрасываем значения кнопок, для следующего вопроса}

RadioButton1.Checked:=false;

RadioButton2.Checked:=false;

RadioButton3.Checked:=false;

end;

{Процедура отображает вопрос с номером n на форме}

procedure TForm1.SetVopros(n: integer);

begin

{Выводим номер вопроса}

label2.Caption:=inttostr(n);

{Выводим текст вопроса}

memo1.Text:=Mtest[n].text;

{Выводим варианты ответов}

RadioButton1.Caption:=Mtest[n].var1;

RadioButton2.Caption:=Mtest[n].var2;

RadioButton3.Caption:=Mtest[n].var3;

end;

{Процедура которая вызывается в самом начале.

Для того чтобы создать ее, щелкните на форме левой кнопкой мыши,

затем в инспекторе объектов выберете вкладку Events(События), найдите

Событие OnCreate, и сделайте на нем двойной клик левой кнопкой мыши}

procedure TForm1.FormCreate(Sender: TObject);

begin

{Устанавливаем начальные значения переменных}

Vremya:=max_time;

Kol_Prav:=0;

TVopros:=1;

{Создаем вопросы}

Mtest[1].text:='Какое устройство относится к устройствам вывода';

Mtest[1].var1:='Клавиатура';

Mtest[1].var2:='Колонки';

Mtest[1].var3:='Микрофон';

Mtest[1].n:=2;

Mtest[2].text:='Какое устройство относится к устройствам ввода';

Mtest[2].var1:='Принтер';

Mtest[2].var2:='Монитор';

Mtest[2].var3:='Мышь';

Mtest[2].n:=3;

Mtest[3].text:='Чему равно 5 в двоичной системе счисления';

Mtest[3].var1:='111';

Mtest[3].var2:='101';

Mtest[3].var3:='110';

Mtest[3].n:=2;

Mtest[4].text:='Microsoft Word - это';

Mtest[4].var1:='Текстовый процессор';

Mtest[4].var2:='Графический редактор';

Mtest[4].var3:='Система управления базами данных';

Mtest[4].n:=1;

Mtest[5].text:='Если А=ИСТИНА, В=ЛОЖЬ, С=ЛОЖЬ то какой будет результат выражения А or B and C';

Mtest[5].var1:='Выражение записано неверно';

Mtest[5].var2:='ЛОЖЬ';

Mtest[5].var3:='ИСТИНА';

Mtest[5].n:=3;

{Выводим на экран первый вопрос}

SetVopros(TVopros);

end;

 

 

{Обработчик нажатия на кнопку Button1(Ответить)}

procedure TForm1.Button1Click(Sender: TObject);

begin

{Переходим к следующему вопросу, увеличивая переменную TVopros}

inc(TVopros);

{Если Текущий вопрос стал больше чем количество вопросов, то

тогда заканчивает тест}

if TVopros>kol_v then

begin

{Делаем последнюю проверку}

prov(TVopros-1);

{И выводим результат}

ShowMessage('Колличество верных ответов: '+inttostr(Kol_prav)+Chr(13)+

'Колличество неверных ответов: '+inttostr(kol_v-Kol_prav)+Chr(13)+

'Ваша оценка '+inttostr(Kol_prav));

{Возвращаем тест в исходное состояние}

Tvopros:=1;

kol_prav:=0;

Vremya:=Max_time;

SetVopros(TVopros);

end

{В противном случае}

else

begin

{Делаем проверку}

prov(TVopros-1);

{И выводм следующий вопрос на экран}

SetVopros(TVopros);

{И устанавливаем время на максимум}

Vremya:=Max_time;

end;

end;

{Эта процедура является обработчиком таймера,

она вызывается каждые 1000 млс.

Для того чтобы созать данную процедуру необходимо

дважды щелкнуть на изображении таймера на форме.}

procedure TForm1.Timer1Timer(Sender: TObject);

begin

{Если время истекло, то проделываем те же действия что и при нажатии

на кнопку Button1(Ответить)}

if Vremya<=0 then

begin

{Переходим к следующему вопросу, увеличивая переменную TVopros}

inc(TVopros);

{Если Текущий вопрос стал больше чем количество вопросов, то

тогда заканчивает тест}

if TVopros>kol_v then

begin

{Делаем последнюю проверку}

prov(TVopros-1);

{И выводим результат}

ShowMessage('Колличество верных ответов: '+inttostr(Kol_prav)+Chr(13)+

'Колличество неверных ответов: '+inttostr(kol_v-Kol_prav)+Chr(13)+

'Ваша оценка '+inttostr(Kol_prav));

{Возвращаем тест в исходное состояние}

Tvopros:=1;

kol_prav:=0;

Vremya:=Max_time;

SetVopros(TVopros);

end

{В противном случае}

else

begin

{Делаем проверку}

prov(TVopros-1);

{И выводм следующий вопрос на экран}

SetVopros(TVopros);

Vremya:=Max_time;

end;

end

{В противном случае уменьшаем время на 1}

else

begin

vremya:=vremya-1;

{И выводим это на Форму}

label3.caption:=inttostr(vremya);

end;

end;

end.

[На главную страницу сайта] [Другие темы раздела] [Скачать исходный текст]