Advertisement
Guest User

registro de comercio

a guest
Oct 18th, 2012
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 6.53 KB | None | 0 0
  1. program comercio;
  2.  
  3. uses
  4.     crt;
  5.  
  6. const
  7.     max = 10000;
  8.  
  9. type
  10.    // tipo de registro de producto
  11.    Rproducto = record
  12.     Nro : integer;
  13.         Producto: string[20];
  14.     Marca : string[20];
  15.     Tipo : string[10];
  16.     Costo : real;
  17.     Stockmin : integer;
  18.     Stockact : integer;
  19.    end;
  20.    // tipo de array de registro
  21.    Tarray = array[1..max] of Rproducto;
  22.  
  23. procedure insertar(var reg:Tarray;var len:integer);
  24. var
  25.     opc : char;i : integer;
  26. begin
  27.     opc := 'S';
  28.      if (len = 0) then
  29.         i := 1
  30.     else
  31.         i := len;
  32.       writeln('Insertar nuevos productos');
  33.     while (opc = 'S') and (i <= max) do
  34.     begin
  35.         clrscr;
  36.         write('Numero de producto: ');
  37.         readln(reg[i].Nro);
  38.         write('Producto: ');
  39.         readln(reg[i].Producto);
  40.         write('Marca: ');
  41.         readln(reg[i].Marca);
  42.         write('Tipo: ');
  43.         readln(reg[i].Tipo);
  44.         write('Costo: ');
  45.         readln(reg[i].Costo);
  46.         write('Stock minimo: ');
  47.         readln(reg[i].Stockmin);
  48.         write('Stock Actual: ');
  49.         readln(reg[i].Stockact);
  50.         writeln;
  51.         len := len + 1;
  52.         repeat
  53.                 writeln('Desea agregar otro producto (S/N): ');
  54.            opc := readkey;
  55.             opc := upcase(opc);
  56.         until (opc in ['S','N']);
  57.         i := i + 1;
  58.     end;
  59. end;
  60.  
  61. procedure ordenar(var reg:Tarray;len:integer);
  62. var ordenado:boolean; j : integer;
  63. var aux : Rproducto;
  64. begin
  65.     ordenado := false;
  66.     while (not ordenado)  do begin
  67.             ordenado := true;
  68.          for j := 1 to (len-1) do begin
  69.             if (reg[j].Nro > reg[j+1].Nro) then begin
  70.                 aux := reg[j+1];
  71.                reg[j+1] := reg[j];
  72.                reg[j] := aux;
  73.                ordenado := false;
  74.             end;
  75.          end;
  76.     end;
  77. end;
  78.  
  79. function busquedabinaria(reg:Tarray;len:integer;x:integer):integer;
  80. var i,j,k : integer;
  81. var encontrado : boolean;
  82. begin
  83.     encontrado:= false;
  84.     i := 1;
  85.     j := len;
  86.     while (i <= j) and (not encontrado) do begin
  87.             k := (i+j) div 2;
  88.          if (reg[k].Nro = x) then begin
  89.             encontrado:= true;
  90.          end else begin
  91.             if (reg[k].Nro > x) then begin
  92.                 i := k + 1;
  93.             end  else begin
  94.                 j := k - 1;
  95.             end;
  96.          end;
  97.     end;
  98.     if (i > j) then begin
  99.             busquedaBinaria := -1;
  100.     end else begin
  101.             busquedaBinaria := k;
  102.     end;
  103. end;
  104.  
  105. procedure Busqueda(reg:Tarray;len:integer);
  106. var  num,pos : integer;
  107. begin
  108.     clrscr;
  109.     writeln('Busqueda de productos');
  110.     write('Ingrese numero de producto: ');
  111.     readln(num);
  112.     pos := busquedaBinaria(reg,len,num);
  113.     if (pos < 0) then begin
  114.             writeln('El producto no existe');
  115.          exit;
  116.     end else begin
  117.         write('Numero de producto: ');
  118.         writeln(reg[pos].Nro);
  119.         write('Producto: ');
  120.         writeln(reg[pos].Producto);
  121.         write('Marca: ');
  122.         writeln(reg[pos].Marca);
  123.         write('Tipo: ');
  124.         writeln(reg[pos].Tipo);
  125.         write('Costo: ');
  126.         writeln(reg[pos].Costo);
  127.         write('Stock minimo: ');
  128.         writeln(reg[pos].Stockmin);
  129.         write('Stock Actual: ');
  130.         writeln(reg[pos].Stockact);
  131.     end;
  132. end;
  133.  
  134. procedure eliminar(var reg:Tarray;pos:integer;var len:integer);
  135. var i : integer;
  136. begin
  137.      for i := pos to (len-1) do begin
  138.             reg[i] := reg[i+1];
  139.      end;
  140.      len := len - 1;
  141. end;
  142.  
  143. procedure borrar(var reg:Tarray;len:integer);
  144. var num : integer; pos : integer;
  145.     opc : char;
  146. begin
  147.     repeat
  148.     clrscr;
  149.     writeln('Borrar registro de un producto');
  150.     writeln('Ingrese numero de producto: ');
  151.     readln(num);
  152.     pos := busquedaBinaria(reg,len,num);
  153.     if (pos < 0) then begin
  154.             writeln('El producto no se encuentra');
  155.     end else begin
  156.             writeln('Producto: ',reg[pos].Producto);
  157.          writeln('Marca: ',reg[pos].Marca);
  158.     end;
  159.     repeat
  160.             writeln('Esta seguro de borrar el registro (S/N): ');
  161.             opc := readkey;
  162.             opc := upcase(opc);
  163.     until (opc in ['S','N']);
  164.     if (opc = 'S') then begin
  165.             eliminar(reg,pos,len);
  166.     end;
  167.     repeat
  168.         writeln('Desea borrar otro producto (S/N): ');
  169.         opc := readkey;
  170.       opc := upcase(opc);
  171.     until (opc in ['S','N']);
  172.     until (opc = 'N');
  173. end;
  174.  
  175. procedure modificar(var reg:Tarray;len:integer);
  176. var  Producto,Marca,Tipo : string;opc : char;
  177. var Costo : real; Stockmin,Stockact : integer;
  178. var num,pos:integer;
  179. begin
  180.     repeat
  181.     clrscr;
  182.     writeln('Modificacion de productos');
  183.     writeln('Ingrese el numero de producto: ');
  184.     readln(num);
  185.     pos := busquedaBinaria(reg,len,num);
  186.     if (pos < 0) then begin
  187.             writeln('El producto no existe');
  188.          exit;
  189.     end else begin
  190.         write('Producto: ');
  191.         readln(Producto);
  192.         write('Marca: ');
  193.         readln(Marca);
  194.         write('Tipo: ');
  195.         readln(Tipo);
  196.         write('Costo: ');
  197.         readln(Costo);
  198.         write('Stock minimo: ');
  199.         readln(Stockmin);
  200.         write('Stock Actual: ');
  201.         readln(Stockact);
  202.         reg[pos].Producto := Producto;
  203.         reg[pos].Marca := Marca;
  204.         reg[pos].Tipo := Tipo;
  205.         reg[pos].Costo := Costo;
  206.         reg[pos].Stockmin := Stockmin;
  207.         reg[pos].Stockact := Stockact;
  208.     end;
  209.     writeln('El registro se ha modificado');
  210.     repeat
  211.         writeln('Desea modificar otro producto (S/N): ');
  212.         opc := readkey;
  213.       opc := upcase(opc);
  214.     until (opc in ['S','N']);
  215.     until (opc = 'N');
  216. end;
  217.  
  218. procedure menu(reg:Tarray;len:integer);
  219. var  fin:boolean;opc:char;
  220. begin
  221.     fin := false;
  222.     repeat
  223.             clrscr;
  224.          writeln('************MENU GENERAL*************');
  225.          writeln('Insertar nuevos productos.....[1]');
  226.          writeln('Borrar productos..............[2]');
  227.          writeln('Modificar productos...........[3]');
  228.          writeln('Buscar un producto............[4]');
  229.          writeln('Salir.........................[5]');
  230.          repeat
  231.             writeln('Escoja una opcion:  ');
  232.             opc := readkey;
  233.          until (opc in ['1'..'5']);
  234.          case opc of
  235.          '1' : begin
  236.                insertar(reg,len);
  237.                ordenar(reg,len);
  238.                 end;
  239.          '2' : begin
  240.                     borrar(reg,len);
  241.                ordenar(reg,len);
  242.                end;
  243.          '3' : modificar(reg,len);
  244.          '4' : busqueda(reg,len);
  245.          '5' : fin := true;
  246.          end;
  247.     until fin;
  248. end;
  249.  
  250. // programa principal
  251. var len : integer;
  252. var registro:Tarray;
  253. begin
  254.     len := 0;
  255.    clrscr;
  256.    menu(registro,len);
  257. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement