Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы 1-15_Delphi.doc
Скачиваний:
0
Добавлен:
01.01.2020
Размер:
1.13 Mб
Скачать

Код формы с организацией тестирования:

unit Unittest;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, mylib,

StdCtrls, ExtCtrls, Buttons;

type

TForm1 = class(TForm)

Label1: TLabel;

RadioGroup1: TRadioGroup;

Label2: TLabel;

Label3: TLabel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

Label4: TLabel;

Image1: TImage;

Label5: TLabel;

procedure FormCreate(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

vopros:array[1..100] of shortstring; // массив для записи вопросов в тесте

otvet: array[1..1000,1..5] of shortstring; // массив для записи ответов в тесте

prav_otv:array[1..1000] of shortstring; // массив для записи правильных ответов

reiting : integer; // переменная для подсчета рейтинга

rmax ,ksl :integer; // переменные передаваемые в процедуру sluch для выбора случайным //образом rmax вопросов для тестирования из числа имеющихся ksl.

rmax1,ksl1:integer; // для перемешивания вариантов ответа

fix : mas; // массив для запоминания номеров вопросов используемых в тесте

answer : mas; // массив для запоминания номеров ответов в случайном порядке num_vopr:integer; // номер вопроса

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

var s,s1:shortstring;

name_f:shortstring;

i,k,j:integer;

f,f1:textfile;

begin

k:=0;

assignfile(f,’test.dat’);

reset(f);

while not eof(f) do

begin

readln(f,s);

if s[1]='?' then

begin

inc(k);

s1:=copy(s,2,length(s));

vopros[k]:=s1;

j:=0;

end

else

if s[1]='+' then

begin

inc(j);

s1:=copy(s,2,length(s));

otvet[k,j]:=s1;

prav_otv[k]:=s1;

// showmessage(s1);

end

else

begin

inc(j);

otvet[k,j]:=s;

end;

end; // while

closefile(f);

ksl:=k;

rmax:=k;

sluch(fix,rmax,ksl);

num_vopr:=1;

label1.caption:=vopros[fix[num_vopr]];

rmax1:=5;

ksl1:=5;

sluch(answer,rmax1,ksl1);

Radiogroup1.Items.Clear;

for i:=0 to 4 do begin

if otvet[num_vopr,answr[I+1]]>’’ then

radiogroup1.Items.Add(otvet[num_vopr,answr[I+1]]);

radiogroup1.ItemIndex:=-1;

reiting:=0;

end;

// Кнопка «Далее»

procedure TForm1.BitBtn2Click(Sender: TObject);

var i,k:integer;

В:double;

begin

if Radiogroup1.ItemIndex<0 then begin

showmessage('Выберите ответ' );

exit;

end;

if prav_otv[fix[num_vopr]]= Radiogroup1. Items [ Radiogroup1.ItemIndex] then

begin inc(reiting);

label2.Caption:='Правильно!!!' end

else begin

label2.Caption:='Неправильно...';

s_num_neotv:=s_num_neotv+inttostr(fix[num_vopr])+' ';

end;

inc(num_vopr);

if num_vopr<=rmax then begin

label3.Caption:='Вопрос '+inttostr(num_vopr);

label1.caption:=vopros[fix[num_vopr]];

label4.Caption:='Правильных ответов = '+inttostr(reiting);

sluch(answer,rmax1,ksl1);

Radiogroup1.Items.Clear;

for i:=0 to 4 do

if otvet[num_vopr,answr[I+1]]>’’ then

radiogroup1.Items.Add(otvet[num_vopr,answr[I+1]]);

radiogroup1.ItemIndex:=-1;

end

else begin

Showmessage(‘Тестирование завершено’);

B:= reiting/rmax*100;

Label5.Caption:=' '+floatTostr(B);

end;

end; //proc

СРСП(3 часа)