Реферат: Автоматизированная система распределения мест и оценок качества олимпиадных заданий
procedure BitBtn4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Config:TIniFile;
implementation
uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7;
{$R *.dfm}
procedure TForm1.N5Click(Sender: TObject);
begin
if Application.MessageBox('Закончить работу?','Выход',mb_YesNo+mb_IconAsterisk)=idYes
then Application.Terminate
else Exit;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Application.MessageBox('Закончить работу?','Выход',mb_YesNo+mb_IconAsterisk)=idYes
then Action:=caFree
else Action:=caNone;
end;
procedure TForm1.N16Click(Sender: TObject);
begin
ShellAbout(Form1.Handle,'FoxSoft Olymps v1.0 (beta)','Programm by Chernetckiy Kirill aka Fox',Application.Icon.Handle);
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Form6.ShowModal;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
try
with dbOlymp do
begin
Connected:=False;
Params.Clear;
Params.Add('PATH='+GetCurrentDir+'\Bases');
Params.Add('DEFAULT DRIVER=PARADOX');
Params.Add('ENABLE BCD=FALSE');
Connected:=True;
end;
except
Application.MessageBox('Ошибка инициализации баз данных. Возможно не установлен BDE.','Ошибка',mb_Ok+mb_IconHand);
Application.Terminate;
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Form3.ShowModal;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Form4.ShowModal;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
try
if Application.MessageBox('Хотите сохранить текущий вид таблицы?','Подтвердите',mb_YesNo+mb_IconAsterisk)=idNo
then Exit
else
begin
Config:=TIniFile.Create(GetCurrentDir+'\Config.ini');
with Config do
begin
WriteString('GRID_CONFIG','FIO',IntToStr(DBGrid1.Columns[0].Width));
WriteString('GRID_CONFIG','MARK1',IntToStr(DBGrid1.Columns[1].Width));
WriteString('GRID_CONFIG','MARK2',IntToStr(DBGrid1.Columns[2].Width));
WriteString('GRID_CONFIG','MARK3',IntToStr(DBGrid1.Columns[3].Width));
WriteString('GRID_CONFIG','MARK4',IntToStr(DBGrid1.Columns[4].Width));
WriteString('GRID_CONFIG','MARK5',IntToStr(DBGrid1.Columns[5].Width));
WriteString('GRID_CONFIG','MARK6',IntToStr(DBGrid1.Columns[6].Width));
WriteString('GRID_CONFIG','SUMMARK',IntToStr(DBGrid1.Columns[7].Width));
WriteString('GRID_CONFIG','SCHOOL',IntToStr(DBGrid1.Columns[8].Width));
UpdateFile;
end;
Config.Free;
Application.MessageBox('Настройки успешно сохранены!','Сообщение',mb_Ok+mb_IconAsterisk);
end;
except
Application.MessageBox('Ошибка сохранения настроек!','Ошибка',mb_Ok+mb_IconHand);
Exit;
end;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Form5.ShowModal;
end;
procedure TForm1.N3Click(Sender: TObject);
var
i:integer;
begin
OpenDialog1.InitialDir:=GetCurrentDir+'\Bases';
if OpenDialog1.Execute then
begin
try
with Table1 do
begin
Active := False;
DatabaseName := 'Olymp';
TableType := ttParadox;
TableName := ExtractFileName(OpenDialog1.FileName);
Active:=True;
end;
dsOlymp.DataSet:=Table1;
DBGrid1.DataSource:=dsOlymp;
Application.MessageBox('База успешно открыта.','Сообщение',mb_Ok+MB_ICONASTERISK);
except
Application.MessageBox('Ошибка открытия базы. Возможно она не существует.','Ошибка',mb_Ok+MB_ICONHAND);
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
Страницы: 1, 2, 3, 4, 5, 6, 7, 8