online: 10; azi: 565; total: 52571 Manual clasa a x a - Realizarea aplicatiilor - Aplicatii

Manual clasa a X a

Realizarea aplicatiilor

Aplicatii

Ex5-238-Xa
Creați o aplicaţie care să fie folosită pentru a tine evidenta urmatoarelor informatii referitoare la o bibliotecă:
Aplicatia trebuie sa asigure afisarea următoarelor informaţii :
In limbajul c++
# include < iostream >
# include <vector>
# include < string >
struct Domeniu {
int cod;
std :: string nume;
};
struct Carte {
int cod;
std :: string titlu;
std :: string autor;
std :: string editura;
int an_aparitie ;
double pret ;
int cod_domeniu ;
};
struct Cititor {
int cod;
std :: string nume;
std :: string adresa;
std :: string telefon;
};
struct Imprumut {
int cod_carte ;
int cod_cititor ;
std :: string data_imprumut ;
std :: string data_returnare ;
std :: string data_inapoiere ;
};
// Functii pentru afisarea informatiilor
void lista_carti_imprumutate_cititor ( const std ::vector< Imprumut >& imprumuturi ,
const std ::vector<Carte>& carti ,
const std ::vector<Cititor>& cititori,
const std :: string & nume_cititor ,
const std :: string & data_inceput ,
const std :: string & data_sfarsit ) ;
void lista_carti_imprumutate_data ( const std ::vector< Imprumut >& imprumuturi ,
const std ::vector<Carte>& carti ,
const std :: string & data) ;
void lista_carti_autor ( const std ::vector<Carte>& carti , const std :: string & autor) ;
void lista_carti_domeniu ( const std ::vector<Carte>& carti ,
const std ::vector<Domeniu>& domenii,
const std :: string & nume_domeniu ) ;
void lista_carti_domeniu_editura ( const std ::vector<Carte>& carti ,
const std ::vector<Domeniu>& domenii,
const std :: string & nume_domeniu ,
const std :: string & nume_editura ) ;
void lista_carti_an_editura ( const std ::vector<Carte>& carti ,
int an,
const std :: string & nume_editura ) ;
int main () {
// Adauga aici datele initiale pentru domenii, carti , cititori si imprumuturi
std ::vector<Domeniu> domenii;
std ::vector<Carte> carti ;
std ::vector<Cititor> cititori;
std ::vector< Imprumut > imprumuturi ;
// Exemplu de utilizare a functiilor de afisare a informatiilor
std :: string nume_cititor , data_inceput , data_sfarsit ;
std ::cin >> nume_cititor >> data_inceput >> data_sfarsit ;
lista_carti_imprumutate_cititor ( imprumuturi , carti , cititori, nume_cititor , data_inceput , data_sfarsit );
return 0 ;
}
void lista_carti_imprumutate_cititor ( const std ::vector< Imprumut >& imprumuturi ,
const std ::vector<Carte>& carti ,
const std ::vector<Cititor>& cititori,
const std :: string & nume_cititor ,
const std :: string & data_inceput ,
const std :: string & data_sfarsit ) {
for ( const auto & imprumut : imprumuturi ) {
if ( imprumut.data_imprumut >= data_inceput && imprumut.data_imprumut <= data_sfarsit ) {
for ( const auto & cititor : cititori) {
if ( cititor.cod == imprumut.cod_cititor && cititor.nume == nume_cititor ) {
for ( const auto & carte : carti ) {
if ( carte.cod == imprumut.cod_carte ) {
std :: cout << "Titlu: " << carte.titlu << ", Autor: " << carte.autor << '\n' ;
}
}
}
}
}
}
}
void lista_carti_imprumutate_data ( const std ::vector< Imprumut >& imprumuturi ,
const std ::vector<Carte>& carti ,
const std :: string & data) {
for ( const auto & imprumut : imprumuturi ) {
if ( imprumut.data_imprumut == data) {
for ( const auto & carte : carti ) {
if ( carte.cod == imprumut.cod_carte ) {
std :: cout << "Titlu: " << carte.titlu << ", Autor: " << carte.autor << '\n' ;
}
}
}
}
}
void lista_carti_autor ( const std ::vector<Carte>& carti , const std :: string & autor) {
for ( const auto & carte : carti ) {
if ( carte.autor == autor) {
std :: cout << "Titlu: " << carte.titlu << ", Editura: " << carte.editura << '\n' ;
}
}
}
void lista_carti_domeniu ( const std ::vector<Carte>& carti ,
const std ::vector<Domeniu>& domenii,
const std :: string & nume_domeniu ) {
int cod_domeniu = -1 ;
for ( const auto & domeniu : domenii) {
if ( domeniu.nume == nume_domeniu ) {
cod_domeniu = domeniu.cod ;
break ;
}
}
if ( cod_domeniu != -1 ) {
for ( const auto & carte : carti ) {
if ( carte.cod_domeniu == cod_domeniu ) {
std :: cout << "Titlu: " << carte.titlu << ", Autor: " << carte.autor << '\n' ;
}
}
}
}
void lista_carti_domeniu_editura ( const std ::vector<Carte>& carti ,
const std ::vector<Domeniu>& domenii,
const std :: string & nume_domeniu ,
const std :: string & nume_editura ) {
int cod_domeniu = -1 ;
for ( const auto & domeniu : domenii) {
if ( domeniu.nume == nume_domeniu ) {
cod_domeniu = domeniu.cod ;
break ;
}
}
if ( cod_domeniu != -1 ) {
for ( const auto & carte : carti ) {
if ( carte.cod_domeniu == cod_domeniu && carte.editura == nume_editura ) {
std :: cout << "Titlu: " << carte.titlu << ", Autor: " << carte.autor << '\n' ;
}
}
}
}
void lista_carti_an_editura ( const std ::vector<Carte>& carti ,
int an,
const std :: string & nume_editura ) {
for ( const auto & carte : carti ) {
if ( carte.an_aparitie == an && carte.editura == nume_editura ) {
std :: cout << "Titlu: " << carte.titlu << ", Autor: " << carte.autor << '\n' ;
}
}
}
Pentru a face programul să funcționeze, va trebui să completezi structurile cu date de intrare și să apelezi funcțiile corespunzătoare în funcție de ceea ce dorești să afișezi. Aici este un exemplu de cum să faci acest lucru:
int main () {
// Exemplu de date initiale pentru domenii, carti , cititori si imprumuturi
std ::vector<Domeniu> domenii = {
{ 1 , "Literatura" },
{ 2 , "Istorie" },
{ 3 , "Informatica" },
};
std ::vector<Carte> carti = {
{ 100 , "Mara" , "Ioan Slavici" , "Editura X" , 1980 , 35.50 , 1 },
{ 101 , "Istoria Romanilor" , "N. Iorga" , "Editura Y" , 2000 , 50.00 , 2 },
{ 102 , "Introducere in algoritmi" , " Cormen " , "Editura Z" , 2009 , 99.99 , 3 },
};
std ::vector<Cititor> cititori = {
{ 10 , "Popescu Ion" , "Strada Libertatii , nr 3" , "0722000000" },
{ 11 , "Ionescu Ana" , "Strada Pacii , nr 5" , "0722111111" },
};
std ::vector< Imprumut > imprumuturi = {
{ 100 , 10 , "2023-04-01" , "2023-04-14" , "" },
{ 101 , 11 , "2023-04-10" , "2023-04-24" , "" },
};
// Exemplu de utilizare a functiilor de afisare a informatiilor
std :: string nume_cititor = "Popescu Ion" ;
std :: string data_inceput = "2023-04-01" ;
std :: string data_sfarsit = "2023-04-30" ;
lista_carti_imprumutate_cititor ( imprumuturi , carti , cititori, nume_cititor , data_inceput , data_sfarsit );
std :: string data = "2023-04-10" ;
lista_carti_imprumutate_data ( imprumuturi , carti , data);
std :: string autor = "Ioan Slavici" ;
lista_carti_autor ( carti , autor);
std :: string nume_domeniu = "Literatura" ;
lista_carti_domeniu ( carti , domenii, nume_domeniu );
std :: string nume_editura = "Editura X" ;
lista_carti_domeniu_editura ( carti , domenii, nume_domeniu , nume_editura );
int an = 2000 ;
lista_carti_an_editura ( carti , an, nume_editura );
return 0 ;
}

