Advertisement
developer10

Zadatak s knjigama i bibliotekom - inicijalizacija reference

Nov 25th, 2015
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.08 KB | None | 0 0
  1. #include<iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. class Clan
  7. {
  8.     const int _clanskiBroj;
  9.     char*_imePrezime;
  10.     char _telefon[20];
  11.  
  12. public:
  13.  
  14.     Clan(int clanBr = 0, char* ip = "<ime>", char* telefon = "<tel>") :_clanskiBroj(clanBr)
  15.     {
  16.         int size = strlen(ip) + 1;
  17.         _imePrezime = new char[size];
  18.         strcpy_s(_imePrezime, size, ip);
  19.  
  20.         size = strlen(telefon) + 1;
  21.         strcpy_s(_telefon, size, telefon);
  22.     }
  23.  
  24.     ~Clan(){
  25.         delete[] _imePrezime;
  26.         _imePrezime = nullptr;
  27.     }
  28.  
  29.     Clan(Clan& orig) :_clanskiBroj(orig._clanskiBroj)
  30.     {
  31.         int size = strlen(orig._imePrezime) + 1;
  32.         _imePrezime = new char[size];
  33.         strcpy_s(_imePrezime, size, orig._imePrezime);
  34.  
  35.         size = strlen(orig._telefon) + 1;
  36.         strcpy_s(_telefon, size, orig._telefon);
  37.     }
  38.  
  39.     // ==========================
  40.  
  41.     Clan& operator=(Clan& orig)
  42.     {
  43.         delete[] _imePrezime;
  44.  
  45.         int size = strlen(orig._imePrezime) + 1;
  46.         _imePrezime = new char[size];
  47.         strcpy_s(_imePrezime, size, orig._imePrezime);
  48.  
  49.         size = strlen(orig._telefon) + 1;
  50.         strcpy_s(_telefon, size, orig._telefon);
  51.  
  52.         return *this;
  53.     }
  54.  
  55.  
  56.  
  57. };
  58.  
  59. class Knjiga
  60. {
  61.     int& _ISBN;
  62.  
  63.     char* _naslov;
  64.     char* _pisac;
  65.     char _zanr[30];
  66.     int* _godinaIzdanja;
  67.     Clan* _clan; //Podaci o članu kod kojeg se knjiga trenutno nalazi
  68.     int _brojDanaZauzetosti;
  69.  
  70. public:
  71.  
  72.     Knjiga() :_ISBN()
  73.     {
  74.  
  75.         int size = strlen("<nas>") + 1;
  76.         _naslov = new char[size];
  77.         strcpy_s(_naslov, size, "<nas>");
  78.  
  79.         size = strlen("<pis>") + 1;
  80.         _pisac = new char[size];
  81.         strcpy_s(_pisac, size, "<pis>");
  82.  
  83.         size = strlen("<zan>") + 1;
  84.         strcpy_s(_zanr, size, "<zan>");
  85.  
  86.         _godinaIzdanja = new int(0);
  87.  
  88.         _clan = NULL;
  89.  
  90.         _brojDanaZauzetosti = 0;
  91.  
  92.     };
  93.  
  94.     //Knjiga je slobodna, _clan postaviti na NULL
  95.     Knjiga(int isbn, char* naslov, char* pisac, char* zanr, int godinaIzdanja) : _ISBN(isbn)
  96.     {
  97.         int size = strlen(naslov) + 1;
  98.         _naslov = new char[size];
  99.         strcpy_s(_naslov, size, naslov);
  100.  
  101.         size = strlen(pisac) + 1;
  102.         _pisac = new char[size];
  103.         strcpy_s(_pisac, size, pisac);
  104.  
  105.         size = strlen(zanr) + 1;
  106.         strcpy_s(_zanr, size, zanr);
  107.  
  108.         _godinaIzdanja = new int(godinaIzdanja);
  109.  
  110.         _clan = NULL;
  111.  
  112.         _brojDanaZauzetosti = 0;
  113.  
  114.     }
  115.  
  116.     ~Knjiga()
  117.     {
  118.         delete[] _naslov; delete[] _pisac; delete _godinaIzdanja;
  119.         _naslov = NULL; _pisac = NULL; _godinaIzdanja = NULL;
  120.     }
  121.  
  122.  
  123.     Knjiga(Knjiga& orig) : _ISBN(orig._ISBN)
  124.     {
  125.         int size = strlen(orig._naslov) + 1;
  126.         _naslov = new char[size];
  127.         strcpy_s(_naslov, size, orig._naslov);
  128.  
  129.         size = strlen(orig._pisac) + 1;
  130.         _pisac = new char[size];
  131.         strcpy_s(_pisac, size, orig._pisac);
  132.  
  133.         size = strlen(orig._zanr) + 1;
  134.         strcpy_s(_zanr, size, orig._zanr);
  135.  
  136.         _godinaIzdanja = new int(*orig._godinaIzdanja);
  137.  
  138.         //*_clan = *orig._clan;
  139.  
  140.         _brojDanaZauzetosti = 0;
  141.     }
  142.  
  143.  
  144.     int GetISBN(){ return _ISBN; }
  145.  
  146.     // =============================================
  147.  
  148.     Knjiga& operator=(Knjiga& orig)
  149.     {
  150.        
  151.         int size = strlen(orig._naslov) + 1;
  152.         delete[] _naslov;
  153.         strcpy_s(_naslov, size, orig._naslov);
  154.  
  155.         size = strlen(orig._pisac) + 1;
  156.         delete[] _pisac;
  157.         strcpy_s(_pisac, size, orig._pisac);
  158.  
  159.         size = strlen(orig._zanr) + 1;
  160.         strcpy_s(_zanr, size, orig._zanr);
  161.  
  162.         *_godinaIzdanja = *orig._godinaIzdanja;
  163.  
  164.         *_clan = *orig._clan;
  165.  
  166.         _brojDanaZauzetosti = 0;
  167.  
  168.  
  169.         return *this;
  170.     }
  171.  
  172.  
  173.     void ZaduziKnjigu(Clan clan);
  174.  
  175.  
  176.     void RazduziKnjigu();
  177.  
  178.  
  179.  
  180.     // Funkcija ProvjeriZaduzenost vraća logičku vrijednost “true” ukoliko je knjiga zadužena, a “false” ukoliko nije.
  181.     bool ProvjeriZaduzenost();
  182.  
  183.  
  184.     //Ispisuje na ekran podatke o evidencijskom broju, naslovu, imenu pisca, žanru i godini izdanja knjige.
  185.    
  186.     void Info()
  187.     {
  188.         cout << GetISBN() << " " << this->_naslov << " " << this->_pisac << endl;
  189.     }
  190.  
  191. };
  192.  
  193.  
  194. class Biblioteka
  195. {
  196.     char* _naziv;
  197.     int _maxBrojKnjiga;
  198.     int _trenutniBrojKnjiga;
  199.     Knjiga* _knjige;
  200.  
  201.  
  202. public:
  203.  
  204.     //Konstruktor
  205.     Biblioteka(char naziv[], int* max)
  206.     {
  207.         int size = strlen(naziv) + 1;
  208.         _naziv = new char[size] + 1;
  209.         strcpy_s(_naziv, size, _naziv);
  210.  
  211.         _maxBrojKnjiga = *max;
  212.  
  213.         _trenutniBrojKnjiga = 0;
  214.  
  215.         _knjige = new Knjiga[*max];
  216.  
  217.     }
  218.  
  219.     //Destruktor
  220.     ~Biblioteka();
  221.  
  222.  
  223.     //Dodaje novu knjigu u kolekciju. Zabraniti dodavanje knjiga sa istim ISBN brojem, te ukoliko je potrebno proširiti niz.
  224.  
  225.  
  226.     bool DodajKnjigu(Knjiga knjiga);
  227.  
  228.  
  229.     //Prije zaduživanja knjige provjeriti da li je zauzeta.
  230.     void ZaduziKnjigu(int isbn, Clan clan);
  231.  
  232.  
  233.     void RazduziKnjigu(int isbn);
  234.  
  235.  
  236.     int GetClanskiBrojCitaoca(int isbn)const;
  237.  
  238.     //Ispisuje podatke o svim slobodnim knjigama, svim zaduženim knjigama, i knjigama koje su na
  239.     //      čitanju duže od n dana, pri čemu se n zadaje kao parametar
  240.    
  241.     void IspisiPodatke(int n)const;
  242.    
  243.    
  244.     //Povećava broj dana zauzetosti svih zaduženih knjiga za jedinicu
  245.  
  246.     void UvecajZauzetost();
  247.  
  248.  
  249.     //Povećava broj dana zauzetosti knjige sa datim ISBN brojem
  250.  
  251.     void UvecajZauzetost(int isbn);
  252.  
  253. };
  254.  
  255.  
  256. void main()
  257. {
  258.     Knjiga k1(12345, "Naslov knjige", "Autor knjige", "Triler", 1987);
  259.  
  260.     k1.Info();
  261.  
  262.  
  263.  
  264.     // Testirati sve dostupne funkcionalnosti
  265.     // Dopuniti i izmijeniti rješenje na način da se svako izdavanje knjige posebno evidentira
  266. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement