Автоматизированная система распределения мест и оценок качества олимпиадных заданий

Автор: Пользователь скрыл имя, 11 Февраля 2013 в 10:22, реферат

Описание работы

Новая шкала ценностных приоритетов, отражающая государственную политику и отношение педагогической науки к образованию, является на сегодняшний день главным фактором, определяющим необходимость реформирования школьной системы образования и перехода к 12-летней школе. Ожидаемые в связи с этим преобразования носят достаточно существенный характер, поскольку предполагают «осуществление принципиально другой направленности образования, связанной не с подготовкой «обезличенных» квалифицированных кадров, а с общим, социально-нравственным и профессиональным развитием личности».

Работа содержит 1 файл

htathfn.doc

— 645.50 Кб (Скачать)

   begin

    Application.MessageBox('В БД нет ни одной записи.','Сообщение',mb_Ok+MB_ICONASTERISK);

    RadioGroup1.Enabled:=False;

    Exit;

   end;

  try

   with Query1 do

    begin

     First;

     for i:=1 to RecordCount do

      begin

       if BCon='3' then

        begin

         blocks[1]:=FieldValues['MARK1']+FieldValues['MARK2'];

         blocks[2]:=FieldValues['MARK3']+FieldValues['MARK4'];

         blocks[3]:=FieldValues['MARK5']+FieldValues['MARK6'];

         param[1]:=(blocks[1]+blocks[2]+blocks[3])-3*NumMarks;

         param[2]:=2*(blocks[2]-0.5*(blocks[1]+blocks[3]));

         param[3]:=(blocks[3]-blocks[1])+NumMarks;

        end;

       if Bcon='2' then

        begin

         blocks[1]:=FieldValues['MARK1']+FieldValues['MARK2']+FieldValues['MARK3'];

         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];

Информация о работе Автоматизированная система распределения мест и оценок качества олимпиадных заданий