Автор работы: Пользователь скрыл имя, 17 Марта 2010 в 20:23, Не определен
ВВЕДЕНИЕ
1.АНАЛИТИЧЕСКАЯ ЧАСТЬ
1.1.Описание и постановка задачи
1.2. Описание и анализ математической модели
1.3.Обоснование выбора инструментальных средств
2. ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ
2.1. Назначение и цель создания
2.2. Требования к системе
2.2.1 Требования к функциям системы
2.2.2.Требования к интерфейсу пользователя
2.2.3.Требования к защите информации
2.3.Перечень и описание входных данных
2.4.Руководство к использованию и эксплуатации
2.5.Результаты экспериментальной проверки
3.Охрана труда и техника безопасности
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМой литературы
ПРИЛОЖЕНИЯ
В процессе выполнения курсового проекта была написана программа для решения транспортной задачи методом Фогеля, с использованием ЭВМ. Был глубоко изучен язык программирования DELPHI, многие его компоненты и закреплены навыки объектно-ориентированного программирования. Так же была изучена тема «Решение транспортной задачи методом Фогеля».
Курсовой
проект состоит из двух частей – пояснительной
записки, в корой рассмотрены все теоретические
сведения, и программы, позволяющей автоматизировать
процесс построения опорного плана методом
Фогеля.
1. Исследование операций под редакцией Кремера
2. А.И. Ларионов, А.В. Юрченко – Экономико-математические методы в планировании
3. Н.Ш. Кремер - Математическое моделирование и модели в планировании
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TForm3 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit1, Unit5;
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
form3.Hide;
form1.show;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
Close;end;
procedure TForm3.Button3Click(Sender: TObject);
begin
Application.HelpContext(0);
end;end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, ExtCtrls, Buttons, ShellAPi, ComCtrls, jpeg;
type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;
Button2: TButton;
StringGrid2: TStringGrid;
StringGrid1: TStringGrid;
StringGrid3: TStringGrid;
Button4: TButton;
Button3: TButton;
Image1: TImage;
Label4: TLabel;
Label6: TLabel;
Label3: TLabel;
Label5: TLabel;
Button5: TButton;
procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);
procedure Button1Click(Sender: TObject);
procedure draw(pos,vert,hor:integer);
procedure shag1;
procedure shag3;
procedure shag4;
procedure shag5;
procedure shag6;
procedure shag8;
procedure shag0;
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
mass1:array[1..20,1..20] of integer;
stolb,strok,c1,c2,c3,c4,k,p,
prv,prv2,prv3:boolean;
implementation
uses Unit2, Unit3, Unit4, Unit5;
{$R *.dfm}
//Вывод ошибки «только цифры»
procedure TForm1.StringGrid1SetEditText(
ARow: Integer; const Value: String);
begin
if value<>'' then
try
mass1[acol,arow]:=strtoint(
except on Econverterror do
begin showmessage(Только цифры!!!'); stringgrid1.cells[acol,arow]:=
end;
// Кнопка посчитать
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
for o:=0 to 0 do begin
if p=1 then begin
for i:=1 to strok do
for j:=1 to stolb do
stringgrid1.Cells[j,i]:=
end;
shag0;
k:=0;
prv3:=false;
shag5;
if prv2=true then begin
shag1;
if prv3=false then begin
shag4;
while prv=false do
case o of
0:shag8;
end;
timer1.Enabled:=true;
shag6;
end;
end else showmessage(‘Запасы не равны потребностям');
p:=1;
end;
end;
//Загрузка картинок
procedure TForm1.draw(pos,vert,hor:
var
B : TBitmap;
begin
B := TBitmap.Create;
if pos=1 then
B.LoadFromFile ('1.bmp') else B.LoadFromFile ('2.bmp');
form1.stringGrid1.Canvas.
b.Canvas, Rect(0, 0, b.Height, b.Width));
end;
procedure TForm1.shag1;
var i,j:integer;
begin
try
for i:=1 to strok do
for j:=1 to stolb do
mass1[j,i]:=strtoint(
except on Econverterror do begin showmessage(Запасы не равны потребностям ');
prv3:=true;end;end;
for i:=1 to strok do
for j:=1 to stolb do
stringgrid1.Cells[j,i]:='';
end;
// Координаты чисел
procedure TForm1.shag3;
var i,j:integer;
buf:string;
begin
for i:=1 to strok do
for j:=1 to stolb do begin
if StringGrid1.cells[j,i]='-' then draw(2,j,i) else
begin draw(1,j,i);StringGrid1.
i*51+5,StringGrid1.Cells[j,i])
StringGrid1.Canvas.textout(j*
i*51+30,inttostr(mass1[j,i]));
end;
//Кнопка очистить таблицу
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
begin
timer1.Enabled:=false;
for i:=1 to strok+1 do
for j:=1 to stolb+1 do
stringgrid1.Cells[j,i]:='';
button1.Enabled:=true;
timer1.Interval:=1;
end;
procedure TForm1.shag4;
var
ind,i,j:integer;
begin
ind:=0;
for i:=1 to strok do
for j:=1 to stolb do
if stringgrid1.Cells[j,i]='' then inc(ind);
if ind=0 then prv:=true else prv:=false;
end;
// Заполнение запасов и потребностей
procedure TForm1.shag5;
var i,j,zap,potr:integer;
begin
zap:=0;potr:=0;
for i:=1 to strok+1 do
for j:=1 to stolb+1 do begin
if (i=strok+1) and (j<>stolb+1)
then zap:=zap+strtoint(stringgrid1.
if (j=stolb+1) and (i<>strok+1)
then potr:=potr+strtoint(
if zap=potr then begin prv2:=true;stringgrid1.Cells[
procedure TForm1.Timer1Timer(Sender: TObject);
begin
shag3;
timer1.Interval:=10000;end;
//Проверяет вырожденный или невырожденный
procedure TForm1.shag6;
var i,j,sc,col:integer;
begin
sc:=0;
col:=0;
for i:=1 to strok do
for j:=1 to stolb do
if stringgrid1.cells[j,i]<>'-' then
begin inc(sc);col:=col+strtoint(
if sc=(strok+stolb-1) then
label5.Caption:='
label6.Caption:=inttostr(col);
if col<smin then begin smin:=col;o1:=o;end;
end;
// Алгоритм Метода Фогеля
procedure TForm1.shag8;
var i,j,min,x,y,zapas,potreb,lol,
begin
{ýòàï 1}
min:=100;
for i:=1 to strok do begin
for j:=1 to stolb do
if (mass1[j,i]<min) and (stringgrid1.cells[j,i]='') then begin min:=mass1[j,i];x:=i;y:=j;end;
stringgrid3.Cells[k,i-1]:=
min:=100;
end;
min:=100;
for j:=1 to stolb do begin
for i:=1 to strok do
if (mass1[j,i]<min) and (stringgrid1.cells[j,i]='') then begin min:=mass1[j,i];end;
stringgrid2.Cells[j-1,k]:=
min:=100;
end;
min:=100;
for i:=1 to strok do begin
for j:=1 to stolb do
if (mass1[j,i]<min)and (stringgrid1.cells[j,i]='')
stringgrid3.Cells[k,i-1]:=
min:=100;
Информация о работе Решение транспортной задачи методом Фогеля