Advertisement
ASDEVELOPMENT

Apoteke, Radnja, Tržni centar - PRIII

Dec 23rd, 2015
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 20.72 KB | None | 0 0
  1. #include<string>
  2. #include<exception>
  3. #include<vector>
  4. #include<iostream>
  5. using namespace std;
  6.  
  7. template<class T1, class T2, int max>
  8. class Kolekcija{
  9. private:
  10.     T1 *_elementi1[max];
  11.     T2 *_elementi2[max];
  12.     int _trenutnoElemenata;
  13. public:
  14.     Kolekcija(){
  15.         _trenutnoElemenata = 0;
  16.  
  17.     }
  18.  
  19.     Kolekcija(const Kolekcija<T1, T2, max> &obj){
  20.         _trenutnoElemenata = obj._trenutnoElemenata;
  21.  
  22.         for (int i = 0; i < _trenutnoElemenata; i++){
  23.             _elementi1[i] = new T1(*obj._elementi1[i]);
  24.             _elementi2[i] = new T2(*obj._elementi2[i]);
  25.         }
  26.     }
  27.  
  28.     ~Kolekcija(){
  29.         for (int i = 0; i < _trenutnoElemenata; i++){
  30.             delete _elementi1[i];
  31.             delete _elementi2[i];
  32.         }
  33.     }
  34.  
  35.  
  36.     void operator=(const Kolekcija<T1, T2, max> &obj){
  37.         for (int i = 0; i < _trenutnoElemenata; i++){
  38.             delete _elementi1[i];
  39.             delete _elementi2[i];
  40.         }
  41.  
  42.         _trenutnoElemenata = obj._trenutnoElemenata;
  43.  
  44.         for (int i = 0; i < _trenutnoElemenata; i++){
  45.             _elementi1[i] = new T1(*obj._elementi1[i]);
  46.             _elementi2[i] = new T2(*obj._elementi2[i]);
  47.         }
  48.     }
  49.  
  50.     bool AddElement(T1 obj1, T2 obj2){
  51.         for (int i = 0; i < _trenutnoElemenata; i++){
  52.             if (*_elementi1[i] == obj1 && *_elementi2[i] == obj2){
  53.                 cout << "Nije moguce dodati iste elemente!" << endl;
  54.                 return false;
  55.             }
  56.         }
  57.  
  58.         if (_trenutnoElemenata < max){
  59.             _elementi1[_trenutnoElemenata] = new T1(obj1);
  60.             _elementi2[_trenutnoElemenata] = new T2(obj2);
  61.             _trenutnoElemenata++;
  62.             cout << "Uspjesno ste dodali elemente!" << endl;
  63.             return true;
  64.         }
  65.  
  66.         cout << "Doslo je do greske, pokusajte ponovo!" << endl;
  67.         return false;
  68.     }
  69.  
  70.     void Info(){
  71.         cout << "Trenutno elemenata: " << _trenutnoElemenata << endl;
  72.         for (int i = 0; i < _trenutnoElemenata; i++){
  73.             cout << *_elementi1[i] << " " << *_elementi2[i] << endl;
  74.         }
  75.     }
  76.  
  77.     bool RemoveElement(T1 obj){
  78.         for (int i = 0; i < _trenutnoElemenata; i++){
  79.             if (*_elementi1[i] == obj){
  80.                 delete _elementi1[i];
  81.                 delete _elementi2[i];
  82.  
  83.                 for (int j = i; j < _trenutnoElemenata - 1; j++){
  84.                     _elementi1[j] = new T1(*_elementi1[j + 1]);
  85.                     _elementi2[j] = new T2(*_elementi2[j + 1]);
  86.                     delete _elementi1[j + 1];
  87.                     delete _elementi2[j + 1];
  88.                 }
  89.  
  90.                 _trenutnoElemenata--;
  91.                 cout << "Uspjesno ste uklonili elemente!" << endl;
  92.                 return true;
  93.  
  94.             }
  95.         }
  96.  
  97.         cout << "Doslo je do greske, pokusajte ponovo!" << endl;
  98.         return false;
  99.     }
  100.  
  101.     // Get funkcije
  102.     T1 GetElement1(int poz){ return *_elementi1[poz]; }
  103.     T2 GetElement2(int poz){ return *_elementi2[poz]; }
  104.     int GetTrenutnoElemenata(){ return _trenutnoElemenata; }
  105.  
  106.     friend ostream &operator<<<>(ostream &ispis, Kolekcija<T1, T2, max> &obj);
  107. };
  108.  
  109. template<class T1, class T2, int max>
  110. ostream &operator<<(ostream &ispis, Kolekcija<T1, T2, max> &obj){
  111.     ispis << "Trenutno elemenata: " << obj._trenutnoElemenata << endl;
  112.     for (int i = 0; i < obj._trenutnoElemenata; i++){
  113.         ispis << *obj._elementi1[i] << " " << *obj._elementi2[i] << endl;
  114.     }
  115.     return ispis;
  116. }
  117.  
  118. char *crt = "\n--------------------------------------------------\n";
  119.  
  120. class Datum{
  121. private:
  122.     int _dan, _mjesec, _godina;
  123. public:
  124.     //potrebe funkcije
  125.     // info u obliku stringa
  126.  
  127.  
  128.     Datum(int d = 1, int m = 1, int g = 2000){
  129.         _dan = d;
  130.         _mjesec = m;
  131.         _godina = g;
  132.     }
  133.  
  134.     Datum(Datum &obj){
  135.         _dan = obj._dan;
  136.         _mjesec = obj._mjesec;
  137.         _godina = obj._godina;
  138.     }
  139.  
  140.     void operator=(Datum &obj){
  141.         _dan = obj._dan;
  142.         _mjesec = obj._mjesec;
  143.         _godina = obj._godina;
  144.     }
  145.  
  146.     // Get funkcije
  147.     int GetDan(){ return _dan; }
  148.     int GetMjesec(){ return _mjesec; }
  149.     int GetGodina(){ return _godina; }
  150.  
  151.  
  152.     // Set funkcije
  153.     void SetDan(int d){ _dan = d; }
  154.     void SetMjesec(int m){ _mjesec = m; }
  155.     void SetGodina(int g){ _godina = g; }
  156.  
  157.  
  158.     void Info(){
  159.         cout << _dan << "." << _mjesec << "." << _godina << endl;
  160.     }
  161.  
  162.     friend ostream &operator<<(ostream &ispis, Datum &obj);
  163.  
  164.     bool operator<(Datum &obj){
  165.         if (_godina < obj._godina){
  166.             return true;
  167.         }
  168.         else if (_godina == obj._godina){
  169.             if (_mjesec < obj._mjesec){
  170.                 return true;
  171.             }
  172.             else if (_mjesec == obj._mjesec){
  173.                 if (_dan < obj._dan){
  174.                     return true;
  175.                 }
  176.             }
  177.         }
  178.  
  179.         return false;
  180.     }
  181.  
  182.     bool operator>(Datum &obj){
  183.         if (_godina > obj._godina){
  184.             return true;
  185.         }
  186.         else if (_godina == obj._godina){
  187.             if (_mjesec > obj._mjesec){
  188.                 return true;
  189.             }
  190.             else if (_mjesec == obj._mjesec){
  191.                 if (_dan > obj._dan){
  192.                     return true;
  193.                 }
  194.             }
  195.         }
  196.  
  197.         return false;
  198.     }
  199. };
  200.  
  201. ostream &operator<<(ostream &ispis, Datum &obj){
  202.     ispis << obj._dan << "." << obj._mjesec << "." << obj._godina << endl;
  203.     return ispis;
  204. }
  205.  
  206. class Proizvod{
  207. private:
  208.     string _nazivProizvoda;
  209.     char *_proizvodjac;
  210.     float _cijena;
  211.     Datum *_datumProizvodnje;
  212.     string _sifra;
  213. public:
  214.     //potrebe konstruktor i destruktor funkcije
  215.     Proizvod(){
  216.         int duzina = strlen("----") + 1;
  217.         _proizvodjac = new char[duzina];
  218.         strcpy_s(_proizvodjac, duzina, "----");
  219.  
  220.         _nazivProizvoda = "----";
  221.         _cijena = 0;
  222.         _datumProizvodnje = new Datum();
  223.         _sifra = "----";
  224.  
  225.     }
  226.  
  227.     Proizvod(string nazivProizvoda, char *proizvodac, float cijena, Datum d, string sifra){
  228.         int duzina = strlen(proizvodac) + 1;
  229.         _proizvodjac = new char[duzina];
  230.         strcpy_s(_proizvodjac, duzina, proizvodac);
  231.  
  232.         _nazivProizvoda = nazivProizvoda;
  233.         _cijena = cijena;
  234.         _datumProizvodnje = new Datum(d);
  235.         _sifra = sifra;
  236.  
  237.     }
  238.  
  239.     Proizvod(Proizvod &obj){
  240.         int duzina = strlen(obj._proizvodjac) + 1;
  241.         _proizvodjac = new char[duzina];
  242.         strcpy_s(_proizvodjac, duzina, obj._proizvodjac);
  243.  
  244.         _nazivProizvoda = obj._nazivProizvoda;
  245.         _cijena = obj._cijena;
  246.         _datumProizvodnje = new Datum(*obj._datumProizvodnje);
  247.         _sifra = obj._sifra;
  248.  
  249.     }
  250.  
  251.     ~Proizvod(){
  252.         delete[] _proizvodjac;
  253.         _proizvodjac = nullptr;
  254.  
  255.         delete _datumProizvodnje;
  256.         _datumProizvodnje = nullptr;
  257.     }
  258.  
  259.     void operator=(Proizvod &obj){
  260.         delete[] _proizvodjac;
  261.         _proizvodjac = nullptr;
  262.  
  263.         delete _datumProizvodnje;
  264.         _datumProizvodnje = nullptr;
  265.  
  266.         int duzina = strlen(obj._proizvodjac) + 1;
  267.         _proizvodjac = new char[duzina];
  268.         strcpy_s(_proizvodjac, duzina, obj._proizvodjac);
  269.  
  270.         _nazivProizvoda = obj._nazivProizvoda;
  271.         _cijena = obj._cijena;
  272.         _datumProizvodnje = new Datum(*obj._datumProizvodnje);
  273.         _sifra = obj._sifra;
  274.  
  275.     }
  276.  
  277.     bool operator==(Proizvod &obj){
  278.         if (_sifra == obj._sifra){
  279.             return true;
  280.         }
  281.         return false;
  282.     }
  283.  
  284.     // Get funkcije
  285.     string GetNazivProizvoda(){ return _nazivProizvoda; }
  286.     char *GetProizvodac(){ return _proizvodjac; }
  287.     float GetCijena(){ return _cijena; }
  288.     Datum GetDatum(){ return *_datumProizvodnje; }
  289.     string GetSifra(){ return _sifra; }
  290.  
  291.     // Set funkcije
  292.     void SetNazivProizvoda(string naziv){
  293.         _nazivProizvoda = naziv;
  294.     }
  295.  
  296.     void SetProizvodac(char *proizvodac){
  297.         delete[] _proizvodjac;
  298.         _proizvodjac = nullptr;
  299.  
  300.         int duzina = strlen(proizvodac) + 1;
  301.         _proizvodjac = new char[duzina];
  302.         strcpy_s(_proizvodjac, duzina, proizvodac);
  303.     }
  304.  
  305.     void SetDatum(Datum &datum){
  306.         _datumProizvodnje = new Datum(datum);
  307.     }
  308.  
  309.     void SetSifra(string sifra){
  310.         _sifra = sifra;
  311.     }
  312.  
  313.     void Info(){
  314.         cout << "Naziv proizvoda: " << _nazivProizvoda << endl;
  315.         cout << "Proizvodac: " << _proizvodjac << endl;
  316.         cout << "Cijena: " << _cijena << endl;
  317.         cout << "Datum: " << *_datumProizvodnje << endl;
  318.         cout << "Sifra: " << _sifra << endl;
  319.     }
  320.  
  321.     friend ostream &operator<<(ostream &ispis, Proizvod &obj);
  322. };
  323.  
  324. ostream &operator<<(ostream &ispis, Proizvod &obj){
  325.     ispis << "Naziv proizvoda: " << obj._nazivProizvoda << endl;
  326.     ispis << "Proizvodac: " << obj._proizvodjac << endl;
  327.     ispis << "Cijena: " << obj._cijena << endl;
  328.     ispis << "Datum: " << *obj._datumProizvodnje << endl;
  329.     ispis << "Sifra: " << obj._sifra << endl;
  330.  
  331.     return ispis;
  332. }
  333.  
  334. class Radnja{
  335. protected:
  336.     char *_naziv;
  337.     string _vlasnik;
  338.     char *_mjesto;
  339.     Datum _datumOtvaranja;
  340. public:
  341.     //potrebe konstruktor i destruktor funkcije
  342.  
  343.  
  344.     Radnja(char *naziv = "----", string vlasnik = "----", char *mjesto = "----", Datum d = Datum(1, 1, 2000)){
  345.         int duzina = strlen(naziv) + 1;
  346.         _naziv = new char[duzina];
  347.         strcpy_s(_naziv, duzina, naziv);
  348.  
  349.         _vlasnik = vlasnik;
  350.  
  351.         duzina = strlen(mjesto) + 1;
  352.         _mjesto = new char[duzina];
  353.         strcpy_s(_mjesto, duzina, mjesto);
  354.  
  355.         _datumOtvaranja = d;
  356.     }
  357.  
  358.     Radnja(Radnja &obj){
  359.         int duzina = strlen(obj._naziv) + 1;
  360.         _naziv = new char[duzina];
  361.         strcpy_s(_naziv, duzina, obj._naziv);
  362.  
  363.         _vlasnik = obj._vlasnik;
  364.  
  365.         duzina = strlen(obj._mjesto) + 1;
  366.         _mjesto = new char[duzina];
  367.         strcpy_s(_mjesto, duzina, obj._mjesto);
  368.  
  369.         _datumOtvaranja = obj._datumOtvaranja;
  370.     }
  371.  
  372.     virtual ~Radnja(){
  373.         delete[] _naziv;
  374.         _naziv = nullptr;
  375.  
  376.         delete[] _mjesto;
  377.         _mjesto = nullptr;
  378.     }
  379.  
  380.     void operator=(Radnja &obj){
  381.         delete[] _naziv;
  382.         _naziv = nullptr;
  383.  
  384.         int duzina = strlen(obj._naziv) + 1;
  385.         _naziv = new char[duzina];
  386.         strcpy_s(_naziv, duzina, obj._naziv);
  387.  
  388.         _vlasnik = obj._vlasnik;
  389.  
  390.         delete[] _mjesto;
  391.         _mjesto = nullptr;
  392.  
  393.         duzina = strlen(obj._mjesto) + 1;
  394.         _mjesto = new char[duzina];
  395.         strcpy_s(_mjesto, duzina, obj._mjesto);
  396.  
  397.         _datumOtvaranja = obj._datumOtvaranja;
  398.     }
  399.  
  400.     // Get funkcije
  401.     char *GetNazivRadnje(){ return _naziv; }
  402.     char *GetMjesto(){ return _mjesto; }
  403.     string GetVlasnik(){ return _vlasnik; }
  404.  
  405.     Datum GetDatum(){ return _datumOtvaranja; }
  406.  
  407.     // Set funkcije
  408.  
  409.     void SetNazivRadnje(char *naziv){
  410.         delete[] _naziv;
  411.         _naziv = nullptr;
  412.  
  413.         int duzina = strlen(naziv) + 1;
  414.         _naziv = new char[duzina];
  415.         strcpy_s(_naziv, duzina, naziv);
  416.     }
  417.  
  418.     void SetMjesto(char *mjesto){
  419.         delete[] _mjesto;
  420.         _mjesto = nullptr;
  421.  
  422.         int duzina = strlen(mjesto) + 1;
  423.         _mjesto = new char[duzina];
  424.         strcpy_s(_mjesto, duzina, mjesto);
  425.     }
  426.  
  427.     void SetVlasnik(string vlasnik){
  428.         _vlasnik = vlasnik;
  429.     }
  430.  
  431.     void SetDatum(Datum d){
  432.         _datumOtvaranja = d;
  433.     }
  434.  
  435.     virtual void Info(){
  436.         cout << "Naziv radnje: " << _naziv << endl;
  437.         cout << "Vlasnik: " << _vlasnik << endl;
  438.         cout << "Mjesto: " << _mjesto << endl;
  439.         cout << "Datum otvaranja: " << _datumOtvaranja << endl;
  440.     }
  441.  
  442.     friend ostream &operator<<(ostream &ispis, Radnja &obj);
  443. };
  444. ostream &operator<<(ostream &ispis, Radnja &obj){
  445.     ispis << "Naziv radnje: " << obj._naziv << endl;
  446.     ispis << "Vlasnik: " << obj._vlasnik << endl;
  447.     ispis << "Mjesto: " << obj._mjesto << endl;
  448.     ispis << "Datum otvaranja: " << obj._datumOtvaranja << endl;
  449.  
  450.     return ispis;
  451. }
  452.  
  453. class Apoteka :public Radnja{
  454. private:
  455.     bool _uSklopuBolnice;
  456.     Kolekcija <char*, int, 5> *_radniciApoteke; //char* se odnosi na ime radnika, int - broj prodanih lijekova, 5 -  maximalan broj radnika u toj apoteci
  457.     vector<Proizvod *> _prodaniLijekovi;
  458.  
  459. public:
  460.     // 1. potrebne konstr. i destr. funkcije
  461.  
  462.     Apoteka() :Radnja(){
  463.         _uSklopuBolnice = false;
  464.         _radniciApoteke = new Kolekcija<char*, int, 5>();
  465.     }
  466.  
  467.     // 5. operator << - ispis;
  468.     Apoteka(bool uSklopu, char *naziv, string vlasnik, char *mjesto, Datum d) :Radnja(naziv, vlasnik, mjesto, d){
  469.         _uSklopuBolnice = uSklopu;
  470.  
  471.         _radniciApoteke = new Kolekcija<char*, int, 5>();
  472.     }
  473.  
  474.     Apoteka(Apoteka &obj) :Radnja(obj){
  475.         _uSklopuBolnice = obj._uSklopuBolnice;;
  476.  
  477.         _radniciApoteke = new Kolekcija<char *, int, 5>(*obj._radniciApoteke);
  478.  
  479.         _prodaniLijekovi = obj._prodaniLijekovi;
  480.     }
  481.  
  482.     ~Apoteka(){
  483.         delete _radniciApoteke;
  484.         _radniciApoteke = nullptr;
  485.  
  486.     }
  487.  
  488.     void operator=(Apoteka &obj){
  489.         delete _radniciApoteke;
  490.         _radniciApoteke = nullptr;
  491.  
  492.         _uSklopuBolnice = obj._uSklopuBolnice;
  493.  
  494.         _radniciApoteke = new Kolekcija<char *, int, 5>(*obj._radniciApoteke);
  495.  
  496.         _prodaniLijekovi = obj._prodaniLijekovi;
  497.  
  498.         Radnja::operator=(obj);
  499.  
  500.  
  501.     }
  502.     // 2. DodajRadnika - omogucava dodavanje radnika;
  503.  
  504.     bool DodajRadnika(char *imePrezime, int lijekovi){
  505.         for (int i = 0; i < _radniciApoteke->GetTrenutnoElemenata(); i++){
  506.             if (strcmp(_radniciApoteke->GetElement1(i), imePrezime) == NULL){
  507.                 cout << "Doslo je do greske, pokusajte ponovo!" << endl;
  508.                 return false;
  509.             }
  510.         }
  511.  
  512.         if (_radniciApoteke->GetTrenutnoElemenata() < 5){
  513.             _radniciApoteke->AddElement(imePrezime, lijekovi);
  514.             return true;
  515.         }
  516.  
  517.         cout << "Doslo je do greske, pokusajte ponovo!" << endl;
  518.         return false;
  519.     }
  520.  
  521.  
  522.     // 3. UkloniRadnika - uklanja radnika ako ima manje od 10 prodanih lijekova;
  523.  
  524.     bool UkloniRadnika(){
  525.         for (int i = 0; i < _radniciApoteke->GetTrenutnoElemenata(); i++){
  526.             if (_radniciApoteke->GetElement2(i) < 10){
  527.                 _radniciApoteke->RemoveElement(_radniciApoteke->GetElement1(i));
  528.                 cout << "Uspjesno ste uklonili radnika sa liste!" << endl;
  529.                 return true;
  530.             }
  531.         }
  532.  
  533.         return false;
  534.     }
  535.  
  536.     void Info(){
  537.  
  538.         cout << "Naziv radnje: " << _naziv << endl;
  539.         cout << "Vlasnik: " << _vlasnik << endl;
  540.         cout << "Mjesto: " << _mjesto << endl;
  541.         cout << "Datum otvaranja: " << _datumOtvaranja << endl;
  542.  
  543.         cout << "U sklopu bolnice: ";
  544.  
  545.         if (_uSklopuBolnice == true){
  546.             cout << "DA!" << endl;
  547.         }
  548.         else{
  549.             cout << "NE!" << endl;
  550.         }
  551.  
  552.         cout << "\n ============== RADNICI ==============\n";
  553.         for (int i = 0; i < _radniciApoteke->GetTrenutnoElemenata(); i++){
  554.             cout << _radniciApoteke->GetElement1(i) << " Broj lijekova: " << _radniciApoteke->GetElement2(i) << endl;
  555.         }
  556.  
  557.  
  558.         cout << "\n ============== LIJEKOVI ==============\n";
  559.         for (int i = 0; i < _prodaniLijekovi.size(); i++){
  560.             cout << *_prodaniLijekovi[i] << endl;
  561.         }
  562.  
  563.     }
  564.  
  565.     // 4. ProdajLijek - na osnovu parametra Datum provjerava ispravnost roka, sifre lijekova se ne smiju ponavljati;
  566.     bool ProdajLijek(Proizvod &obj){
  567.         for (int i = 0; i < _prodaniLijekovi.size(); i++){
  568.             if (*_prodaniLijekovi[i] == obj){
  569.                 cout << "Lijek vec postoji!" << endl;
  570.                 return false;
  571.             }
  572.         }
  573.  
  574.         _prodaniLijekovi.push_back(&obj);
  575.         cout << "Lijek uspjesno prodat!" << endl;
  576.         return true;
  577.     }
  578.  
  579.     friend ostream &operator<<(ostream &ispis, Apoteka &obj);
  580. };
  581.  
  582. ostream &operator<<(ostream &ispis, Apoteka &obj){
  583.     ispis << "U sklopu bolnice: ";
  584.  
  585.     if (obj._uSklopuBolnice == true){
  586.         ispis << "DA!" << endl;
  587.     }
  588.     else{
  589.         ispis << "NE!" << endl;
  590.     }
  591.  
  592.     ispis << "\n ============== RADNICI ==============\n";
  593.     for (int i = 0; i < obj._radniciApoteke->GetTrenutnoElemenata(); i++){
  594.         ispis << *obj._radniciApoteke->GetElement1(i) << " Broj lijekova: " << obj._radniciApoteke->GetElement2(i) << endl;
  595.     }
  596.  
  597.  
  598.     ispis << "\n ============== LIJEKOVI ==============\n";
  599.     for (int i = 0; i < obj._prodaniLijekovi.size(); i++){
  600.         ispis << *obj._prodaniLijekovi[i] << endl;
  601.     }
  602.  
  603.     return ispis;
  604. }
  605.  
  606. class TrzniCentar{
  607. private:
  608.     int _brojPoslovnica;
  609.     vector<Proizvod *>_narudzbaPehrane;
  610.     Kolekcija <char*, string, 100> _radniciTrznogCentra; //char* se odnosi na ime radnika, string - napomene o ponasanju, 100 -  maximalan broj radnika u tom centru
  611. public:
  612.     // 1. potrebne konstr. i destr. funkcije
  613.    
  614.    
  615.  
  616.     TrzniCentar(int brojPoslovnica = 10){
  617.         _brojPoslovnica = brojPoslovnica;
  618.         _radniciTrznogCentra = Kolekcija<char*, string, 100>();
  619.     }
  620.  
  621.     TrzniCentar(const TrzniCentar &obj){
  622.         _brojPoslovnica = obj._brojPoslovnica;
  623.  
  624.         _radniciTrznogCentra = Kolekcija<char*, string, 100>(obj._radniciTrznogCentra);
  625.  
  626.         _narudzbaPehrane = obj._narudzbaPehrane;
  627.     }
  628.  
  629.     void operator=(const TrzniCentar &obj){
  630.         _brojPoslovnica = obj._brojPoslovnica;
  631.  
  632.         _radniciTrznogCentra = Kolekcija<char*, string, 100>(obj._radniciTrznogCentra);
  633.  
  634.         _narudzbaPehrane = obj._narudzbaPehrane;
  635.     }
  636.  
  637.     // 2. AddRadnika - omogucava dodavanje radnika
  638.    
  639.  
  640.     bool AddRadnika(char *imePrezime, string ponasanje){
  641.         for (int i = 0; i < _radniciTrznogCentra.GetTrenutnoElemenata(); i++){
  642.             if (strcmp(_radniciTrznogCentra.GetElement1(i), imePrezime) == NULL){
  643.                 cout << "Iste radnike nije moguce dodati!" << endl;
  644.                 return false;
  645.             }
  646.         }
  647.  
  648.         if (_radniciTrznogCentra.GetTrenutnoElemenata() < 100){
  649.             _radniciTrznogCentra.AddElement(imePrezime, ponasanje);
  650.             cout << "Uspjesno ste dodali elemente!" << endl;
  651.             return true;
  652.         }
  653.  
  654.         cout << "Dogodila se greska, pokusajte ponovo!" << endl;
  655.         return false;
  656.     }
  657.  
  658.  
  659.     // 3. UkloniRadnika - uklanja sve radnike koji u napomeni posjeduju rijec: "ukrao", "prevario" ili "neljubazan";
  660.    
  661.  
  662.     bool UkloniRadnika(){
  663.         for (int i = 0; i < _radniciTrznogCentra.GetTrenutnoElemenata(); i++){
  664.             if (_radniciTrznogCentra.GetElement2(i) == "ukrao" || _radniciTrznogCentra.GetElement2(i) == "prevario" || _radniciTrznogCentra.GetElement2(i) == "neljubazan"){
  665.                 _radniciTrznogCentra.RemoveElement(_radniciTrznogCentra.GetElement1(i));
  666.                 cout << "Prekinuli ste radni odnos sa radnikom!" << endl;
  667.                 return true;
  668.             }
  669.         }
  670.     }
  671.  
  672.     // 3. AddProizvod - dodavnje proizvoda u centar, samo ako je datum veci od
  673.     // proslijedjenog (u protivnom je istekao rok), sifre proizvoda se smiju ponoviti samo 3 puta -koristiti iteratore
  674.  
  675.     bool AddProizvod(Proizvod &obj, Datum &d){
  676.         if (obj.GetDatum().operator>(d)){
  677.  
  678.             vector<Proizvod *>::iterator it;
  679.  
  680.             for (int i = 0; i < _narudzbaPehrane.size(); i++){
  681.                 if (*_narudzbaPehrane.at(i) == obj){
  682.                     cout << "Iste narudzbe nije moguce dodati!" << endl;
  683.                     return false;
  684.                 }
  685.             }
  686.  
  687.             _narudzbaPehrane.push_back(&obj);
  688.             cout << "Uspjesno ste evidentirali narudzbu!" << endl;
  689.             return true;
  690.         }
  691.     }
  692.  
  693.     // 4. UkloniProizvod - uklanja sve proizvode kojima je istekao rok - koristiti iteratore;
  694.  
  695.  
  696.     // 5. operator << - ispisuje podatke;
  697.     void Info(){
  698.         cout << "Broj poslovnica: " << _brojPoslovnica << endl;
  699.  
  700.         cout << "\n ================ Narudzbe ================\n";
  701.         vector<Proizvod *>::iterator it;
  702.  
  703.         for (it = _narudzbaPehrane.begin(); it != _narudzbaPehrane.end(); it++){
  704.             cout << **it << endl;
  705.         }
  706.  
  707.         cout << "\n ================ Radnici trznog centra ================ \n";
  708.  
  709.         for (int i = 0; i < _radniciTrznogCentra.GetTrenutnoElemenata(); i++){
  710.             cout << "Ime i prezime radnika: " << _radniciTrznogCentra.GetElement1(i) << endl;
  711.             cout << "Ponasanje: " << _radniciTrznogCentra.GetElement2(i) << endl;
  712.         }
  713.     }
  714.  
  715.     friend ostream &operator<<(ostream &ispis, TrzniCentar &obj);
  716. };
  717. ostream &operator<<(ostream &ispis, TrzniCentar &obj){
  718.     ispis << "Broj poslovnica: " << obj._brojPoslovnica << endl;
  719.  
  720.     ispis << "\n ================ Narudzbe ================\n";
  721.     vector<Proizvod *>::iterator it;
  722.  
  723.     for (it = obj._narudzbaPehrane.begin(); it != obj._narudzbaPehrane.end(); it++){
  724.         ispis << **it << endl;
  725.     }
  726.  
  727.     ispis << "\n ================ Radnici trznog centra ================ \n";
  728.  
  729.     for (int i = 0; i < obj._radniciTrznogCentra.GetTrenutnoElemenata(); i++){
  730.         ispis << "Ime i prezime radnika: " << obj._radniciTrznogCentra.GetElement1(i) << endl;
  731.         ispis << "Ponasanje: " << obj._radniciTrznogCentra.GetElement2(i) << endl;
  732.     }
  733.  
  734.     return ispis;
  735. }
  736. void main(){
  737.  
  738.  
  739. #pragma region TestiranjeKolekcije
  740.     Kolekcija<int, double, 100> kolekcija1;
  741.     for (size_t i = 0; i < 100; i++)
  742.         kolekcija1.AddElement(i, i + 0.3);
  743.     cout << kolekcija1 << endl;
  744.     cout << crt;
  745.     Kolekcija<int, double, 100> kolekcija2;
  746.     kolekcija1.RemoveElement(2);//UMANJITI VELIČINU NIZA
  747.     kolekcija2 = kolekcija1;
  748.     cout << kolekcija2 << crt;
  749.     if (kolekcija1.GetTrenutnoElemenata() == kolekcija2.GetTrenutnoElemenata())
  750.         cout << "ISTI BROJ ELEMENATA" << endl;
  751.     Kolekcija<int, double, 100> kolekcija3(kolekcija2);
  752.     cout << kolekcija3 << crt;
  753. #pragma endregion
  754.  
  755. #pragma region TestiranjeDatuma
  756.  
  757.     Datum d1(26, 11, 2015);
  758.     Datum d2(d1);
  759.     Datum d3;
  760.     d3 = d2;
  761.  
  762.     Datum d4(22, 11, 2015);
  763.     Datum d5(22, 12, 2015);
  764.  
  765.     cout << d4.operator<(d5) << endl;
  766.     cout << d5.operator>(d4) << endl;
  767.  
  768.     cout << d1 << endl;
  769.     cout << d2 << endl;
  770.     cout << d3 << endl;
  771.     cout << d4 << endl;
  772.     cout << d5 << endl;
  773.  
  774. #pragma endregion
  775.  
  776. #pragma region TestiranjeProizvoda
  777.  
  778.     Proizvod pr1("Mica Maca - cokolada", "Takovo", 1.30, d4, "145555");
  779.     Proizvod pr2("Kornet - sladoled", "Ledo", 1.50, d5, "145556");
  780.     Proizvod pr3;
  781.  
  782.     pr3 = pr2;
  783.  
  784.     cout << pr1 << endl;
  785.     cout << pr2 << endl;
  786.     cout << pr3 << endl;
  787.  
  788.  
  789. #pragma endregion
  790.  
  791. #pragma region TestiranjeRadnje
  792.  
  793.     Radnja ra1("Waikiki", "Neko Nekic", "Sarajevo - BBI (I sprat)", d3);
  794.     Radnja ra2("Tom Tailor", "Neko Nekic", "Sarajevo - BBI (II sprat)", d4);
  795.     Radnja ra3("Apple", "Neko Nekic", "Sarajevo - BBI (V sprat)", d3);
  796.  
  797.  
  798.  
  799.     cout << ra1 << endl;
  800.     cout << ra2 << endl;
  801.     cout << ra3 << endl;
  802.  
  803.  
  804.  
  805.  
  806. #pragma endregion
  807.  
  808.  
  809.     Apoteka ap1(false, "Apoteka Breka", "Grad Sarajevo", "Himze Polovine bb", d4);
  810.     Apoteka ap2(false, "Apoteka Centar", "Grad Sarajevo", "Maršala Tita 40", d4);
  811.     Apoteka ap3(true, "Apoteka Koševo", "Grad Sarajevo", "Bolnička 9", d4);
  812.     Apoteka ap4(false, "Apoteka Koševsko brdo", "Grad Sarajevo", "Braće Begić 4", d4);
  813.  
  814.     Apoteka ap5;
  815.     ap5 = ap4;
  816.  
  817.     Apoteka ap6(ap3);
  818.  
  819.  
  820.     ap1.DodajRadnika("Mr. ph. Adijata Spahić", 12);
  821.     ap1.DodajRadnika("Mr. ph. Sanela Mujkic", 10);
  822.     ap1.DodajRadnika("Mr. ph. Amela Mujkic", 9);
  823.  
  824.     ap1.ProdajLijek(pr1);
  825.  
  826.     ap1.UkloniRadnika();
  827.  
  828.     cout << ap1 << endl;
  829.  
  830.     TrzniCentar tr1(120);
  831.  
  832.     tr1.AddRadnika("Sejdalija Agic", "Bez evidencije");
  833.     tr1.AddRadnika("Neko Nekic", "ukrao");
  834.  
  835.     tr1.AddProizvod(pr2, d4);
  836.  
  837.     // tr1.UkloniRadnika(); ispravno
  838.    
  839.  
  840.     tr1.Info();
  841.  
  842.     system("pause>0");
  843. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement