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

Автор работы: Пользователь скрыл имя, 17 Февраля 2012 в 23:52, курсовая работа

Краткое описание

Разработка алгоритма решения задачи по перевозке грузов, создания и поддержания требуемого уровня запасов товаров и реализовать их в виде программного продукта.

Содержание работы

1. Введение 3
2. Постановка задачи исследования 4
2.1. Оперативная постановка задачи 4
2.2. Анализ исходных данных 4
3. Блок-схема алгоритма 10
4. Программа и контрольный вариант решения 15
4.1. Программа решения задачи 15
4.2. Контрольный вариант решения задачи 28
4.3. Схема расположения груза в оптимальном способе доставке 33
4.4. Исследование зависимостей на товары 34
5. Заключение 35
6. Библиографический список 36

Содержимое работы - 1 файл

Курсовик.doc

— 591.50 Кб (Скачать файл)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  1. Блок-схема  алгоритма

 
 
 
 
 
 

  1. Программа и контрольный  вариант решения
 
    1. Программа решения задачи

program OOP;

Uses crt;

const

Tgod=365; {Dnei v godu}

Trab=365; {Chislo rabochih dnei v godu} 

var

    S, {ploshad sklada}

    AP  :longint; {arendnaya plata}

    P, {procent izmeneniya ceni tovara po zakupke}

    i, {peremennaya}

    l, {rasstoyanie perevozki}

    Ln, {rasstoyanie ot sklada do zh/d}

    Lk, {rasstoyanie ot sklada postavschika}

    NOM    :integer; {Vibor nomera goroda}

    K, {koefficient ispolzovaniya skladskih ploshadei}

    J, {summa intensivnosti sprosa i stoimost' hraneniy}

    PR, {summa razmerov i intensivnosti sprosa}

    Zzak, {zatrati po zakupke tovarov u postavschika}

    Vig, {vigodnii variant dostavki cena}

    Vig2, {2 vigodnii variant dostavki cena}

    Hran, {Hranenie}

    Dost, {Dostavka}

    Pop, {Popolnenie za period(10 sutok)}

    Post, {Postavka za god}

    Log, {Logisticheskie izderjki za 10 dnei}

    LogS, {Logisticheskie izderjki za 1 den}

    Plos, {Potrebnaya ploschad v skladskom pomeschenii}

    Otn: real; {dolya zatrat na podderjanie zapasov}

    TipVV,TipV: string; {Tip transportnogo sredstva}

    xa,xb,xc,Y,G,Hhr,U:array[1..4] of real; {dlina,shirina,visota yaschikov,

      intensivnost sprosa,

      vmestimost sklada,

      stoimost' hranenia,

      kolichestvo yarusov,

      cena edinici tovara po zakupke u postavschika}

    Tip: array[1..5] of string; {Tip transportnogo sredstva}

    f:array[4..5] of integer; {tarif 20' konteynera,

      tarif 40' konteynera}

    EP,YA: array[1..4] of integer; {edinica postavki,

       yarusi}

    x1,x2,x3,x4: array[1..19] of integer; {stoimost zh/d konteynernoy  perevozki}

    a,b,h: array[1..5] of real; {transportnie sredstva}

    c: array[1..7] of real; {stoimost avto perevozki konteinerom}

    Ks,Topt,Tg,T: array[1..5] of real; {stoimost dostavki gruza avto,

      optimal'noe znachenie perioda popolnenia zapasov,

      period popolneniya zapasov ishodya iz gruzovmestimosti TS,

      Optimalniy period popolneniy zapasov ishodya iz Topt - Tg}

    Z,Zdoc,Zhr: array[1..5] of real; {summarnie zatrati,

      zatrati po dostavke tovarov na sklad,

      zatrati po hraneniy tovara}

    ZAP,pos,hr,Sum: array[1..10] of real; {Zapasi(sutochnay vidacha),

      Postavka,hranenie,summa}

    Ob: array[1..4] of real; {Obem postavki 1-4 tipa tovara} 
 
 

begin ClrScr;

writeln('vvedite ploshad sklada ='); read(S);

writeln('vvedite arendnaya plata ='); read(AP);

writeln('vvedite koefficient ispolzovaniya skladskih ploshadei ='); read(K);

writeln('vvedite procent izmeneniya ceni tovara po zakupke ='); read(P); 

for i:=1 to 4 do

begin

  writeln('vvedite dlinu ',i,' yaschika ='); read(xa[i]);

  writeln('vvedite shirinu ',i,' yaschika ='); read(xb[i]);

  writeln('vvedite visotu ',i,' yaschika ='); read(xc[i]);

  writeln('vvedite cena edinici tovara ',i,' yaschika ='); read(U[i]);

  writeln('vvedite intensivnost sprosa ',i,' yaschika =');  read(Y[i]);

  U[i]:=U[i]*((1)+((P)/(100)));

end; 

  for i:=1 to 4 do

  repeat

  writeln('esli ',i,' edinica postavki - yaschik to vvedite 1, esli - palleta to  0');

  readln(EP[i]);

  until EP[i] in [0..1]; 

  for i:=1 to 4 do

  if EP[i]=1 then

      begin

          writeln(i,' yaschik. Esli cetnoe cislo - 4 yarusa, necetnor - 5 yarusov');

          readln(YA[i]);

          if odd(YA[i]) then YA[i]:=5 else YA[i]:=4;

      end

  else  YA[i]:=2;

for i:=1 to 4 do

writeln(i,' edinica postavki = ',YA[i],' yarusov'); 

begin ClrScr;

writeln('Goroda:');

writeln('0 - Sankt-Petergurg - Murmansk');

writeln('1 - Sankt-Petergurg - Arhangelsk');

writeln('2 - Sankt-Petergurg - Astrahan');

writeln('3 - Sankt-Petergurg - Samara');

writeln('4 - Sankt-Petergurg - Saratov');

writeln('5 - Sankt-Petergurg - Krasnodar');

writeln('6 - Sankt-Petergurg - Ekaterenburg');

writeln('7 - Sankt-Petergurg - Volgograd');

writeln('8 - Sankt-Petergurg - Novorossiysk');

writeln('9 - Sankt-Petergurg - Yaroslavl');

writeln('10 - Svoi gorod'); 

repeat

writeln;

writeln('Vvedite nomer goroda');readln(NOM);

until NOM in [0..10]; 

if   NOM=0 then begin l:=1000;Ln:=50;Lk:=20;

     writeln('Vi vibrali gorod Murmansk. Rasstoyanie do goroda = ',l,'km');

     writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');

     writeln('Rasstoyanie ot sklada do zh/d stancii = ',lk,'km'); readln end 

else

       if   NOM=1 then begin l:=750;Ln:=50;Lk:=40;

     writeln('Vi vibrali gorod Arhangelsk. Rasstoyanie do goroda = ',l,'km');

     writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');

     writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;

       if   NOM=2 then begin l:=1900;Ln:=50;Lk:=25;

     writeln('Vi vibrali gorod Astrahan. Rasstoyanie do goroda = ',l,'km');

     writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');

     writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km');readln end;

       if   NOM=3 then begin l:=1400;Ln:=50;Lk:=50;

     writeln('Vi vibrali gorod Samara. Rasstoyanie do goroda = ',l,'km');

     writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');

     writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;

       if   NOM=4 then begin l:=1300;Ln:=50;Lk:=30;

     writeln('Vi vibrali gorod Saratov. Rasstoyanie do goroda = ',l,'km');

     writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');

     writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;

       if   NOM=5 then begin l:=1700;Ln:=50;Lk:=35;

     writeln('Vi vibrali gorod Krasnodar. Rasstoyanie do goroda = ',l,'km');

     writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');

     writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;

       if   NOM=6 then begin l:=1800;Ln:=50;Lk:=40;

     writeln('Vi vibrali gorod Ekaterenburg. Rasstoyanie do goroda = ',l,'km');

     writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');

     writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;

       if   NOM=7 then begin l:=1500;Ln:=50;Lk:=20;

     writeln('Vi vibrali gorod Volgograd. Rasstoyanie do goroda = ',l,'km');

     writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');

     writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;

       if   NOM=8 then begin l:=1800;Ln:=50;Lk:=25;

     writeln('Vi vibrali gorod Novorossiysk. Rasstoyanie do goroda = ',l,'km');

     writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');

     writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;

       if   NOM=9 then begin l:=600;Ln:=50;Lk:=50;

     writeln('Vi vibrali gorod Yaroslavl. Rasstoyanie do goroda = ',l,'km');

     writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');

     writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;

       if NOM=10 then begin writeln('Vvedite rasstoyanie do goroda = ');readln(l);

     writeln('VVedite rasstoyanie ot sklada do zh/d stancii = ');read(Ln);

     writeln('Vvedite rasstoyanie ot zh/d stancii do sklada = ');read(Lk);

     writeln('Rasstoyanie ot goroda do goroda = ',l,'km');

     writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');

     writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km');readln  end;

     readln

end; 

x1[1]:=0; x2[1]:=50; x3[1]:=2800; x4[1]:=3750;

          x2[2]:=220; x3[2]:=3125; x4[2]:=4250;

          x2[3]:=390; x3[3]:=3375; x4[3]:=4750;

          x2[4]:=570; x3[4]:=3625; x4[4]:=5000;

          x2[5]:=760; x3[5]:=3875; x4[5]:=5250;

          x2[6]:=920; x3[6]:=4125; x4[6]:=5500;

          x2[7]:=1100; x3[7]:=4375; x4[7]:=6000;

          x2[8]:=1300; x3[8]:=4625; x4[8]:=6500;

          x2[9]:=1450; x3[9]:=4875; x4[9]:=7000;

          x2[10]:=1600; x3[10]:=5125; x4[10]:=7500;

          x2[11]:=1800; x3[11]:=5375; x4[11]:=8125;

          x2[12]:=2000; x3[12]:=5625; x4[12]:=8750;

          x2[13]:=2200; x3[13]:=5875; x4[13]:=9375;

          x2[14]:=2400; x3[14]:=6125; x4[14]:=10000;

          x2[15]:=2700; x3[15]:=6375; x4[15]:=10750;

          x2[16]:=2900; x3[16]:=6625; x4[16]:=11625;

          x2[17]:=3100; x3[17]:=6875; x4[17]:=12250;

          x2[18]:=3300; x3[18]:=7125; x4[18]:=12750;

          x2[19]:=3500; x3[19]:=7375; x4[19]:=13250; 

for i:=1 to 18 do

begin

x1[i+1]:=x2[i]+1; end;

for i:=1 to 19 do

if((x1[i]<=l)and(x2[i]>=l))

then begin f[4]:=x3[i];

           f[5]:=x4[i] end; 

Tip[1]:='Gazel';

Tip[2]:='ZIL';

Tip[3]:='Scania';

Tip[4]:='20" konteiner';

Tip[5]:='40" konteiner'; 

A[1]:=2.5; B[1]:=2.0;  H[1]:=2.0;

A[2]:=4;   B[2]:=2;    H[2]:=2;

A[3]:=12;  B[3]:=2.0;  H[3]:=2.5;

A[4]:=6;   B[4]:=2.4;  H[4]:=2.5;

A[5]:=12;  B[5]:=2.4;  H[5]:=2.5; 

for i:=1 to 4 do

begin

g[i]:=(s*YA[i]*k)/(xa[i]*xb[i]);

Hhr[i]:=(s*AP)/((Trab)*(g[i]));end; 

C[1]:=10*(1+p/100); {stoimost perevozki 1 avto}

C[2]:=16*(1+p/100); {stoimost perevozki 2 avto}

C[3]:=22*(1+p/100); {stoimost perevozki 3 avto}

C[4]:=16*(1+p/100); {stoimost perevozki pustogo 20' konteinera}

Информация о работе Разработка алгоритма и программного продукта по управлению запасами склада