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.



Информация о работе «Оптимизация сетевого графика по времени»
Раздел: Информатика, программирование
Количество знаков с пробелами: 37190
Количество таблиц: 4
Количество изображений: 0

Похожие работы

Скачать
22755
10
0

... в данной курсовой работе. В данном курсовом проекте рассматриваются цель: определить минимальную стоимость комплекса производственных работ при заданной продолжительности его выполнения и других указанных условиях.   1.  ПОСТРОЕНИЕ СЕТЕВОГО ГРАФИКА   Сетевой график - экономико-компьютерная модель, отражающая комплекс работ (операций) и событий, связанных с реализацией некоторого проекта ( ...

Скачать
17113
2
7

... на самом графике и табличный метод. В них полностью используются формулы аналитического метода. Методические указания по расчёту и оптимизации параметров сетевого графика приводятся по ходу решения задач. Расчёта и оптимизации сетевого графика Разработать план выполнения ОКР по созданию нового образца телевизора в виде сетевого графика на основе перечня работ и трудоёмкости их выполнения, ...

Скачать
45514
0
118

... работы, принадлежащие критическому пути, и тем самым уровнять длительности этих путей, для обеспечения выполнения критерия оптимальности (1.1). 2Теоретические основы сетевого планирования Прежде, чем преступать к обоснованию рациональных методик поиска осо­бых путей сетевого графика, необходимо напомнить, что вообще собой представ­ляет сетевой график, и какими основными параметрами он характеризу ...

Скачать
18161
12
0

... , тем ближе данный путь к критическому и наоборот и чем меньше коэффициент напряженности, тем большими резервами обладает данный путь [1]. Далее проводится анализ сетевого графика [2]. При этом определяется вероятность P наступления завершающего события в заданный срок. Для этого с помощью таблицы [3] определяется значение функции Лапласа Ф(Х): (6.12) ...

0 комментариев


Наверх