Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include <iomanip>
- using namespace std;
- class Vrijeme {
- int _sati;
- int _minute;
- int _sekunde;
- public:
- //Konstruktor bez parametara
- Vrijeme()
- {
- _sati = 0;
- _minute = 0;
- _sekunde = 0;
- }
- //Konstruktor sa 3 parametra (sati, minute i sekunde)
- Vrijeme(int sati, int minute, int sekunde)
- {
- if (sati > 24 || sati < 0)
- {
- cout << "Niste unijeli tacan format sati!, mora biti u opsegu od 0-24h" << endl;
- //return;
- }
- else
- _sati = sati;
- if (minute > 60 || minute < 0)
- {
- cout << "Niste unijeli tacan format minuta!, mora biti u opsegu od 0-60m" << endl;
- //return;
- }
- else
- _minute = minute;
- if (sekunde > 60 || sekunde < 0)
- {
- cout << "Niste unijeli tacan format sekundi!, mora biti u opsegu od 0-60s" << endl;
- //return;
- }
- else
- _sekunde = sekunde;
- }
- //Konstruktor sa 2 parametra (sati i minute)
- Vrijeme(int sati, int minute)
- {
- if (sati > 24 || sati < 0)
- {
- cout << "Niste unijeli tacan format sati!, mora biti u opsegu od 0-24h" << endl;
- //return;
- }
- else
- _sati = sati;
- if (minute > 60 || minute < 0)
- {
- cout << "Niste unijeli tacan format minuta!, mora biti u opsegu od 0-60m" << endl;
- //return;
- }
- else
- _minute = minute;
- }
- //Dekonstruktor
- ~Vrijeme()
- {
- }
- //Funkciju Info sa neobaveznim parametrom tipa bool koji određuje da li će vrijeme biti ispisano u punom formatu
- //(hh:mm:ss) ili u skraćenom formatu (hh:mm). Default-no funkcija vrši ispis u punom formatu.
- void Info(bool format = true)
- {
- if (format != true)
- cout << _sati << ":" << _minute << endl;
- else
- cout << _sati << ":" << _minute << ":" << _sekunde << endl;
- }
- //Funkciju Add koja kao rezultat vraća novi objekat tipa vrijeme koji predstavlja
- //sumu vremena poslijeđenog kao parametar i instance this.
- Vrijeme Add(int sat, int minuta, int sekunda)
- {
- return Vrijeme(_sati += sat, _minute += minuta, _sekunde += sekunda);
- }
- //Funkciju CompareTo koja vraća vrijednost tipa int u zavisnosti od toga da li je vrijeme instance this prije, jednako ili poslije
- //vremena proslijeđenog kao parametar.
- //Moguće povratne vrijednosti:
- //-1 - vrijeme instance this nastupa prije vremena v2
- // 0 - vrijeme instance this je jednako vremenu v2
- // 1 - vrijeme instance this nastupa nakon vremena v2
- int CompareTo(Vrijeme v2)
- {
- if (_sati == v2._sati && _minute == v2._minute && _sekunde == v2._sekunde)
- return 0;
- else if (_sati < v2._sati || _minute < v2._minute || _sekunde < v2._sekunde)
- return -1;
- else
- return 1;
- }
- void setSat(int sat)
- {
- if (sat > 24 || sat < 0)
- {
- cout << "Niste unijeli tacan format sati!, mora biti u opsegu od 0-24h" << endl;
- //return;
- }
- else
- _sati = sat;
- }
- void setMinuta(int minut)
- {
- if (minut > 60 || minut < 0)
- {
- cout << "Niste unijeli tacan format minuta!, mora biti u opsegu od 0-60m" << endl;
- //return;
- }
- else
- _minute = minut;
- }
- void setSekunda(int sekunda)
- {
- if (sekunda > 60 || sekunda < 0)
- {
- cout << "Niste unijeli tacan format sekundi!, mora biti u opsegu od 0-60s" << endl;
- //return;
- }
- else
- _sekunde = sekunda;
- }
- };
- /*
- Potrebno je kreirati aplikaciju za dijeljenje znanja putem razmjene članaka među korisnicima.
- Izdvojene su sljedeće funkcionalnosti:
- - Administrator sistema je zadužen za upravljanje korisničkim nalozima (Ime, Prezime, Email, DatumRegistracije, KorisnickoIme, Lozinka).
- - Svaki članak (Naslov, Sadrzaj, Datum, Satnica, BrojPregleda) može sadržavati više tagova, ali pripada samo jednoj oblasti.
- - Članke mogu dodavati svi registrovani korisnici.
- - Korisnici aplikacije također mogu ostaviti komentar (Tekst, Datum, Popularnost) na određeni članak.
- */
- /*
- Na osnovu datih klasa implementirati opisane funkcionalnosti sistema. Po potrebi dopuniti klase novim atributima i/ili funkcijama.
- */
- class Datum
- {
- int _dan;
- int _mjesec;
- int _godina;
- public:
- //Potrebne konstruktor i destruktor funkcije
- //konstruktor
- Datum(int _dan = 20, int _mjesec = 2, int _godina = 1982)
- {
- if (_dan > 31 || _dan < 1)
- {
- cout << "Unijeti dani moraju biti u sljedecem rasponu od 1 do 31" << endl;
- //return;
- }
- else
- this->_dan = _dan;
- if (_mjesec > 12 || _mjesec < 1)
- {
- cout << "Unijeti mjesec mora biti u sljedecem rasponu od 1 do 12" << endl;
- //return;
- }
- else
- this->_mjesec = _mjesec;
- if (_godina > 2017 || _godina < 1900)
- {
- cout << "Unijeta godina mora biti u sljedecem rasponu od 1900 do 2017" << endl;
- //return;
- }
- else
- this->_godina = _godina;
- }
- //Dekonstruktor
- ~Datum()
- {
- }
- //Funkciju Info
- void Info()
- {
- cout << endl;
- cout << "Dan :" << setw(8) << _dan << "\n" << "Mjesec: " << setw(4) << _mjesec << "\n" << "Godina: " << setw(7) << _godina << endl;
- }
- };
- enum TipKorisnika { Administrator, Guest };
- char *tipKorisnika[] = { "Administrator","Guest" };
- class Korisnik
- {
- char _ime[30];
- char _korisnickoIme[20];
- char* _lozinka;
- TipKorisnika _tipKorisnika; //Administrator, Guest
- public:
- //Potrebne konstruktor i destruktor funkcije
- //Konstruktor
- Korisnik(char* ime = " undef.", char* korisnickoIme = "undef.", char* lozinka = "none", TipKorisnika tip = Guest)
- {
- if (strlen(ime) > 29)
- {
- cout << "Predugo ime!, mora imati 29 karaktera" << endl;
- return;
- }
- else
- strcpy_s(_ime, 29, ime);
- if (strlen(ime) > 19)
- {
- cout << "Predugo korisnickoIme!, mora imati 19 karaktera" << endl;
- }
- else
- strcpy_s(_korisnickoIme, 19, korisnickoIme);
- int velicina = strlen(lozinka) + 1;
- _lozinka = new char[velicina];
- strcpy_s(_lozinka, velicina, lozinka);
- _tipKorisnika = tip;
- }
- //konstruktor kopije
- Korisnik(const Korisnik& org)
- {
- strcpy_s(_ime, 29, org._ime);
- strcpy_s(_korisnickoIme, 19, org._korisnickoIme);
- int vel = strlen(org._lozinka) + 1;
- _lozinka = new char[vel];
- strcpy_s(_lozinka, vel, org._lozinka);
- _tipKorisnika = org._tipKorisnika;
- }
- //dekonstruktor
- ~Korisnik()
- {
- delete[] _lozinka;
- _lozinka = nullptr;
- }
- //Funkciju za promjenu korisničke lozinke
- void promjenaPass(char * newPass)
- {
- int velicina = strlen(_lozinka) + 1;
- char * temp = new char[velicina];
- int brojacPokusaja = 3;
- while (brojacPokusaja>0)
- {
- cout << "Unesi trenutni password!" << endl;
- cin.getline(temp, velicina);
- if (strcmp(temp, _lozinka) == 0)
- {
- delete[] _lozinka;
- _lozinka = new char[strlen(newPass) + 1];
- strcpy_s(_lozinka, strlen(newPass) + 1, newPass);
- delete[] temp; temp = nullptr;
- return;
- }
- else
- {
- cout << "Password se ne podudara!" << endl;
- cout << "Imate jos " << --brojacPokusaja << " pokusaja " << endl;
- }
- }
- delete[] temp; temp = nullptr;
- }
- //Funkciju Info
- void Info()
- {
- cout << "\n";
- cout << "::: Podaci o korisniku :::" << endl;
- cout << "Ime: " << _ime << endl;
- cout << "Korisnicko ime: " << _korisnickoIme << endl;
- cout << "Lozinka: ";
- if (_lozinka != nullptr)
- {
- int vel = strlen(_lozinka);
- while (vel > 0)
- {
- cout << "*";
- vel--;
- }cout << endl;
- }
- cout << "Za test: " << _lozinka << endl;
- cout << "Tip korisnika: " << tipKorisnika[_tipKorisnika] << endl;
- }
- void setIme(char* ime)
- {
- if (strlen(ime) > 29)
- {
- cout << "Predugo ime!, mora imati 29 karaktera" << endl;
- return;
- }
- else
- strcpy_s(_ime, 29, ime);
- }
- void setKoriscnikoIme(char* korisnickoIme)
- {
- if (strlen(korisnickoIme) > 19)
- {
- cout << "Predugo ime!, mora imati 19 karaktera" << endl;
- return;
- }
- else
- strcpy_s(_korisnickoIme, 19, korisnickoIme);
- }
- };
- class Komentar
- {
- char* _tekst;
- Datum _datum;
- Vrijeme _satnica;
- int _popularnost;
- Korisnik* _autor;
- public:
- //Potrebne konstruktor i destruktor funkcije
- //konstruktor
- Komentar()
- {
- _tekst = nullptr;
- _datum;
- _satnica;
- _popularnost = 0;
- _autor = nullptr;
- }
- //konstruktor kopije
- Komentar(const Komentar &org)
- {
- int velicina = strlen(org._tekst) + 1;
- _tekst = new char[velicina];
- strcpy_s(_tekst, velicina, org._tekst);
- _datum = org._datum;
- _satnica = org._satnica;
- _popularnost = org._popularnost;
- _autor = new Korisnik(*org._autor);
- }
- //dekonstruktor
- ~Komentar()
- {
- delete[]_tekst;
- _tekst = nullptr;
- delete _autor;
- _autor = nullptr;
- }
- void setTekst(char* tekst)
- {
- int velicina = strlen(tekst) + 1;
- _tekst = new char[velicina];
- strcpy_s(_tekst, velicina, tekst);
- }
- void setDatum(Datum d)
- {
- _datum = d;
- }
- void setSatnica(Vrijeme v)
- {
- _satnica = v;
- }
- //Funkciju za izmjenu popularnosti komentara
- void setPopularnost(int pop)
- {
- _popularnost = pop;
- }
- void setKorisnik(Korisnik k)
- {
- _autor = new Korisnik(k);
- }
- //Funkciju Info
- void Info()
- {
- cout << endl;
- cout << "----------------------------------" << endl;
- if (_tekst != nullptr)
- cout << "Tekst: " << _tekst << endl;
- else
- cout << "Tekst:" << endl;
- cout << "Datum: ";
- _datum.Info(); cout << endl;
- cout << "Satnica: " << endl;
- _satnica.Info(); cout << endl;
- cout << "Popularnost: " << _popularnost << endl;
- cout << "Autor: " << endl;
- if (_autor != nullptr)
- _autor->Info();
- }
- };
- class Clanak
- {
- char _naslov[150];
- char* _sadrzaj;
- Datum _datum;
- Vrijeme _satnica;
- int _brojPregleda;
- char* _tagovi[10];
- char _oblast[100];
- Korisnik* _autor;
- Komentar* _komentari;
- int _brojKomentara;
- public:
- //konstruktor
- Clanak()
- {
- strcpy_s(_naslov, 149, "nema_naslova");
- _sadrzaj = "nema_sadrzaja";
- _datum;
- _satnica;
- _brojPregleda = 0;
- for (int i = 0; i < 10; i++)
- _tagovi[i] = nullptr;
- strcpy_s(_oblast, 99, "nema oblasti");
- _autor = nullptr;
- _komentari = nullptr;
- _brojKomentara = 0;
- }
- Clanak(const Clanak& org)
- {
- strcpy_s(_naslov, 149, org._naslov);
- int vel = strlen(org._sadrzaj) + 1;
- _sadrzaj = new char[vel];
- strcpy_s(_sadrzaj, vel, org._sadrzaj);
- _datum = org._datum;
- _satnica = org._satnica;
- _brojKomentara = org._brojPregleda;
- for (int i = 0; i < 10; i++)
- {
- if (org._tagovi[i] != nullptr)
- _tagovi[i] = org._tagovi[i];
- }
- strcpy_s(_oblast, 99, org._oblast);
- _autor = new Korisnik(*org._autor);
- /* if (_brojKomentara == 0)
- _komentari = new Komentar(*org._komentari);
- else
- for (int i = 0; i < _brojKomentara; i++)
- _komentari[i] = new Komentar(*org._komentari[i]);
- */
- }
- ~Clanak()
- {
- }
- //Funkciju za dodavanje tagova za članak
- bool DodajTag(char* tag)
- {
- }
- /*Funkciju za promjenu sadržaja i vremena promjene članka. Kao verifikaciju dozvole potrebno je proslijediti korisničko ime autora članka.
- Samo kreator članka ima permisije da mijenja njegov sadržaj.
- */
- //Funkciju za dodavanje komentara
- //Funkciju Info
- };
- int main()
- {
- //Kreirati testni program koji demonstrira implementirane funckionalnosti
- bool format = false;
- //defaultni konstruktor
- Vrijeme danas;
- danas.setSat(20);
- danas.setMinuta(36);
- danas.setSekunda(58);
- //konstruktor sa tri parametra
- //Vrijeme danas(23, 29, 60);
- //konstruktor sa dva parametra
- //Vrijeme danas(20, 15);
- //funkcija info sa parametrom
- //danas.Info();
- //test funkcije Add
- /*Vrijeme danas_ = danas.Add(2, 2, 2);
- danas_.Info();*/
- //test funkcije CompareTO
- /*Vrijeme v2(5, 36, 58);
- int test =v2.CompareTo(danas);
- cout << test << endl;*/
- //test klase Datum
- /*Datum today;
- today.Info();*/
- //test klase Korisnik
- //Korisnik Nedzad("Nedzad", "Kio", "password", Administrator);
- //Nedzad.Info();
- //Nedzad.promjenaPass("pass_last");
- //Nedzad.Info();
- //Korisnik Nadja(Nedzad);
- //Nadja.setIme("Nadja");
- //Nadja.setKoriscnikoIme("Baby");
- //Nadja.promjenaPass("true");
- //Nadja.Info();
- Komentar k;
- k.Info();
- Datum d(06, 12, 2017);
- Vrijeme v(23, 27, 20);
- Korisnik kor("Nedzad", "kio", "loop", Administrator);
- k.setDatum(d);
- k.setKorisnik(kor);
- k.setPopularnost(100);
- k.setSatnica(v);
- k.setTekst("Moje ime je medvjedic Lino!");
- k.Info();
- Komentar Nadja(k);
- Nadja.setTekst("hahahahah");
- Nadja.Info();
- system("pause");
- return 0;
- }
Add Comment
Please, Sign In to add comment