Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program aerolineas;
- //uses crt;
- type
- st30 = string[30];
- st3 = string[3];
- treg1= record
- nombre: st30;
- codigo: st3;
- end;
- tvuelos = record
- cod: st3;
- vuelo:st3;
- bol:longint;
- pasport:longint;
- peso:real;
- end;
- ttarifas = record
- cod: st3;
- kiloxp: real;
- valorxkilo: real;
- end;
- tarch= file of treg1;
- tarchtar = file of ttarifas;
- tarchvuelos = file of tvuelos;
- tregl = record
- vuelo: st3;
- peso: real;
- valor: real;
- end;
- tipoinfo= tregl;
- tipolista=^tiponodo;
- tiponodo= record
- info: tipoinfo;
- sigu: tipolista;
- end;
- tregvec = record
- cod:st3;
- nom:st30;
- kilos: real;
- valor: real;
- cont: byte;
- lista: tipolista;
- end;
- tvec= array[1..20] of tregvec;
- traux=record
- peso:real;
- vuelos:st3;
- end;
- procedure mostrar_menu(var op:byte);
- begin
- // TextBackGround(red);
- // textcolor(white);
- // clrscr;
- // gotoxy(11,1);
- writeln(' ==================MENU========================');
- // gotoxy(11,2);
- writeln('|| ||');
- // gotoxy(11,3);
- writeln('|| 1-Crear/cargar archivo de aerolineas ||');
- // gotoxy(11,4);
- writeln('|| 2-Pasar archivo binario a archivo de texto ||');
- // gotoxy(11,5);
- writeln('|| 3-Generar archivo de tarifas ||');
- // gotoxy(11,6);
- writeln('|| 4-Generar archivo de vuelos ||');
- // gotoxy(11,7);
- writeln('|| 5-Generar informe de vuelos ||');
- // gotoxy(11,8);
- writeln('|| 6-Salir ||');
- // gotoxy(11,9);
- writeln(' ==============================================');
- writeln('Seleccione una opción(1-6)');
- repeat
- readln(op);
- until((op>=1) and (op<=6));
- end;
- procedure salir;
- begin
- writeln('Gracias por utilizar el Programa Aerolineas');
- writeln('Presione ENTER para salir');
- readln;
- end;
- procedure crear_archivo;
- var
- archbin: tarch;
- raero: treg1;
- nom_arch:st30;
- begin
- writeln('Usted va a crear un archivo binario');
- writeln('Ingrese el nombre fisico(Ejemplo: hola.dat)');
- readln(nom_arch);
- assign(archbin, nom_arch);
- rewrite(archbin);
- writeln('......');
- writeln('¡El archivo ha sido creado con exito!');
- writeln('Ingrese el nombre de la aerolinea(fin para salir)');
- readln (raero.nombre);
- while(raero.nombre <> 'fin' ) do begin
- writeln('Ingrese el codigo');
- readln(raero.codigo);
- write(archbin, raero);
- // clrscr;
- writeln('Ingrese el nombre de la aerolinea(fin para salir)');
- readln(raero.nombre);
- end;
- close(archbin);
- end;
- procedure cargar_archivo;
- var
- archbin: tarch;
- raero: treg1;
- nom_arch: st30;
- begin
- writeln('Ingrese el nombre del archivo binario');
- readln(nom_arch);
- assign(archbin, nom_arch);
- reset(archbin);
- seek(archbin, filesize(archbin));
- writeln('Ingrese el nombre de la aerolinea(fin para salir)');
- readln(raero.nombre);
- while(raero.nombre <> 'fin' ) do begin
- writeln('Ingrese el codigo');
- readln(raero.codigo);
- write(archbin, raero);
- // clrscr;
- writeln('Ingrese el nombre de la aerolinea(fin para salir)');
- readln(raero.nombre);
- end;
- close(archbin);
- end;
- procedure aerolineas;
- var
- r:char;
- begin
- writeln('¿Desea crear archivo?(s/n)');
- readln(r);
- if (r='s') then begin
- crear_archivo
- end else begin
- cargar_archivo
- end;
- end;
- procedure aero_text;
- var
- nom_arch: st30;
- nom_text: st30;
- raero: treg1;
- archbin: tarch;
- archtext: text;
- begin
- // clrscr
- writeln ('Ingrese el nombre del archivo binario');
- readln(nom_arch);
- writeln('Ingrese el nombre del archivo de texto');
- readln(nom_text);
- assign(archbin, nom_arch);
- reset(archbin);
- assign(archtext, nom_text);
- rewrite(archtext);
- writeln(archtext, 'Nombre de Aerolinea':31, 'Codigo':8);
- while(not eof(archbin) ) do begin
- read(archbin, raero);
- writeln(archtext, raero.nombre:31, raero.codigo:8);
- end;
- close(archbin);
- close(archtext);
- writeln('¡El archivo de texto ha sido cread con exito!');
- readln;
- end;
- procedure tarifas_text;
- var
- nom_arch: st30;
- nom_text: st30;
- rtar: ttarifas;
- archtar: tarchtar;
- archtext: text;
- begin
- // clrscr
- writeln ('Ingrese el nombre del archivo binario');
- readln(nom_arch);
- writeln('Ingrese el nombre del archivo de texto');
- readln(nom_text);
- assign(archtar, nom_arch);
- reset(archtar);
- assign(archtext, nom_text);
- rewrite(archtext);
- writeln(archtext, 'Codigo':8,'Kg por pasajero':18, 'Valor por kilo':17);
- while(not eof(archtar) ) do begin
- read(archtar, rtar);
- writeln(archtext, rtar.cod:8 ,rtar.kiloxp:20 ,rtar.valorxkilo:19);
- end;
- close(archtar);
- close(archtext);
- writeln('¡El archivo de texto ha sido cread con exito!');
- readln;
- end;
- procedure vuelos_text;
- var
- nom_arch: st30;
- nom_text: st30;
- rvuelos: tvuelos;
- archvuelos: tarchvuelos;
- archtext: text;
- begin
- // clrscr
- writeln ('Ingrese el nombre del archivo binario');
- readln(nom_arch);
- writeln('Ingrese el nombre del archivo de texto');
- readln(nom_text);
- assign(archvuelos, nom_arch);
- reset(archvuelos);
- assign(archtext, nom_text);
- rewrite(archtext);
- writeln(archtext, 'Codigo':8, 'Vuelo':7, 'Boleto':8, 'Pasaporte':12,'Peso':6);
- while(not eof(archvuelos) ) do begin
- read(archvuelos, rvuelos);
- writeln(archtext, rvuelos.cod:5 , rvuelos.vuelo:8 , rvuelos.bol:10,rvuelos.pasport:12, rvuelos.peso:9);
- end;
- close(archvuelos);
- close(archtext);
- writeln('¡El archivo de texto ha sido cread con exito!');
- readln;
- end;
- procedure texto;
- var
- op2:byte;
- begin
- // clrscr;
- writeln ('Usted a seleccionado la opcion de pasar un archivo binario a archivo de texto');
- writeln;
- writeln('Opciones');
- writeln('========');
- writeln;
- writeln('1)Archivo de aerolineas');
- writeln('2)Archivo de tarifas');
- writeln('3)Archivo de vuelos');
- writeln;
- writeln('Seleccione una opción(1-3)');
- readln(op2);
- case op2 of
- 1:aero_text;
- 2:tarifas_text;
- 3:vuelos_text;
- end;
- end;
- procedure tarifas;
- var
- archtar: tarchtar;
- rtar: ttarifas;
- nom_tar:st30;
- begin
- writeln('Usted va a crear un archivo binario');
- writeln('Ingrese el nombre fisico(Ejemplo: hola.dat)');
- readln(nom_tar);
- assign(archtar, nom_tar);
- rewrite(archtar);
- writeln('......');
- writeln('¡El archivo ha sido creado con exito!');
- writeln('Ingrese el codigo de la aerolinea(fin para salir)');
- readln (rtar.cod);
- while(rtar.cod <> 'fin' ) do begin
- writeln('Ingrese la cantidad permitida por persona(kg)');
- readln(rtar.kiloxp);
- writeln('Ingrese el valor por kilo');
- readln(rtar.valorxkilo);
- write(archtar, rtar);
- // clrscr;
- writeln('Ingrese el codigo de la aerolinea(fin para salir)');
- readln(rtar.cod);
- end;
- close(archtar);
- end;
- procedure vuelos;
- var
- rvuelos: tvuelos;
- archvuelos: tarchvuelos;
- nom_fly: st30;
- begin
- writeln('Usted va a crear un archivo binario');
- writeln('Ingrese el nombre fisico(Ejemplo: hola.dat)');
- readln(nom_fly);
- assign(archvuelos, nom_fly);
- rewrite(archvuelos);
- writeln('......');
- writeln('¡El archivo ha sido creado con exito!');
- writeln('Ingrese el numero de vuelo(-1 para salir)');
- readln (rvuelos.vuelo);
- while(rvuelos.vuelo <> '-1' ) do begin
- writeln('Ingrese el codigo de la aerolinea');
- readln(rvuelos.cod);
- writeln('Ingrese el peso del equipaje');
- readln(rvuelos.peso);
- rvuelos.bol:= random(999999)+100000;
- rvuelos.pasport:= random(999999999)+100000000;
- write(archvuelos, rvuelos);
- // clrscr;
- writeln('Ingrese el numero de vuelo(-1 para salir)');
- readln(rvuelos.vuelo);
- end;
- close(archvuelos);
- end;
- procedure inicializar( var vec:tvec);
- var
- h: byte;
- begin
- for h:=1 to 20 do begin
- vec[h].cod:= '0';
- vec[h].nom:='zzzz';
- vec[h].kilos:= 0;
- vec[h].valor:= 0;
- vec[h].cont:= 0;
- vec[h].lista:= nil;
- end;
- end;
- procedure ordenar_vec(var vec:tvec);
- var
- n:byte;
- i:byte;
- aux: tregvec;
- begin
- for n:= 1 to 19 do begin
- for i:=(n+1) to 20 do begin
- if (vec[n].nom > vec[i].nom)and(vec[i].nom <> 'zzzz') then begin
- aux:= vec[i];
- vec[i]:= vec[n];
- vec[n]:= aux
- end;
- end;
- end;
- end;
- procedure busqueda_lineal(vec:tvec; cod:st3; var poscod:byte);
- begin
- poscod:=1;
- while(cod <> vec[poscod].cod ) do begin
- inc(poscod)
- end;
- end;
- procedure cargar_vec(var vec:tvec);
- var
- tar: tarchtar;
- aero: tarch;
- c:byte;
- reg: treg1;
- reg2: ttarifas;
- nom_arch: st30;
- nom_arch2: st30;
- poscod:byte;
- begin
- writeln('Ingrese el nombre del archivo tarifas');
- readln(nom_arch);
- assign(tar,nom_arch);
- reset(tar);
- writeln('Ingrese el nombre del archivo aerolineas');
- readln(nom_arch2);
- assign(aero, nom_arch2);
- reset(aero);
- c:=0;
- while(not eof(aero) ) do begin
- inc(c);
- read(aero, reg);
- vec[c].cod:= reg.codigo;
- vec[c].nom:= reg.nombre;
- end;
- close(aero);
- ordenar_vec(vec);
- while(not eof(tar) ) do begin
- read(tar, reg2);
- busqueda_lineal(vec, reg2.cod, poscod);
- vec[poscod].kilos:= reg2.kiloxp;
- vec[poscod].valor:= reg2.valorxkilo;
- end;
- close(tar);
- end;
- procedure insertar_nodo(var vec:tvec; raux:traux;poscod:byte);
- var
- p:^tiponodo;
- begin
- new(p);
- p^.info.valor:=0;
- p^.info.peso:=0;
- p^.info.vuelo:=raux.vuelos;
- if (vec[poscod].kilos <raux.peso) then begin
- p^.info.peso:=raux.peso-vec[poscod].kilos;
- p^.info.valor:=p^.info.peso*vec[poscod].valor;
- end;
- p^.sigu:=vec[poscod].lista;
- vec[poscod].lista:=p;
- end;
- procedure mod_nodo(var vec:tvec;raux:traux;poscod:byte);
- var
- exc:real;
- begin
- if (vec[poscod].kilos < raux.peso) then begin
- exc:=raux.peso - vec[poscod].kilos;
- vec[poscod].lista^.info.peso:= vec[poscod].lista^.info.peso + exc;
- vec[poscod].lista^.info.valor:= vec[poscod].lista^.info.peso*vec[poscod].valor;
- end;
- end;
- procedure cargar_lista(var vec:tvec;raux:traux;bandera:boolean;poscod:byte);
- begin
- if (bandera=true) then begin
- insertar_nodo(vec,raux,poscod)
- end else begin
- mod_nodo(vec,raux,poscod);
- end;
- end;
- procedure procesar_vuelos(var vec:tvec);
- var
- vuelos: tarchvuelos;
- nvuelos2:st3;
- nvuelos: st3;
- reg: tvuelos;
- nuevonodo: boolean;
- poscod: byte;
- nom_arch: st30;
- raux: traux;
- begin
- writeln('Ingrese el nombre del archivo de vuelos');
- readln(nom_arch);
- assign(vuelos, nom_arch);
- reset(vuelos);
- nvuelos2:='0';
- while(not eof(vuelos) ) do begin
- read(vuelos, reg);
- busqueda_lineal(vec, reg.cod, poscod);
- nvuelos:= reg.vuelo;
- if (nvuelos <> nvuelos2) then begin
- inc(vec[poscod].cont);
- nuevonodo:= true
- end else begin
- nuevonodo:= false
- end;
- nvuelos2:= reg.vuelo;
- raux.peso:= reg.peso;
- raux.vuelos:= reg.vuelo;
- cargar_lista(vec, raux, nuevonodo,poscod);
- end;
- close(vuelos);
- end;
- procedure informe(vec:tvec);
- var
- c:byte;
- q:^tiponodo;
- pesot:real;
- valort:real;
- begin
- c:=1;
- while(vec[c].nom<> 'zzzz' ) do begin
- pesot:=0;
- valort:=0;
- while(vec[c].lista<>nil ) do begin
- q:=vec[c].lista;
- pesot:=pesot + q^.info.peso;
- valort:=valort + q^.info.valor;
- if (q^.info.peso=0) then begin
- writeln('El vuelo',q^.info.vuelo,'no tuvo exceso de peso')
- end;
- vec[c].lista:=q^.sigu;
- dispose(q);
- end;
- writeln('Nombre de la aerolinea':30,'Cantidad de vuelos':5,'Total de exceso de equipaje':5,'Total recaudado por exceso':5);
- writeln(vec[c].nom:30,vec[c].cont:3,pesot:5:2,valort:5:2);
- end;
- end;
- procedure infovuelos;
- var
- vec:tvec;
- begin
- inicializar(vec);
- cargar_vec(vec);
- procesar_vuelos(vec);
- informe(vec);
- end;
- var
- op:byte;
- begin
- // Textcolor(white);
- writeln('Bienvenido al Programa Aerolineas');
- writeln('Presione una tecla para comenzar');
- readln;
- repeat
- mostrar_menu(op);
- case op of
- 1:aerolineas;
- 2:texto;
- 3:tarifas;
- 4:vuelos;
- 5:infovuelos;
- 6:salir;
- end;
- until(op=6);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement