Alx09

POO_L3P5_Vector

Oct 17th, 2020
648
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. #define N 20
  7.  
  8. class Carte
  9. {
  10. public:
  11.     string titlu = "";
  12.     Carte(){}
  13.     Carte(string titlu) //constructorul clasei de baza
  14.     {
  15.         this->titlu = titlu;
  16.     }
  17.     void SetTitile(string titlu) { this->titlu = titlu; }
  18.     string ReturnTitle() { return titlu; }
  19.     ~Carte() {}; // destructorul clasei
  20.  
  21.     void afisare_carte() //functie pentru afisare
  22.     {
  23.         cout << "\nTitlul cartii: " << titlu << endl;
  24.     }
  25. };
  26.  
  27. class Biblioteca :public Carte //clasa derivata
  28. {
  29. public:
  30.     string autor;
  31.     unsigned anAp;
  32.     bool  rented;
  33.     ~Biblioteca() {
  34.         cout << "\nCartea " << ReturnTitle() << " scrisa de " << autor << " a fost stearsa";
  35.     }
  36.     Biblioteca(){}
  37.     Biblioteca(string titlu, string autor, int anAp) :Carte(titlu)
  38.     {
  39.         this->titlu = titlu;
  40.         this->autor = autor;
  41.         this->anAp = anAp;
  42.         rented = false;
  43.  
  44.     }
  45.     void SetAutor(string autor) { this->autor = autor; }
  46.     void SetAnAp(unsigned anAp) { this->anAp = anAp; }
  47.     string ReturnAutor() { return autor; }
  48.     void RentBook() {
  49.         if (rented) cout << "\n Cartea a fost deja imprumutata";
  50.         else rented = true;
  51.     }
  52.     void ReturnBook() { rented = false; }
  53.     void afisare()
  54.     {
  55.         afisare_carte(); //titlul din clasa de baza
  56.         cout << "Autor: " << autor << endl;
  57.         cout << "An aparitie: " << anAp << endl;
  58.         if (rented)
  59.             cout << "Cartea a fost imprumutata!\n";
  60.         else
  61.             cout << "Cartea se afla in bibloteca\n";
  62.    
  63.     }
  64.  
  65. };
  66. int SearchBook( Biblioteca *biblio, string titlu, string autor, unsigned n) {
  67.     for (unsigned i = 0; i < n; i++)
  68.         if (biblio[i].ReturnTitle() == titlu && biblio[i].ReturnAutor() == autor)
  69.             return i;
  70.     return n;
  71. }
  72.  
  73. int main()
  74. {    
  75.     unsigned n = 0, i, opt;
  76.     string titlu, numeA;
  77.     Biblioteca biblo[N];
  78.     do {
  79.         cout << "\n0.Iesire";
  80.         cout << "\n1.Adaugare care in bibloteca";
  81.         cout << "\n2.Afisare carti din bibloteca";
  82.         cout << "\n3.Imprumutare carte: ";
  83.         cout << "\n4.Inapoiare carte";
  84.         cout << "\n5. Stergere Carte";
  85.         cout << "\n6.Cautare carte";
  86.         cout << "\nOptiunea aleasa: "; cin >> opt;
  87.         system("cls");
  88.         switch (opt)
  89.         {
  90.         case 0:return 0; break;
  91.         case 1:
  92.             if (n < N) {
  93.                 cout << "\nTitlu carte: "; cin >> titlu;
  94.                 biblo[n].SetTitile(titlu);
  95.                 cout << "Autor carte: "; cin >> numeA;
  96.                 biblo[n].SetAutor(numeA);
  97.                 cout << "An aparitie: "; cin >> opt; //folosim opt pe post de auxiliar
  98.                 biblo[n].SetAnAp(opt);
  99.                 biblo[n].ReturnBook();
  100.                 n++;
  101.             }
  102.             else
  103.                 cout << "\nBibloteca este plina!";
  104.             break;
  105.         case 2:
  106.             if (n)
  107.                 for (i = 0; i < n; i++)
  108.                 biblo[i].afisare();
  109.             else
  110.                     cout << "Bibloteca este goala";
  111.             break;
  112.         case 3:
  113.             if (n) {
  114.                 cout << "\nTitlu carte: "; cin >> titlu;
  115.                 cout << "Autor carte: "; cin >> numeA;
  116.                 opt = SearchBook(biblo, titlu, numeA, n);
  117.                 if (opt != n) {
  118.                     cout << "\nCartea a fost imprumutata!";
  119.                     biblo[opt].RentBook();
  120.                 }
  121.                 else
  122.                     cout << "\nCartea nu exista in biblioteca";
  123.             }
  124.             else
  125.                 cout << "\nNu exista carti in bibloteca";
  126.             break;
  127.         case 4:
  128.             if (n) {
  129.                 cout << "\nTitlu carte: "; cin >> titlu;
  130.                 cout << "Autor carte: "; cin >> numeA;
  131.                 opt = SearchBook(biblo, titlu, numeA, n);
  132.                 if (opt != n) {
  133.                     cout << "\nCartea a fost inapoiata";
  134.                     biblo[opt].ReturnBook();
  135.                 }
  136.                 else
  137.                     cout << "\nCartea nu exista in biblioteca";
  138.             }
  139.             else
  140.                 cout << "\nNu exista carti in bibloteca";
  141.  
  142.         case 5:
  143.             if (n) {
  144.                 cout << "\nTitlu carte: "; cin >> titlu;
  145.                 cout << "Autor carte: "; cin >> numeA;
  146.                 opt = SearchBook(biblo, titlu, numeA, n);
  147.                 if (opt != n) {
  148.                     biblo[opt].~Biblioteca();
  149.                     for (i = opt; i < n - 1; i++)
  150.                         biblo[i] = biblo[i + 1];
  151.                     n--;
  152.                 }
  153.                 else
  154.                     cout << "\nCartea nu exista in biblioteca";
  155.             }
  156.             else
  157.                 cout << "\nNu exista carti in bibloteca";
  158.             break;
  159.         case 6:
  160.             if (n) {
  161.                 cout << "\nTitlu carte: "; cin >> titlu;
  162.                 cout << "Autor carte: "; cin >> numeA;
  163.                 opt = SearchBook(biblo, titlu, numeA, n);
  164.                 if (opt != n) {
  165.                     cout << "\nDetali carte";
  166.                     biblo[opt].afisare();
  167.                    
  168.                 }
  169.                 else
  170.                     cout << "\nCartea nu exista in biblioteca";
  171.             }
  172.             else
  173.                 cout << "\nNu exista carti in bibloteca";
  174.         default:
  175.             system("cls");
  176.             break;
  177.         }
  178.  
  179.     } while (1);
  180.    
  181.    
  182.    
  183.     system("pause");
  184.     return 0;
  185. }
RAW Paste Data