Смекни!
smekni.com

Автоматизация и апробация психодиагностических методик в профориентационной работе со старшими школьниками (стр. 20 из 21)

Программы методик «Сложные аналогии», «Мейли», «Количественные отношения»

Файлпроекта

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.