111226 (Автоматизированная система распределения мест и оценок качества олимпиадных заданий), страница 8
Описание файла
Документ из архива "Автоматизированная система распределения мест и оценок качества олимпиадных заданий", который расположен в категории "". Всё это находится в предмете "педагогика" из 6 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "педагогика" в общих файлах.
Онлайн просмотр документа "111226"
Текст 8 страницы из документа "111226"
blocks[2]:=FieldValues['MARK4']+FieldValues['MARK5']+FieldValues['MARK6'];
blocks[3]:=0;
param[1]:=(blocks[1]+blocks[2])-3*NumMarks;
param[2]:=(blocks[2]-blocks[1])+NumMarks;
param[3]:=0;
end;
if Bcon='1' then
begin
blocks[1]:=FieldValues['MARK1']+FieldValues['MARK2']+FieldValues['MARK3']+FieldValues['MARK4']+FieldValues['MARK5']+FieldValues['MARK6'];
blocks[2]:=0;
blocks[3]:=0;
param[1]:=blocks[1]-NumMarks;
param[2]:=0;
param[3]:=0;
end;
Edit;
FieldValues['PARAM1']:=param[1];
FieldValues['PARAM2']:=param[2];
FieldValues['PARAM3']:=param[3];
Next;
end;
end;
except
Application.MessageBox('Неизвестная ошибка!','Ошибка',mb_Ok+MB_ICONHAND);
Exit;
end;
try
with Query1 do
begin
Active:=False;
SQL.Clear;
SQL.Add('select * from "'+Form1.Table1.TableName+'"');
SQL.Add('order by PARAM1 desc, PARAM2 desc, PARAM3 desc');
ExecSQL;
end;
DataSource1.DataSet:=Query1;
DataSource1.Enabled:=True;
DBGrid1.DataSource:=DataSource1;
DBGrid1.Enabled:=True;
Query1.Active:=True;
except
Application.MessageBox('Ошибка выполнения сортировки участников. Проверьте конфигурацию.','Ошибка',mb_Ok+MB_ICONHAND);
Exit;
end;
end;
procedure TForm5.BitBtn1Click(Sender: TObject);
begin
ModalResult:=mrOk;
end;
procedure TForm5.RadioGroup1Click(Sender: TObject);
var
SortStr:string;
begin
case RadioGroup1.ItemIndex of
0: SortStr:='order by PARAM1 desc';
1: SortStr:='order by PARAM2 desc';
2: SortStr:='order by PARAM3 desc';
3: SortStr:='order by PARAM1 desc,PARAM2 desc,PARAM3 desc';
end;
if (SortType='1') and (RadioGroup1.ItemIndex=3) then SortStr:='order by PARAM1 desc, PARAM3 desc, PARAM3 desc';
with Query1 do
begin
Active:=False;
SQL.Clear;
SQL.Add('select * from "'+Form1.Table1.TableName+'"');
SQL.Add(SortStr);
ExecSQL;
Active:=True;
end;
end;
procedure TForm5.N11Click(Sender: TObject);
var
i,j,NumI:integer;
ind,per:double;
GrPar, GrPercent, parm:array[1..200] of double;
begin
NumI:=StrToInt(FloatToStr(NumMarks));
for i:=0 to 200 do
begin
GrPar[i]:=0;
GrPercent[i]:=0;
parm[i]:=0;
end;
per:=0;
ind:=0;
Query1.First;
if Sender=N11 then
begin
for j:=1 to Query1.RecordCount do
begin
parm[j]:=Query1.FieldValues['PARAM1'];
Query1.Next;
end;
ind:=-3*NumMarks;
for i:=1 to 6*NumI+1 do
begin
for j:=1 to Query1.RecordCount do
begin
if ind=parm[j] then per:=per+1;
end;
GrPar[i]:=ind;
GrPercent[i]:=per/Query1.RecordCount;
per:=0;
ind:=ind+1;
end;
Series1.Clear;
Chart1.BottomAxis.Title.Caption:='Параметр 1';
Chart1.BottomAxis.Minimum:=-3*NumMarks;
Chart1.BottomAxis.Maximum:=ind-1;
For i:=0 to 6*NumI+1 do
begin
Series1.AddXY(GrPar[i],GrPercent[i]);
end;
end;
if Sender=N21 then
begin
for j:=1 to Query1.RecordCount do
begin
parm[j]:=Query1.FieldValues['PARAM2'];
Query1.Next;
end;
ind:=-2*NumMarks;
for i:=1 to 4*NumI+1 do
begin
for j:=1 to Query1.RecordCount do
begin
if ind=parm[j] then per:=per+1;
end;
GrPar[i]:=ind;
GrPercent[i]:=per/Query1.RecordCount;
per:=0;
ind:=ind+1;
end;
Series1.Clear;
Chart1.BottomAxis.Title.Caption:='Параметр 2';
Chart1.BottomAxis.Minimum:=-2*NumMarks;
Chart1.BottomAxis.Maximum:=ind-1;
For i:=0 to 4*NumI+1 do
begin
Series1.AddXY(GrPar[i],GrPercent[i]);
end;
end;
if Sender=N31 then
begin
for j:=1 to Query1.RecordCount do
begin
parm[j]:=Query1.FieldValues['PARAM3'];
Query1.Next;
end;
ind:=-1*NumMarks;
for i:=1 to 2*NumI+1 do
begin
for j:=1 to Query1.RecordCount do
begin
if ind=parm[j] then per:=per+1;
end;
GrPar[i]:=ind;
GrPercent[i]:=per/Query1.RecordCount;
per:=0;
ind:=ind+1;
end;
Series1.Clear;
Chart1.BottomAxis.Title.Caption:='Параметр 3';
Chart1.BottomAxis.Minimum:=-1*NumMarks;
Chart1.BottomAxis.Maximum:=ind-1;
For i:=0 to 2*NumI+1 do
begin
Series1.AddXY(GrPar[i],GrPercent[i]);
end;
end;
if Sender=N1 then
begin
for j:=1 to Query1.RecordCount do
begin
parm[j]:=Query1.FieldValues['SUMMARK'];
Query1.Next;
end;
ind:=0;
for i:=1 to 6*NumI+1 do
begin
for j:=1 to Query1.RecordCount do
begin
if ind=parm[j] then per:=per+1;
end;
GrPar[i]:=ind;
GrPercent[i]:=per/Query1.RecordCount;
per:=0;
ind:=ind+1;
end;
Series1.Clear;
Chart1.BottomAxis.Title.Caption:='Суммарный балл';
Chart1.BottomAxis.Minimum:=0*NumMarks;
Chart1.BottomAxis.Maximum:=ind-1;
For i:=0 to 6*NumI+1 do
begin
Series1.AddXY(GrPar[i],GrPercent[i]);
end;
end;
Query1.First;
end;
procedure TForm5.N3Click(Sender: TObject);
begin
if ColorDialog1.Execute then
begin
Series1.SeriesColor:=ColorDialog1.Color;
end;
end;
procedure TForm5.N4Click(Sender: TObject);
begin
if ColorDialog1.Execute then
begin
Chart1.Gradient.EndColor:=ColorDialog1.Color;
Chart1.Gradient.StartColor:=clWhite;
end;
end;
end.
Модуль 6.
Код этого модуля отвечает за окно и сам процесс создания локальной базы данных.
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DB, DBTables;
type
TForm6 = class(TForm)
Panel1: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm6.BitBtn1Click(Sender: TObject);
begin
ModalResult:=mrNo;
end;
procedure TForm6.BitBtn2Click(Sender: TObject);
var
Comm:TStringList;
begin
try
with Form1.Table1 do begin
Active := False;
DatabaseName := 'Olymp';
TableType := ttParadox;
TableName := Edit1.Text;
if not Form1.Table1.Exists then begin
with FieldDefs do begin
Clear;
with AddFieldDef do begin
Name := 'Counter';
DataType := ftInteger;
Required := True;
end;
with AddFieldDef do begin
Name := 'FIO';
DataType := ftString;
Size := 25;
end;
with AddFieldDef do begin
Name := 'MARK1';
DataType := ftFloat;
Required := True;
end;
with AddFieldDef do begin
Name := 'MARK2';
DataType := ftFloat;
Required := True;
end;
with AddFieldDef do begin
Name := 'MARK3';
DataType := ftFloat;
Required := True;
end;
with AddFieldDef do begin
Name := 'MARK4';
DataType := ftFloat;
Required := True;
end;
with AddFieldDef do begin
Name := 'MARK5';
DataType := ftFloat;
Required := True;
end;
with AddFieldDef do begin
Name := 'MARK6';
DataType := ftFloat;
Required := True;
end;
with AddFieldDef do begin
Name := 'SUMMARK';
DataType := ftFloat;
Required := True;
end;
with AddFieldDef do begin
Name := 'SCHOOL';
DataType := ftString;
Size := 35;
end;
with AddFieldDef do begin
Name := 'PARAM1';
DataType := ftFloat;
Required:=False;
end;
with AddFieldDef do begin
Name := 'PARAM2';
DataType := ftFloat;
Required:=False;
end;
with AddFieldDef do begin
Name := 'PARAM3';
DataType := ftFloat;
Required:=False;
end;
with AddFieldDef do begin
Name := 'PLACE';
DataType := ftInteger;
Required:=False;
end;
end;
with IndexDefs do begin
Clear;
with AddIndexDef do begin
Name := '';
Fields := 'COUNTER';
Options := [ixPrimary];
end;
with AddIndexDef do begin
Name := 'VAL1';
Fields := 'PARAM1';
Options := [ixDescending];
end;
with AddIndexDef do begin
Name := 'VAL2';
Fields := 'PARAM2';
Options := [ixDescending];
end;
with AddIndexDef do begin
Name := 'VAL3';
Fields := 'PARAM3';
Options := [ixDescending];
end;
end;
CreateTable;
Application.MessageBox('Локальная база данных успешно создана!','Сообщение',mb_OK+mb_IconAsterisk);
end
else Application.MessageBox('Локальная база данных уже существует и открыта!','Сообщение',mb_OK+mb_IconAsterisk);
end;
except
Application.MessageBox('Ошибка создания базы данных!','Внимание',mb_OK+mb_IconHand);
Exit;
end;
Form1.Table1.Active:=True;
Form1.dsOlymp.DataSet:=Form1.Table1;
Form1.DBGrid1.DataSource:=Form1.dsOlymp;
Comm:=TStringList.Create;
Comm.Clear;
Comm.Add(Edit2.Text);
Comm.SaveToFile('Bases\'+Edit1.Text+'.olp');
Comm.Free;
Form1.Label1.Caption:='Описание БД: '+Edit2.Text;
ModalResult:=mrNo;
end;
end.
Модуль 6.
Этот модуль отвечает за весь процесс оценки качества заданий. В нем рассчитываются все параметры, и строятся необходимые диаграммы.
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, Grids, DBGrids, TeEngine, Series,
TeeProcs, Chart, DB, DBTables, INIFiles;
type
TForm7 = class(TForm)
Panel1: TPanel;
BitBtn1: TBitBtn;
Chart1: TChart;
Series1: TBarSeries;
DataSource1: TDataSource;
Query1: TQuery;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Chart2: TChart;
Series2: TBarSeries;
Chart3: TChart;
Series3: TLineSeries;
Series4: TBarSeries;
Series5: TBarSeries;
Label3: TLabel;
Series6: TLineSeries;
procedure BitBtn1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
Cf1:TIniFile;
implementation
uses Unit1, Unit5, foxsoft;
{$R *.dfm}
procedure TForm7.BitBtn1Click(Sender: TObject);
begin
ModalResult:=mrOk;
end;
procedure TForm7.FormShow(Sender: TObject);
var
i,j,NumI,kl,kz,nz,gr:integer;
ind,per,block1,block2,block3,coun,coun1,coun2,coun3,n1,n2,n3,k:double;
p1,p2,p3:array [1..50] of double;
GrPar, GrPercent, parm:array[1..200] of double;
MCon, Default,maxb:string;
sbl1,sbl2,sbl3:double;
kn, kp:array[1..3] of double;
srbl1,srbl2,srbl3,sdxq1,sdxq2,sdxq3:double;
dx1,dx2,dx3,sigm1,sigm2,sigm3,m:double;
begin
try
with Query1 do
begin
Active:=False;
SQL.Clear;
SQL.Add('Select * from "'+Form1.Table1.TableName+'"');
ExecSQL;
end;
Query1.Active:=True;
Chart1.Enabled:=True;
except
Application.MessageBox('Ошибка инициализации БД. Возможно не установлен BDE, или база не открыта.','Ошибка',mb_Ok+MB_ICONHAND);
Chart1.Enabled:=False;
Exit;
end;
if Query1.RecordCount=0 then
begin
Application.MessageBox('В БД нет ни одной записи.','Сообщение',mb_Ok+MB_ICONASTERISK);
Exit;