Программы методик «Сложные аналогии», «Мейли», «Количественные отношения»
Файлпроекта
Program Test1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
Модуль 1: Ввод имени пользователя
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Unit2;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
CName: string;
implementation
{$R *.DFM}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
CName:=Edit1.Text;
Form1.Visible:=false;
Form1.Enabled:=false;
Form2.Visible:=true;
Form2.Enabled:=true;
end;
end.
Модуль 2: Основная программа
unitUnit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, ExtCtrls;
type
TForm2 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Edit1: TEdit;
StatusBar1: TStatusBar;
BitBtn1: TBitBtn;
Memo1: TMemo;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
N = 20;
NS='20';
FULLTIME = 180;
DeadLine= 'У вас осталось ';
var
Form2: TForm2;
BegTime,CurTime: TDateTime;
TimeLeft,Cnt: integer;
QFile:TextFile;
AFile:File of integer;
CorrectA:Array[1..N] of integer;
CorrectNum:integer;
Quest:string;
implementation
uses Unit1;
{$R *.DFM}
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseFile(QFile);
Form1.Close;
end;
procedure TForm2.FormActivate(Sender: TObject);
Var
SS,TT,First:string;
i,w :integer;
begin
ShowMessage('Подберите к нижней паре слов наиболее'+#13+
'подходящую по аналогии отношения'+#13+
'пару сверху и введите ее номер.');
BegTime:=Time;
AssignFile(QFile,'Test1.txt');
reset(QFile);
Readln(QFile,First);
Panel1.Caption:=First;
AssignFile(AFile,'Answers1.dat');
reset(AFile);
for i:=1 to N do
begin
read(AFile,w);
CorrectA[i]:=w;
end;
CloseFile(AFile);
Cnt:=1;
CorrectNum:=0;
CurTime:=Time;
Timeleft:=round(Frac(CurTime-BegTime)*24*3600)+FULLTIME;
Str(TimeLeft,SS);
Str(Cnt,TT);
StatusBar1.SimpleText:='Вопрос № '+TT+'. '+ DeadLine+SS+' секунд';
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
procedure TheEnd;
var
SSS,Mark:String;
RFile: TextFile;
begin
Str(CorrectNum,SSS);
if CorrectNum<5 then Mark:='Результат ниже нормы'
elseMark:='Результат в пределах нормы';
ShowMessage('Тестирование окончено.'+CHR(13)+'Правильных ответов - '+SSS);
AssignFile(RFile,'results1.txt');
if FileExists('results1.txt') then Append(RFile)
else Rewrite(RFile);
writeln(RFile,'Тестирyемый '+CName);
writeln(RFile,'Правильных ответов:'+SSS+' из '+NS);
writeln(RFile,Mark);
writeln(RFile,'--------------------------------');
CloseFile(RFile);
CloseFile(QFile);
Form1.Close;
end;
var
tmpi,code:integer;
tmps,SS,TT:string;
begin
CurTime:=Time;
Timeleft:=round(Frac(BegTime-CurTime)*24*3600)+FULLTIME;
Str(TimeLeft,SS);
Str(Cnt+1,TT);
StatusBar1.SimpleText:='Вопрос № '+TT+'. '+ DeadLine+SS+' секунд';
tmps:=Edit1.Text;
val(Tmps,Tmpi,code);
if Tmpi=CorrectA[Cnt] then CorrectNum:=CorrectNum+1;
Cnt:=Cnt+1;
if (Cnt>N) or (Timeleft<=0) then TheEnd
else begin
Edit1.Text:='';
Readln(QFile,Quest);
Panel1.Caption:=Quest;
Edit1.SetFocus;
end;
end;
end.
Методика “Мейли”
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, ExtCtrls;
type
TForm2 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Edit1: TEdit;
StatusBar1: TStatusBar;
BitBtn1: TBitBtn;
Memo1: TMemo;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
N = 20;
NS='20';
FULLTIME = 600;
DeadLine= 'У вас осталось ';
var
Form2: TForm2;
BegTime,CurTime: TDateTime;
TimeLeft,Cnt: integer;
QFile:TextFile;
AFile:File of integer;
CorrectA:Array[1..N] of integer;
CorrectNum:integer;
Quest:string;
implementation
uses Unit1;
{$R *.DFM}
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseFile(QFile);
Form1.Close;
end;
procedure TForm2.FormActivate(Sender: TObject);
Var
SS,TT,First:string;
i,w :integer;
begin
BegTime:=Time;
AssignFile(QFile,'Test2.txt');
reset(QFile);
Readln(QFile,First);
Panel1.Caption:=First;
AssignFile(AFile,'Answers2.dat');
reset(AFile);
for i:=1 to N do
begin
read(AFile,w);
CorrectA[i]:=w;
end;
CloseFile(AFile);
Cnt:=1;
CorrectNum:=0;
CurTime:=Time;
Timeleft:=round(Frac(CurTime-BegTime)*24*3600)+FULLTIME;
Str(TimeLeft,SS);
Str(Cnt,TT);
StatusBar1.SimpleText:='Вопрос № '+TT+'. '+ DeadLine+SS+' секунд';
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
procedure TheEnd;
var
SSS,Mark:String;
RFile: TextFile;
begin
Str(CorrectNum,SSS);
Mark:='неудовлетворительно';
if CorrectNum>9 then Mark:='удовлетворительно';
if CorrectNum>14 then Mark:='хорошо';
if CorrectNum>17 then Mark:='отлично';
ShowMessage('Тестирование окончено.'+CHR(13)+'Правильных ответов - '+SSS);
AssignFile(RFile,'results2.txt');
if FileExists('results2.txt') then Append(RFile)
else Rewrite(RFile);
writeln(RFile,'Тестируемый: '+CName);
writeln(RFile,'Правильных ответов:'+SSS+' из '+NS);
writeln(RFile,'Оценка: '+Mark);
writeln(RFile,'--------------------------------');
CloseFile(RFile);
CloseFile(QFile);
Form1.Close;
end;
var
tmpi,code:integer;
tmps,SS,TT:string;
begin
CurTime:=Time;
Timeleft:=round(Frac(BegTime-CurTime)*24*3600)+FULLTIME;
Str(TimeLeft,SS);
Str(Cnt+1,TT);
StatusBar1.SimpleText:='Вопрос № '+TT+'. '+ DeadLine+SS+' секунд';
tmps:=Edit1.Text;
val(Tmps,Tmpi,code);
if Tmpi=CorrectA[Cnt] then CorrectNum:=CorrectNum+1;
Cnt:=Cnt+1;
if (Cnt>N) or (Timeleft<=0) then TheEnd
else begin
Edit1.Text:='';
Readln(QFile,Quest);
Panel1.Caption:=Quest;
Edit1.SetFocus;
end;
end;
end.
Методика “Количественные отношения”
unitUnit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, ExtCtrls;
type
TForm2 = class(TForm)
Panel1: TPanel;
StatusBar1: TStatusBar;
BitBtn1: TBitBtn;
Memo1: TMemo;
RadioGroup1: TRadioGroup;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
N = 18;
NS='18';
FULLTIME = 300;
DeadLine= 'У вас осталось ';
var
Form2: TForm2;
BegTime,CurTime: TDateTime;
TimeLeft,Cnt: integer;
QFile:TextFile;
AFile:File of integer;
CorrectA:Array[1..N] of integer;
CorrectNum:integer;
Quest:string;
implementation
uses Unit1;
{$R *.DFM}
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseFile(QFile);
Form1.Close;
end;
procedure TForm2.FormActivate(Sender: TObject);
Var
SS,TT,First:string;
i,w :integer;
begin
BegTime:=Time;
AssignFile(QFile,'Test3.txt');
reset(QFile);
Readln(QFile,First);
Panel1.Caption:=First;
AssignFile(AFile,'Answers3.dat');
reset(AFile);
for i:=1 to N do
begin
read(AFile,w);
CorrectA[i]:=w;
end;
CloseFile(AFile);
Cnt:=1;
CorrectNum:=0;
CurTime:=Time;
Timeleft:=round(Frac(CurTime-BegTime)*24*3600)+FULLTIME;
Str(TimeLeft,SS);
Str(Cnt,TT);
StatusBar1.SimpleText:='Вопрос № '+TT+'. '+ DeadLine+SS+' секунд';
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
procedure TheEnd;
var
SSS,Mark:String;
RFile: TextFile;
begin
Str(CorrectNum,SSS);
IfCorrectNum>9 thenMark:='Результат в пределах нормы взрослого человека'
elseMark:='Результат ниже нормы взрослого человека';
ShowMessage('Тестирование окончено.'+CHR(13)+'Правильных ответов - '+SSS);
AssignFile(RFile,'results3.txt');
if FileExists('results3.txt') then Append(RFile)
else Rewrite(RFile);
writeln(RFile,'Тестирyемый '+CName);
writeln(RFile,'Правильных ответов:'+SSS+' из '+NS);
writeln(RFile,Mark);
writeln(RFile,'--------------------------------');
CloseFile(RFile);
CloseFile(QFile);
Form1.Close;
end;
var
tmpi:integer;
SS,TT:string;
begin
CurTime:=Time;
Timeleft:=round(Frac(BegTime-CurTime)*24*3600)+FULLTIME;
Str(TimeLeft,SS);
Str(Cnt+1,TT);
StatusBar1.SimpleText:='Вопрос № '+TT+'. '+ DeadLine+SS+' секунд';
Tmpi:= RadioGroup1.ItemIndex;
if Tmpi=CorrectA[Cnt] then CorrectNum:=CorrectNum+1;
Cnt:=Cnt+1;
if (Cnt>N) or (Timeleft<=0) then TheEnd
else begin
Readln(QFile,Quest);
Panel1.Caption:=Quest;
end;
end;
end.
Приложение
Разработка инструкции пользователю и оператору
Инструкция пользователю и оператору
· Запустите программу тестирования (файл Test1.exe).
· В появившемся окошке введите ваше: фамилия и имя.
· Если хотите остановить тестирование, нажмите выход. Если продолжаете тестирование, нажмите «Ok».
· Программа выведет вам инструкцию по работе с тестом. Внимательно прочитайте ее.
· Прочитав инструкцию, нажмите кнопку «Ok».
· Если хотите остановить тестирование, нажмите кнопку закрыть.
· Перед вами появилась форма, на которой расположены четыре окна.
· В верхнем окне выводятся варианты ответа на вопрос, задаваемый в среднем окне. Введите номер ответа, который вы считаете правильным в нижнем окне. Нажмите кнопку «Ok».
· Программа тестирования выведет вам следующий вопрос.
· Отвечайте на вопросы, как было указано выше.
· В нижней строке формы, т.н. «статусной строке» указан номер вопроса.
· После окончания тестирования, программа выдаст вам ваш результат. Кроме того, этот результат, вместе с оценкой, будет записан в файл results1.txt.