· Photoshop 6.0 – Редактирование изображений.
· Благодаря тому что программа создана в среде программирования BorlandDelphi 5.0 она поддерживается любыми версиями MicrosoftWindows: MicrosoftWindows 9x, MicrosoftWindowsMillennium, MicrosoftWindows 2000, MicrosoftWindowsXP.
1.5.1. Описание и обоснование минимальной конфигурации технических средств
Для нормальной работы данной программы требуется компьютер с минимальной конфигурацией:
Процессор с частотой не ниже Pentium 100 MHz
Оперативной памятью не менее 16 Mb
Места на диске требуется не менее 5 Mb.+30 Mb (Для Windows)
Для наилучшей работы программы желателен монитор поддерживающий разрешение экрана 800х600 с углублением цветовой палитры от 8 (256 цветов) до 16 (65535 цветов) бит.
Для более комфортной работы необходима мышь.
Из программного обеспечения не требуется ни каких дополнительных пакетов. В качестве операционной системы подходит любая версия Windows начиная с Windows 95 .
Заключение
Курсовая работа на тему «Оптимизация сетевого графика по времени» была выполнена в заданный срок. Для разработки программы использовалась среда программирования BorlandDelphi 5.0. в программе разработан удобный пользовательский интерфейс в виде меню. Каждый пункт меню содержит несколько пунктов подменю. Для демонстрации программы была разработан пример ввода данных в матрицу. Разработана форма в которой отображается входная и выходная информация. Организована справочная система. Составлена пояснительная записка.
1. Экономико-математические методы в снабжении. –М.: «Экономика», 1971.
2. И. М. Разумов. Сетевые графики в планировании. –М.: 1981.
3. Бобровский С. Delphi 5: учебный курс. –СПб.: Издательство “Питер”, 2000.
Приложение A
Листинг программы
unitUnit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, StdCtrls, Grids, Buttons, ExtCtrls, Errors, OleCtnrs;
type
TGeneral = class(TForm)
MainMenu1: TMainMenu;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
N1: TMenuItem;
SpeedButton1: TSpeedButton;
GJvjo1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
SpeedButton2: TSpeedButton;
Sg1: TStringGrid;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
SpeedButton6: TSpeedButton;
N6: TMenuItem;
PopupMenu1: TPopupMenu;
N7: TMenuItem;
Sg4: TStringGrid;
Edit1: TEdit;
Edit4: TEdit;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
CheckBox1: TCheckBox;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
Panel1: TPanel;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
N12: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N7Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure N12Click(Sender: TObject);
private
{ Private declarations }
public
l:integer;
Count,Sum:integer;
buf1:array[1..100] of real;
buf2:array[0..30] of real;
err:integer;
{ Public declarations }
end;
var
Proizvod : String;//Производительность
Str : String;//колличество строк
Rab_I : String;//Работы
Rab_J : String;//Работы
OB_Rabot : String; //Обьем работ изделий
KolRes : String; //Колличество рабочих
Prodolgit: String; //Продолжительность
Err,i,j : Integer;
General : TGeneral;
F : Textfile;
implementation
uses Unit2, Unit3, Unit4;
{$R *.DFM}
procedure TGeneral.FormCreate(Sender: TObject);
begin
//General.WindowState:=WsMaximized;
General.Position:=poDesktopCenter;
General.Caption:='Оптимезация сетевого графика по времени.';
GroupBox1.Caption:='';
GroupBox2.Caption:='';
SG1.cells[0,0]:='I';
SG1.cells[1,0]:='J';
SG1.cells[2,0]:='Объемработ';
SG1.cells[3,0]:='Необход. ресурсов';
SG1.cells[4,0]:='Число ресурсов';
SG1.cells[5,0]:='Продолжительность';
SG1.cells[6,0]:='События';
SG1.cells[7,0]:='Рез. времени';
SG1.RowCount:=2;
end;
procedure TGeneral.N3Click(Sender: TObject);
begin
Close;
end;
procedure TGeneral.SpeedButton1Click(Sender: TObject);
var
i,j:Integer;
Sum,Sum2,a: Real;
begin
Panel1.Visible:=true;
label1.Visible:=true;
label2.Visible:=true;
label4.Visible:=true;
label5.Visible:=true;
label7.Visible:=true;
Sg4.Visible:=true;
edit2.Visible:=true;
edit3.Visible:=true;
edit4.Visible:=true;
//edit5.Visible:=true;
{Выясним необходимое число ресурсов}
for i:=1 to sg1.RowCount-1 do
Begin
a:=StrToInt(sg1.Cells[2,i])/StrToInt(edit1.text);
sg1.Cells[3,i]:=FloatToStr(a);
{Выяснимнеобходимоечислоресурсов}
Sum2:=Sum2+StrToFloat(sg1.Cells[4,i]);
Edit3.Text:=FloatToStr(Sum2);
{Всегонеобходимыхресурсов}
Sum:=Sum+StrToFloat(sg1.Cells[3,i]);
Edit2.Text:=FloatToStr(Sum);
end;
{Продолжительностьработ}
for i:=1 to sg1.RowCount-1 do
Begin
a:=StrToFloat(sg1.Cells[3,i])/StrToFloat(sg1.Cells[4,i]);
sg1.Cells[5,i]:=FloatToStr(a);
end;
end;
procedure TGeneral.SpeedButton4Click(Sender: TObject);
begin
close;
end;
procedure TGeneral.SpeedButton3Click(Sender: TObject);
begin
For I:=0 to 2 do
For j:=1 to Sg1.RowCount-1 do
Begin
if Sg1.Cells[i,j]= '' then err:=err+1;
end;
For j:=1 to Sg1.RowCount-1 do
if Sg1.Cells[4,j]= '' then err:=err+1;
iferr <>0 then
begin
MessageDlg('Ошибка'+#13+'Таблица заполнена не полностью.'+#13+'Сохранение не произведено!'
, mtError,[mbOk], 0);
err:=0;
end
else
Begin
Proizvod:=edit1.text;
Str:=IntToStr(sg1.RowCount);
For i:=1 to Sg1.RowCount-1 do
Begin
Rab_I :=(Sg1.Cells[0,i]);
Rab_J :=(Sg1.Cells[1,i]);
OB_Rabot:=(Sg1.Cells[2,i]);
write(f,Rab_I);
write(f,Rab_J);
write(f,OB_Rabot);
End;
For I:=1 to Sg1.RowCount-1 do
KolRes:=(Sg1.Cells[4,i])
end;
CloseFile(f);
end;
procedure TGeneral.SpeedButton2Click(Sender: TObject);
begin
General.N7.Click;
if OpenDialog1.Execute then
{$I-}
AssignFile(F,OpenDialog1.FileName); Reset(F);
Proizvod:=edit1.text;
Str:=IntToStr(sg1.RowCount);
For i:=1 to Sg1.RowCount-1 do
Begin
Rab_I :=(Sg1.Cells[0,i]);
Rab_J :=(Sg1.Cells[1,i]);
OB_Rabot:=(Sg1.Cells[2,i]);
write(f,Rab_I);
write(f,Rab_J);
write(f,OB_Rabot);
End;
For I:=1 to Sg1.RowCount-1 do
KolRes:=(Sg1.Cells[4,i])
{$I+}
CloseFile(f);
end;
procedure TGeneral.N5Click(Sender: TObject);
begin
if OpenDialog1.Execute then
end;
procedure TGeneral.SpeedButton6Click(Sender: TObject);
begin
Edit1.Text:='5';
sg1.RowCount:=12;
sg1.Cells[0,1]:=INttoStr(0);
sg1.Cells[1,1]:=INttoStr(1);
sg1.Cells[2,1]:=INttoStr(25);
sg1.Cells[4,1]:=INttoStr(5);
sg1.Cells[0,2]:=INttoStr(0);
sg1.Cells[1,2]:=INttoStr(2);
sg1.Cells[2,2]:=INttoStr(30);
sg1.Cells[4,2]:=INttoStr(6);
sg1.Cells[0,3]:=INttoStr(0);
sg1.Cells[1,3]:=INttoStr(3);
sg1.Cells[2,3]:=INttoStr(20);
sg1.Cells[4,3]:=INttoStr(4);
sg1.Cells[0,4]:=INttoStr(1);
sg1.Cells[1,4]:=INttoStr(4);
sg1.Cells[2,4]:=INttoStr(22);
sg1.Cells[4,4]:=INttoStr(5);
sg1.Cells[0,5]:=INttoStr(2);
sg1.Cells[1,5]:=INttoStr(3);
sg1.Cells[2,5]:=INttoStr(10);
sg1.Cells[4,5]:=INttoStr(4);
sg1.Cells[0,6]:=INttoStr(2);
sg1.Cells[1,6]:=INttoStr(4);
sg1.Cells[2,6]:=INttoStr(15);
sg1.Cells[4,6]:=INttoStr(3);
sg1.Cells[0,7]:=INttoStr(2);
sg1.Cells[1,7]:=INttoStr(5);
sg1.Cells[2,7]:=INttoStr(5);
sg1.Cells[4,7]:=INttoStr(4);
sg1.Cells[0,8]:=INttoStr(3);
sg1.Cells[1,8]:=INttoStr(6);
sg1.Cells[2,8]:=INttoStr(25);
sg1.Cells[4,8]:=INttoStr(5);
sg1.Cells[0,9]:=INttoStr(4);
sg1.Cells[1,9]:=INttoStr(6);
sg1.Cells[2,9]:=INttoStr(20);
sg1.Cells[4,9]:=INttoStr(4);
sg1.Cells[0,10]:=INttoStr(5);
sg1.Cells[1,10]:=INttoStr(6);
sg1.Cells[2,10]:=INttoStr(5);
sg1.Cells[4,10]:=INttoStr(4);
sg1.Cells[0,11]:=INttoStr(6);
sg1.Cells[1,11]:=INttoStr(7);
sg1.Cells[2,11]:=INttoStr(30);
sg1.Cells[4,11]:=INttoStr(6);
end;
procedure TGeneral.SpeedButton5Click(Sender: TObject);
begin
form2.show;
end;
procedure TGeneral.N6Click(Sender: TObject);
begin
form2.show;
end;
procedure TGeneral.FormClose(Sender: TObject; var Action: TCloseAction);
begin
case Application.MessageBox('Выуверены, чтохотитевыйти?','Выход',mb_yesno or mb_iconquestion or mb_defbutton2) of
idyes:action:=caFree;
idno:action:=caNone;
end;
end;
procedure TGeneral.N7Click(Sender: TObject);
var q,w:byte;
i:integer;
begin
for q:=0 to SG1.ColCount do
for w:=1 to SG1.RowCount do
SG1.Cells[q,w]:='';
SG1.RowCount:=2;
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
//Edit5.Text:='';
end;
procedure TGeneral.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'0'.. '9', chr (8):;
',':;
else key:=#0;
end;
end;
procedure TGeneral.N12Click(Sender: TObject);
begin
Sg1.RowCount:=Sg1.RowCount+1;
If Sg1.RowCount>30 then
MessageDlg('Ошибка'+#13+'строкнеможетбытьбольше 30 !!!', mtError,[mbOk], 0);
Sg1.RowCount:=30;
end;
end.