
- •Содержание
- •Введение
- •Аналитическая часть
- •Описание и постановка задачи
- •Описание и анализ математической модели
- •Обоснование выбора инструментальных средств
- •Требования к защите информации
- •Перечень и описание входных данных
- •Руководство к использованию
- •Результаты экспериментальной проверки
- •Охрана труда и техники безопасности
- •Заключение
- •Список используемой литературы.
- •Приложение а
- •Приложение в
Заключение
В курсовом проекте были рассмотрены следующие вопросы:
-
Разработан алгоритм метода решения поставленной задачи;
-
Написанная программа, пригодная для использования
Задачей данного курсового проекта являлось разработать программный продукт «Решение транспортной задачи методом минимальной стоимости» с использованием таблиц в Delphi.
Для достижения данной цели в первом разделе курсового проекта была дана теория решения данной задачи, которой подчиняется данный курсовой проект.
Во второй части курсового проекта изложено описание программной реализации данной задачи, функциональные возможностей программы, требования к работе с программным продуктом и руководство к загрузке и эксплуатации
Как известно, по степени развития утомления работа на ЭВМ стоит на втором месте после работы водителей автобусов. Поэтому для обеспечения безопасности работы с видеотерминалами необходимо проследить соответствие условий работы нормам безопасности. Критерии данного исследования изложены в третьем разделе пояснительной записки, касающемся вопросов охраны труда.
Список используемой литературы.
1
2
3
4
5
Приложение а
Рисунок 1 – Вход в программу
Рисунок 2 – Рабочее окно
Рисунок 3 – Заполнение случайными числами
Рисунок 4 – Заполнение вручную
Рисунок 5 – Принятие данных
Рисунок 6 – Обработка открытой формы условий транспортной задачи
Рисунок 7 – Результат
Приложение в
unit Unit1_1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, Buttons, Menus;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
StringGrid2: TStringGrid;
Edit3: TEdit;
Label3: TLabel;
GroupBox1: TGroupBox;
Button4: TButton;
CheckBox1: TCheckBox;
Button5: TButton;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N4: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
PopupMenu1: TPopupMenu;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Button4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
n,m,s1,s2:integer;
ishod:array [1..100,1..100] of integer;
zap,potr:array [1..100] of integer;
s,o,q:string;
activ:integer;
VHODIM:boolean;
{ Public declarations }
end;
var
Form1: TForm1;
ac1,ac2:boolean;
implementation
uses Unit2, Unit5, Unit4;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var s1,s2,i,j,a,b:integer; s:string;
begin
Edit1.Enabled:=false;
Edit2.Enabled:=false;
Label1.Enabled:=false;
Label2.Enabled:=false;
Label3.Enabled:=true;
Edit3.Enabled:=true;
BitBtn1.Enabled:=true;N8.Enabled:=true;N13.Enabled:=true;
CheckBox1.Enabled:=false;
N5.Enabled:=false;
n:=strtoint(Edit1.Text);
m:=strtoint(Edit2.Text);
StringGrid1.ColCount:=m+2;
StringGrid1.RowCount:=n+2;
StringGrid1.FixedCols:=1;
StringGrid1.FixedRows:=1;
StringGrid1.FixedColor:=clmenu;
StringGrid2.ColCount:=m+1;
StringGrid2.RowCount:=n+1;
StringGrid2.FixedCols:=1;
StringGrid2.FixedRows:=1;
StringGrid2.FixedColor:=clmenu;
for i:=1 to n do
for j:=1 to m do
ishod[i,j]:=random(50);
while s<>'2' do
begin
for i:=1 to n do begin
a:= random(300);
s1:=s1+a;
zap[i]:=a;
StringGrid1.Cells[m+1,i]:=inttostr(zap[i]);
end;
for j:=1 to m do begin
b:= random(300);
s2:=s2+b;
potr[j]:=b;
StringGrid1.Cells[j,n+1]:=inttostr(potr[j]);
end;
if s1=s2 then s:='2' else
s1:=0; s2:=0;
end;
for i:=1 to m do begin
s:=inttostr(i);
StringGrid1.Cells[i,0]:='Пункт назначения'+s;
end;
for j:=1 to n do begin
s:=inttostr(j);
StringGrid1.Cells[0,j]:='Пункт отправления'+s;
end;
StringGrid1.Cells[m+1,0]:='Запасы';
StringGrid1.Cells[0,n+1]:='Потребности';
for i:=1 to n do
for j:=1 to m do
StringGrid1.Cells[j,i]:=inttostr(ishod[i,j]);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close;
form2.close;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9',#8: ; // цифры и <Backspase>
#13: Edit2.SetFocus; // клавиша <Enter>
else Key := Chr(0);
end;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9',#8: ; // цифры и <Backspase>
#13: Edit2.SetFocus; // клавиша <Enter>
else Key := Chr(0);
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
var i,j:integer;
begin
CheckBox1.Enabled:=false;
Button1.Enabled:=false; N11.Enabled:=false;
Button5.Enabled:=true;N7.Enabled:=true;N18.Enabled:=true;
N6.Enabled:=false;
n:=strtoint(Edit1.Text);
m:=strtoint(Edit2.Text);
StringGrid1.ColCount:=m+2;
StringGrid1.RowCount:=n+2;
StringGrid1.FixedCols:=1;
StringGrid1.FixedRows:=1;
StringGrid1.FixedColor:=clmenu;
StringGrid2.ColCount:=m+1;
StringGrid2.RowCount:=n+1;
StringGrid2.FixedCols:=1;
StringGrid2.FixedRows:=1;
StringGrid2.FixedColor:=clmenu;
for i:=1 to m do begin
s:=inttostr(i);
StringGrid1.Cells[i,0]:='Пункт назначения'+s;
end;
for j:=1 to n do begin
s:=inttostr(j);
StringGrid1.Cells[0,j]:='Пункт отправления'+s;
end;
StringGrid1.Cells[m+1,0]:='Запасы';
StringGrid1.Cells[0,n+1]:='Потребности';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Enabled:= false;N11.Enabled:=false;
Button4.Enabled:= false;N17.Enabled:=false;
Button5.Enabled:= false;N7.Enabled:=false;N18.Enabled:=false;
BitBtn1.Enabled:= false;N8.Enabled:=false; N13.Enabled:=false;
CheckBox1.Enabled:= false;
Edit3.Enabled:= false;
Label3.Enabled:= false;
StringGrid1.Enabled:= false;
StringGrid2.Enabled:= false;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
if (length(Edit1.Text)<>0) and (length(edit2.Text)<>0) then begin
ac1:=true;Button1.Enabled:= true;CheckBox1.Enabled:= true;
StringGrid1.Enabled:=true;StringGrid2.Enabled:=true;
N5.Enabled:=true;N4.Enabled:=true; N11.Enabled:=true;
end else begin
ac1:=false;Button1.Enabled:= false;CheckBox1.Enabled:= false;
StringGrid1.Enabled:=false;StringGrid2.Enabled:=false;
N5.Enabled:=false;N4.Enabled:=false; N11.Enabled:=false;
end;
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
if (length(Edit1.Text)<>0) and (length(edit2.Text)<>0) then begin
ac1:=true;Button1.Enabled:= true;CheckBox1.Enabled:= true;
StringGrid1.Enabled:=true;StringGrid2.Enabled:=true;
N5.Enabled:=true;N4.Enabled:=true;N11.Enabled:=true;end
else begin
ac1:=false;Button1.Enabled:= false;CheckBox1.Enabled:= false;
StringGrid1.Enabled:=false;StringGrid2.Enabled:=false;
N5.Enabled:=false;N4.Enabled:=false; N11.Enabled:=false;
end;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
StringGrid1.Options:=[goEditing];
activ:=activ+1;
Edit1.Enabled:=false;
Edit2.Enabled:=false;
Label1.Enabled:=false;
Label2.Enabled:=false;
N6.Enabled:=true;
if CheckBox1.Checked=true then begin
if ac1=true then begin
Button4.Enabled:=true;N6.Enabled:=true;N17.Enabled:=true;
Button1.Enabled:=false;N4.Enabled:=false;N11.Enabled:=false;
end;
end else begin
Button4.Enabled:=false;N6.Enabled:=false;N17.Enabled:=false;
Button1.Enabled:=true;N4.Enabled:=true;N11.Enabled:=true;
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
var i,j,Jenya:integer;
begin
Jenya:=0;
for i:=1 to n+1 do
for j:=1 to m+1 do
if StringGrid1.Cells[j,i]<>'' then Jenya:=Jenya+1;
if Jenya=(((n+1)*(m+1))-1) then begin
BitBtn1.Enabled:=true; N8.Enabled:=true; N13.Enabled:=true;
Label3.Enabled:=true;
Edit3.Enabled:=true;
Button4.Enabled:=false; N8.Enabled:=true;N17.Enabled:=false;
N6.Enabled:=false;
N5.Enabled:=false;
n:=strtoint(Edit1.Text);
m:=strtoint(Edit2.Text);
s1:=0;s2:=0;
for i:=1 to n do begin
s1:=s1+strtoint(StringGrid1.Cells[m+1,i]);
end;
for j:=1 to m do begin
s2:=s2+strtoint(StringGrid1.Cells[j,n+1]);
end;
if s1<>s2 then begin
{showmessage('Для решения данной задачи необходимо, чтобы суммы запасов и потребностей совпадали');
exit;}form5.Show;
end else begin
for i:=1 to n do
for j:=1 to m do
ishod[i,j]:=strtoint(StringGrid1.Cells[j,i]);
for j:=1 to m do begin
potr[j]:=strtoint(StringGrid1.Cells[j,n+1]);
end;
for i:=1 to n do begin
zap[i]:=strtoint(StringGrid1.Cells[m+1,i]);
end;
Button5.Enabled:=false;N7.Enabled:=false;N18.Enabled:=false;
showmessage('Все введенные Вами данные приняты программой');
exit;
end;
end else begin
ShowMessage('Введите записи во все поля таблицы!!!');
exit;
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var spez:array[1..100,1..100]of integer;
i,j,dx,min,max,sh,str,stl,k,l,i1,stoim,dlas1:integer;
vyh:boolean; mar:string;
begin
StringGrid2.Cells[0,0]:='Еденица продукции';
for i:=1 to n do
for j:=1 to m do
StringGrid2.Cells[j,i]:=inttostr(0);
for i:=1 to n do
for j:=1 to m do
spez[i,j]:=ishod[i,j];
vyh:=false;
while vyh<>true do
begin
dx:=0; sh:=0;max:=0; min:=0;
for i:=1 to n do
for j:=1 to m do
if spez[i,j]=(-1) then dx:=dx+1;
if dx=m*n then vyh:=true;
if dx<(m*n) then
begin
for i:=1 to n do
for j:=1 to m do
if spez[i,j]<>(-1) then min:=spez[i,j];
for i:=1 to n do
for j:=1 to m do
if (spez[i,j]<>(-1))and(spez[i,j]<min) then min:=spez[i,j];
for i:=1 to n do
for j:=1 to m do
if spez[i,j]=min then sh:=sh+1;
if sh=1 then
begin
for i:=1 to n do
for j:=1 to m do
if spez[i,j]=min then
begin
str:=i;
stl:=j;
end;
end;
if sh>1 then
begin
for i:=1 to n do
for j:=1 to m do
if spez[i,j]=min then
begin
for k:=1 to n do
if (k<>i)and(spez[k,j]>max) then
begin
max:=spez[k,j];
str:=i;
stl:=j;
end;
for l:=1 to m do
if (l<>j)and(spez[i,l]>max) then
begin
max:=spez[i,l];
str:=i;
stl:=j;
end;
end;
end;
if zap[str]<potr[stl] then
begin
StringGrid2.Cells[stl,str]:=inttostr(zap[str]);
potr[stl]:=potr[stl]-zap[str];
zap[str]:=0;
for i1:=1 to m do
spez[str,i1]:=-1;
end;
if potr[stl]<zap[str] then
begin
StringGrid2.Cells[stl,str]:=inttostr(potr[stl]);
zap[str]:=zap[str]-potr[stl];
potr[stl]:=0;
for i1:=1 to n do
spez[i1,stl]:=-1;
end;
if zap[str]=potr[stl] then
begin
StringGrid2.Cells[stl,str]:=inttostr(zap[str]);
potr[stl]:=0;
zap[str]:=0;
for i1:=1 to n do
spez[i1,stl]:=-1;
for i1:=1 to m do
spez[str,i1]:=-1;
end;
end;
end;
stoim:=0;
for i:=1 to n do
for j:=1 to m do
begin
stoim:=stoim+(strtoint(StringGrid2.Cells[j,i])*ishod[i,j]);
end;
inttostr(stoim);
Edit3.Text:=inttostr(stoim);
Button1.Enabled:=false;N4.Enabled:=false; N11.Enabled:=false;
BitBtn1.Enabled:=false;N8.Enabled:=false; N13.Enabled:=false;
BitBtn2.Enabled:=true;N9.Enabled:=true; N14.Enabled:=true;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
var i,j:integer;
begin
CheckBox1.Checked:=false;
BitBtn2.Enabled:=false;N9.Enabled:=false;N14.Enabled:=false;
for i:=1 to n do
for j:=1 to m do
Stringgrid2.Cells[j,i]:='';
for i:=1 to n+1 do
for j:=1 to m+1 do
Stringgrid1.Cells[j,i]:='';
Label1.Enabled:=true;
Label2.Enabled:=true;
Edit1.Enabled:=true;
Edit2.Enabled:=true;
Edit1.Text:='';
Edit2.Text:='';
m:=0;
n:=0;
activ:=0;
StringGrid1.ColCount:=1;
StringGrid1.RowCount:=1;
StringGrid2.ColCount:=1;
StringGrid2.RowCount:=1;
StringGrid2.Cells[0,0]:='';
Label3.Enabled:=false;
Edit3.Text:='';
Edit3.Enabled:=false;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Mask,Registry, ExtCtrls;
type
TForm2 = class(TForm)
MaskEdit1: TMaskEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
StaticText1: TStaticText;
Bevel1: TBevel;
procedure BitBtn3Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
pass,newpass:STRING;
VHODIM:boolean;
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit3, Unit1_1, Unit4;
{$R *.dfm}
procedure TForm2.BitBtn3Click(Sender: TObject);
begin
Form2.Enabled:=False;
form3.Show;
end;
procedure TForm2.FormActivate(Sender: TObject);
begin
MaskEdit1.Text := '';
MaskEdit1.SetFocus;
with TRegistry.Create do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('Software', True);
if not KeyExists('MyProject') then CreateKey('MyProject');
OpenKey('MyProject', True);
if not ValueExists('Password') then begin
newpass := '';
WriteString('Password', newpass);
end
else
pass := ReadString('Password');
end;
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
if MaskEdit1.Text = pass then begin
{- ????? ?????? ????????, ??????? ??????????, ???? ?????? ?????? ????????? -}
Form4.Show;
Form2.Hide;
VHODIM:=true;
end
else MaskEdit1.SetFocus;
end;
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
Close;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask,Registry, ExtCtrls;
type
TForm3 = class(TForm)
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
MaskEdit3: TMaskEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Bevel1: TBevel;
procedure FormActivate(Sender: TObject);
procedure MaskEdit1KeyPress(Sender: TObject; var Key: Char);
procedure MaskEdit2KeyPress(Sender: TObject; var Key: Char);
procedure MaskEdit3KeyPress(Sender: TObject; var Key: Char);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
v:boolean;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm3.FormActivate(Sender: TObject);
begin
v:=False;
MaskEdit1.Text := '';
MaskEdit2.Text := '';
MaskEdit3.Text := '';
MaskEdit1.Enabled := true;
MaskEdit1.SetFocus;
MaskEdit2.Enabled := false;
MaskEdit3.Enabled := false
end;
procedure TForm3.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if (key = #13) and (MaskEdit1.Text = Form2.pass) then
begin
MaskEdit2.Enabled := true;
MaskEdit1.Enabled := false;
MaskEdit2.SetFocus;
end;
end;
procedure TForm3.MaskEdit2KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then begin
MaskEdit3.Enabled := true;
MaskEdit3.SetFocus;
MaskEdit2.Enabled := false;
end;
end;
procedure TForm3.MaskEdit3KeyPress(Sender: TObject; var Key: Char);
begin
if (key = #13) and (MaskEdit2.Text = MaskEdit3.Text) then begin
with TRegistry.Create do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('Software', True);
if not KeyExists('MyProject') then CreateKey('MyProject');
OpenKey('MyProject', True);
WriteString('Password', MaskEdit3.Text);
end;
v:=True;
Form3.Hide;
Form2.Enabled:=True;
end;
end;
procedure TForm3.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Canclose:=v;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm4 = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
sss:Boolean;
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses Unit1_1, Unit2;
{$R *.dfm}
var
Back, Picture: TBitMap; // фон и картинка
BackRct : TRect; // положение и размер области фона,
// которая должна быть восстановлена
x,y:integer; // текущее положение картинки
W,H: integer; // размеры картинки
procedure TForm4.FormCreate(Sender: TObject);
begin
{ Свойству AutoSize обязательно надо
присвоить значение False. Это можно
сделать во время создания формы.
}
sss:=False;
Image1.AutoSize := False;
// создать два объекта - битовых образа
Back := TBitmap.Create; // фон
Picture := TBitmap.Create; // картинка
// загрузить и вывести фон
Back.LoadFromFile('11.bmp');
Image1.Width := Back.Width;
Image1.Height := Back.Height;
Image1.Canvas.Draw(0,0,Back);
// загрузить картинку, которая будет двигаться
Picture.LoadFromFile('22.bmp');
W := Picture.Width;
H := Picture.Height;
// определим "прозрачный" цвет
Picture.Transparent := True;
// прозрачный цвет картинки определяет
// левый верхний пиксел картинки
Picture.TransParentColor := Picture.Canvas.Pixels[1,1];
// начальное положение картинки
x := -W;
y := 320;
// определим сохраняемую область фона
BackRct:=Bounds(x,y,W,H);
end;
procedure TForm4.Timer1Timer(Sender: TObject);
begin
if Form2.VHODIM=true then begin
// восстановлением фона удалим рисунок
Image1.Canvas.CopyRect(BackRct,Back.Canvas,BackRct);
x:=x+100;
if (x > Image1.Width)and(Form2.VHODIM=true)and (sss=false) then begin
Form1.Show;Form4.Hide;sss:=true;
end;
if x > Image1.Width then
x:=-W;
// определим сохраняемую область фона
BackRct:=Bounds(x,y,W,H);
// выведем рисунок
Image1.Canvas.Draw(x,y,Picture);
end;
end;
procedure TForm4.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
// освободим память, выделенную
// для хранения битовых образов
Back.Free;
Picture.Free;
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
Form1.Show;
form4.Hide;
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm5 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label1: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
sogl:boolean;
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses Unit1_1;
{$R *.dfm}
procedure TForm5.BitBtn1Click(Sender: TObject);
var i,j:integer;
begin
sogl:=true;
Form1.Button5.Enabled:=False;
Form1.N7.Enabled:=False;
Form1.N18.Enabled:=False;
if Form1.s1<Form1.s2 then begin
Form1.n:=Form1.n+1;
Form1.StringGrid1.ColCount:=Form1.m+2;
Form1.StringGrid1.RowCount:=Form1.n+2;
Form1.StringGrid1.FixedCols:=1;
Form1.StringGrid1.FixedRows:=1;
Form1.StringGrid1.FixedColor:=clmenu;
Form1.StringGrid2.ColCount:=Form1.m+1;
Form1.StringGrid2.RowCount:=Form1.n+1;
Form1.StringGrid2.FixedCols:=1;
Form1.StringGrid2.FixedRows:=1;
Form1.StringGrid2.FixedColor:=clmenu;
for i:=1 to Form1.m do begin
Form1.s:=inttostr(i);
Form1.StringGrid1.Cells[i,0]:='Пункт назначения'+Form1.s;
end;
for j:=1 to Form1.n do begin
Form1.s:=inttostr(j);
Form1.StringGrid1.Cells[0,j]:='Пункт отправления'+Form1.s;
end;
Form1.StringGrid1.Cells[Form1.m+1,0]:='Запасы';
Form1.StringGrid1.Cells[0,Form1.n+1]:='Потребности';
for j:=1 to Form1.m do begin
Form1.StringGrid1.Cells[j,Form1.n+1]:=Form1.StringGrid1.Cells[j,Form1.n];
Form1.StringGrid1.Cells[j,Form1.n]:='0';
end;
Form1.StringGrid1.Cells[Form1.m+1,Form1.n]:=inttostr(Form1.s2-Form1.s1);
Form5.Close;
end;
if Form1.s1>Form1.s2 then begin
Form1.m:=Form1.m+1;
Form1.StringGrid1.ColCount:=Form1.m+2;
Form1.StringGrid1.RowCount:=Form1.n+2;
Form1.StringGrid1.FixedCols:=1;
Form1.StringGrid1.FixedRows:=1;
Form1.StringGrid1.FixedColor:=clmenu;
Form1.StringGrid2.ColCount:=Form1.m+1;
Form1.StringGrid2.RowCount:=Form1.n+1;
Form1.StringGrid2.FixedCols:=1;
Form1.StringGrid2.FixedRows:=1;
Form1.StringGrid2.FixedColor:=clmenu;
for i:=1 to Form1.m do begin
Form1.s:=inttostr(i);
Form1.StringGrid1.Cells[i,0]:='Пункт назначения'+Form1.s;
end;
for j:=1 to Form1.n do begin
Form1.s:=inttostr(j);
Form1.StringGrid1.Cells[0,j]:='Пункт отправления'+Form1.s;
end;
Form1.StringGrid1.Cells[Form1.m+1,0]:='Запасы';
Form1.StringGrid1.Cells[0,Form1.n+1]:='Потребности';
for j:=1 to Form1.n do begin
Form1.StringGrid1.Cells[Form1.m+1,j]:=Form1.StringGrid1.Cells[Form1.m,j];
Form1.StringGrid1.Cells[Form1.m,j]:='0';
end;
Form1.StringGrid1.Cells[Form1.m,Form1.n+1]:=inttostr(Form1.s1-Form1.s2);
Form5.Close;
end;
for i:=1 to Form1.n do
for j:=1 to Form1.m do
Form1.ishod[i,j]:=strtoint(Form1.StringGrid1.Cells[j,i]);
for j:=1 to Form1.m do begin
Form1.potr[j]:=strtoint(Form1.StringGrid1.Cells[j,Form1.n+1]);
end;
for i:=1 to Form1.n do begin
Form1.zap[i]:=strtoint(Form1.StringGrid1.Cells[Form1.m+1,i]);
end;
end;
procedure TForm5.BitBtn2Click(Sender: TObject);
begin
close;
end;
end.