Acest exemplu conține date inițiale pentru domenii, cărți, cititori și împrumuturi și arată cum să apelezi funcțiile pentru a afișa informațiile solicitate. Pentru a rula programul, copiază și lipește întregul cod (inclusiv fragmentele de cod de mai sus) într-un fișier cu extensia . cpp , de exemplu "biblioteca.cpp". După ce ai creat fișierul, va trebui să compili și să rulezi programul folosind un compilator C++ și un terminal sau o aplicație de dezvoltare care acceptă C++.
Dacă folosești linia de comandă și un compilator precum g++ , urmează pașii de mai jos:
g++ - std =c++ 11 -o biblioteca biblioteca.cpp
./biblioteca
pe Windows, folosește:
./biblioteca.exe
Programul ar trebui să afișeze informațiile solicitate pe ecran, în funcție de datele de intrare predefinite în cod. Dacă dorești să schimbi datele de intrare sau să interacționezi cu utilizatorul pentru a prelua datele, va trebui să modifici codul pentru a permite acest lucru, de exemplu, folosind funcția std ::cin pentru a citi datele de la tastatură.
Dacă folosești un IDE ( Integrated Development Environment ) pentru a dezvolta și rula codul C++, pașii pot diferi în funcție de aplicație. De obicei, va trebui să creezi un nou proiect, să adaugi fișierul "biblioteca.cpp" și să rulezi programul din cadrul IDE-ului. Asigură-te că IDE- ul tău este configurat să utilizeze un compilator C++11 sau mai nou.