Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 13.04 KB | None | 0 0
  1. program aerolineas;
  2.  
  3. //uses crt;
  4.  
  5. type
  6.     st30 = string[30];
  7.     st3 = string[3];
  8.  
  9.     treg1= record
  10.         nombre: st30;
  11.         codigo: st3;
  12.     end;
  13.  
  14.     tvuelos = record
  15.         cod: st3;
  16.         vuelo:st3;
  17.         bol:longint;
  18.         pasport:longint;
  19.         peso:real;
  20.     end;
  21.  
  22.     ttarifas = record
  23.         cod: st3;
  24.         kiloxp: real;
  25.         valorxkilo: real;
  26.     end;
  27.  
  28.     tarch= file of treg1;
  29.     tarchtar = file of ttarifas;
  30.     tarchvuelos = file of tvuelos;
  31.  
  32.     tregl = record
  33.         vuelo: st3;
  34.         peso: real;
  35.         valor: real;
  36.     end;
  37.        
  38.     tipoinfo= tregl;
  39.     tipolista=^tiponodo;
  40.     tiponodo= record
  41.         info: tipoinfo;
  42.         sigu: tipolista;
  43.     end;
  44.  
  45.     tregvec = record
  46.         cod:st3;
  47.         nom:st30;
  48.         kilos: real;
  49.         valor: real;
  50.         cont: byte;
  51.         lista: tipolista;
  52.     end;
  53.  
  54.    tvec= array[1..20] of tregvec;
  55.  
  56.     traux=record
  57.         peso:real;
  58.         vuelos:st3;
  59.     end;
  60.  
  61.  
  62.  
  63. procedure mostrar_menu(var op:byte);
  64.  
  65.  
  66. begin
  67. //    TextBackGround(red);
  68. //    textcolor(white);
  69. //    clrscr;
  70.  
  71. //    gotoxy(11,1);
  72.     writeln('  ==================MENU========================');
  73. //    gotoxy(11,2);
  74.     writeln('||                                              ||');
  75. //    gotoxy(11,3);
  76.     writeln('|| 1-Crear/cargar archivo de aerolineas         ||');
  77. //    gotoxy(11,4);
  78.     writeln('|| 2-Pasar archivo binario a archivo de texto   ||');
  79. //    gotoxy(11,5);
  80.     writeln('|| 3-Generar archivo de tarifas                 ||');
  81. //    gotoxy(11,6);
  82.     writeln('|| 4-Generar archivo de vuelos                  ||');
  83. //    gotoxy(11,7);
  84.     writeln('|| 5-Generar informe de vuelos                  ||');
  85. //    gotoxy(11,8);
  86.     writeln('|| 6-Salir                                      ||');
  87. //    gotoxy(11,9);
  88.      writeln('  ==============================================');
  89.  
  90.     writeln('Seleccione una opción(1-6)');
  91.  
  92.     repeat
  93.         readln(op);
  94.  
  95.     until((op>=1) and (op<=6));
  96. end;
  97.  
  98. procedure salir;
  99. begin
  100.     writeln('Gracias por utilizar el Programa Aerolineas');
  101.     writeln('Presione ENTER para salir');
  102.     readln;
  103. end;
  104.  
  105. procedure crear_archivo;
  106. var
  107.     archbin: tarch;
  108.     raero: treg1;
  109.     nom_arch:st30;
  110.  
  111.  
  112. begin
  113.     writeln('Usted va a crear un archivo binario');
  114.     writeln('Ingrese el nombre fisico(Ejemplo: hola.dat)');
  115.     readln(nom_arch);
  116.     assign(archbin, nom_arch);
  117.     rewrite(archbin);
  118.     writeln('......');
  119.     writeln('¡El archivo ha sido creado con exito!');
  120.     writeln('Ingrese el nombre de la aerolinea(fin para salir)');
  121.     readln (raero.nombre);
  122.  
  123.     while(raero.nombre <> 'fin' ) do begin
  124.  
  125.         writeln('Ingrese el codigo');
  126.         readln(raero.codigo);
  127.  
  128.         write(archbin, raero);
  129. //        clrscr;
  130.         writeln('Ingrese el nombre de la aerolinea(fin para salir)');
  131.         readln(raero.nombre);
  132.  
  133.     end;
  134.  
  135.     close(archbin);
  136. end;
  137.  
  138.  
  139. procedure cargar_archivo;
  140. var
  141.     archbin: tarch;
  142.     raero: treg1;
  143.     nom_arch: st30;
  144.  
  145. begin
  146.     writeln('Ingrese el nombre del archivo binario');
  147.     readln(nom_arch);
  148.     assign(archbin, nom_arch);
  149.     reset(archbin);
  150.  
  151.     seek(archbin, filesize(archbin));
  152.  
  153.     writeln('Ingrese el nombre de la aerolinea(fin para salir)');
  154.     readln(raero.nombre);
  155.  
  156.     while(raero.nombre <> 'fin' ) do begin
  157.  
  158.         writeln('Ingrese el codigo');
  159.         readln(raero.codigo);
  160.  
  161.         write(archbin, raero);
  162.  //       clrscr;
  163.         writeln('Ingrese el nombre de la aerolinea(fin para salir)');
  164.         readln(raero.nombre);
  165.  
  166.        
  167.     end;
  168.  
  169.     close(archbin);
  170.  
  171. end;
  172.  
  173.  
  174. procedure aerolineas;
  175. var
  176.     r:char;
  177.  
  178. begin
  179.    
  180.     writeln('¿Desea crear archivo?(s/n)');
  181.     readln(r);
  182.     if (r='s') then begin
  183.          crear_archivo
  184.     end else begin
  185.        
  186.        cargar_archivo
  187.  
  188.    end;
  189. end;
  190.  
  191. procedure aero_text;
  192. var
  193.     nom_arch: st30;
  194.     nom_text: st30;
  195.     raero: treg1;
  196.     archbin: tarch;
  197.     archtext: text;
  198.  
  199. begin
  200.  
  201. //    clrscr
  202.     writeln ('Ingrese el nombre del archivo binario');
  203.     readln(nom_arch);
  204.     writeln('Ingrese el nombre del archivo de texto');
  205.     readln(nom_text);
  206.     assign(archbin, nom_arch);
  207.     reset(archbin);
  208.  
  209.     assign(archtext, nom_text);
  210.     rewrite(archtext);
  211.    
  212.     writeln(archtext, 'Nombre de Aerolinea':31, 'Codigo':8);
  213.  
  214.     while(not eof(archbin) ) do begin
  215.  
  216.         read(archbin, raero);
  217.  
  218.         writeln(archtext, raero.nombre:31, raero.codigo:8);
  219.     end;
  220.  
  221.     close(archbin);
  222.     close(archtext);
  223.  
  224.     writeln('¡El archivo de texto ha sido cread con exito!');
  225.     readln;
  226. end;
  227.  
  228.  
  229. procedure tarifas_text;
  230.  
  231. var
  232.     nom_arch: st30;
  233.     nom_text: st30;
  234.     rtar: ttarifas;
  235.     archtar: tarchtar;
  236.     archtext: text;
  237.  
  238. begin
  239.  
  240. //    clrscr
  241.     writeln ('Ingrese el nombre del archivo binario');
  242.     readln(nom_arch);
  243.     writeln('Ingrese el nombre del archivo de texto');
  244.     readln(nom_text);
  245.     assign(archtar, nom_arch);
  246.     reset(archtar);
  247.  
  248.     assign(archtext, nom_text);
  249.     rewrite(archtext);
  250.  
  251.     writeln(archtext, 'Codigo':8,'Kg por pasajero':18, 'Valor por kilo':17);
  252.  
  253.     while(not eof(archtar) ) do begin
  254.  
  255.         read(archtar, rtar);
  256.  
  257.         writeln(archtext, rtar.cod:8 ,rtar.kiloxp:20 ,rtar.valorxkilo:19);
  258.     end;
  259.  
  260.     close(archtar);
  261.     close(archtext);
  262.  
  263.     writeln('¡El archivo de texto ha sido cread con exito!');
  264.     readln;
  265. end;
  266.  
  267. procedure vuelos_text;
  268.  
  269. var
  270.     nom_arch: st30;
  271.     nom_text: st30;
  272.     rvuelos: tvuelos;
  273.     archvuelos: tarchvuelos;
  274.     archtext: text;
  275.  
  276. begin
  277.    
  278. //    clrscr
  279.     writeln ('Ingrese el nombre del archivo binario');
  280.     readln(nom_arch);
  281.     writeln('Ingrese el nombre del archivo de texto');
  282.     readln(nom_text);
  283.     assign(archvuelos, nom_arch);
  284.     reset(archvuelos);
  285.  
  286.     assign(archtext, nom_text);
  287.     rewrite(archtext);
  288.  
  289.     writeln(archtext, 'Codigo':8, 'Vuelo':7, 'Boleto':8, 'Pasaporte':12,'Peso':6);
  290.    
  291.     while(not eof(archvuelos) ) do begin
  292.  
  293.         read(archvuelos, rvuelos);
  294.  
  295.         writeln(archtext, rvuelos.cod:5 , rvuelos.vuelo:8 , rvuelos.bol:10,rvuelos.pasport:12, rvuelos.peso:9);
  296.     end;
  297.  
  298.     close(archvuelos);
  299.     close(archtext);
  300.  
  301.     writeln('¡El archivo de texto ha sido cread con exito!');
  302.     readln;
  303. end;
  304.  
  305. procedure texto;
  306. var
  307.     op2:byte;
  308.  
  309. begin
  310.  
  311. //    clrscr;
  312.     writeln ('Usted a seleccionado la opcion de pasar un archivo binario a archivo de texto');
  313.    
  314.     writeln;
  315.     writeln('Opciones');
  316.     writeln('========');
  317.     writeln;
  318.     writeln('1)Archivo de aerolineas');
  319.     writeln('2)Archivo de tarifas');
  320.     writeln('3)Archivo de vuelos');
  321.     writeln;
  322.     writeln('Seleccione una opción(1-3)');
  323.     readln(op2);
  324.  
  325.     case op2 of
  326.         1:aero_text;
  327.         2:tarifas_text;
  328.         3:vuelos_text;
  329.        
  330.     end;  
  331.  
  332. end;
  333.  
  334.  
  335. procedure tarifas;
  336.  
  337. var
  338.     archtar: tarchtar;
  339.     rtar: ttarifas;
  340.     nom_tar:st30;
  341.  
  342.  
  343. begin
  344.     writeln('Usted va a crear un archivo binario');
  345.     writeln('Ingrese el nombre fisico(Ejemplo: hola.dat)');
  346.     readln(nom_tar);
  347.     assign(archtar, nom_tar);
  348.     rewrite(archtar);
  349.     writeln('......');
  350.     writeln('¡El archivo ha sido creado con exito!');
  351.     writeln('Ingrese el codigo de la aerolinea(fin para salir)');
  352.     readln (rtar.cod);
  353.  
  354.     while(rtar.cod <> 'fin' ) do begin
  355.  
  356.         writeln('Ingrese la cantidad permitida por persona(kg)');
  357.         readln(rtar.kiloxp);
  358.         writeln('Ingrese el valor por kilo');
  359.         readln(rtar.valorxkilo);
  360.  
  361.         write(archtar, rtar);
  362. //        clrscr;
  363.         writeln('Ingrese el codigo de la aerolinea(fin para salir)');
  364.         readln(rtar.cod);
  365.  
  366.     end;
  367.  
  368.     close(archtar);
  369. end;
  370.  
  371.  
  372. procedure vuelos;
  373.  
  374. var
  375.     rvuelos: tvuelos;
  376.     archvuelos: tarchvuelos;
  377.     nom_fly: st30;
  378.  
  379. begin
  380.     writeln('Usted va a crear un archivo binario');
  381.     writeln('Ingrese el nombre fisico(Ejemplo: hola.dat)');
  382.     readln(nom_fly);
  383.     assign(archvuelos, nom_fly);
  384.     rewrite(archvuelos);
  385.     writeln('......');
  386.     writeln('¡El archivo ha sido creado con exito!');
  387.     writeln('Ingrese el numero de vuelo(-1 para salir)');
  388.     readln (rvuelos.vuelo);
  389.  
  390.     while(rvuelos.vuelo <> '-1' ) do begin
  391.  
  392.         writeln('Ingrese el codigo de la aerolinea');
  393.         readln(rvuelos.cod);
  394.         writeln('Ingrese el peso del equipaje');
  395.         readln(rvuelos.peso);
  396.  
  397.         rvuelos.bol:= random(999999)+100000;
  398.         rvuelos.pasport:= random(999999999)+100000000;
  399.  
  400.  
  401.         write(archvuelos, rvuelos);
  402. //        clrscr;
  403.         writeln('Ingrese el numero de vuelo(-1 para salir)');
  404.         readln(rvuelos.vuelo);
  405.  
  406.     end;
  407.  
  408.     close(archvuelos);
  409. end;
  410.  
  411. procedure inicializar( var vec:tvec);
  412.  
  413. var
  414.     h: byte;
  415.  
  416. begin
  417.     for h:=1 to 20 do begin
  418.         vec[h].cod:= '0';
  419.         vec[h].nom:='zzzz';
  420.         vec[h].kilos:= 0;
  421.         vec[h].valor:= 0;
  422.         vec[h].cont:= 0;
  423.         vec[h].lista:= nil;
  424.     end;
  425. end;
  426.  
  427. procedure ordenar_vec(var vec:tvec);
  428.  
  429. var
  430.  
  431.     n:byte;
  432.     i:byte;
  433.     aux: tregvec;
  434.  
  435. begin
  436.  
  437.     for n:= 1 to 19 do begin
  438.         for i:=(n+1) to 20 do begin
  439.            
  440.             if (vec[n].nom > vec[i].nom)and(vec[i].nom <> 'zzzz') then begin
  441.                 aux:= vec[i];
  442.                 vec[i]:= vec[n];
  443.                 vec[n]:= aux
  444.             end;
  445.         end;
  446.     end;
  447. end;
  448.  
  449. procedure busqueda_lineal(vec:tvec; cod:st3; var poscod:byte);
  450.  
  451. begin
  452.     poscod:=1;
  453.  
  454.     while(cod <> vec[poscod].cod ) do begin
  455.         inc(poscod)
  456.     end;
  457. end;  
  458.  
  459. procedure cargar_vec(var vec:tvec);
  460.  
  461. var
  462.     tar: tarchtar;
  463.     aero: tarch;
  464.     c:byte;
  465.     reg: treg1;
  466.     reg2: ttarifas;
  467.     nom_arch: st30;
  468.     nom_arch2: st30;
  469.     poscod:byte;
  470.  
  471. begin
  472.  
  473.     writeln('Ingrese el nombre del archivo tarifas');
  474.     readln(nom_arch);
  475.  
  476.     assign(tar,nom_arch);
  477.     reset(tar);
  478.  
  479.  
  480.     writeln('Ingrese el nombre del archivo aerolineas');
  481.     readln(nom_arch2);
  482.  
  483.     assign(aero, nom_arch2);
  484.     reset(aero);
  485.  
  486.     c:=0;
  487.  
  488.     while(not eof(aero) ) do begin
  489.  
  490.         inc(c);
  491.         read(aero, reg);
  492.  
  493.         vec[c].cod:= reg.codigo;
  494.         vec[c].nom:= reg.nombre;
  495.  
  496.     end;
  497.  
  498.     close(aero);
  499.  
  500.     ordenar_vec(vec);
  501.  
  502.     while(not eof(tar) ) do begin
  503.  
  504.         read(tar, reg2);
  505.  
  506.         busqueda_lineal(vec, reg2.cod, poscod);
  507.  
  508.         vec[poscod].kilos:= reg2.kiloxp;
  509.         vec[poscod].valor:= reg2.valorxkilo;
  510.    
  511.     end;
  512.  
  513.     close(tar);
  514.  
  515. end;
  516.  
  517.  
  518. procedure insertar_nodo(var vec:tvec; raux:traux;poscod:byte);
  519.  
  520. var
  521.     p:^tiponodo;
  522. begin
  523.     new(p);
  524.     p^.info.valor:=0;
  525.     p^.info.peso:=0;
  526.     p^.info.vuelo:=raux.vuelos;
  527.  
  528.     if (vec[poscod].kilos <raux.peso) then begin
  529.    
  530.         p^.info.peso:=raux.peso-vec[poscod].kilos;
  531.         p^.info.valor:=p^.info.peso*vec[poscod].valor;
  532.     end;
  533.     p^.sigu:=vec[poscod].lista;
  534.     vec[poscod].lista:=p;
  535. end;
  536.  
  537. procedure   mod_nodo(var vec:tvec;raux:traux;poscod:byte);
  538.  
  539. var
  540.     exc:real;
  541.  
  542. begin
  543.     if (vec[poscod].kilos < raux.peso) then begin
  544.         exc:=raux.peso - vec[poscod].kilos;
  545.         vec[poscod].lista^.info.peso:= vec[poscod].lista^.info.peso + exc;
  546.         vec[poscod].lista^.info.valor:= vec[poscod].lista^.info.peso*vec[poscod].valor;
  547.  
  548.     end;
  549. end;
  550.    
  551. procedure cargar_lista(var vec:tvec;raux:traux;bandera:boolean;poscod:byte);
  552.  
  553. begin
  554.  
  555.     if (bandera=true) then begin
  556.         insertar_nodo(vec,raux,poscod)
  557.     end else begin
  558.         mod_nodo(vec,raux,poscod);
  559.     end;
  560. end;
  561.  
  562. procedure procesar_vuelos(var vec:tvec);
  563.  
  564. var
  565.     vuelos: tarchvuelos;
  566.     nvuelos2:st3;
  567.     nvuelos: st3;
  568.     reg: tvuelos;
  569.     nuevonodo: boolean;
  570.     poscod: byte;
  571.     nom_arch: st30;
  572.     raux: traux;
  573.  
  574. begin
  575.  
  576.     writeln('Ingrese el nombre del archivo de vuelos');
  577.     readln(nom_arch);
  578.  
  579.     assign(vuelos, nom_arch);
  580.     reset(vuelos);
  581.  
  582.     nvuelos2:='0';
  583.  
  584.     while(not eof(vuelos) ) do begin
  585.  
  586.         read(vuelos, reg);
  587.  
  588.         busqueda_lineal(vec, reg.cod, poscod);
  589.  
  590.         nvuelos:= reg.vuelo;
  591.  
  592.         if (nvuelos <> nvuelos2) then begin
  593.             inc(vec[poscod].cont);
  594.             nuevonodo:= true
  595.         end else begin
  596.             nuevonodo:= false
  597.         end;
  598.          
  599.         nvuelos2:= reg.vuelo;
  600.  
  601.         raux.peso:= reg.peso;
  602.         raux.vuelos:= reg.vuelo;
  603.  
  604.         cargar_lista(vec, raux, nuevonodo,poscod);
  605.  
  606.     end;
  607.    
  608.     close(vuelos);
  609. end;
  610.  
  611. procedure informe(vec:tvec);
  612.  
  613. var
  614.     c:byte;
  615.     q:^tiponodo;
  616.     pesot:real;
  617.     valort:real;
  618.  
  619. begin
  620.     c:=1;
  621.    
  622.     while(vec[c].nom<> 'zzzz' ) do begin
  623.         pesot:=0;
  624.         valort:=0;
  625.         while(vec[c].lista<>nil ) do begin
  626.             q:=vec[c].lista;
  627.             pesot:=pesot + q^.info.peso;
  628.             valort:=valort + q^.info.valor;
  629.             if (q^.info.peso=0) then begin
  630.                 writeln('El vuelo',q^.info.vuelo,'no tuvo exceso de peso')    
  631.             end;
  632.  
  633.                 vec[c].lista:=q^.sigu;
  634.                 dispose(q);
  635.         end;
  636.       writeln('Nombre de la aerolinea':30,'Cantidad de vuelos':5,'Total de exceso de equipaje':5,'Total recaudado por exceso':5);
  637.        
  638.       writeln(vec[c].nom:30,vec[c].cont:3,pesot:5:2,valort:5:2);
  639.     end;
  640. end;
  641.  
  642. procedure infovuelos;
  643. var
  644.     vec:tvec;
  645. begin
  646.     inicializar(vec);
  647.     cargar_vec(vec);
  648.     procesar_vuelos(vec);
  649.     informe(vec);
  650. end;
  651.  
  652. var
  653.     op:byte;
  654.  
  655. begin
  656. //    Textcolor(white);
  657.     writeln('Bienvenido al Programa Aerolineas');
  658.     writeln('Presione una tecla para comenzar');
  659.     readln;
  660.  
  661.     repeat
  662.         mostrar_menu(op);
  663.  
  664.         case op of
  665.             1:aerolineas;
  666.             2:texto;
  667.             3:tarifas;
  668.             4:vuelos;
  669.             5:infovuelos;
  670.             6:salir;
  671.         end;
  672.  
  673.     until(op=6);
  674.  
  675. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement