Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //fale 2-3 zadnje funkcije.
- #include<iostream>
- using namespace std;
- class Uposlenik {
- int _sifra; //Automatski uvecavati za 1 za svakog novog uspolenika.
- char _ime[30];
- char _prezime[30];
- char* _radnoMjesto;
- static const char* _kompanija;
- static int brojac;
- public:
- //Implementirati potrebne konstruktor i destruktor funkcije
- Uposlenik(char* ime = " n/a", char* prezime = "n/A", char* radnoMjesto = "n/a") :_sifra(brojac++)
- {
- strncpy_s(_ime, ime, _TRUNCATE);
- strncpy_s(_prezime, prezime, _TRUNCATE);
- int vel = strlen(radnoMjesto) + 1;
- _radnoMjesto = new char[vel];
- strcpy_s(_radnoMjesto, vel, radnoMjesto);
- }
- Uposlenik(const Uposlenik& orginal)
- {
- _sifra = orginal._sifra;
- strcpy_s(_ime, 30, orginal._ime);
- strcpy_s(_prezime, 30, orginal._prezime);
- int vel = strlen(orginal._radnoMjesto) + 1;
- _radnoMjesto = new char[vel];
- strcpy_s(_radnoMjesto, vel, orginal._radnoMjesto);
- }
- //void Postavi(const Uposlenik& orginal)
- //{
- // _sifra = orginal._sifra;
- // strcpy_s(_ime, 30, orginal._ime);
- // strcpy_s(_prezime, 30, orginal._prezime);
- // if (_radnoMjesto != nullptr)
- // delete[] _radnoMjesto;
- // int vel = strlen(orginal._radnoMjesto) + 1;
- // _radnoMjesto = new char[vel];
- // strcpy_s(_radnoMjesto, vel, orginal._radnoMjesto);
- //}
- ~Uposlenik()
- {
- delete[] _radnoMjesto;
- _radnoMjesto = NULL;
- }
- //Ostale funkcije dodati po potrebi
- const char* getIme() const
- {
- return _ime;
- }
- const char* getPrezime() const
- {
- return _prezime;
- }
- int getSifra()
- {
- return _sifra;
- }
- void Info()
- {
- cout << "Sifra: " << _sifra << endl;
- cout << "Ime i prezime: " << _ime << " " << _prezime << endl;
- cout << "Radno mjesto: " << _radnoMjesto << endl;
- cout << "Kompanija: " << _kompanija << endl;
- }
- };
- int Uposlenik::brojac = 1;
- const char* Uposlenik::_kompanija = "Fakultet Informacijskih Tehnologija";
- class Aktivnost {
- char* _naziv;
- bool _zavrsena;
- int* _trajanje; //Izrazeno u danima
- Uposlenik* _uposlenici[5];
- public:
- //Implementirati potrebne konstruktor i destruktor funkcije
- //konstruktor defaultni
- Aktivnost()
- {
- _naziv = nullptr;
- _zavrsena = false;
- _trajanje = nullptr;
- for (int i = 0; i < 5; i++)
- {
- _uposlenici[i] == nullptr;
- }
- }
- //destruktor
- ~Aktivnost()
- {
- delete[] _naziv;
- _naziv = nullptr;
- delete _trajanje;
- _trajanje = nullptr;
- for (int i = 0; i < 5; i++)
- {
- delete _uposlenici[i];
- _uposlenici[i] = nullptr;
- }
- }
- void kreiraj_aktivnost(char* naziv, bool status, int dana)
- {
- int velicina = strlen(naziv) + 1;
- _naziv = new char[velicina];
- strcpy_s(_naziv, velicina, naziv);
- _zavrsena = status;
- _trajanje = new int(dana);
- }
- void postavi(const Aktivnost& a)
- {
- if (_naziv != nullptr)
- delete[] _naziv;
- int velicina = strlen(a._naziv) + 1;
- _naziv = new char[velicina];
- strcpy_s(_naziv, velicina, a._naziv);
- _zavrsena = a._zavrsena;
- if (_trajanje != nullptr)
- delete _trajanje;
- _trajanje = new int(*a._trajanje);
- for (int i = 0; i < 5; i++)
- {
- if (a._uposlenici[i] != nullptr)
- {
- _uposlenici[i] = new Uposlenik(*a._uposlenici[i]);
- }
- else
- _uposlenici[i] = nullptr;
- }
- }
- const char* getIme() const
- {
- return _naziv;
- }
- void setAktivnostClosed()
- {
- _zavrsena = false;
- }
- bool getStatus() const
- {
- return _zavrsena;
- }
- void Ispis()
- {
- /*
- char* _naziv;
- bool _zavrsena;
- int* _trajanje; //Izrazeno u danima
- Uposlenik* _uposlenici[5];
- */
- cout << "Naziv Projekte aktivnosti: " << _naziv << endl;
- if (_zavrsena == false)
- cout << "Projekta aktivnost je u toku " << endl;
- else
- cout << "Projekta aktivnost je zavrsila!" << endl;
- cout << "Projektna aktivnost traje: " << *_trajanje << endl;
- cout << "Uposlenici na projektnoj aktivnosti: " << endl;
- for (int i = 0; i < 5; i++)
- {
- if (_uposlenici[i] != nullptr)
- {
- _uposlenici[i]->Info();
- cout << endl;
- }
- }
- }
- //Funkciju koja omogucava angazovanje uposlenika na projektnoj aktivnosti. Funkcija treba da vrati vrijednost tipa
- //bool za uspjesno, odnosno neuspjesno dodavanje uposlenika. Nije moguce dodati istog uposlenika vise puta. Nije moguce
- //angazovati uposlenike na vec zavrsenoj aktivnosti.
- bool dodajUposlenika(const Uposlenik& u)
- {
- if (_zavrsena == true)
- {
- cout << "Projekta aktivnost je zavrsena!" << endl;
- return false;
- }
- for (int a = 0; a < 5; a++)
- {
- if (_uposlenici[a] == nullptr)
- break;
- if (_uposlenici[a] != nullptr)
- {
- if (strcmp(_uposlenici[a]->getIme(), u.getIme()) == 0 && strcmp(_uposlenici[a]->getPrezime(), u.getPrezime()) == 0)
- {
- cout << "Uposleni je vec dodan na projektu aktivnost!" << endl;
- return false;
- }
- }
- }
- for (int i = 0; i < 5; i++)
- {
- if (_uposlenici[i] == nullptr)
- {
- _uposlenici[i] = new Uposlenik(u);
- cout << "Uposlenik dodan!" << endl;
- return true;
- }
- }
- cout << "Nema vise mjesta za pohranu radnika!" << endl;
- return false;
- }
- //Funkciju koja uklanja uposlenika na aktivnosti sa sifrom proslijedjenom kao parametar.
- bool ukloniUposlenog(int ID)
- {
- for (int i = 0; i < 5; i++)
- {
- if (_uposlenici[i] != nullptr)
- {
- if (_uposlenici[i]->getSifra() == ID)
- {
- delete _uposlenici[i];
- _uposlenici[i] = nullptr;
- cout << "Uposlenik izbrisan " << endl;
- return true;
- }
- }
- }
- cout << "Uposlenik za datim ID, ne postoji!" << endl;
- return false;
- /* for (int i = 0; i < 5; i++)
- {
- if (_uposlenici[i]->getSifra() == ID)
- {
- for (; i < 4; i++)
- {
- _uposlenici[i] = _uposlenici[i + 1];
- }
- cout << "Uposlenik izbrisan " << endl;
- return true;
- }
- }
- cout << "Uposlenik za datim ID, ne postoji!" << endl;
- return false;*/
- /*ID;
- if (ID > 0 && ID <= 5)
- {
- for (int i = 0; i < 5; i++)
- {
- if (ID == _uposlenici[i]->getSifra())
- {
- delete _uposlenici[i];
- for (int i = ID; i < 5; i++)
- _uposlenici[i] = _uposlenici[i + 1];
- }
- }
- }*/
- }
- //Funkciju koja uklanja sve uposlenike angazovane na aktivnosti.
- void deleteALL()
- {
- cout << "Ovim postupkom brisete sve zaposlene!!!" << endl;
- for (int i = 0; i < 5; i++)
- {
- if (_uposlenici[i] != nullptr)
- cout << _uposlenici[i]->getIme() << " izbrisan!" << endl;
- delete _uposlenici[i];
- _uposlenici[i] = nullptr;
- }
- }
- Uposlenik** getUposlenici()
- {
- return _uposlenici;
- }
- #pragma region radni
- };
- class Projekat {
- char* _naziv;
- char* _oblast;
- int _trajanje; //Izrazeno u mjesecima
- Aktivnost* _aktivnosti;
- int _brojAktivnosti;
- public:
- //Implementirati potrebne konstruktor i destruktor funkcije.
- Projekat()
- {
- _naziv = nullptr;
- _oblast = nullptr;
- _trajanje = 0;
- _aktivnosti = nullptr;
- _brojAktivnosti = 0;
- }
- ~Projekat()
- {
- delete[] _naziv;
- _naziv = nullptr;
- delete[] _oblast;
- _oblast = nullptr;
- /*if (_aktivnosti != nullptr)*/
- delete[] _aktivnosti;
- _aktivnosti = nullptr;
- }
- void kreirajProjekat(char* naziv, char* oblast, int trajanje)
- {
- int velicina = strlen(naziv) + 1;
- _naziv = new char[velicina];
- strcpy_s(_naziv, velicina, naziv);
- velicina = strlen(oblast) + 1;
- _oblast = new char[velicina];
- strcpy_s(_oblast, velicina, oblast);
- _trajanje = trajanje;
- }
- //Funkciju za dodavanje projektnih aktivnosti. Sprijeciti dodavanje vise aktivnosti sa istim nazivom.
- //Za potrebe poredjenja aktivnosti kreirati funkciju unutar klase Aktivnosti.
- bool dodajAktivnost(const Aktivnost& akt)
- {
- if (_brojAktivnosti == 0)
- {
- _aktivnosti = new Aktivnost[_brojAktivnosti + 1];
- _aktivnosti[_brojAktivnosti++].postavi(akt);
- return true;
- }
- for (int i = 0; i < _brojAktivnosti; i++)
- {
- if (strcmp(_aktivnosti[i].getIme(), akt.getIme()) == 0)
- {
- cout << "Postoji dodana aktivnost" << endl;
- return false;
- }
- }
- Aktivnost * temp = new Aktivnost[_brojAktivnosti + 1];
- for (int i = 0; i < _brojAktivnosti; i++)
- {
- temp[i].postavi(_aktivnosti[i]);
- }
- temp[_brojAktivnosti++].postavi(akt);
- if (_aktivnosti != nullptr);
- delete[] _aktivnosti;
- _aktivnosti = temp;
- cout << "Aktivnost dodana" << endl;
- return true;
- }
- //Funkciju koja oznacava aktivnost kao zavrsenu. Funkcija kao parametar prima naziv aktivnosti.
- bool setAktivnostClosed(const char* naziv)
- {
- for (int i = 0; i < _brojAktivnosti; i++)
- {
- if (strcmp(_aktivnosti[i].getIme(), naziv) == 0)
- {
- if (_aktivnosti[i].getStatus() == false)
- {
- cout << "Aktivnost je zavrsena!" << endl;
- return false;
- }
- else
- {
- _aktivnosti[i].setAktivnostClosed();
- cout << "Aktivnost je set to zavrsena!" << endl;
- return true;
- }
- }
- }
- }
- //Funkciju koja treba da postojecoj aktivnosti dodijeli novog uposlenika.
- bool dodajZaposlenika(const char* naziv, const Uposlenik& u)
- {
- for (int i = 0; i < _brojAktivnosti; i++)
- {
- if (strcmp(_aktivnosti[i].getIme(), naziv) == 0)
- {
- cout << "Uposlenik dodan na projektu aktivnost!" << endl;
- return _aktivnosti[i].dodajUposlenika(u);
- }
- }
- return false;
- }
- //Funkciju koja treba da vrati sve uposlenike angazovane na odredjenoj aktivnosti. Ulazni parametar je naziv aktivnosti.
- Uposlenik** vratiSveUposlene(const char* naziv)
- {
- for (int i = 0; i < _brojAktivnosti; i++)
- {
- if (strcmp(_aktivnosti[i].getIme(), naziv) == 0)
- {
- return _aktivnosti[i].getUposlenici();
- }
- }
- return nullptr;
- }
- //Funkciju koja uklanja odredjenog uposlenika na aktivnosti. Ulazni parametri funkcije su naziv aktivnosti i sifra uposlenika.
- bool ukloniZaposlenika(const char* naziv, const int& id)
- {
- for (int i = 0; i < _brojAktivnosti; i++)
- {
- if (strcmp(_aktivnosti[i].getIme(), naziv) == 0)
- {
- cout << "Brisanje zaposlenika sa " << id << " otpocinje"<< endl;
- _aktivnosti[i].ukloniUposlenog(id);
- return true;
- }
- }
- return false;
- }
- //Funkciju koja uklanja sve uposlenike angazovane na aktivnosti sa nazivom proslijedjenim kao parametar.
- bool ukloniSveZaposlene(const char* naziv)
- {
- for (int i = 0; i < _brojAktivnosti; i++)
- {
- if (strcmp(_aktivnosti[i].getIme(), naziv) == 0)
- {
- cout << "Brisanje svih zaposlenih incijalizirano!" << endl;
- _aktivnosti[i].deleteALL();
- return true;
- }
- }
- return false;
- }
- //Funkciju koja pronalazi uposlenika sa najvecim brojem angazmana na aktivnostima.
- //Funkciju koja pronalazi 3 uposlenika koja su angazovana na najvecem broju nezavrsenih aktivnosti.
- //Funkciju koja ispisuje sve završene aktivnosti na projektu.
- void IspisiZavrseneAktivnosti()
- {
- cout << "\nZavrsene aktivnosti\n";
- for (int i = 0; i < _brojAktivnosti; i++)
- if (_aktivnosti[i].getStatus()==true)
- cout << "-" << _aktivnosti[i].getIme() << endl;
- }
- //Funkciju koja ispisuje sve zavrsene aktivnosti na projektu.
- void ispis()
- {
- cout << "Naziv projekta: " << _naziv << endl;
- cout << "Naziv oblasti: " << _oblast << endl;
- cout << "Trajanje projekta: " << _trajanje << endl;
- if (_brojAktivnosti == 0)
- return;
- for (int i = 0; i < _brojAktivnosti; i++)
- {
- _aktivnosti[i].Ispis();
- cout << endl;
- }
- }
- };
- /*Kreirati globalnu funkciju koja pronalazi najuspjesnijeg usposlenika na projektima proslijedjenim kao parametar.
- Uposlenik se smatra najuspjesnijim ako je angazovan na najvecem broju zavrsenih aktivnosti. Ako vise uposlenika
- ima isti broj zavrsenih aktivnosti, uspjesnijim se smatra onaj cije su aktivnosti trajale duze.
- */
- #pragma endregion radni
- int main()
- {
- //Testirati sve dostupne funkcionalnosti
- Uposlenik Nedzad("Nedzad", "Neziri", "Pravnik");
- Uposlenik Nadzida("Nadzida", "Koljenovic", "I.T");
- Uposlenik Fatima("Fatima", "Fata", "Direktor");
- Uposlenik Gibboni("Gibboni", "Stipesic", "Direktor");
- //Nedzad.Info();
- Aktivnost Posao;
- Posao.kreiraj_aktivnost("Studiranje", true, 300);
- Aktivnost Odmor;
- Odmor.kreiraj_aktivnost("Odmaranje", false, 10);
- if (Posao.dodajUposlenika(Nedzad))
- cout << "Uspjesno dodan zaposlenik!" << endl;
- if (Posao.dodajUposlenika(Nadzida))
- cout << "Uspjesno dodan zaposlenik!" << endl;
- if (Posao.dodajUposlenika(Fatima))
- cout << "Uspjesno dodan zaposlenik!" << endl;
- if (Posao.dodajUposlenika(Nedzad))
- cout << "Uspjesno dodan zaposlenik!" << endl;
- if (Posao.dodajUposlenika(Gibboni))
- cout << "Uspjesno dodan zaposlenik!" << endl;
- if (Odmor.dodajUposlenika(Gibboni))
- cout << "Uspjesno dodan zaposlenik!" << endl;
- Odmor.Ispis();
- //Posao.ukloniUposlenog(4);
- // //Posao.Ispis();
- //// Posao.deleteALL();
- // //Posao.Ispis();
- Projekat PolozitiPRIII;
- PolozitiPRIII.kreirajProjekat("PRIII_poloziti", "IT", 2);
- PolozitiPRIII.ispis();
- if (PolozitiPRIII.dodajAktivnost(Posao) == true)
- cout << "Uspjesno dodana projektna aktivnost!" << endl;
- if (PolozitiPRIII.dodajAktivnost(Odmor) == true)
- cout << "Uspjesno dodana projektna aktivnost!" << endl;
- if (PolozitiPRIII.dodajAktivnost(Posao) == true)
- cout << "Uspjesno dodana projektna aktivnost!" << endl;
- if (PolozitiPRIII.dodajZaposlenika("Odmaranje", Gibboni)==true)
- cout << "Uspjesno dodan zaposlenik na projektu aktivnost!" << endl;
- if (PolozitiPRIII.ukloniSveZaposlene("Odmaranje")==true)
- cout << "Obrisani svi zaposleni!!!" << endl;
- if (PolozitiPRIII.ukloniZaposlenika("Studiranje",4) == true)
- cout << "Obrisan ZAPOSLENIK!!!" << endl;
- cout << "------------------------------------------" << endl;
- PolozitiPRIII.IspisiZavrseneAktivnosti();
- cout << "------------------------------------------" << endl;
- PolozitiPRIII.ispis();
- system("pause");
- return 0;
- }
Add Comment
Please, Sign In to add comment