Панель палитры компонентов расположена в правой части главного окна среды разработчика. Она открывает доступ к VCL (Visual Component Library- библиотеки визуальных компонентов) и содержит кнопки с пиктограммами компонентов VCL. С помощью палитры компонентов можно выбрать и включить в приложение всевозможные интерфейсные элементы управления: кнопки, меню, списки, панели и пр. Палитра компонентов состоит из ряда страниц с различными группами компонентов. В Delphi можно изменять содержимое страниц Палитры компонентов и добавлять в нее пиктограммы собственных компонентов.
Каждый элемент панели инструментов и панели палитры компонентов представлен в виде кнопки с пиктограммой. Кроме того, если поместить курсор мыши на кнопку и подержать секунду или две, появиться подсказка в виде ярлычка желтого цвета с именем типа компонента.
Окно Инспектора объектов - это двухстраничное окно, которое является одним из самых важных средств программирования Delphi. Оно отображает свойства или события одного или нескольких выбранных объектов или форм. Окно Инспектора объектов содержит 2 страницы: страницу свойств (Properties) и страницу событий (Events). В верхней части Инспектора объектов страницы помечены закладками. С их помощью можно переходить со страницы на страницу в процессе разработки программы. В верхней части Инспектора объектов расположен выпадающий список с именами компонентов активной формы: окно с кнопкой справа. При нажатии на кнопку появляется выпадающий список, из которого можно выбрать и тем самым активизировать требуемый объект формы.
Окно формы расположено с правой стороны рабочего поля над окном редактора кода (текста модуля формы). Это визуальное изображение главного окна приложения. Окно содержит заголовок и рабочую область формы для размещения компонентов приложения. В правой части заголовка расположены стандартные оконные управляющие элементы: уменьшить, увеличить, закрыть форму. Рабочая область размечена специальной сеткой, по которой выравниваются расставляемые компоненты. В скомпилированном приложении сетка не появляется. Простые программы имеют одну форму, более сложные могут иметь ряд форм.
Окно редактора кода содержит код (текст) программы на языке Object Pascal. В нижней части окна есть закладка с именем Code для перехода из Окна формы в Окно редактора кодов. Каждая форма имеет текст соответствующего ей модуля. По умолчанию имя модуля формы Form1='Unit1.pas'. В верхней части Окна редактора имеются закладки для выбора текста одного из открытых модулей. Список всех модулей, доступных в приложении, можно вызвать с помощью кнопки View Unit на панели инструментов или пункта меню View\Units. В нижней части Окна редактора отображается также информация компилятора (сообщения об ошибках, обнаруженных на этапе компиляции) и интегрированного отладчика. Окно редактора является многостраничным. Если проект содержит несколько модулей, редактор обеспечивает доступ и работу с каждым из них. Переход от модуля к модулю осуществляется с помощью закладок, расположенных в верхней части Окна редактора или команды подменю View\Units.
Для разработки конкретно своей программы я использовала такие компоненты Delphi, как:
- Label - метка для вывода текста. С помощью этого компонента я оформила 1-ую форму, которая является у меня титульной. Оформление заключается в заголовке «Курсовая работа», теме на которую она написана, а также выполнена. Также компонент Label используется на 3-ей форме, с помощью которого я описала все события поставленной задачи. Для вывода текста на метку в две и более строк я установила ее свойство WordWrap = True, а для выравнивания текста внутри компонента свойство Alignment.
- Button - кнопка, которая расположена на каждой форме и в разном количестве. Эти кнопки я использовала для перехода между формами, для выхода из запущенной программы, для расчета формул, для просмотра условия задачи и графика, а также вывода комментарий по расчету формул.
- StringGrid - компонент, который представляет собой таблицу для отображения данных в виде строк и столбцов. Таких компонентов я использовала два на 2-ой форме.
StringGrid2 состоит из 4 столбцов и 11 строк, в которых я вывела порядковый номер и подсчитала временные параметры работ и их резервы времени, из результата которых нашла критический путь. А StringGrid1 состоит из 7 столбцов и 12 строк, в которых я вывела порядковый номер события, работу, время совершения работы, а также подсчитала временные параметры событий.
- Image - компонент изображения, с помощью которого поместила на 3-ю форму рисунок сетевого графика данной задачи, который перед этим сохранила в блокноте с расширением .bmp и открыла с помощью свойства этого компонента Picture.
- OleContainer - для помещения на 5-ую и 6-ую формы комментарий с формулами и решением по расчету данной задачи.
2. СПЕЦИАЛЬНЫЙ РАЗДЕЛ
2.1 Постановка задачи
Для следующих задач составить сценарий, по нему построить сетевой график, вычислить временные параметры событий и работ и определить критический путь. Составить программу решения задачи в среде Delphi. Произвести расчет временных параметров с использованием пакета Excel:
Вариант 9. Минимизация транспортных расходов при перевозе груза со станций отправления грузовых поездов
2.2 Решение задачи
На трех станциях отправления имеются соответственно 50, 30 и 20 единиц однородного груза который нужно доставить в три пункта назначения в количестве соответственно 30,40 и 30 единиц.
Стоимости перевозок и составляло
С11=4 С12=1 С13=2
С21=3 С22=7 С23=5
С31=5 С32=6 С33=1
Найти такой план перевозок, чтобы общая стоимость всех перевозок была минимальна.
Пусть имеется m=3 станций А1,А2,А3 и n=3 потребителей В1,В2,В3.
На первой станции кол-во груза а1=50, на второй станции кол-во груза а2=30, на третей станции кол-во груза а3=20.
Потребность в грузе в1=30, в2=40, в3=30.
1) а1+а2+а3=50+30+40+20=100
в1+в2+в3=30+40+30=100
?а=?в
100=100
Задача является сбалансированной. Модель закрытая.
Xij - кол-во груза перевозимого от i-станций, к j- потребителей
CijXij - транспортные расходы при перевозки груза от i-n к j-потребителей
C11X11=8*X11
Целевая функция:
F=4X11+X12+2X13+3X21+7X22+5X23+5X31+6X32+X33>min
X11+X12+X13 =50 X11+ X21 + X31=30
X21+X22+X23=30 X12+ X22 + X32=40
X31+X32+X33=20 X13+ X23 + X33=30
X11?0 X12?0 X13 ?0 X21?0 X22?0 X23?0 X31?0 X32?0 X33?0
Метод минимального элемента. Начинаем с min стоимости
|
30 |
40 |
3010 |
|||||
|
50 10 |
4 |
40 |
1 |
10 |
2 |
||
|
30 |
30 |
3 |
7 |
5 |
|||
|
20 |
5 |
6 |
20 |
1 |
|||
X12= min{ а1; в2}= min {50;40}= min 40
а1> в1 то первый столбец вычеркиваем
X33= min{ а3; в3}= min {20;30}= min 20
а3< в3 то первой вычеркиваем строку
X13 = min{ а1; в3}= min {10;10}= min 10
а1= в1
X21= min 30
X12 =40
X33 =20 базисные переменные
X13 =10
X21=30
X11=0
X22=0
X23=0 не базисные переменные
X31=0
X32=0
F=4*0+40+2*10+3*30+7*0+5*0+5*0+6*0+20=40+20+90+20=170
Ответ: Минимальные транспортные расходы F=170
при X12 =40 X33 =20 X13 =10 X21=30
Метод северо-западного угла
|
30 |
40 20 |
30 20 |
||||||
|
50 20 |
30 |
4 |
20 |
1 |
2 |
|||
|
30 10 |
3 |
20 |
7 |
10 |
5 |
|||
|
20 |
5 |
6 |
20 |
1 |
||||
X11= min{ а1; в1}= min {50;30}= min 30
а1> в1 то первый столбец вычеркиваем
X12= min{ а1; в2}= min {20;40}= min 20
а1< в2 то первой вычеркиваем строку
X22 = min{ а2; в2}= min {30;20}= min 20
а2> в2 то первый столбец вычеркиваем
X23= min{ а2; в3}= min {10;30}= min 10
а2< в3 то первой вычеркиваем строку
X33=20
X11 =30
X12 =20
X22 =20 базисные переменные
X23=10
X33 =20
X13 =0
X21=0 не базисные переменные
X31 =0
X32=0
F=4X11+X12+2X13+3X21+7X22+5X23+5X31+6X32+X33>min
F=4*30+20+2*0+3*0+7*20+5*10+5*0+6*0+20=120+20+140+50+20=350
|
30 |
40 |
30 |
||||||
|
50 |
30 |
4 |
20 |
1 |
-1 |
2 |
u1= 0 |
|
|
30 |
10 |
3 |
20 |
7 |
10 |
5 |
u2= 6 |
|
|
20 |
6 |
5 |
3 |
6 |
20 |
1 |
u3= 2 |
|
|
v1=4 |
v2=1 |
v3=-1 |
u1+v1=4 u1=0 v1=4
u1+v2=1 v2=1
u2+v2=7 u2+1=7 u2=7-1=6
u2+v3=5 6+v3=5 v3=5-6=-1
u3+v3=1 u3+(-1)=1 u3=2
C'13= u1+ v3=0+(-1)= -1
C'21= u2+ v1=6+4=10
C'31= u3+ v1=2+4=6
C'32= u3+ v2=2+1=3
C'13-C13=0+(-1)= -1
C'21-C21=6+4=10>0
C'31-C31=2+4=6>0
C'32-C32=2+1=3
так как два результата больше 0 решение не является оптимальным
Х21=0 + 20=20
Х11=30 - 20=10
Х12=20 + 20=40
Х22=20 - 20=0
|
30 |
40 |
30 |
||||||
|
50 |
10 |
4 |
40 |
1 |
6 |
2 |
u1= 0 |
|
|
30 |
20 |
3 |
0 |
7 |
10 |
5 |
u2= -1 |
|
|
20 |
-1 |
5 |
-4 |
6 |
20 |
1 |
u3= -5 |
|
|
v1=4 |
v2=1 |
v3=6 |
u1+v1=4 u1= 0 v1= 4
u1+v2=1 v2=1
u2+v1=3 u2= -1
u2+v3=5 v3= 6
u3+v3=1 u3= -5
F=4*10+40+2*0+3*20+7*0+5*10+5*0+6*0+20=40+40+60+20+50=210
C'13= u1+ v3=6 C'13-C13=-6-2=4>0
C'22= u2+ v2=0 C'21-C21=0-7= -7
C'31= u3+ v1= -1 C'31-C31= -1-5= -6
C'32= u3+ v2= -4 C'32-C32= -4-6= -10
Х13=0 + 10=10
Х11=20 - 10=0
Х21=20 + 10=30
Х23=10 - 10=0
|
30 |
40 |
30 |
||||||
|
50 |
0 |
4 |
40 |
1 |
10 |
2 |
u1= 0 |
|
|
30 |
30 |
3 |
0 |
7 |
1 |
5 |
u2= -1 |
|
|
20 |
3 |
5 |
0 |
6 |
20 |
1 |
u3= -1 |
|
|
v1=4 |
v2=1 |
v3=2 |
u1+v1=4 u1= 0 v1= 4
u1+v2=1 v2=1
u1+v3=3 v3= 2
u2+v1=5 u2= -1
u3+v3=1 u3= -1
C'22= u2+ v2=0 C'22-C22=-0-7= -7
C'23= u2+ v3=1 C'23-C23=1-5= -4
C'31= u3+ v1= 3 C'31-C31= 3-5= -2
C'32= u3+ v2= 0 C'32-C32= 0-6= -6
F=0+40+2*10+3*30+0+0+0+20=170
Ответ: Минимальные транспортные расходы F=170
при X12 =40 X33 =20 X13 =10 X21=30
2.3 Описание алгоритма
2.4 Инструкция пользователя
Загрузите двойным кликом мышки программ;
Ознакомьтесь с Формой 1 и нажмите Далее;
Ознакомьтесь с Формой 2 и при нажатии кнопки вычислить выыодится результат;
Ознакомьтесь с Формой 3при нажатии кнопки решение северо-западного угла появляется форма 3. при нажатии кнопки вычислить выводится результат:
При нажатии кнопки пояснение появляется форма 6.
при нажатии на второй форме кнопку решение через появится форма5
При нажатии кнопки математическая модель выводится форма 4
ЗАКЛЮЧЕНИЕ
При разработке курсовой работы, я достигла поставленной цели. Разработала программу, которая позволяет решить данную мне задачу, в соответствии с выданным вариантом. В процессе разработки программного продукта вспомнила все этапы решения данной задачи. Повторила изученные навыки и стили программирования, которые использовала для оформления дизайна программного интерфейса. В отчете, в котором описала весь порядок выполнения курсовой работы и раскрыла поставленную тему, использовала ГОСТы, таким образом отчет написан в соответствии со всеми стандартами ИСО
ПРИЛОЖЕНИЕ
Листинги текстов модулей
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4},
Unit5 in 'Unit5.pas' {Form5},
Unit6 in 'Unit6.pas' {Form6};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm6, Form6);
Application.Run;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Label3: TLabel;
Label9: TLabel;
BitBtn1: TBitBtn;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
// Form2: TForm2;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.show;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, OleCtnrs, StdCtrls, Buttons;
type
TForm2 = class(TForm)
StringGrid2: TStringGrid;
StringGrid1: TStringGrid;
Label1: TLabel;
OleContainer1: TOleContainer;
Button2: TButton;
Button3: TButton;