Автор работы: Пользователь скрыл имя, 16 Января 2013 в 17:09, курсовая работа
Транспортная задача (классическая) — задача об оптимальном плане перевозок однородного продукта из однородных пунктов наличия в однородные пункты потребления на однородных транспортных средствах (предопределённом количестве) со статичными данными и линеарном подходе (это основные условия задачи)
5.2. Электронные ресурсы
5.2.1. www.window.edu.ru
5.2.2. www.exponenta.ru
5.3. Нормативные документы
5.3.1. Стандарт организации СТО НГТИ-1-2008. Курсовое проектирование. Новоуральск. Изд-во НГТИ, 2009. – 44 с.
5.3.2. Стандарт организации СТО НГТИ-2-2007. Требования к оформлению текстовой документации. Новоуральск. Изд-во НГТИ, 2007. – 147 с.
5.3.3. ЕСПД ГОСТ 19.001-77, ГОСТ 19.002-80, ГОСТ 19.101-77, ГОСТ 19.102-77, ГОСТ 19.103-77.
5.3.4. Методические указания
к выполнению курсового
6.Приложение A (обязательное). Блок-схема решения задачи
6.1 Функциональная блок-схема.
6.2.Блок-схема метода северо-западного угла.
Да Нет
Да Нет
Да Нет
6.3.Блок-схема метода минимального элемента.
Да
Нет
Да
Нет
Да
7.Приложение Б (обязательное) Листинг программы
7.1. Листинг модуля menu
//----------------------------
#include <vcl.h>
#pragma hdrstop
#include "menu.h"
#include "about.h"
#include "help1.h"
#include "sevzap1.h"
#include "minimal1.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tmenu1 *menu1;
//----------------------------
__fastcall Tmenu1::Tmenu1(TComponent* Owner)
: TForm(Owner)
{///////Заполнение таблицы (Потребители)
StringGrid1->Cells[1][0]="B1";
StringGrid1->Cells[2][0]="B2";
StringGrid1->Cells[3][0]="B3";
StringGrid1->Cells[4][0]="B4";
StringGrid1->Cells[5][0]="B5";
StringGrid1->Cells[6][0]="B6";
StringGrid1->Cells[7][0]="Запа
///////Заполнение таблицы (Поставщики)
StringGrid1->Cells[0][1]="A1";
StringGrid1->Cells[0][2]="A2";
StringGrid1->Cells[0][3]="A3";
StringGrid1->Cells[0][4]="A4";
StringGrid1->Cells[0][5]="
///////Заполнение таблицы
///1
StringGrid1->Cells[1][1]=12;
StringGrid1->Cells[1][2]=8;
StringGrid1->Cells[1][3]=6;
StringGrid1->Cells[1][4]=10;
///2
StringGrid1->Cells[2][1]=14;
StringGrid1->Cells[2][2]=10;
StringGrid1->Cells[2][3]=8;
StringGrid1->Cells[2][4]=18;
///3
StringGrid1->Cells[3][1]=32;
StringGrid1->Cells[3][2]=12;
StringGrid1->Cells[3][3]=12;
StringGrid1->Cells[3][4]=4;
///4
StringGrid1->Cells[4][1]=20;
StringGrid1->Cells[4][2]=24;
StringGrid1->Cells[4][3]=24;
StringGrid1->Cells[4][4]=8;
///5
StringGrid1->Cells[5][1]=3;
StringGrid1->Cells[5][2]=12;
StringGrid1->Cells[5][3]=18;
StringGrid1->Cells[5][4]=9;
///6
StringGrid1->Cells[6][1]=0;
StringGrid1->Cells[6][2]=0;
StringGrid1->Cells[6][3]=0;
StringGrid1->Cells[6][4]=0;
StringGrid1->Cells[6][5]=38;
/////////////Заполнение
StringGrid1->Cells[1][5]=100;
StringGrid1->Cells[2][5]=70;
StringGrid1->Cells[3][5]=30;
StringGrid1->Cells[4][5]=45;
StringGrid1->Cells[5][5]=50;
/////////////Заполнение запасов значениями
StringGrid1->Cells[7][1]=54;
StringGrid1->Cells[7][2]=32;
StringGrid1->Cells[7][3]=85;
StringGrid1->Cells[7][4]=162;
//////////////////////////////
stb=0;str=0;
}
//----------------------------
void __fastcall Tmenu1::N2Click(TObject *Sender)
{
about1->ShowModal();
}
//----------------------------
void __fastcall Tmenu1::N1Click(TObject *Sender)
{
help->Show();
}
//----------------------------
void __fastcall Tmenu1::Button1Click(TObject *Sender)
{
x=StringGrid1->ColCount-1;
y=StringGrid1->RowCount-1;
for(i=0;i<x;i++) {
sevzap->StringGrid1->Cells[i][
}
for(j=0;j<y;j++){
sevzap->StringGrid1->Cells[i][
stb=0;
str=0;
while(stb<x){
sevzap->StringGrid1->Cells[
}
while(str<y){
sevzap->StringGrid1->Cells[x][
}
//////////////////////////////
menu1->Hide();
sevzap->Show();
}
//----------------------------
void __fastcall Tmenu1::Button2Click(TObject *Sender)
{
x=StringGrid1->ColCount-1;
y=StringGrid1->RowCount-1;
for(i=0;i<x+1;i++){
for(j=0;j<y+1;j++){
minimal->StringGrid1->Cells[i]
}
}
i=0;j=0;
//////////////////////////////
for(i=0;i<x;i++) {
minimal->StringGrid2->Cells[i]
}
for(j=0;j<y;j++){
minimal->StringGrid2->Cells[i]
stb=0;
str=0;
while(stb<x){
minimal->StringGrid2->Cells[
}
while(str<y){
minimal->StringGrid2->Cells[x]
}
//////////////////////////////
menu1->Hide();
minimal->Show();
}
//----------------------------
void __fastcall Tmenu1::BitBtn1Click(TObject *Sender)
{
Application->Terminate();
}
//----------------------------
7.2. Листинг модуля sevzap1
//----------------------------
#include <vcl.h>
#pragma hdrstop
#include "menu.h"
#include "sevzap1.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tsevzap *sevzap;
//----------------------------
__fastcall Tsevzap::Tsevzap(TComponent* Owner)
: TForm(Owner)
{
//присваиваем значения по умолчанию
stb=1;
str=1;
r=0;
fx=0;
}
//----------------------------
void __fastcall Tsevzap::BitBtn2Click(TObject *Sender)
{
///присваиваем количество строк и столбцов для x y
x=StringGrid1->ColCount-1; ///столбец
y=StringGrid1->RowCount-1; ///строка
///ограничиваем решение цикла для вывода результата
if((StringGrid1->Cells[x-1][y]
///цикл для подсчета, когда запасы больше потребностей
if(StringGrid1->Cells[x][str].
{//присвоим минимальное из значений в целевую ячейку
StringGrid1->Cells[stb][str]=
//из большего вычитаем меньшее и присваиваем большей ячейке
StringGrid1->Cells[x][str]=
StringGrid1->Cells[stb][y]=0;/
//считаем F(x)
r=StringGrid1->Cells[stb][str]
fx=fx+r;
r=0;//сбрасываем результат
//
stb++;//сдвигаемся на столбец
return;//останавливаем выполнение
}
///цикл для подсчета, когда запасы меньше потребностей
if(StringGrid1->Cells[x][str].
{//присвоим минимальное из значений в целевую ячейку
StringGrid1->Cells[stb][str]=
//из большего вычетаем меньшее и присваеваем большей ячейке
StringGrid1->Cells[stb][y]=
StringGrid1->Cells[x][str]=0;/
//считаем F(x)
r=StringGrid1->Cells[stb][str]
fx=fx+r;
r=0;//сбрасываем результат
//
str++;//сдвигаемся на строку
return;//останавливаем выполнение
}
///цикл для подсчета, когда запасы равны потребностям
if(StringGrid1->Cells[x][str].
{//присвоим любое из значений в целевую ячейку
StringGrid1->Cells[stb][str]=
StringGrid1->Cells[stb][y]=0;/
StringGrid1->Cells[x][str]=0;
//считаем F(x)
r=StringGrid1->Cells[stb][str]
fx=fx+r;
r=0;//сбрасываем результат
//
stb++;str++;//перемещаемся на стб и стр по таблице
return;//останавливаем выполнение
}
}
//////////////////////////////
else{///включаем кнопку для вывода результата,вкл эту
BitBtn2->Visible=false;
BitBtn3->Visible=true;
}
}
//----------------------------
void __fastcall Tsevzap::BitBtn3Click(TObject *Sender)
{///убираем кнопки - выводим результат
Label2->Caption=fx;
Label2->Visible=true;
BitBtn3->Visible=false;
}
//----------------------------
void __fastcall Tsevzap::BitBtn1Click(TObject *Sender)
{
x=StringGrid1->ColCount-1;
y=StringGrid1->RowCount-1;
for(i=0;i<x+1;i++){
for(j=0;j<y+1;j++){
StringGrid1->Cells[i][j]="";
}
}
Label2->Visible=false;
stb=1;
str=1;
r=0;
fx=0;
BitBtn2->Visible=true;
menu1->Show();
sevzap->Close();
}
//----------------------------
7.3. Листинг модуля minimal1
//----------------------------
#include <vcl.h>
#pragma hdrstop
#include "minimal1.h"
#include "menu.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tminimal *minimal;
//----------------------------
__fastcall Tminimal::Tminimal(TComponent* Owner)
: TForm(Owner)
{
//присваиваем значения по умолчанию
stb=1;
str=1;
r=0;
fx=0;
i=1;
j=1;
}
//----------------------------
void __fastcall Tminimal::BitBtn1Click(TObject *Sender)
{
///действие вернуться на главную форму
/////присваиваем переменным значения размера таблицы
x=StringGrid1->ColCount-1;
y=StringGrid1->RowCount-1;
/////очищаем первую таблицу
for(i=0;i<x+1;i++){
for(j=0;j<y+1;j++){
StringGrid1->Cells[i][j]="";
}
}
//////очищаем вторую таблицу
for(i=0;i<x+1;i++){
for(j=0;j<y+1;j++){
StringGrid2->Cells[i][j]="";
}
}
/////возвращаем начальные значения переменным
stb=1;str=1;
r=0;fx=0;
i=1;j=1;
BitBtn3->Visible=true;
Label2->Visible=false;
//////////////переходим в главное меню
menu1->Show();
minimal->Close();
}
//----------------------------
void __fastcall Tminimal::BitBtn3Click(TObject *Sender)
{
x=StringGrid1->ColCount-1;
y=StringGrid1->RowCount-1;
i=1;j=1;
min=StrToInt(StringGrid1->
stb=1;str=1;////
for(int i = 1; i < StringGrid1->ColCount-1; i++) {
for(int j = 1; j < StringGrid1->RowCount-1; j++) {
if (min>StringGrid1->Cells[i][j]) {
min=StringGrid1->Cells[i][j].
stb=i;str=j;///запоминаем координаты минимального элемента
////когда минимальный не равен, тогда выполняем решение
if (min != 999){
if (StringGrid1->Cells[stb][y].
{///цикл для подсчета,
когда запасы больше
StringGrid2->Cells[stb][str]=
StringGrid1->Cells[stb][str]=
StringGrid1->Cells[x][str]=
StringGrid2->Cells[x][str]=
///считаем F(x)
r= StringGrid2->Cells[stb][str]*
fx=fx+r;r=0; Label2->Caption=fx;
///замещаем столбец
for(int str = 1; str < y ; str++) {StringGrid1->Cells[stb][str]=
StringGrid2->Cells[stb][y]=0;
StringGrid1->Cells[stb][y]=0;
return;
}
if (StringGrid1->Cells[stb][y].
{/// цикл для подсчета,
когда запасы меньше
StringGrid2->Cells[stb][str]=
StringGrid1->Cells[stb][str]=
StringGrid1->Cells[stb][y]=
StringGrid2->Cells[stb][y]=
///считаем F(x)
r= StringGrid2->Cells[stb][str]*
fx=fx+r;r=0; Label2->Caption=fx;
/////замещаем строку
for(int stb = 1; stb < x ; stb++) {StringGrid1->Cells[stb][str]=
StringGrid2->Cells[x][str]=0;
StringGrid1->Cells[x][str]=0;
return;
}
if (StringGrid1->Cells[stb][y].
{///цикл для подсчета,
когда запасы равны
StringGrid2->Cells[stb][str]=
StringGrid1->Cells[stb][str]=
StringGrid1->Cells[stb][y]=0;
StringGrid2->Cells[stb][y]=0;
StringGrid1->Cells[x][str]=0;
///считаем F(x)
r= StringGrid2->Cells[stb][str]*
fx=fx+r;r=0; Label2->Caption=fx;
/////замещаем строку и столбец
for(int stb = 1; stb < x ; stb++) {StringGrid1->Cells[stb][str]=
for(int str = 1; str < y ; str++) {StringGrid1->Cells[stb][str]=
StringGrid2->Cells[x][str]=0;
return;
}
}
else {BitBtn4->Visible=true;
}
//----------------------------