Advertisement
Guest User

UNIT

a guest
Dec 15th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 9.81 KB | None | 0 0
  1. unit pasajeros;
  2.  
  3. interface
  4. uses crt;
  5.  
  6. type
  7.     pasajero = record
  8.              nombre:string[30];
  9.              apellido:string[20];
  10.              edad:integer;
  11.              nacionalidad:string[15];
  12.              dni:string[15];
  13.              pasajero_pref:boolean;
  14.              borrado:boolean;
  15.         end;
  16.  
  17.  
  18.       a_pasajero = file of pasajero;
  19.  
  20. var
  21.    archivo:a_pasajero;
  22.    posicion:word;
  23.    registro:pasajero;
  24.    archivo_aux:a_pasajero;
  25.  
  26.    procedure abrir_a(var a:a_pasajero);
  27.    procedure abrir_a_aux(var a_aux:a_pasajero);
  28.    procedure cerrar_a(var a:a_pasajero);
  29.    procedure leer_r(var a:a_pasajero; pos:word; var reg:pasajero);
  30.    procedure guardar_r(var a:a_pasajero; reg:pasajero);
  31.    procedure modificar_a_especifico(var a:a_pasajero; pos:integer; reg:pasajero);
  32.    procedure cargar_r(var a:a_pasajero);
  33.    function buscar_r(var a:a_pasajero; buscado:string[15]):integer;
  34.    procedure reescribir_a(var a:a_pasajero; var a_aux:a_pasajero);
  35.    procedure borrar_r(var a:a_pasajero; var a_aux:a_pasajero; buscado:string[15]);
  36.    procedure modificar_r(var a:a_pasajero);
  37.    procedure mostrar_r(var a:a_pasajero; buscado:string[15]);
  38.    procedure mostrar_a(var a:a_pasajero);
  39.  
  40.  
  41. implementation
  42.  
  43.   procedure abrir_a(var a:a_pasajero);
  44.   begin
  45.        assign(a, 'pasajeros.dat');
  46.        {$i-}
  47.        reset(a);
  48.        {$i+}
  49.        if ioresult <> 0 then
  50.        rewrite(a);
  51.   end;
  52.  
  53.   procedure abrir_a_aux(var a_aux:a_pasajero);
  54.   begin
  55.        assign(a_aux , 'pasajeros_aux.dat');
  56.        {$i-}
  57.        reset(a_aux);
  58.        {$i+}
  59.        rewrite(a_aux);
  60.   end;
  61.  
  62.  
  63.   procedure cerrar_a(var a:a_pasajero);
  64.   begin
  65.        close(a);
  66.   end;
  67.  
  68.  
  69.   procedure leer_r(var a:a_pasajero; pos:word; var reg:pasajero);
  70.   begin
  71.        seek(a,pos);
  72.        read(a,reg);
  73.   end;
  74.  
  75.  
  76.    procedure guardar_r(var a:a_pasajero; reg:pasajero);
  77.    begin
  78.         seek(a, filesize(a));
  79.         write(a, reg);
  80.    end;
  81.  
  82.  
  83.    procedure modificar_a_especifico(var a:a_pasajero; pos:integer; reg:pasajero);
  84.    begin
  85.         seek(a,pos);
  86.         write(a,reg);
  87.    end;
  88.  
  89.  
  90.    procedure cargar_r(var a:a_pasajero);
  91.    var
  92.    aux:char;
  93.    aux_pasajero_pref:char;
  94.    aux_r:pasajero;
  95.    begin
  96.         aux:= 's';
  97.         while (aux = 's') do
  98.         begin
  99.              clrscr;
  100.              with aux_r do
  101.              begin
  102.                   writeln('Ingrese los datos del pasajero: ');
  103.                   borrado:=false;
  104.                   pasajero_pref:= false;
  105.                   writeln('Nombre: ');
  106.                   readln(nombre);
  107.                   writeln('Apellido: ');
  108.                   readln(apellido);
  109.                   writeln('Edad: ');
  110.                   readln(edad);
  111.                   writeln('Nacionalidad: ');
  112.                   readln(nacionalidad);
  113.                   writeln('DNI: ');
  114.                   readln(dni);
  115.                   writeln('Pasajero preferencial? (s/n): ');
  116.                   readln(aux_pasajero_pref);
  117.  
  118.                   if (aux_pasajero_pref = 's') then
  119.                      pasajero_pref:= true;
  120.              end;
  121.              clrscr;
  122.              abrir_a(a);
  123.              guardar_r(a, aux_r);
  124.              cerrar_a(a);
  125.              writeln('Desea continuar ingresando pasajeros? (s/n): ');
  126.              readln(aux);
  127.         end;
  128.         clrscr;
  129.    end;
  130.  
  131.  
  132.    function buscar_r(var a:a_pasajero; buscado:string[15]):integer;
  133.    var
  134.    aux_r:pasajero;
  135.    i:integer;
  136.    encontrado:boolean;
  137.    begin
  138.         encontrado:= false;
  139.         i:=0;
  140.         while ((i<=(filesize(a)-1)) and not(encontrado)) do
  141.         begin
  142.              leer_r(a, i, aux_r);
  143.              if (aux_r.dni = buscado) then
  144.              begin
  145.                   encontrado:= true;
  146.                   buscar_r:= i;
  147.              end
  148.              else
  149.                  inc(i);
  150.         end;
  151.  
  152.         if not(encontrado) then
  153.         begin
  154.              buscar_r:= -1;
  155.         end;
  156.    end;
  157.  
  158.  
  159.    procedure reescribir_a(var a:a_pasajero; var a_aux:a_pasajero);
  160.    var
  161.    i:integer;
  162.    aux_r:pasajero;
  163.    begin
  164.         abrir_a_aux(a_aux);
  165.         for i:=0 to (filesize(a)-1) do
  166.         begin
  167.              leer_r(a, i, aux_r);
  168.              if not(aux_r.borrado) then
  169.                 guardar_r(a_aux, aux_r);
  170.         end;
  171.  
  172.         rewrite(a);
  173.  
  174.  
  175.         for i:=0 to (filesize(a_aux)-1) do
  176.         begin
  177.              leer_r(a_aux, i, aux_r);
  178.              write(a, aux_r);
  179.         end;
  180.         rewrite(a_aux);
  181.         cerrar_a(a_aux);
  182.    end;
  183.  
  184.  
  185.    procedure borrar_r(var a:a_pasajero; var a_aux:a_pasajero; buscado:string[15]);
  186.    var
  187.    aux_r:pasajero;
  188.    pos:integer;
  189.    begin
  190.         abrir_a(a);
  191.         pos:= buscar_r(a, buscado);
  192.         if (pos <> -1) then
  193.         begin
  194.              leer_r(a, pos, aux_r);
  195.              aux_r.borrado:= true;
  196.              modificar_a_especifico(a, pos, aux_r);
  197.              reescribir_a(a, a_aux);
  198.         end
  199.         else
  200.             writeln('No se encuentra el pasajero con DNI ' +  buscado + '.');
  201.  
  202.         cerrar_a(a);
  203.    end;
  204.  
  205.    procedure modificar_r(var a:a_pasajero);
  206.    var
  207.    aux:char;
  208.    aux_r:pasajero;
  209.    pos:integer;
  210.    opcion:1..6;
  211.    buscado:string[15];
  212.    begin
  213.         writeln('Ingrese el DNI del pasajero que desea modificar: ');
  214.         readln(buscado);
  215.         clrscr;
  216.         abrir_a(a);
  217.         pos:= buscar_r(a, buscado);
  218.         aux:= 's';
  219.         if (pos <> -1) then
  220.         begin
  221.              leer_r(a, pos, aux_r);
  222.              while (aux = 's') do
  223.              begin
  224.                   writeln('Que desea modificar?');
  225.                   writeln('1. NOMBRE');
  226.                   writeln('2. APELLIDO');
  227.                   writeln('3. EDAD');
  228.                   writeln('4. NACIONALIDAD');
  229.                   writeln('5. DNI');
  230.                   writeln('6. PASAJERO PREFERENCIAL');
  231.  
  232.                   readln(opcion);
  233.                   clrscr;
  234.                   case opcion of
  235.                          1:
  236.                          begin
  237.                               writeln('Ingrese el nuevo nombre: ');
  238.                               readln(aux_r.nombre);
  239.                          end;
  240.                          2:
  241.                          begin
  242.                               writeln('Ingrese el nuevo apellido: ');
  243.                               readln(aux_r.apellido);
  244.                          end;
  245.                          3:
  246.                          begin
  247.                               writeln('Ingrese la nueva edad: ');
  248.                               readln(aux_r.edad);
  249.                          end;
  250.                          4:
  251.                          begin
  252.                               writeln('Ingrese la nueva nacionalidad: ');
  253.                               readln(aux_r.nacionalidad);
  254.                          end;
  255.                          5:
  256.                          begin
  257.                               writeln('Ingrese el nuevo DNI: ');
  258.                               readln(aux_r.dni);
  259.                          end;
  260.                          6:
  261.                            aux_r.pasajero_pref:= not(aux_r.pasajero_pref);
  262.                   end;
  263.                   modificar_a_especifico(a, pos, aux_r);
  264.                   clrscr;
  265.                   writeln('El pasajero ha sido modificado exitosamente!');
  266.                   writeln('Desea continuar modificando informacion del pasajero? (s/n): ');
  267.                   readln(aux);
  268.                   clrscr;
  269.              end;
  270.         end
  271.         else
  272.         begin
  273.             writeln('No se encuentra el pasajero que desea modificar.');
  274.             readkey;
  275.         end;
  276.         cerrar_a(a);
  277.         clrscr;
  278.    end;
  279.  
  280.  
  281.    procedure mostrar_r(var a:a_pasajero; buscado:string[15]);
  282.    var
  283.    aux_r:pasajero;
  284.    pos:integer;
  285.    begin
  286.         abrir_a(a);
  287.         pos:= buscar_r(a, buscado);
  288.         leer_r(a, pos, aux_r);
  289.         with aux_r do
  290.         begin
  291.              writeln('Nombre: ', nombre);
  292.              writeln('Apellido: ', apellido);
  293.              writeln('Edad: ', edad);
  294.              writeln('Nacionalidad: ', nacionalidad);
  295.              writeln('DNI: ', dni);
  296.              if (pasajero_pref) then
  297.                 writeln('Pasajero preferencial: SI')
  298.              else
  299.                 writeln('Pasajero preferencial: NO');
  300.         end;
  301.         cerrar_a(a);
  302.    end;
  303.  
  304.  
  305.  
  306.  
  307.    procedure mostrar_a(var a:a_pasajero);
  308.    var
  309.    i:integer;
  310.    aux_r:pasajero;
  311.    begin
  312.         abrir_a(a);
  313.         for i:= 0 to (filesize(a)-1) do
  314.         begin
  315.              leer_r(a, i, aux_r);
  316.              with aux_r do
  317.              begin
  318.                   writeln('Archivo nro ', i+1, ':');
  319.                   writeln('Nombre: ', nombre);
  320.                   writeln('Apellido: ', apellido);
  321.                   writeln('Edad: ', edad);
  322.                   writeln('Nacionalidad: ', nacionalidad);
  323.                   writeln('DNI: ', dni);
  324.                   if (pasajero_pref) then
  325.                      writeln('Pasajero preferencial: SI')
  326.                   else
  327.                      writeln('Pasajero preferencial: NO');
  328.                   writeln('-----------------------');
  329.              end;
  330.         end;
  331.         cerrar_a(a);
  332.    end;
  333. {
  334.    procedure burbujapasajero(var a:a_pasajero);
  335.    var
  336.    i,j:word;
  337.    aux,aux1:pasajero;
  338.    pos:integer;
  339.    begin
  340.         for i:= 1 to (filesize(a)-1) do
  341.         begin
  342.              pos:=0;
  343.              for j:=1 to (filesize(a)-i) do
  344.              begin
  345.                   seek(a,pos);
  346.                   read(a,aux);
  347.                   seek(a,(pos+1));
  348.                   read(a,aux1);
  349.                   if (aux.Apellido) > (aux1.Apellido) then
  350.                   begin
  351.                        seek(a,pos);
  352.                        write(a,aux1);
  353.                        seek(a,(pos+1));
  354.                        write(a,aux);
  355.                   end;
  356.                   pos:=pos+1;
  357.              end;
  358.         end;
  359.    end;
  360. }
  361.  
  362. BEGIN
  363. END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement