Приложение. Исходный код системы (по модулям).
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);