online: 5; azi: 722; total: 52728 Manual clasa a x a - Realizarea aplicatiilor - Aplicatii

Manual clasa a X a

Realizarea aplicatiilor

Aplicatii

Ex 4 -238-Xa
O companie asigură transportul pe linii aeriene. Creați o aplicație, pentru acest bene ficiar, în care să păstrați evidența următoarele informaţii referitoare la cursele aeriene dintr-o zi şi la pasagerii acestor curse:
Aplicația trebuie să asigure afişarea următoarelor informații:
# include < iostream >
# include <vector>
# include < string >
struct Cursa {
std :: string nume;
std :: string destinatie ;
int capacitate;
std :: string tip_avion ;
std ::vector< std :: string > pasageri;
std ::vector< int > locuri_rezervate ;
};
struct LinieAeriana {
int numar ;
std ::vector<Cursa> curse;
};
void lista_pasageri ( const std ::vector< LinieAeriana >& linii_aeriene , const std :: string & nume_cursa ) {
for ( const auto & linie : linii_aeriene ) {
for ( const auto & cursa : linie.curse ) {
if ( cursa.nume == nume_cursa ) {
std :: cout << "Pasageri pentru cursa " << nume_cursa << ":\n" ;
for ( const auto & pasager : cursa.pasageri ) {
std :: cout << pasager << '\n' ;
}
return ;
}
}
}
std :: cout << "Cursa " << nume_cursa << " nu a fost gasita .\n" ;
}
void lista_locuri_rezervate ( const std ::vector< LinieAeriana >& linii_aeriene , const std :: string & nume_pasager , const std :: string & nume_cursa ) {
for ( const auto & linie : linii_aeriene ) {
for ( const auto & cursa : linie.curse ) {
if ( cursa.nume == nume_cursa ) {
bool gasit = false ;
for ( size_t i = 0 ; i < cursa.pasageri. size (); ++i) {
if ( cursa.pasageri [i] == nume_pasager ) {
std :: cout << "Locuri rezervate de " << nume_pasager << " pentru cursa " << nume_cursa << ": " << cursa.locuri_rezervate [i] << '\n' ;
gasit = true ;
}
}
if (! gasit ) {
std :: cout << "Pasagerul " << nume_pasager << " nu a fost gasit pentru cursa " << nume_cursa << ".\n" ;
}
return ;
}
}
}
std :: cout << "Cursa " << nume_cursa << " nu a fost gasita .\n" ;
}
void tip_avion ( const std ::vector< LinieAeriana >& linii_aeriene , const std :: string & nume_cursa ) {
for ( const auto & linie : linii_aeriene ) {
for ( const auto & cursa : linie.curse ) {
if ( cursa.nume == nume_cursa ) {
std :: cout << "Tipul de avion pentru cursa " << nume_cursa << ": " << cursa.tip_avion << '\n' ;
return ;
}
}
}
std :: cout << "Cursa " << nume_cursa << " nu a fost gasita .\n" ;
}
void lista_curse ( const std ::vector< LinieAeriana >& linii_aeriene , int numar_linie ) {
bool gasit = false ;
for ( const auto & linie : linii_aeriene ) {
if ( linie.numar == numar_linie ) {
gasit = true ;
std :: cout << "Curse pentru linia aeriana " << numar_linie << ":\n" ;
for ( const auto & cursa : linie.curse ) {
std :: cout << cursa.nume << " ( destinatie : " << cursa.destinatie << ")\n" ;
}
}
}
if (! gasit ) {
std :: cout << "Linia aeriana cu numarul " << numar_linie << " nu a fost gasita .\n" ;
}
}
void lista_curse_destinatie ( const std ::vector< LinieAeriana >& linii_aeriene , const std :: string & destinatie ) {
std :: cout << "Curse cu destinatia " << destinatie << ":\n" ;
for ( const auto & linie : linii_aeriene ) {
for ( const auto & cursa : linie.curse ) {
if ( cursa.destinatie == destinatie ) {
std :: cout << cursa.nume << " (linie aeriana: " << linie.numar << ")\n" ;
}
}
}
}
int main () {
// Exemplu de date pentru linii aeriene, curse si pasageri
std ::vector< LinieAeriana > linii_aeriene = {
{ 1 , {{ "Cursa1" , "Paris" , 50 , "Airbus A320" , { "Ana" , "Ioana" }, { 1 , 3 }},
{ "Cursa2" , "Londra" , 40 , "Boeing 737" , { "Maria" , "Dan" }, { 2 , 1 }}}},
{ 2 , {{ "Cursa3" , "Madrid" , 30 , "Airbus A321" , { "Adrian" , "Cristian" , "Elena" }, { 1 , 2 , 1 }},
{ "Cursa4" , "Roma" , 45 , "Boeing 747" , { "Mihai" , "Diana" }, { 3 , 4 }}}}
};
// Exemplu de utilizare a functiilor
lista_pasageri ( linii_aeriene , "Cursa1" );
lista_locuri_rezervate ( linii_aeriene , "Ana" , "Cursa1" );
tip_avion ( linii_aeriene , "Cursa1" );
lista_curse ( linii_aeriene , 1 );
lista_curse_destinatie ( linii_aeriene , "Londra" );
return 0 ;
}
În acest program, sunt definite trei structuri principale de date: Pasager, Cursa și LinieAeriana . Aceste structuri sunt folosite pentru a stoca informațiile despre pasageri, curse și linii aeriene.
struct Pasager {
std :: string nume;
int loc;
};
struct Cursa {
std :: string nume;
std :: string destinatie ;
int capacitate;
std :: string tip_avion ;
std ::vector< std :: string > nume_pasageri ;
std ::vector< int > locuri_pasageri ;
};
struct LinieAeriana {
int numar ;
std ::vector<Cursa> curse;
};
Această funcție afișează lista de pasageri pentru o cursă specifică. Funcția primește ca parametru un vector de LinieAeriana și numele cursei pentru care să afișeze pasagerii.
void lista_pasageri ( const std ::vector< LinieAeriana >& linii_aeriene , const std :: string & nume_cursa ) {
//...
}
Această funcție afișează locurile rezervate de un pasager pentru o cursă specifică. Funcția primește ca parametru un vector de LinieAeriana , numele pasagerului și numele cursei pentru care să afișeze locurile rezervate.
void lista_locuri_rezervate ( const std ::vector< LinieAeriana >& linii_aeriene , const std :: string & nume_pasager , const std :: string & nume_cursa ) {
//...
}
Această funcție afișează tipul de avion folosit pentru o cursă specifică. Funcția primește ca parametru un vector de LinieAeriana și numele cursei pentru care să afișeze tipul de avion.
void tip_avion ( const std ::vector< LinieAeriana >& linii_aeriene , const std :: string & nume_cursa ) {
//...
}
Această funcție afișează lista curselor care aparțin unei anumite linii aeriene. Funcția primește ca parametru un vector de LinieAeriana și numărul liniei aeriene pentru care să afișeze cursele.
void lista_curse ( const std ::vector< LinieAeriana >& linii_aeriene , int numar_linie ) {
//...
}
Această funcție afișează lista curselor care au ca destinație o anumită localitate. Funcția primește ca parametru un vector de LinieAeriana și numele destinației pentru care să afișeze cursele.
void lista_curse_destinatie ( const std ::vector< LinieAeriana >& linii_aeriene , const std :: string & destinatie ) {
//...
}
Funcția main este punctul de intrare în program. În această funcție, se creează vectorul de linii aeriene și se apelează funcțiile de mai sus pentru a afișa informațiile solicitate. Datele de exemplu sunt hardcodate în funcția main , dar acestea pot fi modificate pentru a testa programul cu alte seturi de date.
int main () {
// Crearea vectorului de linii aeriene
std ::vector< LinieAeriana > linii_aeriene = {
//...
};
// Apelarea funcțiilor pentru a afișa informațiile solicitate
lista_pasageri ( linii_aeriene , "Cursa1" );
lista_locuri_rezervate ( linii_aeriene , "Pasager1" , "Cursa1" );
tip_avion ( linii_aeriene , "Cursa1" );
lista_curse ( linii_aeriene , 1 );
lista_curse_destinatie ( linii_aeriene , "Destinatie1" );
return 0 ;
}