Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- class Clan
- {
- const int _clanskiBroj;
- char*_imePrezime;
- char _telefon[20];
- public:
- Clan(int clanBr = 0, char* ip = "<ime>", char* telefon = "<tel>") :_clanskiBroj(clanBr)
- {
- int size = strlen(ip) + 1;
- _imePrezime = new char[size];
- strcpy_s(_imePrezime, size, ip);
- size = strlen(telefon) + 1;
- strcpy_s(_telefon, size, telefon);
- }
- ~Clan(){
- delete[] _imePrezime;
- _imePrezime = nullptr;
- }
- Clan(Clan& orig) :_clanskiBroj(orig._clanskiBroj)
- {
- int size = strlen(orig._imePrezime) + 1;
- _imePrezime = new char[size];
- strcpy_s(_imePrezime, size, orig._imePrezime);
- size = strlen(orig._telefon) + 1;
- strcpy_s(_telefon, size, orig._telefon);
- }
- // ==========================
- Clan& operator=(Clan& orig)
- {
- delete[] _imePrezime;
- int size = strlen(orig._imePrezime) + 1;
- _imePrezime = new char[size];
- strcpy_s(_imePrezime, size, orig._imePrezime);
- size = strlen(orig._telefon) + 1;
- strcpy_s(_telefon, size, orig._telefon);
- return *this;
- }
- };
- class Knjiga
- {
- int& _ISBN;
- char* _naslov;
- char* _pisac;
- char _zanr[30];
- int* _godinaIzdanja;
- Clan* _clan; //Podaci o članu kod kojeg se knjiga trenutno nalazi
- int _brojDanaZauzetosti;
- public:
- Knjiga() :_ISBN()
- {
- int size = strlen("<nas>") + 1;
- _naslov = new char[size];
- strcpy_s(_naslov, size, "<nas>");
- size = strlen("<pis>") + 1;
- _pisac = new char[size];
- strcpy_s(_pisac, size, "<pis>");
- size = strlen("<zan>") + 1;
- strcpy_s(_zanr, size, "<zan>");
- _godinaIzdanja = new int(0);
- _clan = NULL;
- _brojDanaZauzetosti = 0;
- };
- //Knjiga je slobodna, _clan postaviti na NULL
- Knjiga(int isbn, char* naslov, char* pisac, char* zanr, int godinaIzdanja) : _ISBN(isbn)
- {
- int size = strlen(naslov) + 1;
- _naslov = new char[size];
- strcpy_s(_naslov, size, naslov);
- size = strlen(pisac) + 1;
- _pisac = new char[size];
- strcpy_s(_pisac, size, pisac);
- size = strlen(zanr) + 1;
- strcpy_s(_zanr, size, zanr);
- _godinaIzdanja = new int(godinaIzdanja);
- _clan = NULL;
- _brojDanaZauzetosti = 0;
- }
- ~Knjiga()
- {
- delete[] _naslov; delete[] _pisac; delete _godinaIzdanja;
- _naslov = NULL; _pisac = NULL; _godinaIzdanja = NULL;
- }
- Knjiga(Knjiga& orig) : _ISBN(orig._ISBN)
- {
- int size = strlen(orig._naslov) + 1;
- _naslov = new char[size];
- strcpy_s(_naslov, size, orig._naslov);
- size = strlen(orig._pisac) + 1;
- _pisac = new char[size];
- strcpy_s(_pisac, size, orig._pisac);
- size = strlen(orig._zanr) + 1;
- strcpy_s(_zanr, size, orig._zanr);
- _godinaIzdanja = new int(*orig._godinaIzdanja);
- //*_clan = *orig._clan;
- _brojDanaZauzetosti = 0;
- }
- int GetISBN(){ return _ISBN; }
- // =============================================
- Knjiga& operator=(Knjiga& orig)
- {
- int size = strlen(orig._naslov) + 1;
- delete[] _naslov;
- strcpy_s(_naslov, size, orig._naslov);
- size = strlen(orig._pisac) + 1;
- delete[] _pisac;
- strcpy_s(_pisac, size, orig._pisac);
- size = strlen(orig._zanr) + 1;
- strcpy_s(_zanr, size, orig._zanr);
- *_godinaIzdanja = *orig._godinaIzdanja;
- *_clan = *orig._clan;
- _brojDanaZauzetosti = 0;
- return *this;
- }
- void ZaduziKnjigu(Clan clan);
- void RazduziKnjigu();
- // Funkcija ProvjeriZaduzenost vraća logičku vrijednost “true” ukoliko je knjiga zadužena, a “false” ukoliko nije.
- bool ProvjeriZaduzenost();
- //Ispisuje na ekran podatke o evidencijskom broju, naslovu, imenu pisca, žanru i godini izdanja knjige.
- void Info()
- {
- cout << GetISBN() << " " << this->_naslov << " " << this->_pisac << endl;
- }
- };
- class Biblioteka
- {
- char* _naziv;
- int _maxBrojKnjiga;
- int _trenutniBrojKnjiga;
- Knjiga* _knjige;
- public:
- //Konstruktor
- Biblioteka(char naziv[], int* max)
- {
- int size = strlen(naziv) + 1;
- _naziv = new char[size] + 1;
- strcpy_s(_naziv, size, _naziv);
- _maxBrojKnjiga = *max;
- _trenutniBrojKnjiga = 0;
- _knjige = new Knjiga[*max];
- }
- //Destruktor
- ~Biblioteka();
- //Dodaje novu knjigu u kolekciju. Zabraniti dodavanje knjiga sa istim ISBN brojem, te ukoliko je potrebno proširiti niz.
- bool DodajKnjigu(Knjiga knjiga);
- //Prije zaduživanja knjige provjeriti da li je zauzeta.
- void ZaduziKnjigu(int isbn, Clan clan);
- void RazduziKnjigu(int isbn);
- int GetClanskiBrojCitaoca(int isbn)const;
- //Ispisuje podatke o svim slobodnim knjigama, svim zaduženim knjigama, i knjigama koje su na
- // čitanju duže od n dana, pri čemu se n zadaje kao parametar
- void IspisiPodatke(int n)const;
- //Povećava broj dana zauzetosti svih zaduženih knjiga za jedinicu
- void UvecajZauzetost();
- //Povećava broj dana zauzetosti knjige sa datim ISBN brojem
- void UvecajZauzetost(int isbn);
- };
- void main()
- {
- Knjiga k1(12345, "Naslov knjige", "Autor knjige", "Triler", 1987);
- k1.Info();
- // Testirati sve dostupne funkcionalnosti
- // Dopuniti i izmijeniti rješenje na način da se svako izdavanje knjige posebno evidentira
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement