Вход

компьютерная система тестирования знаний студентов по курсу: "интеллектуальные информационные системы"

Рекомендуемая категория для самостоятельной подготовки:
Дипломная работа*
Код 156685
Дата создания 2007
Страниц 81
Мы сможем обработать ваш заказ (!) 25 апреля в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
1 800руб.
КУПИТЬ

Содержание

КОМПЬЮТЕРНАЯ СИСТЕМА ТЕСТИРОВАНИЯ ЗНАНИЙ СТУДЕНТОВ ПО КУРСУ:
«ИНТЕЛЛЕКТУАЛЬНЫЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ»

Фрагмент работы для ознакомления

Помимо отмеченных, в практике тестирования чаще других используются такие методы определения надежности тестов, как:
повторное тестирование испытуемых, в одинаковых условиях, одним и тем же тестом, с последующим коррелированием результатов. Получаемое значение коэффициента корреляции указывает на надежность измерения в смысле устойчивости результатов испытуемых (test-retest reliability).
использование параллельных тестов, с последующим коррелированием результатов. Получаемое при этом значение интерпретируется в смысле воспроизводимости, близости или параллельности тестовых результатов (test reproducibility).
В разработанной компьютерной системе тестирования знаний студентов реализована согласно вышеописанному принципу следующая методика оценки результатов эксперимента.
Каждый вариант ответа имеет свой весовой коэффициент. Если вариант ответа – неверен, то его весовой коэффициент равен «0». Если правильным является только один вариант ответа, то его весовой коэффициент равен «1», весовые коэффициенты остальных вариантов равны «0». Если правильный ответ дает совокупность нескольких вариантов, то сумма их весовых коэффициентов равна «1».
При тестировании по каждому вопросу определяется коэффициент правильности ответа, которой лежит в диапазоне от «0» - неправильный ответ, до «1» - правильный ответ. После тестирования определяется общий коэффициент знаний студента, который определяется как среднее арифметическое коэффициентов правильности ответа по каждому вопросу.
Результаты тестирования сохраняются на носителе информации в следующем виде:
Фамилия: Иванов
Имя: Иван
Отчество: Иванович
Группа: ГР-06
Вопрос 1: 0.8
Вопрос 2: 0.2
Вопрос 3: 1
Результат тестирования: 0.667
СОВРЕМЕННЫЕ МЕТОДЫ КОМПЬЮТЕРНОГО ТЕСТИРОВАНИЯ
Компьютерное тестирование знаний студентов является неотъемлемым атрибутом обучения. Развитие информационных технологий в последние 5-10 лет позволило взглянуть по-новому на проблемы компьютерного тестирования.
Среди информационных технологий, которые наиболее интересны с точки зрения компьютерного тестирования, можно выделить:
операционные системы с графическим интерфейсом пользователя;
мультимедийные возможности компьютера;
современные средства разработки, например, авторские средства типа Macromedia Authorware;
распределенные (сетевые) системы и модели их проектирования;
базы данных и информационные системы.
В результате исследований можно выделить семь типов тестовых заданий и четыре вида технологий их реализации.
Типы:
вопросы "истина/ложь";
альтернативные вопросы (multichoice);
вопросы на ввод строки (input text);
задания на установление соответствия (matching);
задания на графический выбор (click-in-picture);
задания на проведение эксперимента (simulation);
задания на заполнение стандартного бланка (fill-in-the-blank).
Технологии:
выбор нажатием кнопки мыши (push button);
ввод текста с клавиатуры (text entry);
перетаскивание объектов (drag-n-drop);
списки выбора (list box).
Использование новых технологий реализации тестовых заданий позволит, в частности:
Расширить номенклатуру иcпользуемых типов тестовых заданий. В первую очередь это касается заданий на графический выбор и проведение эксперимента.
Увеличить возможности прежних широко используемых типов тестовых заданий. Например, в рамках заданий на установление соответствий стало возможным задавать так называемые головоломки, когда требуется собрать фрагменты объекта для получения целого объекта.
Сделать для тестируемого восприятие задания и ответ на него более интуитивно понятными, и тем самым снизить время, затрачиваемое на собственно ответ, а на вникание в суть задания и выражение ответа.
Повысить интерактивность тестовых заданий.
Использование современных методов компьютерного тестирования на базе информационных технологий при разработке тестовых заданий позволяет существенно расширить возможности компьютерного тестирования:
Расширение спектра учебных целей, проверяемых при компьютерном тестировании. Благодаря "новым" типам тестовых заданий и технологиям их реализации стало возможным проверять в основном не только знания и способность делать несложные умозаключения, но и эффективно проверять практические навыки и умения, способности к анализу и синтезу.
Увеличение мотивации учащихся. Использование "новых" типов тестовых заданий и технологий их реализации способно внести игровой момент в процедуру тестирования, что позволяет повысить мотивацию учащихся к изучению учебных материалов.
Дополнительный обучающий эффект. Появляется и серьезно усиливается задача компьютерного тренинга, как дополнительного способа обучения путем применения полученных знаний, умений и навыков.
ПРИЛОЖЕНИЕ
program CSTest;
uses
Forms,
UMain in 'UMain.pas' {FMain},
UTaskEdit in 'UTaskEdit.pas' {FTaskEdit},
UMemoEdit in 'UMemoEdit.pas' {FMemoEdit},
UPicEdit in 'UPicEdit.pas' {FPicEdit};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TFMain, FMain);
Application.CreateForm(TFTaskEdit, FTaskEdit);
Application.CreateForm(TFMemoEdit, FMemoEdit);
Application.CreateForm(TFPicEdit, FPicEdit);
Application.Run;
end.
program TSMain;
uses
Forms,
UTSMain in 'UTSMain.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
unit UMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DB, DBTables, ExtCtrls, Buttons;
type
TFMain = class(TForm)
Query1: TQuery;
Query: TQuery;
Panel1: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
Panel2: TPanel;
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
private
PIndex: Array of Integer;
public
procedure Prepare(isAdd: Boolean; PI: Integer);
end;
var
FMain: TFMain;
implementation
uses UTaskEdit; {$R *.dfm}
procedure TFMain.Prepare;
var k,AR: Integer;
begin
try
Query1.Active:=True;
SetLength(PIndex,Query1.RecordCount+1);
if Query1.RecordCount=0 then
begin
StringGrid1.RowCount:=2;
StringGrid1.Cells[0,1]:='';
StringGrid1.Cells[1,1]:='';
end
else StringGrid1.RowCount:=Query1.RecordCount+1;
AR:=StringGrid1.Row;
k:=1;
while k<=Query1.RecordCount do
begin
StringGrid1.Cells[0,k]:=IntToStr(k);
StringGrid1.Cells[1,k]:=Query1.Fields.FieldByName('Note').AsString;
PIndex[k]:=Query1.Fields.FieldByName('PIndex').AsInteger;
if isAdd then
begin
if PIndex[k]>AR then AR:=k;
end
else
begin
if PIndex[k]=PI then AR:=k;
end;
Query1.Next;
k:=k+1;
end;
StringGrid1.Enabled:=Query1.RecordCount>0;
SpeedButton2.Enabled:=Query1.RecordCount>0;
SpeedButton3.Enabled:=Query1.RecordCount>0;
SpeedButton4.Enabled:=Query1.RecordCount>0;
StringGrid1.ColWidths[1]:=StringGrid1.ClientWidth-StringGrid1.ColWidths[0]-4;
Query1.Active:=False;
StringGrid1.Row:=AR;
except
end;
end;
procedure TFMain.FormCreate(Sender: TObject);
begin
try
Query.DatabaseName:=ExtractFilePath(ParamStr(0));
Query1.DatabaseName:=ExtractFilePath(ParamStr(0));
StringGrid1.Cells[1,0]:='Краткое содержание вопроса';
Prepare(False,0);
except
end;
end;
procedure TFMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
SetLength(PIndex,0);
Query1.Active:=False;
except
end;
end;
procedure TFMain.SpeedButton1Click(Sender: TObject);
var S: String;
begin
try
S:=InputBox('Добавление вопроса',StringGrid1.Cells[1,0],'');
if S<>'' then
begin
Query.SQL.Clear;
Query.SQL.Add('INSERT INTO table1.db (Note) Values("'+S+'")');
Query.ExecSQL;
Prepare(True,0);
end;
except
end;
end;
procedure TFMain.SpeedButton2Click(Sender: TObject);
begin
try
if MessageDlg('Удалить вопрос?',mtConfirmation,[mbOK,mbNo],0)=mrOK then
begin
Query.SQL.Clear;
Query.SQL.Add('DELETE FROM table1.db WHERE PIndex='+IntToStr(PIndex[StringGrid1.Row]));
Query.ExecSQL;
Prepare(False,0);
end;
except
end;
end;
procedure TFMain.SpeedButton3Click(Sender: TObject);
var S: String;
begin
try
S:=InputBox('Изменение вопроса',StringGrid1.Cells[1,0],StringGrid1.Cells[1,StringGrid1.Row]);
if (S<>'') and (S<>StringGrid1.Cells[1,StringGrid1.Row]) then
begin
Query.SQL.Clear;
Query.SQL.Add('UPDATE table1.db SET Note="'+S+'" WHERE PIndex='+IntToStr(PIndex[StringGrid1.Row]));
Query.ExecSQL;
Prepare(False,PIndex[StringGrid1.Row]);
end;
except
end;
end;
procedure TFMain.SpeedButton4Click(Sender: TObject);
begin
try
FTaskEdit.Prepare(PIndex[StringGrid1.Row]);
FTaskEdit.ShowModal;
except
end;
end;
end.
unit UTaskEdit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Grids, Buttons, DB, DBTables, DBCtrls,
ExtDlgs;
type
TFTaskEdit = class(TForm)
Label1: TLabel;
Memo1: TMemo;
Image1: TImage;
Label2: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
StringGrid1: TStringGrid;
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
Edit3: TEdit;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
Query1: TQuery;
Query2: TQuery;
DataSource1: TDataSource;
DBMemo1: TDBMemo;
DBImage1: TDBImage;
DataSource2: TDataSource;
DBMemo2: TDBMemo;
DBImage2: TDBImage;
OpenPictureDialog1: TOpenPictureDialog;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
private
public
procedure Prepare(Index: Integer);
procedure FillItem(Index: Integer);
end;
var
FTaskEdit: TFTaskEdit;
type TAnswerType = record
ResultK: Double;
Kind: Integer;
FV: Double;
SV: String;
CTV: Integer;
TV: Array of String;
end;
var Data: Array of TAnswerType;
CData: Integer;
PIndex: Integer;
implementation
uses UMemoEdit, UPicEdit; {$R *.dfm}
procedure FreeData;
var k: Integer;
begin
try
k:=1;
while k<=CData do
begin
SetLength(Data[k].TV,0);
k:=k+1;
end;
SetLength(Data,0);
CData:=0;
except
end;
end;
procedure TFTaskEdit.FillItem;
begin
try
GroupBox1.Enabled:=CData>0;
if CData=0 then
begin
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
RadioButton1.Checked:=False;
RadioButton2.Checked:=False;
RadioButton3.Checked:=False;
RadioButton4.Checked:=False;
end
else
begin
case Data[Index].Kind of
1: RadioButton1.Checked:=True;
2: RadioButton2.Checked:=True;
3: RadioButton3.Checked:=True;
4: RadioButton4.Checked:=True;
end;
Edit1.Text:=FloatToStr(Data[Index].FV);
Edit2.Text:=Data[Index].SV;
Edit3.Text:=FloatToStr(Data[Index].ResultK);
end;
except
end;
end;
procedure TFTaskEdit.Prepare;
var k,l: Integer;
begin
try
FreeData();
PIndex:=Index;
Query1.ParamByName('PI').AsInteger:=PIndex;
Query1.Active:=True;
Query2.ParamByName('PI').AsInteger:=PIndex;
Query2.Active:=True;
Caption:=Query1.Fields.FieldByName('Note').AsString;
Memo1.Lines.Clear;
k:=1;
while k<=DBMemo1.Lines.Count do
begin
Memo1.Lines.Add(DBMemo1.Lines[k-1]);
k:=k+1;
end;
Image1.Picture:=DBImage1.Picture;
CData:=Query2.RecordCount;
SetLength(Data,CData+1);
if CData=0 then
begin
StringGrid1.RowCount:=2;
StringGrid1.Cells[0,1]:='';
end
else StringGrid1.RowCount:=CData+1;
k:=1;
while k<=Query2.RecordCount do
begin
Data[k].ResultK:=Query2.Fields.FieldByName('PResult').AsFloat;
Data[k].Kind:=Query2.Fields.FieldByName('Kind').AsInteger;
Data[k].FV:=Query2.Fields.FieldByName('V_Float').AsFloat;
Data[k].SV:=Query2.Fields.FieldByName('V_String').AsString;
Data[k].CTV:=DBMemo2.Lines.Count;
SetLength(Data[k].TV,Data[k].CTV+1);
l:=1;
while l<=DBMemo2.Lines.Count do
begin
Data[k].TV[l]:=DBMemo2.Lines[l-1];
l:=l+1;
end;
StringGrid1.Cells[0,k]:='Вариант '+IntToStr(k);
Query2.Next;
k:=k+1;
end;
SpeedButton2.Enabled:=CData>0;
StringGrid1.ColWidths[0]:=StringGrid1.ClientWidth-4;
StringGrid1.Enabled:=CData>0;
FillItem(StringGrid1.Row);
except
end;
end;
procedure TFTaskEdit.FormCreate(Sender: TObject);
begin
try
Query1.DatabaseName:=ExtractFilePath(ParamStr(0));
Query2.DatabaseName:=ExtractFilePath(ParamStr(0));
StringGrid1.Cells[0,0]:='Вариант ответа';
except
end;
end;
procedure TFTaskEdit.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
Query1.Active:=False;
Query2.Active:=False;
FreeData();
except
end;
end;
procedure TFTaskEdit.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
try
FillItem(ARow);
except
end;
end;
procedure TFTaskEdit.RadioButton1Click(Sender: TObject);
begin
try
if ActiveControl<>RadioButton1 then Exit;
if CData>0 then
if (Sender as TRadioButton).Checked then Data[StringGrid1.Row].Kind:=1;
ActiveControl:=nil;
except
end;
end;
procedure TFTaskEdit.RadioButton2Click(Sender: TObject);
begin
try
if ActiveControl<>RadioButton2 then Exit;
if CData>0 then
if (Sender as TRadioButton).Checked then Data[StringGrid1.Row].Kind:=2;
ActiveControl:=nil;
except
end;
end;
procedure TFTaskEdit.RadioButton3Click(Sender: TObject);
begin
try
if ActiveControl<>RadioButton3 then Exit;
if CData>0 then
if (Sender as TRadioButton).Checked then Data[StringGrid1.Row].Kind:=3;
ActiveControl:=nil;
except
end;
end;
procedure TFTaskEdit.RadioButton4Click(Sender: TObject);
begin
try
if ActiveControl<>RadioButton4 then Exit;
if CData>0 then
if (Sender as TRadioButton).Checked then Data[StringGrid1.Row].Kind:=4;
ActiveControl:=nil;
except
end;
end;
procedure TFTaskEdit.SpeedButton7Click(Sender: TObject);
begin
try
if (OpenPictureDialog1.Execute) and (FileExists(OpenPictureDialog1.FileName)) then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
DBImage1.Field.DataSet.Edit;
DBImage1.Picture:=Image1.Picture;
DBIMage1.LoadPicture;
DBImage1.Field.DataSet.Post;
end;
except
end;
end;
procedure TFTaskEdit.SpeedButton8Click(Sender: TObject);
begin
try
DBImage1.Field.DataSet.Edit;
DBImage1.Field.Clear;
DBImage1.Field.DataSet.Post;
Image1.Picture:=nil;
except
end;
end;
procedure TFTaskEdit.SpeedButton1Click(Sender: TObject);
begin
try
CData:=CData+1;
SetLength(Data,CData+1);
Data[CData].ResultK:=0;
Data[CData].Kind:=2;
Data[CData].FV:=0;
Data[CData].SV:='';
Data[CData].CTV:=0;
Query2.Fields.DataSet.Edit;
Query2.Fields.DataSet.Append;
Query2.Fields.DataSet.Post;
if CData>1 then StringGrid1.RowCount:=StringGrid1.RowCount+1;
StringGrid1.Cells[0,CData]:='Вариант '+IntToStr(CData);
SpeedButton2.Enabled:=True;
StringGrid1.Enabled:=True;
StringGrid1.Row:=CData;
FillItem(StringGrid1.Row);
except
end;
end;
procedure TFTaskEdit.SpeedButton2Click(Sender: TObject);
var k,l: Integer;
begin
try
Query2.First;
k:=1;
while k<StringGrid1.Row do
begin
Query2.Next;
k:=k+1;
end;
Query2.Fields.DataSet.Edit;
Query2.Fields.DataSet.Delete;
k:=StringGrid1.Row;
while k<CData do
begin
Data[k].ResultK:=Data[k+1].ResultK;
Data[k].Kind:=Data[k+1].Kind;
Data[k].FV:=Data[k+1].FV;
Data[k].SV:=Data[k+1].SV;
Data[k].CTV:=Data[k+1].CTV;
SetLength(Data[k].TV,Data[k].CTV+1);
l:=1;
while l<=Data[k+1].CTV do
begin
Data[k].TV[l]:=Data[k+1].TV[l];
l:=l+1;
end;
StringGrid1.Cells[0,1]:='Вариант '+IntToStr(k);
k:=k+1;
end;
SetLength(Data[CData].TV,0);
CData:=CData-1;
if CData=0 then StringGrid1.Cells[0,1]:=''
else StringGrid1.RowCount:=StringGrid1.RowCount-1;
SpeedButton2.Enabled:=CData>0;
StringGrid1.Enabled:=CData>0;
FillItem(StringGrid1.Row);
except
end;
end;
procedure TFTaskEdit.SpeedButton3Click(Sender: TObject);
var k: Integer;
begin
try
FMemoEdit.Prepare;
FMemoEdit.Caption:=StringGrid1.Cells[0,StringGrid1.Row];
FMemoEdit.ShowModal;
if FMemoEdit.ExitKey=1 then
begin
k:=1;
Data[StringGrid1.Row].CTV:=FMemoEdit.Memo1.Lines.Count;
SetLength(Data[StringGrid1.Row].TV,Data[StringGrid1.Row].CTV+1);
while k<=FMemoEdit.Memo1.Lines.Count do
begin
Data[StringGrid1.Row].TV[k]:=FMemoEdit.Memo1.Lines[k-1];
k:=k+1;
end;
end;
except
end;
end;
procedure TFTaskEdit.SpeedButton4Click(Sender: TObject);
var k: Integer;
begin
try
FPicEdit.ExitKey:=0;
Query2.First;
k:=1;
while k<StringGrid1.Row do
begin
Query2.Next;
k:=k+1;
end;
if DBImage2.Picture<>nil then FPicEdit.Image1.Picture:=DBImage2.Picture
else FPicEdit.Image1.Picture:=nil;
FPicEdit.Caption:=StringGrid1.Cells[0,StringGrid1.Row];
FPicEdit.ShowModal;
if FPicEdit.ExitKey=1 then
begin
DBImage2.Field.DataSet.Edit;
DBImage2.Picture:=FPicEdit.Image1.Picture;
DBIMage2.LoadPicture;
DBImage2.Field.DataSet.Post;
end;
except
end;
end;
procedure TFTaskEdit.SpeedButton5Click(Sender: TObject);
var k,l: Integer;
begin
try
DBMemo1.Field.DataSet.Edit;
DBMemo1.Lines.Clear;
k:=1;
while k<=Memo1.Lines.Count do
begin
DBMemo1.Lines.Add(Memo1.Lines[k-1]);
k:=k+1;
end;
DBMemo1.Field.DataSet.Post;
Query2.First;
k:=1;
while k<=CData do
begin
Query2.Fields.DataSet.Edit;
Query2.Fields.FieldByName('PIndex').AsInteger:=PIndex;
Query2.Fields.FieldByName('PResult').AsFloat:=Data[k].ResultK;
Query2.Fields.FieldByName('Kind').AsInteger:=Data[k].Kind;
Query2.Fields.FieldByName('V_Float').AsFloat:=Data[k].FV;
Query2.Fields.FieldByName('V_String').AsString:=Data[k].SV;
Query2.Fields.DataSet.Post;
DBMemo2.Field.DataSet.Edit;
DBMemo2.Lines.Clear;
l:=1;
while l<=Data[k].CTV do
begin
DBMemo2.Lines.Add(Data[k].TV[l]);
l:=l+1;
end;
DBMemo2.Field.DataSet.Post;
Query2.Next;
k:=k+1;
end;
except
end;
end;
procedure TFTaskEdit.SpeedButton6Click(Sender: TObject);
begin
try
Close;
except
end;
end;
procedure TFTaskEdit.Edit1Change(Sender: TObject);
begin
try
if ActiveControl<>Edit1 then Exit;
if CData>0 then
Data[StringGrid1.Row].FV:=StrToFloat(Edit1.Text);
except
end;
end;
procedure TFTaskEdit.Edit2Change(Sender: TObject);
begin
try
if ActiveControl<>Edit2 then Exit;
if CData>0 then
Data[StringGrid1.Row].SV:=Edit2.Text;
except
end;
end;
procedure TFTaskEdit.Edit3Change(Sender: TObject);
begin
try
if ActiveControl<>Edit3 then Exit;
if CData>0 then
Data[StringGrid1.Row].ResultK:=StrToFloat(Edit3.Text);
except
end;
end;
end.
unit UMemoEdit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls;
type
TFMemoEdit = class(TForm)
Memo1: TMemo;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
private
public
ExitKey: Integer;
procedure Prepare;
end;
var FMemoEdit: TFMemoEdit;
implementation {$R *.dfm}
uses UTaskEdit;
procedure TFMemoEdit.Prepare;
var k: Integer;
begin
try
ExitKey:=0;
Memo1.Clear;
k:=1;
while k<=Data[FTaskEdit.StringGrid1.Row].CTV do
begin
Memo1.Lines.Add(Data[FTaskEdit.StringGrid1.Row].TV[k]);
k:=k+1;
end;
except
end;
end;
procedure TFMemoEdit.SpeedButton5Click(Sender: TObject);
begin
try
ExitKey:=1;
Close;
except
end;
end;
procedure TFMemoEdit.SpeedButton6Click(Sender: TObject);
begin
try
Close;
except
end;
end;
end.
unit UPicEdit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls;
type
TFPicEdit = class(TForm)
Image1: TImage;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
private
public
ExitKey: Integer;
end;
var
FPicEdit: TFPicEdit;
implementation {$R *.dfm}
uses UTaskEdit;
procedure TFPicEdit.SpeedButton5Click(Sender: TObject);
begin
try
ExitKey:=1;
Close;
except
end;
end;
procedure TFPicEdit.SpeedButton6Click(Sender: TObject);
begin
try
Close;
except
end;
end;
procedure TFPicEdit.SpeedButton7Click(Sender: TObject);
begin
try
if (FTaskEdit.OpenPictureDialog1.Execute) and (FileExists(FTaskEdit.OpenPictureDialog1.FileName)) then
begin
Image1.Picture.LoadFromFile(FTaskEdit.OpenPictureDialog1.FileName);
end;
except
end;
end;
procedure TFPicEdit.SpeedButton8Click(Sender: TObject);
begin
try
Image1.Picture:=nil;
except
end;
end;
end.
unit UDlgUser;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form2: TForm2;
implementation {$R *.dfm}
uses UTSMain;
procedure TForm2.Button2Click(Sender: TObject);
begin
try
Close;
except
end;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
try
UserN1:=Edit1.Text;
UserN2:=Edit2.Text;
UserN3:=Edit3.Text;
UserN4:=Edit4.Text;
Hide;
Form1.Button1Click(nil);
Form1.ShowModal;
Close;
except
end;
end;
end.
unit UTSMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, ExtCtrls, DB, DBTables, StdCtrls, CheckLst, Math;
type
TForm1 = class(TForm)
Label1: TLabel;
Memo1: TMemo;
Query1: TQuery;
DataSource1: TDataSource;
Image1: TImage;
DBImage1: TDBImage;
Query: TQuery;
Bevel1: TBevel;
CheckListBox1: TCheckListBox;
Image2: TImage;
Bevel2: TBevel;
Memo2: TMemo;
Button1: TButton;
Query2: TQuery;
DataSource2: TDataSource;
DBMemo1: TDBMemo;
DBMemo2: TDBMemo;
DBImage2: TDBImage;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure CheckListBox1Click(Sender: TObject);
private
function Prepare: Boolean;
public
end;
var Form1: TForm1;
implementation {$R *.dfm}
type TAnswerType = record
ResultK: Double;
Kind: Integer;
FV: Double;
SV: String;
CTV: Integer;
TV: Array of String;
end;
var Data: Array of TAnswerType;
CData: Integer;
PIndex: Integer;
MIndex: Integer;
ACount: Integer;
SData: Array of Double;
AI: Integer;

procedure FreeData;
var k: Integer;
begin
try
k:=1;
while k<=CData do
begin
SetLength(Data[k].TV,0);
k:=k+1;
end;
SetLength(Data,0);
CData:=0;
except
end;
end;
function TForm1.Prepare;
var k,l: Integer;
S: String;
begin
Result:=False;
try
FreeData();
Query1.Active:=False;
Query2.Active:=False;
Query1.ParamByName('PI').AsInteger:=PIndex;
Query1.Active:=True;
Query2.ParamByName('PI').AsInteger:=PIndex;
Query2.Active:=True;
Memo1.Lines.Clear;
k:=1;
while k<=DBMemo1.Lines.Count do
begin
Memo1.Lines.Add(DBMemo1.Lines[k-1]);
k:=k+1;
end;
Image1.Picture:=DBImage1.Picture;
CData:=Query2.RecordCount;
SetLength(Data,CData+1);
CheckListBox1.Clear;
k:=1;
while k<=Query2.RecordCount do
begin
Data[k].ResultK:=Query2.Fields.FieldByName('PResult').AsFloat;
Data[k].Kind:=Query2.Fields.FieldByName('Kind').AsInteger;
Data[k].FV:=Query2.Fields.FieldByName('V_Float').AsFloat;
Data[k].SV:=Query2.Fields.FieldByName('V_String').AsString;
Data[k].CTV:=DBMemo2.Lines.Count;
SetLength(Data[k].TV,Data[k].CTV+1);
l:=1;
while l<=DBMemo2.Lines.Count do
begin
Data[k].TV[l]:=DBMemo2.Lines[l-1];
l:=l+1;
end;
case Data[k].Kind of
1: S:=FloatToStr(Data[k].FV);
2: S:=Data[k].SV;
else S:='Вариант '+IntToStr(k);
end;
CheckListBox1.Items.Add(S);
Query2.Next;
k:=k+1;
end;
Result:=(Query1.RecordCount>0) and (Query2.RecordCount>0) and (CData>0);
if Result then
begin
CheckListBox1.ItemIndex:=0;
CheckListBox1Click(nil);
end;
Memo2.Visible:=False;
Image2.Visible:=False;
except
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
try
ACount:=StrToInt(ParamStr(1));
Query.DatabaseName:=ExtractFilePath(ParamStr(0));
Query1.DatabaseName:=ExtractFilePath(ParamStr(0));
Query2.DatabaseName:=ExtractFilePath(ParamStr(0));
Query.Active:=True;
MIndex:=Query.Fields.Fields[0].AsInteger;
Query.Active:=False;
SetLength(SData,ACount+1);
AI:=0;
except
Halt;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
Query1.Active:=False;
Query2.Active:=False;
except
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var k: Integer;
p1,p2: Double;
F: TextFile;
begin
try
CheckListBox1.Visible:=True;
if AI>0 then
begin
SData[AI]:=0;
p1:=0;
p2:=0;
k:=1;
while k<=CData do
begin
if CheckListBox1.Checked[k-1] and (Data[k].ResultK=0) then
begin
p1:=0;
p2:=1;
Break;
end;
if CheckListBox1.Checked[k-1] and (Data[k].ResultK>0) then p1:=p1+Data[k].ResultK;
if Data[k].ResultK>0 then p2:=p2+Data[k].ResultK;
k:=k+1;
end;
SData[AI]:=p1/p2;
end;
if AI=ACount then
begin
AssignFile(F,'result.txt');
Rewrite(F);
p1:=0;
k:=1;
while k<=ACount do
begin
p1:=p1+SData[k];
WriteLn(F,'Вопрос ',k,': ',FloatToStr(RoundTo(SData[k],-3)));
k:=k+1;
end;
WriteLn(F);
WriteLn(F,'Результат тестирования: ',FloatToStr(RoundTo(p1/ACount,-3)));
CloseFile(F);
Query1.Active:=False;
Query2.Active:=False;
Halt;
end;
Randomize();
Button1.Caption:='Следующий вопрос';
AI:=AI+1;
Label1.Caption:='Вопрос № '+IntToStr(AI);
while true do
begin
PIndex:=Random(MIndex+1);
if Prepare then Break;
end;
if AI=ACount then Button1.Caption:='Закончить тест';
except
end;
end;
procedure TForm1.CheckListBox1Click(Sender: TObject);
var k: Integer;
begin
try
Memo2.Visible:=False;
Image2.Visible:=False;
case Data[CheckListBox1.ItemIndex+1].Kind of
3: begin
Memo2.Clear;
k:=1;
while k<=Data[CheckListBox1.ItemIndex+1].CTV do
begin
Memo2.Lines.Add(Data[CheckListBox1.ItemIndex+1].TV[k]);
k:=k+1;
end;
Memo2.Visible:=True;
end;
4: begin
Query2.First;
k:=1;
while k<=CheckListBox1.ItemIndex do
begin
Query2.Next;
k:=k+1;
end;
Image2.Picture:=DBImage1.Picture;
Image2.Visible:=True;
end;
end;
except
end;
end;
end.
База вопросов и ответов
СУБД
CSTest.exe
Программа тестирования
TSMain.exe
Генератор
отчета
Генератор вопросов
Преподаватель
Сервис
преподавателя
Формирование задания
Сервис
студента
Управление
Студент
Банк вопросов
Банк ответов
Формирование оценок
Протоколы, статистика
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.01335
© Рефератбанк, 2002 - 2024