Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

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

39;);
     1: WriteString('SORT_CONFIG','SORT_TYPE','2');
     2: WriteString('SORT_CONFIG','SORT_TYPE','3');
    end;
    WriteString('MARK_CONFIG','MARKS_TYPE','ONE_IN_ONE');
    WriteString('MARK_CONFIG','MARKS_VALUE',Edit1.Text);
    UpdateFile;
   end;
  Conf.Free;
  Application.MessageBox('Настройки успешно
сохранены!','Сообщение',mb_Ok+mb_IconAsterisk);
  ModalResult:=mrCancel;
  except
   Application.MessageBox('Ошибка записи настроек в INI-
файл!','Ошибка',mb_Ok+mb_IconHand);
   Exit;
  end;
end;

end.

Модуль 5.
Код  этого  модуля  представляет  собой  программный  вариант  распределения
участников  по  местам,  а  также  построение  распределений  по   указанным
параметрам. Проще говоря, модуль отвечает за окно распределения по местам  и
все действия, производимые в нем.
unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
  Dialogs, ExtCtrls, StdCtrls, Grids, DBGrids, Buttons, DB, DBTables,
INIFiles,
  TeeProcs, TeEngine, Chart, TeeFunci, Series, Menus;

type
  TForm5 = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    DBGrid1: TDBGrid;
    GroupBox1: TGroupBox;
    BitBtn1: TBitBtn;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    RadioGroup1: TRadioGroup;
    DataSource1: TDataSource;
    Query1: TQuery;
    PopupMenu1: TPopupMenu;
    N11: TMenuItem;
    N21: TMenuItem;
    N31: TMenuItem;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    ColorDialog1: TColorDialog;
    Chart1: TChart;
    Series1: TBarSeries;
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure N11Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;
  Conf1:TIniFile;
  SortType:String;
  NumMarks:double;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm5.FormShow(Sender: TObject);
 var
  Default, BCon, MCon:string;

  i:integer;
  blocks, param:array [1..3] of double;
begin
 NumMarks:=0;
 RadioGroup1.ItemIndex:=3;
 try
  Conf1:=TIniFile.Create(GetCurrentDir+'Config.ini');
  with Conf1 do
   begin
    BCon:=ReadString('BLOCK_CONFIG','NUM_BLOCKS',Default);
    Label2.Caption:='Количество блоков задач - '+Bcon;
    MCon:=ReadString('MARK_CONFIG','MARKS_TYPE',Default);
    SortType:=ReadString('SORT_CONFIG','SORT_TYPE',Default);
    if MCon='ONE_IN_ONE' then
      begin

NumMarks:=StrToFloat(ReadString('MARK_CONFIG','MARKS_VALUE',Default));
        Label3.Caption:='Общий балл для всех задач равен
'+FloatToStr(NumMarks);
      end;
    if SortType='1' then Label4.Caption:='Слабый коллектив (1,2,3)';
    if SortType='2' then Label4.Caption:='Сильный коллектив (1,3,2)';
    if SortType='3' then Label4.Caption:='Смешанный коллектив';
   end;
   Conf1.Free;
 except
  Application.MessageBox('Ошибка чтения из INI-файла. Проверьте
конфигурацию.','Ошибка',mb_Ok+mb_IconHand);
  Exit;
 end;
 try
  with Query1 do
   begin
    Active:=False;
    SQL.Clear;
    SQL.Add('Select * from "'+Form1.Table1.TableName+'"');
    ExecSQL;
   end;
   Query1.Active:=True;
   Chart1.Enabled:=True;
   DBGrid1.Enabled:=True;
   RadioGroup1.Enabled:=True;
  except
   Application.MessageBox('Ошибка инициализации БД. Возможно не установлен
BDE, или база не открыта.','Ошибка',mb_Ok+MB_ICONHAND);
   Chart1.Enabled:=False;
   DBGrid1.Enabled:=False;
   RadioGroup1.Enabled:=False;
   Exit;
  end;
  if Query1.RecordCount=0 then
   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']+Fi
eldValues['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
 
Пред.11121314
скачать работу

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

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