/* Examen Ordinario Programaci¢n II EUP Q' perimita el control de la reservaci¢n y pago de boletos de avi¢n de una aerolinea comericial que ofrece vuelos diariamente cada uno de ellos a diferente destino, teniendo en cuenta que cada avi¢n vuela una vez a¤ dia, el programa deber  contar con lo siguiente: a) Registro de Vuelo b) Reservaci¢n de Boletos c) Pago de reservaci¢n d) Reportar pasajeros que adquirieron boleto. Gilnberto F‚lix Palata 2do. vespertino 16 enero 2005 gilio85@hotmail.com */ #include #include #include #include #include #include #include /** INICIO DE CLASE AEROLINEA **/ class aerolinea{ private: struct vuelos { char destino[10]; int n_asientos; }; struct boletos { char destino[10]; char nombre[30]; long fecha; int asiento; int pago; }; vuelos vuelo, avion; boletos boleto; int sa, sr; fstream fvuelos, fboletos; int estado; public: aerolinea(); ~aerolinea(); int buscar(char *); void nvo_vuelo(); void reservar(); void pagar(); void reportar(); }; aerolinea::aerolinea(){ fvuelos.open("vuelos.gil", ios::in|ios::out|ios::binary); fboletos.open("boletos.gil", ios::in|ios::out|ios::binary); estado=fvuelos.good() && fboletos.good(); sa=sizeof(vuelo); sr=sizeof(boleto); } aerolinea::~aerolinea(){ fvuelos.close(); fboletos.close(); } int aerolinea::buscar(char des[]){ fvuelos.seekg(0, ios::beg); int i=0, e=-1; while ( fvuelos.read((char *)&avion, sa) && e<0){ if (strcmp(avion.destino, des)==0) e=i; else i++; } fvuelos.clear(); return e; } void aerolinea::nvo_vuelo(){ if (estado){ clrscr(); cout<<"REGISTRO DE NUEVO VUELO\n"; cout<>vuelo.n_asientos; fvuelos.seekp(0, ios::end); fvuelos.write((char *)&vuelo, sa); cout<<"\nREgistro realizado..."; }else cout<<"\nDEstino registrado anteriormente..."; }else cout<<"Error en archivo..."; getch(); } void aerolinea::reservar(){ if (estado){ clrscr(); cout<<"RESERVACIàN DE BOLETOS\n"; cout<=0){ cout<<"Fecha de salida (aaaammdd): "; cin>>boleto.fecha; cout<<"Asiento deceado: "; cin>>boleto.asiento; if (avion.n_asientos>=boleto.asiento || boleto.asiento>=1){ fboletos.seekg(0, ios::beg); boletos aux; int b=0; while (fboletos.read((char *)&aux, sr) && b==0){ if (strcmp(aux.destino,boleto.destino)==0 && aux.fecha==boleto.fecha && aux.asiento==boleto.asiento) b=1; } if (b==0){ fboletos.clear(); cout<<"Nombre del Pasajero:"; gets(boleto.nombre); boleto.pago=0; fboletos.seekp(0, ios::end); fboletos.write((char *)&boleto, sr); cout<<"REservacion realizada..."; }else cout<<"Asiento no diponible.."; }else { cout<<"N£mero de asiento fuera del rango.."; cout<<"\nAsientos del avion a "<>fech; cout<<"Numero de asiento: "; cin>>numa; fboletos.seekg(0, ios::beg); while (fboletos.read((char *)&boleto, sr) && band==0){ if (strcmp(boleto.destino, dest)==0 && boleto.fecha==fech && boleto.asiento==numa){ boleto.pago=1; fboletos.seekp(fboletos.tellg()-sr, ios::beg); fboletos.write((char *)&boleto, sr); cout<<"Pago realizado.."; band=1; } } if (band==1) cout<<"\nPasajero "<>fech; clrscr(); cout<<"REPORTE\n"; cout<<"Asiento Pasajero Pago"; char *pagado[]={"Pendiente", "Realizado"}; int i=0; fboletos.seekg(0, ios::beg); while ( fboletos.read((char *)&boleto, sr) ){ if (strcmp(boleto.destino, dest)==0){ gotoxy(1, 4+i); cout<