Advertisement
Kios

W01_PRIII

Dec 17th, 2017
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.06 KB | None | 0 0
  1. /*
  2. Prva workshop vjezba iz OOP, Programiranje III
  3.  
  4.  
  5. */
  6.  
  7.  
  8.  
  9.  
  10. #include<iostream>
  11. using namespace std;
  12.  
  13. /*     Vježbe 1 - Principi OOP. klase, objekti.
  14. Zadatak: Na osnovu opisa sistema prepoznati osnovne klase i atribute, kao i njihove relacije, te implementirati osnovne metode koje omogucavaju kreiranje i
  15. ispis narudzbi klijentu. Obavezno implementirati Get i Set metode.
  16.  
  17. Tema: e-Restoran
  18.  
  19. Namjena aplikacije e-Restoran jeste da omoguci kreiranje narudzbi klijentima restorana putem standardnih PC i mobilnih uredjaja.
  20. U procesu kreiranja narudzbe neophodno je da klijent obavi registraciju gdje upisuje svoje osnovne podatke: ime, prezime, kontakt broj i adresu.
  21. Nakon uspjesne registracije klijenti mogu da kreiraju narudzbu na osnovu online ponude odabranog restorana. Ponuda restorana se sastoji od jela i pica.
  22. Uz svako jelo i pice se prikazuje kratak opis i cijena. Narudzba koju klijent kreira sadrzi najmanje jedno jelo ili pice, ukupnu cijenu narudzbe i status isporuke.
  23.  
  24. */
  25.  
  26. class Klijent
  27. {
  28. private:
  29.     char m_ime[30];
  30.     char m_prezime[30];
  31.     char* m_kontaktBroj;
  32.     char* m_adresa;
  33. public:
  34.     explicit Klijent(char* ime = "n/A", char* prezime = "n/A", char* kontBroj = "n/A", char* adresa = "n/A")
  35.     {
  36.         strcpy_s(m_ime, 29, ime);
  37.         strcpy_s(m_prezime, 29, prezime);
  38.         m_kontaktBroj = new char[strlen(kontBroj) + 1];
  39.         strcpy_s(m_kontaktBroj, strlen(kontBroj) + 1, kontBroj);
  40.         m_adresa = new char[strlen(adresa) + 1];
  41.         strcpy_s(m_adresa, strlen(adresa) + 1, adresa);
  42.     }
  43.     Klijent(const Klijent& klijent)
  44.     {
  45.         strcpy_s(m_ime, 29, klijent.m_ime);
  46.         strcpy_s(m_prezime, 29, klijent.m_prezime);
  47.         int velicina = strlen(klijent.m_kontaktBroj) + 1;
  48.         m_kontaktBroj = new char[velicina];
  49.         strcpy_s(m_kontaktBroj, velicina, klijent.m_kontaktBroj);
  50.         velicina = strlen(klijent.m_adresa) + 1;
  51.         m_adresa = new char[velicina];
  52.         strcpy_s(m_adresa, velicina, klijent.m_adresa);
  53.     }
  54.     ~Klijent()
  55.     {
  56.         delete[] m_kontaktBroj;
  57.         delete[] m_adresa;
  58.         m_kontaktBroj = nullptr;
  59.         m_adresa = nullptr;
  60.     }
  61.  
  62. };
  63.  
  64. class Restoran
  65. {
  66. private:
  67.     char* nazivRestorana;
  68. public:
  69.     Restoran(char* naziv)
  70.     {
  71.         int velicina = strlen(naziv) + 1;
  72.         nazivRestorana = new char[velicina];
  73.         strcpy_s(nazivRestorana, velicina, naziv);
  74.  
  75.  
  76.     }
  77.     ~Restoran()
  78.     {
  79.         delete[] nazivRestorana;
  80.         nazivRestorana = nullptr;
  81.     }
  82.  
  83.     void Ispis()
  84.     {
  85.         cout << "Naziv restorana: " << nazivRestorana << endl;
  86.  
  87.  
  88.     }
  89. };
  90.  
  91.  
  92. class Jelo
  93. {
  94. private:
  95.     char* opis;
  96.     double* cijena;
  97. public:
  98.     explicit Jelo(char* opisJela = "none", double cijenaJela = 0.0)
  99.     {
  100.         int velicina = strlen(opisJela) + 1;
  101.         opis = new char[velicina];
  102.         strcpy_s(opis, velicina, opisJela);
  103.         cijena = new double(cijenaJela);
  104.     }
  105.     ~Jelo()
  106.     {
  107.         delete[] opis;
  108.         opis = nullptr;
  109.         delete cijena;
  110.         cijena = nullptr;
  111.     }
  112.     Jelo(const Jelo& jelo)
  113.     {
  114.         int velicina = strlen(jelo.opis) + 1;
  115.         opis = new char[velicina];
  116.         strcpy_s(opis, velicina, jelo.opis);
  117.         cijena = new double(*jelo.cijena);
  118.     }
  119.     double getCijena()
  120.     {
  121.         return *cijena;
  122.     }
  123.     void Ispis()
  124.     {
  125.         cout << "Opis jela:"<< opis << endl;
  126.         cout << "Cijena jela:" <<*cijena << " KM"<< endl;
  127.     }
  128.     Jelo& operator=(const Jelo& j);
  129.  
  130.  
  131.  
  132. };
  133. Jelo& Jelo::operator=(const Jelo& j)
  134. {
  135.     if (this != &j)
  136.     {
  137.         delete[] opis;
  138.         int velicina = strlen(j.opis) + 1;
  139.         opis = new char[velicina];
  140.         strcpy_s(opis, velicina, j.opis);
  141.         delete[] cijena;
  142.         cijena = new double(*j.cijena);
  143.     }
  144.     return *this;
  145. }
  146.  
  147. class Pice
  148. {
  149. private:
  150.     char* opis;
  151.     double* cijena;
  152. public:
  153.     explicit Pice(char* opisPica = "none", double cijenaPica = 0.0)
  154.     {
  155.         int velicina = strlen(opisPica) + 1;
  156.         opis = new char[velicina];
  157.         strcpy_s(opis, velicina, opisPica);
  158.         cijena = new double(cijenaPica);
  159.     }
  160.     Pice(const Pice& pice)
  161.     {
  162.         int velicina = strlen(pice.opis) + 1;
  163.         opis = new char[velicina];
  164.         strcpy_s(opis, velicina, pice.opis);
  165.         cijena = new double(*pice.cijena);
  166.     }
  167.     ~Pice()
  168.     {
  169.         delete[] opis;
  170.         opis = nullptr;
  171.         delete cijena;
  172.         cijena = nullptr;
  173.     }
  174.     double getCijena()
  175.     {
  176.         return *cijena;
  177.     }
  178.     void Ispis()
  179.     {
  180.         cout << "Opis pica:" << opis << endl;
  181.         cout << "Cijena pica:" << *cijena << " KM" << endl;
  182.     }
  183.     Pice& operator=(const Pice& p);
  184. };
  185. Pice& Pice::operator=(const Pice& p)
  186. {
  187.     if (this != &p)
  188.     {
  189.         delete[] opis;
  190.         int velicina = strlen(p.opis) + 1;
  191.         opis = new char[velicina];
  192.         strcpy_s(opis, velicina, p.opis);
  193.         delete[] cijena;
  194.         cijena = new double(*p.cijena);
  195.     }
  196.     return *this;
  197. }
  198.  
  199. class Narudzba
  200. {
  201. private:
  202.     int broj_jela;
  203.     Jelo* jelo;
  204.     int broj_pica;
  205.     Pice* pice;
  206.     double ukupna_cijena;
  207.     char status[20];
  208. public:
  209.     Narudzba()
  210.     {
  211.         broj_jela = 0;
  212.         broj_pica = 0;
  213.         jelo = nullptr;
  214.         pice = nullptr;
  215.         ukupna_cijena = 0.0;
  216.         strcpy_s(status, 9, "on hold");
  217.     }
  218.     ~Narudzba()
  219.     {
  220.         delete[] jelo;
  221.         jelo = nullptr;
  222.         delete[] pice;
  223.         pice = nullptr;
  224.     }
  225.  
  226.     void dodajJelo(const Jelo& j)
  227.     {
  228.         if (broj_jela == 0)
  229.         {
  230.             jelo = new Jelo[broj_jela + 1];
  231.             jelo[broj_jela++] = j;
  232.         }
  233.         else
  234.         {
  235.             Jelo* temp = new Jelo[broj_jela + 1];
  236.             for (int i = 0; i < broj_jela; i++)
  237.             {
  238.                 temp[i] = jelo[i];
  239.             }
  240.             temp[broj_jela++] = j;
  241.             delete[] jelo;
  242.             jelo = temp;
  243.  
  244.         }
  245.     }
  246.     void dodajPice(const Pice& p)
  247.     {
  248.         if (broj_pica == 0)
  249.         {
  250.             pice = new Pice[broj_pica + 1];
  251.             pice[broj_pica++] = p;
  252.         }
  253.         else
  254.         {
  255.             Pice* temp = new Pice[broj_pica + 1];
  256.             for (int i = 0; i < broj_pica; i++)
  257.             {
  258.                 temp[i] = pice[i];
  259.             }
  260.             temp[broj_pica++] = p;
  261.             delete[] pice;
  262.             pice = temp;
  263.         }
  264.  
  265.     }
  266.     double getUkupnaCijena()
  267.     {
  268.         for (int i = 0; i < broj_jela; i++)
  269.         {
  270.             ukupna_cijena += jelo[i].getCijena();
  271.         }
  272.         for (int i = 0; i < broj_pica; i++)
  273.         {
  274.             ukupna_cijena += pice[i].getCijena();
  275.         }
  276.         return ukupna_cijena;
  277.     }
  278.     void setStatus(char* status)
  279.     {
  280.         strcpy_s(this->status, 19, status);
  281.     }
  282.  
  283.  
  284.     void ispisNarudzbe()
  285.     {
  286.         cout << "\n::::::::::::::::: MENI ::::::::::::::::::::\n" << endl;
  287.  
  288.         cout << "\n Jela koj ste narucili veceras: \n";
  289.  
  290.         cout << "___________________________________\n";
  291.         for (int i = 0; i < broj_jela; i++)
  292.         {
  293.             jelo[i].Ispis();
  294.             cout << "\n";
  295.         }
  296.         cout << "___________________________________\n";
  297.  
  298.         cout << "\n Pica koj ste narucili veceras : \n";
  299.         for (int i = 0; i < broj_pica; i++)
  300.         {
  301.             pice[i].Ispis();
  302.             cout << "\n";
  303.         }
  304.         cout << "___________________________________\n";
  305.         cout << "\n" << endl;
  306.         cout << "Ukupna cijena narudzbe: " << ukupna_cijena << "KM"<< endl;
  307.         cout << "Status Isporuke: " << status << endl;
  308.  
  309.         cout << "::::::Kraj racuna::::\n";
  310.  
  311.     }
  312.  
  313. };
  314.  
  315.  
  316.  
  317. int main()
  318. {
  319.     Restoran Neziri("Neziri");
  320.     Neziri.Ispis();
  321.     Klijent Nedzad("Nedzad", "Neziri", "061/654-435", "Sarajevo");
  322.     Jelo sarma("Sarma\n Najbolja simbioza flore i faune", 10);
  323.     Jelo kolac("Isleri\n domace je najbolje", 5);
  324.     Pice koktel("Koktel\n Sex on the beach", 10);
  325.     Pice Coca_Cola("Cola\n Cola je the best", 5);
  326.     Narudzba meni;
  327.     meni.dodajJelo(sarma);
  328.     meni.dodajJelo(kolac);
  329.     meni.dodajPice(koktel);
  330.     meni.dodajPice(Coca_Cola);
  331.     meni.setStatus("U pripremi");
  332.     meni.getUkupnaCijena();
  333.     meni.ispisNarudzbe();
  334.  
  335.  
  336.     system("pause");
  337.     return 0;
  338. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement