скачать рефераты

МЕНЮ


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

Exit;

end;

end;

end;

procedure TForm1.BitBtn4Click(Sender: TObject);

begin

Form7.ShowModal;

end;

end.

Модуль 2.

Код этого модуля отвечает за формирование баз данных, то есть за запись

участника.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms,

Dialogs, ExtCtrls, StdCtrls, Buttons;

type

TForm2 = class(TForm)

Panel1: TPanel;

GroupBox1: TGroupBox;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

Edit1: TEdit;

Edit2: TEdit;

Label1: TLabel;

Label2: TLabel;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit1, DB, DBTables;

{$R *.dfm}

procedure TForm2.BitBtn1Click(Sender: TObject);

begin

ModalResult:=mrCancel;

end;

procedure TForm2.BitBtn2Click(Sender: TObject);

var

Fio,Sch:string;

n1,n2,n3,n4,n5,n6,snum:double;

begin

Fio:=Edit1.Text;

Sch:=Edit2.Text;

if (Fio='') or (Sch='') then

begin

Application.MessageBox('Не введено ФИО или

Школа!','Ошибка',mb_Ok+mb_IconHand);

Edit1.SetFocus;

Exit;

end;

try

n1:=StrToFloat(Edit3.Text);

n2:=StrToFloat(Edit4.Text);

n3:=StrToFloat(Edit5.Text);

n4:=StrToFloat(Edit6.Text);

n5:=StrToFloat(Edit7.Text);

n6:=StrToFloat(Edit8.Text);

except

Application.MessageBox('Одно или несколько текстовых полей заполнены

неверно!','Ошибка',mb_Ok+mb_IconHand);

Edit1.SetFocus;

Exit;

end;

snum:=n1+n2+n3+n4+n5+n6;

try

with Form1.Table1 do

begin

Active:=True;

Append;

FieldValues['COUNTER']:=RecordCount+1;;

FieldValues['FIO']:=Fio;

FieldValues['MARK1']:=n1;

FieldValues['MARK2']:=n2;

FieldValues['MARK3']:=n3;

FieldValues['MARK4']:=n4;

FieldValues['MARK5']:=n5;

FieldValues['MARK6']:=n6;

FieldValues['SUMMARK']:=snum;

FieldValues['SCHOOL']:=Sch;

Post;

end;

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

Edit4.Text:='';

Edit5.Text:='';

Edit6.Text:='';

Edit7.Text:='';

Edit8.Text:='';

Edit1.SetFocus;

Application.MessageBox(PChar('Добавлен участник: "'+Fio+'". Суммарный

балл '+FloatToStr(snum)+'.'),'Сообщение',mb_Ok+mb_IconAsterisk);

except

Application.MessageBox('Ошибка записи участника в БД. Загрузите

базу.','Ошибка',mb_Ok+mb_IconHand);

Edit1.SetFocus;

Exit;

end;

end;

end.

Модуль 3.

Данный модуль отвечает за удаление участника из базы данных.

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms,

Dialogs, ExtCtrls, StdCtrls, Buttons;

type

TForm3 = class(TForm)

Panel1: TPanel;

Label1: TLabel;

ComboBox1: TComboBox;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm3.BitBtn1Click(Sender: TObject);

begin

ModalResult:=mrCancel;

end;

procedure TForm3.FormShow(Sender: TObject);

var i:integer;

begin

try

if Form1.Table1.RecordCount=0 then

begin

Application.MessageBox('В БД нет ни одной

записи!','Ошибка',mb_Ok+mb_IconHand);

ComboBox1.Color:=clMenu;

ComboBox1.Enabled:=False;

BitBtn2.Enabled:=False;

end

else

begin

ComboBox1.Items.Clear;

ComboBox1.Color:=clWhite;

ComboBox1.Enabled:=True;

BitBtn2.Enabled:=True;

Form1.Table1.First;

for i:=0 to Form1.Table1.RecordCount-1 do

begin

ComboBox1.Items.Add(Form1.Table1.FieldValues['FIO']);

Form1.Table1.Next;

end;

end;

ComboBox1.ItemIndex:=0;

Form1.Table1.First;

except

Application.MessageBox('Ошибка БД. Возможно база не

открыта!','Ошибка',mb_Ok+MB_ICONHAND);

ComboBox1.Color:=clMenu;

ComboBox1.Enabled:=False;

BitBtn2.Enabled:=False;

end;

end;

procedure TForm3.BitBtn2Click(Sender: TObject);

var

i:integer;

begin

try

Form1.Table1.First;

For i:=0 to Form1.Table1.RecordCount-1 do

begin

if ComboBox1.Text=Form1.Table1.FieldValues['FIO'] then

begin

Form1.Table1.Delete;

Application.MessageBox(PChar('Запись участника "'+ComboBox1.Text+'"

успешно удалена'),'Удаление',mb_Ok+mb_IconAsterisk);

ModalResult:=mrCancel;

Exit;

end;

Form1.Table1.Next;

end;

except

Application.MessageBox('Ошибка удаления

записи!','Ошибка',mb_Ok+mb_IconHand);

Exit;

end;

end;

end.

Модуль 4.

Код этого модуля отвечает за формирование окна конфигурации программы, а

также за запись настроек этой конфигурации.

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms,

Dialogs, ExtCtrls, StdCtrls, Buttons, INIFiles;

type

TForm4 = class(TForm)

Panel1: TPanel;

Label1: TLabel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

GroupBox1: TGroupBox;

RadioGroup1: TRadioGroup;

GroupBox2: TGroupBox;

Label2: TLabel;

Edit1: TEdit;

RadioGroup2: TRadioGroup;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

Conf:TIniFile;

implementation

{$R *.dfm}

procedure TForm4.BitBtn1Click(Sender: TObject);

begin

ModalResult:=mrCancel;

end;

procedure TForm4.BitBtn2Click(Sender: TObject);

begin

try

Conf:=TIniFile.Create(GetCurrentDir+'\Config.ini');

with Conf do

begin

case RadioGroup1.ItemIndex of

0: WriteString('BLOCK_CONFIG','NUM_BLOCKS','1');

1: WriteString('BLOCK_CONFIG','NUM_BLOCKS','2');

2: WriteString('BLOCK_CONFIG','NUM_BLOCKS','3');

end;

case RadioGroup2.ItemIndex of

0: WriteString('SORT_CONFIG','SORT_TYPE','1');

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

begin

for j:=1 to Query1.RecordCount do

begin

Страницы: 1, 2, 3, 4, 5, 6, 7


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.