1.4.2. Описание программы
Программа «Оптимизация сетевого графика» разработана в среде программирования Borland Delphi 5 и работает под управлением операционной системы Windows (Текст программы приведен в приложении А).
Интерфейс программы достаточно прост и лёгок в обращении. Программа работает довольно просто: в ней имеется главное меню (Приложение Г) и «Панель операций» с кнопками.
Главное меню имеет структуру:
<Файл> <Помощь>
<Сохранить данные> <Справка>
<Загрузить данные> <О программе>
<Выход>
Для пунктов меню <Сохранить данные>, <Загрузить данные>, <Выход>, <Справка> имеются «Горячие клавиши» (Горячие клавиши – клавиши используемые для быстрого вызова программы) :
<Сохранить данные> F2 <Загрузить данные> F3
<Выход> F10 <Справка> F1
Если в программе нажать функциональную клавишу F2 или при выборе пункта меню <Файл>/< Сохранить файл> то программа автоматически проверит все ли ячейки заполнены при обнаружении что хотя бы одна ячейка не заполнена программа выводит сообщение об ошибке и сохранение не происходит, а если при проверке выясняется что все ячейки заполнены, то появляется диалоговое окно сохранения файла (приложение В), в котором указывается папка, в котором будет находиться файл с данными и в нем будут (если они есть) указанны другие файлы с данными, требуется ввести имя этого файла, программа автоматически прибавит к имени файла расширение *.Gra, используемое для обозначения файла с данными, затем происходит сам процесс сохранения.
А если нажать функциональную клавишу F3 или при выборе пункта меню <Файл>/< Открыть файл> то появляется диалоговое окно открытия файла (приложение В), в котором указывается папка, в котором находиться файлы с данными, требуется выбрать файл (в диалоговом окне отображаются только те файлы, в которых сохранены данные из графика) с расширением *.Gra, при необходимости имеется такая возможность как открытие любого файла если, например данные из графика были сохранены без расширения после выбора необходимого файла и нажатия на кнопку «Открыть» программа открывает файл и он выводится в таблицу.
При нажатии функциональной клавиши F10 или при выборе пункта меню
<Файл>/<Выход> программа выводит диалог (приложение В) в котором спрашивает пользователя действительно ли он хочет завершить работу?: и если да то завершает свою работу.
При нажатии функциональной клавиши F1 или при выборе пункта меню
<Помощь>/<Справка> программа выводит справку(приложение В) в виде HTML – документа.
1.5. Описание технических средств
Для создания программы были использованы программные средства:
· Borland Delphi 5.0 – написание, отладка, компиляция и исполнение текста программы.
· Microsoft Office XP – Новейший пакет офисных программ фирмы Microsoft
1. Microsoft Word – создание помощи в формате HTML (Web документ).
2. Microsoft Excel – создание таблиц для отчёта.
· CorelDraw – создание изображений для помощи.
· Xara 3D – создание 3х мерных надписей для справки
· Photoshop 6.0 – Редактирование изображений.
· Благодаря тому что программа создана в среде программирования Borland Delphi 5.0 она поддерживается любыми версиями Microsoft Windows: Microsoft Windows 9x, Microsoft Windows Millennium, Microsoft Windows 2000, Microsoft Windows XP.
1.5.1. Описание и обоснование минимальной конфигурации технических средств
Для нормальной работы данной программы требуется компьютер с минимальной конфигурацией:
Процессор с частотой не ниже Pentium 100 MHz
Оперативной памятью не менее 16 Mb
Места на диске требуется не менее 5 Mb.+30 Mb (Для Windows)
Для наилучшей работы программы желателен монитор поддерживающий разрешение экрана 800х600 с углублением цветовой палитры от 8 (256 цветов) до 16 (65535 цветов) бит.
Для более комфортной работы необходима мышь.
Из программного обеспечения не требуется ни каких дополнительных пакетов. В качестве операционной системы подходит любая версия Windows начиная с Windows 95 .
Заключение
Курсовая работа на тему «Оптимизация сетевого графика по времени» была выполнена в заданный срок. Для разработки программы использовалась среда программирования Borland Delphi 5.0. в программе разработан удобный пользовательский интерфейс в виде меню. Каждый пункт меню содержит несколько пунктов подменю. Для демонстрации программы была разработан пример ввода данных в матрицу. Разработана форма в которой отображается входная и выходная информация. Организована справочная система. Составлена пояснительная записка.
1. Экономико-математические методы в снабжении. –М.: «Экономика», 1971.
2. И. М. Разумов. Сетевые графики в планировании. –М.: 1981.
3. Бобровский С. Delphi 5: учебный курс. –СПб.: Издательство “Питер”, 2000.
Дата выдачи __________ Срок окончания ___________ Преподаватель _____________________________________________Приложение A
Листинг программы
unit Unit1;
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;
if err <>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.
... в данной курсовой работе. В данном курсовом проекте рассматриваются цель: определить минимальную стоимость комплекса производственных работ при заданной продолжительности его выполнения и других указанных условиях. 1. ПОСТРОЕНИЕ СЕТЕВОГО ГРАФИКА Сетевой график - экономико-компьютерная модель, отражающая комплекс работ (операций) и событий, связанных с реализацией некоторого проекта ( ...
... на самом графике и табличный метод. В них полностью используются формулы аналитического метода. Методические указания по расчёту и оптимизации параметров сетевого графика приводятся по ходу решения задач. Расчёта и оптимизации сетевого графика Разработать план выполнения ОКР по созданию нового образца телевизора в виде сетевого графика на основе перечня работ и трудоёмкости их выполнения, ...
... работы, принадлежащие критическому пути, и тем самым уровнять длительности этих путей, для обеспечения выполнения критерия оптимальности (1.1). 2Теоретические основы сетевого планирования Прежде, чем преступать к обоснованию рациональных методик поиска особых путей сетевого графика, необходимо напомнить, что вообще собой представляет сетевой график, и какими основными параметрами он характеризу ...
... , тем ближе данный путь к критическому и наоборот и чем меньше коэффициент напряженности, тем большими резервами обладает данный путь [1]. Далее проводится анализ сетевого графика [2]. При этом определяется вероятность P наступления завершающего события в заданный срок. Для этого с помощью таблицы [3] определяется значение функции Лапласа Ф(Х): (6.12) ...
0 комментариев