Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- class Vrijeme {
- int _sati;
- int _minute;
- int _sekunde;
- public:
- Vrijeme(Vrijeme &vrijeme) {
- _sati = vrijeme._sati;
- _minute = vrijeme._minute;
- _sekunde = vrijeme._sekunde;
- }
- //Konstruktor bez parametara
- Vrijeme();
- //Konstruktor sa 3 parametra (sati, minute i sekunde)
- Vrijeme(int, int, int);
- //Konstruktor sa 2 parametra (sati i minute)
- Vrijeme(int, int);
- //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 = true);
- //Funkciju Add koja kao rezultat vraća novi objekat tipa vrijeme koji predstavlja
- //sumu vremena poslijeđenog kao parametar i instance this.
- Vrijeme Add(Vrijeme);
- //Funkciju Add koja kao rezultat vraća novi objekat tipa vrijeme koji predstavlja
- //sumu parametra izraženog u minutama i vremena instance this.
- Vrijeme Add(int);
- //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);
- };
- Vrijeme::Vrijeme() {
- this->_sati = 0;
- this->_minute = 0;
- this->_sekunde = 0;
- }
- Vrijeme::Vrijeme(int sat, int min, int sek) {
- this->_sati = sat;
- this->_minute = min;
- this->_sekunde = sek;
- }
- Vrijeme::Vrijeme(int sat, int min) {
- _sati = sat;
- _minute = min;
- _sekunde = 0;
- }
- void Vrijeme::Info(bool n) {
- if (n)
- cout << this->_sati << " s, " << this->_minute << " min" << this->_sekunde << " sek." << endl;
- else
- cout << this->_sati << " s, " << this->_minute << " min" << endl;
- }
- Vrijeme Vrijeme::Add(Vrijeme v) {
- this->_sekunde += v._sekunde;
- while (this->_sekunde > 60) {
- this->_minute++;
- this->_sekunde -= 60;
- }
- this->_minute += v._minute;
- while (this->_minute > 60) {
- this->_sati++;
- this->_minute -= 60;
- }
- this->_sati += v._sati;
- return Vrijeme(this->_sati, this->_minute, this->_sekunde);
- }
- Vrijeme Vrijeme::Add(int minute) {
- this->_minute += minute;
- while (this->_minute > 60) {
- this->_sati++;
- this->_minute -= 60;
- }
- return Vrijeme(this->_sati, this->_minute);
- }
- int Vrijeme::CompareTo(Vrijeme v) {
- if (this->_sati == v._sati && this->_minute == v._minute && this->_sekunde == v._sekunde) {
- return 0;
- }
- if (this->_sati < v._sati) {
- return -1;
- }
- if (this->_sati == v._sati && this->_minute < v._minute) {
- return -1;
- }
- if (this->_sati == v._sati && this->_minute == v._minute && this->_sekunde < v._sekunde) {
- return -1;
- }
- if (this->_sati > v._sati) {
- return 1;
- }
- if (this->_sati == v._sati && this->_minute > v._minute) {
- return 1;
- }
- if (this->_sati == v._sati && this->_minute == v._minute && this->_sekunde > v._sekunde) {
- return 1;
- }
- }
- /*
- 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 pripadati 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
- Datum(Datum &datum) {
- _dan = datum._dan;
- _mjesec = datum._mjesec;
- _godina = datum._godina;
- }
- Datum() {
- this->_dan = 0;
- this->_mjesec = 0;
- this->_godina = 0;
- }
- Datum(int d, int m, int g) {
- this->_dan = d;
- this->_mjesec = m;
- this->_godina = g;
- }
- ~Datum() {
- cout << this->_dan << "." << this->_mjesec << "." << this->_godina << ", se unistava!" << endl;
- }
- //Funkciju Info
- void Info() {
- cout << this->_dan << "." << this->_mjesec << "." << this->_godina << endl;
- }
- };
- class Korisnik
- {
- char _ime[30];
- char _korisnickoIme[20];
- char* _lozinka;
- char _tipKorisnika[30]; //Administrator, Guest
- public:
- Korisnik(Korisnik &korisnik) {
- strncpy_s(_ime, 30, korisnik._ime,_TRUNCATE);
- strncpy_s(_korisnickoIme, 20, korisnik._korisnickoIme, _TRUNCATE);
- _lozinka = new char[strlen(korisnik._lozinka) + 1];
- strncpy_s(_lozinka, strlen(korisnik._lozinka) + 1, korisnik._lozinka, _TRUNCATE);
- strncpy_s(_tipKorisnika, 30, korisnik._tipKorisnika, _TRUNCATE);
- }
- //Potrebne konstruktor i destruktor funkcije
- Korisnik() {
- strncpy_s(_ime, 30, "----------", _TRUNCATE);
- strncpy_s(_korisnickoIme, 20, "----------", _TRUNCATE);
- _lozinka = new char[8];
- strncpy_s(_lozinka, 8, "*******", _TRUNCATE);
- strncpy_s(_tipKorisnika, 30, "----------", _TRUNCATE);
- }
- Korisnik(char ime[], char korisnik[], char *pwd, char tip[]) {
- strncpy_s(_ime, 30, ime, _TRUNCATE);
- strncpy_s(_korisnickoIme, 20, korisnik, _TRUNCATE);
- _lozinka = new char[strlen(pwd) + 1];
- strncpy_s(_lozinka, strlen(pwd) + 1, pwd, _TRUNCATE);
- strncpy_s(_tipKorisnika, 30, tip, _TRUNCATE);
- }
- Korisnik(char ime[]) {
- strncpy_s(_ime, 30, ime, _TRUNCATE);
- strncpy_s(_korisnickoIme, 20, "----------", _TRUNCATE);
- _lozinka = new char[8];
- strncpy_s(_lozinka, 8, "*******", _TRUNCATE);
- strncpy_s(_tipKorisnika, 30, "----------", _TRUNCATE);
- }
- ~Korisnik() {
- cout << "Brišem:: " << _ime << ", " << _korisnickoIme << " ," << _lozinka << " ," << _tipKorisnika << endl;
- delete[] _lozinka;
- _lozinka = nullptr;
- }
- //Funkciju za promjenu korisničke lozinke
- void ChangePwd(char *pwd) {
- if (this->_lozinka != nullptr)
- delete[] _lozinka; _lozinka = nullptr;
- _lozinka = new char[strlen(pwd) + 1];
- strncpy_s(_lozinka, strlen(pwd) + 1, pwd, _TRUNCATE);
- }
- //Funkciju Info
- void Info() {
- cout << "#:: " << _ime << ", " << _korisnickoIme << " ," << _tipKorisnika;
- if (_lozinka != nullptr)
- cout <<" "<< _lozinka;
- cout << endl;
- }
- bool Compare(Korisnik ime) {
- if (strcmp(this->_ime, ime._ime)) {
- return true;
- }
- else
- return false;
- }
- };
- class Komentar
- {
- char _tekst[500];
- Datum _datum;
- Vrijeme _satnica;
- int _popularnost;
- Korisnik _autor;
- public:
- //Potrebne konstruktor i destruktor funkcije
- Komentar() :
- _datum(), _satnica(), _autor()
- {
- strncpy_s(_tekst, 500, "**********", _TRUNCATE);
- _popularnost = 0;
- }
- Komentar(char tekst[], Datum datum, Vrijeme satnica, int popularnost, Korisnik autor) :
- _datum(datum),
- _satnica(satnica),
- _autor(autor)
- {
- strncpy_s(_tekst, 500, tekst, _TRUNCATE);
- _popularnost = popularnost;
- }
- //Funkciju za izmjenu popularnosti komentara
- void SetPopularnost(int popularnost) {
- _popularnost = popularnost;
- }
- //Funkciju Info
- void Info() {
- cout << "#:: " << _tekst << endl;
- _datum.Info();
- _satnica.Info();
- cout << _popularnost << endl;
- _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:
- Clanak() :
- _datum(), _satnica(), _autor()
- {//zasto u konstruktoru nema datuma,vremena, korisnika,komentara?
- strcpy_s(_naslov, 150, "----------");
- _sadrzaj = nullptr;
- _brojPregleda = 0;
- for (int i = 0; i < 10; i++) {
- _tagovi[i] = nullptr;
- }
- strncpy_s(_oblast, 100, "----------", _TRUNCATE);
- brojKomentara = 0;
- _komentari = new Komentar[brojKomentara + 1];
- }
- Clanak(char naslov[], char * sadrzaj, Datum datum, Vrijeme vrijeme, char oblast[], Korisnik autor) :
- _datum(datum), _satnica(vrijeme), _autor(autor)
- {
- strncpy_s(_naslov, 150, naslov, _TRUNCATE);
- _sadrzaj = new char[strlen(sadrzaj) + 1];
- strncpy_s(_sadrzaj, strlen(sadrzaj) + 1, sadrzaj, _TRUNCATE);
- strncpy_s(_oblast, 100, oblast, _TRUNCATE);
- brojKomentara = 0;
- _komentari = new Komentar[brojKomentara + 1];
- for (int i =0; i<10; i++)
- _tagovi[i] = nullptr;
- }
- ~Clanak() {
- if (_sadrzaj != nullptr)
- delete[] _sadrzaj;
- _sadrzaj = nullptr;
- for (int i = 0; i < 10; i++) {
- if (_tagovi[i] != nullptr) {
- delete _tagovi[i];
- _tagovi[i] = nullptr;
- }
- }
- if (_komentari != nullptr) {
- delete[] _komentari;
- _komentari = nullptr;
- }
- }
- //Funkciju za dodavanje tagova članka
- void AddTag(char *novi_tag) {
- if (_brojPregleda >= 10)
- return;
- _tagovi[_brojPregleda] = new char[strlen(novi_tag) + 1];
- strcpy_s(_tagovi[_brojPregleda], strlen(novi_tag) + 1, novi_tag);
- _brojPregleda++;
- }
- /*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.
- */
- bool Promjeni(char *sadrzaj, Vrijeme satnica, Korisnik autor) {
- if (autor.Compare(_autor)) {
- _sadrzaj = new char[strlen(sadrzaj) + 1];
- strcpy_s(_sadrzaj, strlen(sadrzaj) + 1, sadrzaj);
- _satnica = satnica;
- return true;
- }
- else
- return false;
- }
- //Funkciju za dodavanje komentara
- void AddComment(Komentar komentar) {
- if (brojKomentara == 0) {
- _komentari[brojKomentara] = komentar;
- brojKomentara++;
- }
- else
- {
- Komentar *temp;
- temp = new Komentar[brojKomentara + 1];
- for (int i = 0; i < brojKomentara; i++) {
- temp[i] = _komentari[i];
- }
- delete[] _komentari;
- _komentari = new Komentar[brojKomentara + 1];
- for (int i = 0; i < brojKomentara; i++) {
- _komentari[i] = temp[i];
- }
- brojKomentara++;
- delete[] temp; temp = nullptr;
- }
- }
- //Funkciju Info
- void Info() {
- cout << _naslov << endl;
- cout << _sadrzaj << endl;
- _datum.Info();
- _satnica.Info();
- cout << _brojPregleda << endl;
- int i = 0;
- while (_tagovi[i] != nullptr) {
- cout << _tagovi[i] << endl;
- i++;
- }
- cout << _oblast << endl;
- _autor.Info();
- for (int i = 0; i < brojKomentara; i++) {
- _komentari[i].Info();
- cout << endl;
- }
- }
- };
- void main()
- {
- //Kreirati testni program koji demonstrira implementirane funckionalnosti
- Korisnik Emir("Emir", "Dedic", "12345678", "Admin");
- Korisnik Vanja("Vanja", "Dedic", "12345678", "Guest");
- Emir.Info();
- Vanja.Info();
- Korisnik Mia("Mia", "Dedic", "12345678", "Guest");
- Datum datum(14, 12, 1983);
- Vrijeme vrijeme(15, 30);
- Korisnik autor("Emir");
- Clanak clanak("NASLOV!", "BLABLABLABLABLA", datum, vrijeme, "OBLAST", autor);
- clanak.Info();
- system("PAUSE");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement