Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Prva workshop vjezba iz OOP, Programiranje III
- */
- #include<iostream>
- using namespace std;
- /* Vježbe 1 - Principi OOP. klase, objekti.
- Zadatak: Na osnovu opisa sistema prepoznati osnovne klase i atribute, kao i njihove relacije, te implementirati osnovne metode koje omogucavaju kreiranje i
- ispis narudzbi klijentu. Obavezno implementirati Get i Set metode.
- Tema: e-Restoran
- Namjena aplikacije e-Restoran jeste da omoguci kreiranje narudzbi klijentima restorana putem standardnih PC i mobilnih uredjaja.
- U procesu kreiranja narudzbe neophodno je da klijent obavi registraciju gdje upisuje svoje osnovne podatke: ime, prezime, kontakt broj i adresu.
- Nakon uspjesne registracije klijenti mogu da kreiraju narudzbu na osnovu online ponude odabranog restorana. Ponuda restorana se sastoji od jela i pica.
- 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.
- */
- class Klijent
- {
- private:
- char m_ime[30];
- char m_prezime[30];
- char* m_kontaktBroj;
- char* m_adresa;
- public:
- explicit Klijent(char* ime = "n/A", char* prezime = "n/A", char* kontBroj = "n/A", char* adresa = "n/A")
- {
- strcpy_s(m_ime, 29, ime);
- strcpy_s(m_prezime, 29, prezime);
- m_kontaktBroj = new char[strlen(kontBroj) + 1];
- strcpy_s(m_kontaktBroj, strlen(kontBroj) + 1, kontBroj);
- m_adresa = new char[strlen(adresa) + 1];
- strcpy_s(m_adresa, strlen(adresa) + 1, adresa);
- }
- Klijent(const Klijent& klijent)
- {
- strcpy_s(m_ime, 29, klijent.m_ime);
- strcpy_s(m_prezime, 29, klijent.m_prezime);
- int velicina = strlen(klijent.m_kontaktBroj) + 1;
- m_kontaktBroj = new char[velicina];
- strcpy_s(m_kontaktBroj, velicina, klijent.m_kontaktBroj);
- velicina = strlen(klijent.m_adresa) + 1;
- m_adresa = new char[velicina];
- strcpy_s(m_adresa, velicina, klijent.m_adresa);
- }
- ~Klijent()
- {
- delete[] m_kontaktBroj;
- delete[] m_adresa;
- m_kontaktBroj = nullptr;
- m_adresa = nullptr;
- }
- };
- class Restoran
- {
- private:
- char* nazivRestorana;
- public:
- Restoran(char* naziv)
- {
- int velicina = strlen(naziv) + 1;
- nazivRestorana = new char[velicina];
- strcpy_s(nazivRestorana, velicina, naziv);
- }
- ~Restoran()
- {
- delete[] nazivRestorana;
- nazivRestorana = nullptr;
- }
- void Ispis()
- {
- cout << "Naziv restorana: " << nazivRestorana << endl;
- }
- };
- class Jelo
- {
- private:
- char* opis;
- double* cijena;
- public:
- explicit Jelo(char* opisJela = "none", double cijenaJela = 0.0)
- {
- int velicina = strlen(opisJela) + 1;
- opis = new char[velicina];
- strcpy_s(opis, velicina, opisJela);
- cijena = new double(cijenaJela);
- }
- ~Jelo()
- {
- delete[] opis;
- opis = nullptr;
- delete cijena;
- cijena = nullptr;
- }
- Jelo(const Jelo& jelo)
- {
- int velicina = strlen(jelo.opis) + 1;
- opis = new char[velicina];
- strcpy_s(opis, velicina, jelo.opis);
- cijena = new double(*jelo.cijena);
- }
- double getCijena()
- {
- return *cijena;
- }
- void Ispis()
- {
- cout << "Opis jela:"<< opis << endl;
- cout << "Cijena jela:" <<*cijena << " KM"<< endl;
- }
- Jelo& operator=(const Jelo& j);
- };
- Jelo& Jelo::operator=(const Jelo& j)
- {
- if (this != &j)
- {
- delete[] opis;
- int velicina = strlen(j.opis) + 1;
- opis = new char[velicina];
- strcpy_s(opis, velicina, j.opis);
- delete[] cijena;
- cijena = new double(*j.cijena);
- }
- return *this;
- }
- class Pice
- {
- private:
- char* opis;
- double* cijena;
- public:
- explicit Pice(char* opisPica = "none", double cijenaPica = 0.0)
- {
- int velicina = strlen(opisPica) + 1;
- opis = new char[velicina];
- strcpy_s(opis, velicina, opisPica);
- cijena = new double(cijenaPica);
- }
- Pice(const Pice& pice)
- {
- int velicina = strlen(pice.opis) + 1;
- opis = new char[velicina];
- strcpy_s(opis, velicina, pice.opis);
- cijena = new double(*pice.cijena);
- }
- ~Pice()
- {
- delete[] opis;
- opis = nullptr;
- delete cijena;
- cijena = nullptr;
- }
- double getCijena()
- {
- return *cijena;
- }
- void Ispis()
- {
- cout << "Opis pica:" << opis << endl;
- cout << "Cijena pica:" << *cijena << " KM" << endl;
- }
- Pice& operator=(const Pice& p);
- };
- Pice& Pice::operator=(const Pice& p)
- {
- if (this != &p)
- {
- delete[] opis;
- int velicina = strlen(p.opis) + 1;
- opis = new char[velicina];
- strcpy_s(opis, velicina, p.opis);
- delete[] cijena;
- cijena = new double(*p.cijena);
- }
- return *this;
- }
- class Narudzba
- {
- private:
- int broj_jela;
- Jelo* jelo;
- int broj_pica;
- Pice* pice;
- double ukupna_cijena;
- char status[20];
- public:
- Narudzba()
- {
- broj_jela = 0;
- broj_pica = 0;
- jelo = nullptr;
- pice = nullptr;
- ukupna_cijena = 0.0;
- strcpy_s(status, 9, "on hold");
- }
- ~Narudzba()
- {
- delete[] jelo;
- jelo = nullptr;
- delete[] pice;
- pice = nullptr;
- }
- void dodajJelo(const Jelo& j)
- {
- if (broj_jela == 0)
- {
- jelo = new Jelo[broj_jela + 1];
- jelo[broj_jela++] = j;
- }
- else
- {
- Jelo* temp = new Jelo[broj_jela + 1];
- for (int i = 0; i < broj_jela; i++)
- {
- temp[i] = jelo[i];
- }
- temp[broj_jela++] = j;
- delete[] jelo;
- jelo = temp;
- }
- }
- void dodajPice(const Pice& p)
- {
- if (broj_pica == 0)
- {
- pice = new Pice[broj_pica + 1];
- pice[broj_pica++] = p;
- }
- else
- {
- Pice* temp = new Pice[broj_pica + 1];
- for (int i = 0; i < broj_pica; i++)
- {
- temp[i] = pice[i];
- }
- temp[broj_pica++] = p;
- delete[] pice;
- pice = temp;
- }
- }
- double getUkupnaCijena()
- {
- for (int i = 0; i < broj_jela; i++)
- {
- ukupna_cijena += jelo[i].getCijena();
- }
- for (int i = 0; i < broj_pica; i++)
- {
- ukupna_cijena += pice[i].getCijena();
- }
- return ukupna_cijena;
- }
- void setStatus(char* status)
- {
- strcpy_s(this->status, 19, status);
- }
- void ispisNarudzbe()
- {
- cout << "\n::::::::::::::::: MENI ::::::::::::::::::::\n" << endl;
- cout << "\n Jela koj ste narucili veceras: \n";
- cout << "___________________________________\n";
- for (int i = 0; i < broj_jela; i++)
- {
- jelo[i].Ispis();
- cout << "\n";
- }
- cout << "___________________________________\n";
- cout << "\n Pica koj ste narucili veceras : \n";
- for (int i = 0; i < broj_pica; i++)
- {
- pice[i].Ispis();
- cout << "\n";
- }
- cout << "___________________________________\n";
- cout << "\n" << endl;
- cout << "Ukupna cijena narudzbe: " << ukupna_cijena << "KM"<< endl;
- cout << "Status Isporuke: " << status << endl;
- cout << "::::::Kraj racuna::::\n";
- }
- };
- int main()
- {
- Restoran Neziri("Neziri");
- Neziri.Ispis();
- Klijent Nedzad("Nedzad", "Neziri", "061/654-435", "Sarajevo");
- Jelo sarma("Sarma\n Najbolja simbioza flore i faune", 10);
- Jelo kolac("Isleri\n domace je najbolje", 5);
- Pice koktel("Koktel\n Sex on the beach", 10);
- Pice Coca_Cola("Cola\n Cola je the best", 5);
- Narudzba meni;
- meni.dodajJelo(sarma);
- meni.dodajJelo(kolac);
- meni.dodajPice(koktel);
- meni.dodajPice(Coca_Cola);
- meni.setStatus("U pripremi");
- meni.getUkupnaCijena();
- meni.ispisNarudzbe();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement