Руководство пользователя к разработанному решению

Программа "Максимизации капиталовложений" предназначена для вычисления максимально возможного суммарного прироста прибыли всех предприятий (субъектов), прироста прибыли каждого предприятия, а также количества ресурсов, которые необходимо выделить каждому предприятию, чтобы суммарный прирост прибыли был максимальным.

Для работоспособности данного приложения вы должны обладать следующим перечнем программных и технических средств:

· ПК на базе процессора Intel, AMD;

· Оперативная память 128 МБ;

· Видео: совместимая VGA видеокарта;

· Операционная система Windows XP/Windows7;

· Клавиатура, мышь;

· Microsoft.NET Framework 3.0;

Для начала работы с программой запустите файл RZMK.exe. Далее вы должны заполнить пустые поля на форме данными.

Руководство пользователя к разработанному решению - student2.ru

Рисунок 17 «Главная форма приложения»


Для проведения операций над введенными данными необходимо воспользоваться кнопками (Рис.19):
- Результат - программа вычисляет и выводит результат.
- Сброс - очищает поля от введенных значений и ответа.
- Файл - Пример - автоматически заполняет поля вложения ресурсов и их распределения тестовыми значениями.
- О программе - вызывает информацию о программе и его разработчике

Руководство пользователя к разработанному решению - student2.ru

Рисунок 19 "Кнопки"

После нажатия кнопки "Рассчитать" программа выдает результаты максимального суммарного прироста прибыли, прирост прибыли на каждом предприятии и количество необходимых ресурсов (Рис.20), .

Руководство пользователя к разработанному решению - student2.ru

Рисунок 20 "Максимальный прирост прибыли и прирост прибыли и выделенные ресурсы на предприятиях "

Алгоритм решений унифицированной задачи

Начало
Выбор действия
Выбор действия
Конец
Ввод данных
Помощь
Тестовое задание  
  Решение
Вывод результата

Рисунок 24 «Алгоритм решения унифицировнанной задачи»

Заключение

В ходе разработки курсового проекта мной была рассмотрена и изучена задача о максимизации капиталовложений, что такое задача о максимизации капиталовложений и где она применяется.

Список литературы

1. Кузнецов А.М., Сакович В.А, Холод И.И. Высшая математика. Математическое программирование. Минск, Высшая школа, 2001.

2. Федосеев В.В. и др. Экономико-математические методы и прикладные модели: Учебное пособие для ВУЗов. – М:. Юнити, 2002.

3. Шикин Е.А., Чхартишвили А.Г. Математические методы и модели в управлении – М:. Дело 2000.

Приложение

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, Math, ExtCtrls, Menus, ShellAPI;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

Button1: TButton;

Button2: TButton;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

MasSum:Array[0..5,0..5] of Integer; // Массив для хранение суммы

MasMax:Array[1..5,1..5] of Integer; // Массив для хранение максимальных чисел

Cells:Array[0..20] of TPoint; // Массив точек (записи координат максимальных чисел)

L:Integer;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

var

myRect: TGridRect;

I:Integer;

begin

// Смещаем фокус (выделение)

with myRect do

begin

Left:=-1;

Top:=-1;

Right:=-1;

Bottom:=-1;

end;

StringGrid1.Selection:=myRect;

// Заполняем заголовки таблицы

with StringGrid1 do

begin

Cells[0,0]:='U';

for I:=1 to 5 do

begin

Cells[0,I]:='L'+IntToStr(I)+'(U)';

Cells[I,0]:=IntToStr(I-1);

end;

end;

end;

// Процедура для подсчета суммы

procedure Sum();

var

I, J: Integer;

begin

For I:=1 to 5 do

For J:=1 to 5 do

MasSum[I,J]:=MasSum[I,0] + MasSum[0,J];

end;

// Процедура для нахождние максимальных чисел (диагонали)

// и записи координат в массив

procedure Max();

var

