Guest User

Untitled

a guest
Sep 17th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. char * crt = "\n----------------------------------------------------\n";
  2. template<class T1, class T2>
  3. class Kolekcija {
  4. T1 * _elementi1;
  5. T2 * _elementi2;
  6. int * _trenutno;
  7. public:
  8. Kolekcija()
  9. {
  10. _elementi1 = nullptr;
  11. _elementi2 = nullptr;
  12. _trenutno = new int(0);
  13. }
  14. //1. potrebne funkcije 
  15. ~Kolekcija()
  16. {
  17. delete[]_elementi1; _elementi1 = nullptr;
  18. delete[]_elementi2; _elementi2 = nullptr;
  19. delete _trenutno; _trenutno = nullptr;
  20. }  
  21. };
  22. class Datum {
  23. int *_dan, *_mjesec, *_godina;
  24. public:
  25. Datum(int dan = 1, int mjesec = 1, int godina = 2000) {
  26. _dan = new int(dan);
  27. _mjesec = new int(mjesec);
  28. _godina = new int(godina);
  29. }  
  30. ~Datum() {
  31. delete _dan; _dan = nullptr;
  32. delete _mjesec; _mjesec = nullptr;
  33. delete _godina; _godina = nullptr;
  34. }
  35. friend ostream& operator<< (ostream &COUT, const Datum &obj) {
  36. COUT << *obj._dan << " " << *obj._mjesec << " " << *obj._godina;
  37. return COUT;
  38. }
  39. //1. potrebne funkcije
  40.  
  41. };
  42. class Osoba {
  43. protected:
  44. char * _imePrezime;
  45. Datum * _datumRodjenja;
  46. public:
  47. Osoba(char * imePrezime, Datum datum) {
  48. _imePrezime = new char[strlen(imePrezime) + 1];
  49. strcpy_s(_imePrezime, strlen(imePrezime) + 1, imePrezime);
  50. _datumRodjenja = new Datum(datum);
  51. }
  52. Osoba(const Osoba & obj){
  53. _imePrezime = new char[strlen(obj._imePrezime) + 1];
  54. strcpy_s(_imePrezime, strlen(obj._imePrezime) + 1, obj._imePrezime);
  55. _datumRodjenja = new Datum(*obj._datumRodjenja);
  56. }
  57. ~Osoba() { delete[]_imePrezime; delete _datumRodjenja; }
  58. //1. potrebne funkcije
  59. };
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66. class Kupac {
  67. //svaki kupac ima popust koji mu se zaracunava prilikom svake kupovine
  68. //pocetni popust je 0.10%
  69. //svaka kupovina u iznosu 100 - 500KM povecava iznos popusta za 0.15%
  70. //svaka kupovina u iznosu 500 - 1000KM povecava iznos popusta za 0.25%
  71. //svaka kupovina u iznosu vecem od 1000KM povecava iznos popusta za 0.30%
  72. float _odobreniPopust; 
  73. public:
  74. //1. potrebne funkcije
  75.  
  76. };
  77. class Artikal {
  78. string _barCode;
  79. char * _naziv;
  80. float _cijena;
  81. public:
  82. Artikal(char * naziv, float cijena, string barCode) {
  83. int vel = strlen(naziv) + 1;
  84. _naziv = new char[vel];
  85. strcpy_s(_naziv, vel, naziv);
  86. _cijena = cijena;
  87. _barCode = barCode;
  88. }
  89. ~Artikal() { delete[]_naziv; _naziv = nullptr; }
  90. friend ostream& operator<< (ostream &COUT, const Artikal &obj) { COUT << obj._naziv << " " << obj._cijena << " KM"<<endl; return COUT; }
  91. //1. potrebne funkcije
  92.  
  93. };
  94. class Racun {
  95. //format broja racuna: RN6005491
  96. //osigurati automatsko generisanje broja racuna pocevsi od RN0000001
  97. char _brojRacuna[10];
  98. Datum _datumKreiranja;
  99. //prvi argument je Artikal, a drugi kolicina/broj artikala koju je kupac uzeo
  100. Kolekcija<Artikal *, int> * _stavkeRacuna;
  101. Kupac * _kupac;
  102. public:
  103. /*
  104. 1. potrebne (de)konstruktor i druge funkcije
  105. 2. DodajArtikal - dodaje novi artikal u listu artikala zajedno sa njegovom kolicinom. Onemoguciti ponavljanje artikala na nacin da se uvecava samo kolicina ukoliko korisnik vise puta pokusa dodati isti artikal.
  106. 3. operator<< - ispisuje racun u formatu prikazanom na slici(nije obavezno da bude identican, ali je svakako pozeljno).Nakon ispisa svakog racuna, ukoliko su ispunjeni definisani uslovi, kupcu se uvecava popust.
  107. 4. Sortiraj - sortira artikle (rastuci) po kolicini novca kojom ucestvuju u ukupnom iznosu racuna
  108. */
  109. };
  110. void main() {
  111.  
  112. /****************************************************************************
  113. 1. SVE KLASE TREBAJU POSJEDOVATI ADEKVATAN DESTRUKTOR
  114. 2. NAMJERNO IZOSTAVLJANJE KOMPLETNIH I/ILI POJEDINIH DIJELOVA DESTRUKTORA KOJI UZROKUJU RUNTIME ERROR CE BITI OZNACENO KAO "RE"
  115. 3. SPASAVAJTE PROJEKAT KAKO BI SE SPRIJECILO GUBLJENJE URADJENOG ZADATKA
  116. 4. PROGRAMSKI CODE SE TAKODJER NALAZI U FAJLU CODE_.TXT
  117. 5. NAZIV I LISTA PARAMETARA FUNKCIJA MORAJU BITI IDENTIČNI ONIMA KOJI SU KORIŠTENI U TESTNOM CODE-U.
  118. 6. NIJE POTREBNO BACATI IZUZETKE.
  119. ****************************************************************************/
  120. #pragma region TestiranjeDatuma
  121. Datum danas(26, 11, 2015);
  122. Datum sutra(danas);
  123. Datum prekosutra;
  124. prekosutra = danas;
  125. cout << danas << endl << sutra << endl << prekosutra << crt;
  126. #pragma endregion
  127. #pragma region TestiranjeKolekcije
  128. Kolekcija<int, int> kolekcija1;
  129. int brojElemenata = 15;
  130. for (size_t i = 0; i < brojElemenata; i++)
  131. kolekcija1.AddElement(i, i);   
  132. cout << kolekcija1.getElement1(0) << " " << kolekcija1.getElement2(0) << endl;
  133. cout << kolekcija1 << endl;
  134. Kolekcija<int, int> kolekcija2;
  135. kolekcija2 = kolekcija1;
  136. cout << kolekcija2 << crt;
  137. if (kolekcija1.getTrenutno() == kolekcija2.getTrenutno())
  138. cout << "ISTI BROJ ELEMENATA" << endl;
  139. Kolekcija<int, int> kolekcija3(kolekcija2);
  140. cout << kolekcija3 << crt;
  141. #pragma endregion
  142. #pragma region TestiranjeKupca
  143. Kupac jasmin("Jasmin Azemovic", Datum(15, 2, 1980));
  144. Kupac adel("Adel Handzic", Datum(15, 10, 1981));
  145. Kupac jasmin2 = jasmin;
  146. cout << jasmin << endl << jasmin2 << endl;
  147. jasmin = jasmin2;
  148. cout << jasmin << endl << jasmin2 << endl;
  149. #pragma endregion
  150. #pragma region TestiranjeArtikla
  151. Artikal sokCppyNarandza("Cappy narandza", 2.10, "699511236545");
  152. Artikal cokoladaMilkaMilkins("Milka Milkins", 2.55, "622445875463");
  153. Artikal jogurtMeggle("Meggle jogurt", 2.55, "155338774458");
  154.  
  155. cout << sokCppyNarandza << cokoladaMilkaMilkins << jogurtMeggle << endl;
  156. sokCppyNarandza = cokoladaMilkaMilkins;
  157. cout << sokCppyNarandza << endl;
  158. if (sokCppyNarandza == cokoladaMilkaMilkins)
  159. cout << "Artikli su isti" << endl;
  160. #pragma endregion
  161. #pragma region TestiranjeRacuna
  162. /*GenerisiSljedeciBrojRacuna - globalna funkcija koja generise i vraca naredni broj racuna u prethodno definisanom formatu*/
  163. Racun racun1(GenerisiSljedeciBrojRacuna(), danas, &jasmin);
  164.  
  165. racun1.DodajArtikal(cokoladaMilkaMilkins, 15);
  166. racun1.DodajArtikal(sokCppyNarandza, 20);
  167. racun1.DodajArtikal(jogurtMeggle, 20);
  168.  
  169. cout << racun1 << endl;
  170.  
  171. Racun racun2(GenerisiSljedeciBrojRacuna(), sutra, &jasmin);
  172. racun2.DodajArtikal(cokoladaMilkaMilkins, 15);
  173. racun2.DodajArtikal(sokCppyNarandza, 20);
  174. racun2.DodajArtikal(jogurtMeggle, 20);
  175. cout << racun2 << endl;
  176.  
  177. Racun racun3(racun2);
  178. cout << racun3 << endl;
  179. racun3.Sortiraj();
  180.  
  181. #pragma endregion
  182. system("pause");
  183. }
  184. //popust mozete izracunati kao procenat od ukupne sume racuna (pozeljna opcija) ili kao vrijednost u KM-ovima (kao u nastavku)
  185. /*
  186. FITStore::Racun::RN000001
  187. | RB Artikal Cijena Kolicina Ukupno |
  188. | 1. Milka Milkins 2.55 15 38.25 |
  189. | 2. Cappy narandza 2.1 20 42 |
  190. | 3. Meggle jogurt 2.55 20 51 |
  191. | Suma:131.25KM
  192. | Popust : 0.1KM
  193. | Za platiti : 131.15KM
  194. FITStore::Racun::RN000002
  195. | RB Artikal Cijena Kolicina Ukupno |
  196. | 1. Milka Milkins 2.55 15 38.25 |
  197. | 2. Cappy narandza 2.1 20 42 |
  198. | 3. Meggle jogurt 2.55 20 51 |
  199. | Suma:131.25KM
  200. | Popust : 0.25KM
  201. | Za platiti : 131KM
  202. FITStore::Racun::RN000002
  203. | RB Artikal Cijena Kolicina Ukupno |
  204. | 1. Milka Milkins 2.55 15 38.25 |
  205. | 2. Cappy narandza 2.1 20 42 |
  206. | 3. Meggle jogurt 2.55 20 51 |
  207. | Suma:131.25KM
  208. | Popust : 0.4KM
  209. | Za platiti : 130.85KM
  210. */
Add Comment
Please, Sign In to add comment