I,J,iMax,jMax:Integer;

C:TPoint;

begin

iMax:=0; jMax:=0;

For I:=5 downto 1 do

begin

MasMax[I,1]:=MasSum[1,I];

For J:=I downto 1 do

If MasSum[I-J+1,J] >= MasMax[I,1] then

begin

MasMax[I,1]:=MasSum[I-J+1,J];

iMax:=I-J+1;

jMax:=J;

MasMax[I,2]:=J-1; // В какой строке найдено максимальное знач.

end;

C.X:=jMax; C.Y:=iMax; // Координаты максимальных значений

Cells[L]:=C;

L:=L+1;

end;

end;

// Сбрасываем введенные нами значения

procedure TForm1.Button1Click(Sender: TObject);

var

I,J: Integer;

begin

For I:=1 to 5 do

For J:=1 to 5 do

Form1.StringGrid1.Cells[I,J]:='';

Form2.Close;

end;

// Процедура подсчета итераций

// Вывод результата в таблицы

procedure TForm1.Button2Click(Sender: TObject);

var

I,J,K,C,P:Integer;

begin

Form2.Show;

L:=0; C:=0; P:=2;

while C<=6 do

begin

K:=1;

For I:=1 to 5-K+1 do

begin

For J:=1 to 5-K+1 do

begin

If C=0 then MasSum[I,0]:=StrToInt(StringGrid1.Cells[I,1])

else MasSum[I,0]:=StrToInt((Form2.Components[C-1] as TStringGrid).Cells[I,1]);

MasSum[0,J]:=StrToInt(StringGrid1.Cells[J,P]);

(Form2.Components[C] as TStringGrid).Cells[I,0]:=IntToStr(MasSum[I,0]);

(Form2.Components[C] as TStringGrid).Cells[0,J]:=IntToStr(MasSum[0,J]);

Sum();

(Form2.Components[C] as TStringGrid).Cells[I,J]:=IntToStr(MasSum[I,J]);

(Form2.Components[C+1] as TStringGrid).Cells[I,0]:=IntToStr(K-1);

end;

K:=K+1;

end;

Max();

for I:=1 to 5 do

begin

(Form2.Components[C+1] as TStringGrid).Cells[I,1]:=IntToStr(MasMax[I,1]);

(Form2.Components[C+1] as TStringGrid).Cells[I,2]:=inttostr(MasMax[I,2]);

(Form2.Components[C+1] as TStringGrid).Cells[0,0]:='E';

(Form2.Components[C+1] as TStringGrid).Cells[0,1]:='F'+IntToStr(P)+'(E)';

(Form2.Components[C+1] as TStringGrid).Cells[0,2]:='X'+IntToStr(P)+'(E)';

end;

C:=C+2;

P:=P+1;

end;

Form2.StringGrid1.Invalidate;

// z(max)

Form2.LabeledEdit1.Text:=' '+Form2.StringGrid8.Cells[5,1];

// x5

Form2.LabeledEdit6.Text:=' '+Form2.StringGrid8.Cells[5,2];

// x4

Form2.LabeledEdit5.Text:=' '+Form2.StringGrid6.Cells[4-

StrToInt(Form2.LabeledEdit6.Text)+1,2];

// x3

Form2.LabeledEdit4.Text:=' '+Form2.StringGrid4.Cells[4-

StrToInt(Form2.LabeledEdit6.Text)-StrToInt(Form2.LabeledEdit5.Text)+1,2];

// x2

Form2.LabeledEdit3.Text:=' '+Form2.StringGrid2.Cells[4-

StrToInt(Form2.LabeledEdit6.Text)-

StrToInt(Form2.LabeledEdit5.Text)-

StrToInt(Form2.LabeledEdit4.Text)+1,2];

// x1

Form2.LabeledEdit2.Text:=' '+IntToStr(4-

StrToInt(Form2.LabeledEdit6.Text)-

StrToInt(Form2.LabeledEdit5.Text)-

StrToInt(Form2.LabeledEdit4.Text)-

StrToInt(Form2.LabeledEdit3.Text));

end;

// Кнопка "Решить"

procedure TForm1.N2Click(Sender: TObject);

begin

Form1.Button2.Click;

end;

// Кнопка "Мой пример"

procedure TForm1.N3Click(Sender: TObject);

var

I:Integer;

begin

with StringGrid1 do

begin

for I:=1 to 5 do Cells[1,I]:=IntToStr(0);

Cells[2,1]:='5'; Cells[4,1]:='11';

Cells[2,2]:='3'; Cells[4,2]:='5';

Cells[2,3]:='7'; Cells[4,3]:='10';

Cells[2,4]:='4'; Cells[4,4]:='12';

Cells[2,5]:='3'; Cells[4,5]:='7';

Cells[3,1]:='9'; Cells[5,1]:='12';

Cells[3,2]:='4'; Cells[5,2]:='10';

Cells[3,3]:='9'; Cells[5,3]:='11';

Cells[3,4]:='8'; Cells[5,4]:='14';

Cells[3,5]:='5'; Cells[5,5]:='9';

end;

end;

// Кнопка "Сброс"

procedure TForm1.N4Click(Sender: TObject);

begin

Form1.Button1.Click;

end;

// Кнопка "Выход"

procedure TForm1.N5Click(Sender: TObject);

begin

Form1.Close;

Form2.Close;

end;

// О программе

procedure TForm1.N6Click(Sender: TObject);

begin

ShowMessage('Программа предназначена для решения задачи' + chr(13) +

'максимизации капатиловложений' + chr(13) + chr(13) +

'Разработал студент группы 10п-1' + chr(13) +

'Урусов Алексей' + chr(13) + chr(13) +

'УАвиаК, 2013г.');

end;

end.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, Math, StdCtrls, ExtCtrls, jpeg, ColorGrd, Buttons,

ImgList;

type

TForm2 = class(TForm)

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

StringGrid4: TStringGrid;

StringGrid5: TStringGrid;

StringGrid6: TStringGrid;

StringGrid7: TStringGrid;

StringGrid8: TStringGrid;

LabeledEdit1: TLabeledEdit;

LabeledEdit2: TLabeledEdit;

LabeledEdit3: TLabeledEdit;

LabeledEdit4: TLabeledEdit;

LabeledEdit5: TLabeledEdit;

LabeledEdit6: TLabeledEdit;

StaticText1: TStaticText;

StaticText2: TStaticText;

StaticText3: TStaticText;

StaticText4: TStaticText;

procedure SG_OnDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

// Процедура для закрашивание максимальных элементов

// по найденным координатам

procedure TForm2.SG_OnDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

var

I,F,N:Integer;

Change:Boolean;

begin

F:=0; N:=0;

while F<=6 do

begin

Change:=False;

For I:=N to N+4 do

begin

If (ACol = Cells[i].Y) and (ARow = Cells[i].X) then

begin

Change:=True;

Break

end;

end;

If Change then

begin

(Components[f] as TStringGrid).Canvas.Brush.Color:=clRed;;

(Components[f] as TStringGrid).Canvas.FillRect(Rect);

(Components[f] as TStringGrid).Canvas.TextOut(Rect.Left, Rect.Top, (Components[f] as TStringGrid).Cells[ACol, ARow]);

end;

N:=N+5;

F:=F+2;

end;

end;

// Процедруа для смещений фокуса (выделения)

procedure TForm2.FormCreate(Sender: TObject);

var

myRect:TGridRect;

C:Integer;

begin

with myRect do begin

Left:=-1;

Top:=-1;

Right:=-1;

Bottom:=-1;

end;

for C:=1 to 8 do

(Form2.FindComponent('StringGrid'+IntToStr(C)) as TStringGrid).Selection:=myRect;

end;

end.

Наши рекомендации