Evidencija zivotinja.cpp - Glavni program


/ Published in: C++
Save to your folder(s)

Program koji evidentira zivotinje u trgovini kucnim ljubimcima.


Copy this code and paste it in your HTML
  1. #include <iostream>
  2. #include "lista_polje.h"
  3. //#include "lista_pokazivac.h"
  4. using namespace std;
  5.  
  6. int sifra=10000;
  7.  
  8. int Dodavanje_zapisa_o_zivotinji(lista *L) {
  9. Zivotinja x;
  10. int rezultat;
  11.  
  12. system("cls");
  13. cout << " Sifra zivotinje: "<< sifra << endl;
  14. x.sifra=sifra++;
  15. cout << " Unesite vrstu zivotinje: ";
  16. cin.ignore();
  17. cin.getline(x.vrsta, 30);
  18. cout << " Unesite naziv zivotinje: ";
  19. cin.getline(x.naziv, 30);
  20. cout << " Unesite cijenu zivotinje (kn): ";
  21. cin >> x.cijena;
  22. cout << " Unesite datum kada je zivotinja dostavljena (dan, mjesec, godina): \n";
  23. cout << "Unesite dan: ";
  24. cin >> x.datum_dostave.dan;
  25. if(x.datum_dostave.dan<1||x.datum_dostave.dan>31)
  26. return 0;
  27. cout << "Unesite mjesec: ";
  28. cin >> x.datum_dostave.mjesec;
  29. if(x.datum_dostave.mjesec<1||x.datum_dostave.mjesec>12)
  30. return 0;
  31. cout<< "Unesite godinu: ";
  32. cin >> x.datum_dostave.godina;
  33. if(x.datum_dostave.godina<2000)
  34. return 0;
  35. rezultat=InsertL(x, EndL(L), L);
  36. if(rezultat) return 1;
  37. else return 0;
  38. }
  39.  
  40. void Ispis_silazno(lista *L) {
  41. system("cls");
  42. element tekuci=PreviousL(EndL(L), L);
  43. if(FirstL(L)==EndL(L)) {
  44. system("pause");
  45. return;
  46. }
  47. while(1) {
  48. Zivotinja x=RetreiveL(tekuci, L);
  49. cout << "====================================\n";
  50. cout << " Sifra zivotinje: "<< x.sifra<< endl;
  51. cout << " Vrsta zivotinje: "<< x.vrsta<< endl;
  52. cout << " Naziv zivotinje: "<< x.naziv<< endl;
  53. cout << " Cijena zivotinje: "<< x.cijena<< endl;
  54. cout << " Datum dostave zivotinje: "<< x.datum_dostave.dan<< "/"<< x.datum_dostave.mjesec<< "/"<< x.datum_dostave.godina<< " "<< endl;
  55. cout << "====================================\n";
  56. if(tekuci==FirstL(L)) break;
  57. tekuci=PreviousL(tekuci, L);
  58. }
  59. system("pause");
  60. }
  61.  
  62. void Ispis_nakon_23_rujna_2012(int dan, int mjesec, int godina, lista *L) {
  63. element tekuci=FirstL(L);
  64. system("cls");
  65. if(FirstL(L)==EndL(L)) {
  66. system("pause");
  67. return;
  68. }
  69. struct {
  70. int dan, mjesec, godina;
  71. }dat_dost;
  72. while(1) {
  73. Zivotinja x=RetreiveL(tekuci, L);
  74. dat_dost.dan=x.datum_dostave.dan;
  75. dat_dost.mjesec=x.datum_dostave.mjesec;
  76. dat_dost.godina=x.datum_dostave.godina;
  77. if((dat_dost.godina>godina)||((dat_dost.godina==godina)&&(dat_dost.mjesec>mjesec))||((dat_dost.godina==godina)&&(dat_dost.mjesec==mjesec))&&(dat_dost.dan>dan)) {
  78. cout << "===================================\n";
  79. cout << " Sifra zivotinje: "<< x.sifra<< endl;
  80. cout << " Vrsta zivotinje: "<< x.vrsta<< endl;
  81. cout << " Naziv zivotinje: "<< x.naziv<< endl;
  82. cout << " Cijena zivotinje: "<< x.cijena<< endl;
  83. cout << " Datum dostave zivotinje: "<<x.datum_dostave.dan<< "/"<< x.datum_dostave.mjesec<< "/"<< x.datum_dostave.godina<< " "<< endl;
  84. cout << "===================================\n";
  85. }
  86. if(tekuci==PreviousL(EndL(L), L)) break;
  87. tekuci=NextL(tekuci, L);
  88. }
  89. system("pause");
  90. }
  91.  
  92. int Brisanje_pojedinacnih_naziva(lista *L) {
  93. system("cls");
  94. char naziv[30];
  95. cout << " Unesite naziv zivotinje cije podatke zelite izbrisati: ";
  96. cin.ignore();
  97. cin.getline(naziv, 30);
  98. if(FirstL(L)==EndL(L)) {
  99. system("pause");
  100. return 0;
  101. }
  102. element tekuci=FirstL(L);
  103. bool poznat=false;
  104. while(tekuci!=EndL(L)) {
  105. Zivotinja x=RetreiveL(tekuci, L);
  106. if(strcmp(x.naziv, naziv)==0) {
  107. poznat=true;
  108. break;
  109. }
  110. tekuci=NextL(tekuci, L);
  111. }
  112. if(poznat) {
  113. DeleteL(tekuci, L);
  114. }
  115. else return 0;
  116. return 1;
  117. }
  118.  
  119. int Brisanje_svih_zivotinja_odabrane_vrste(lista *L) {
  120. system("cls");
  121. char vrsta[30];
  122. cout << "Unesite vrstu zivotinje cije podate zelite izbrisati: ";
  123. cin.ignore();
  124. cin.getline(vrsta, 30);
  125. element tekuci=FirstL(L);
  126. bool poznat=false;
  127. while(tekuci!=EndL(L)) {
  128. Zivotinja x=RetreiveL(tekuci, L);
  129. if(strcmp(x.vrsta, vrsta)==0) {
  130. poznat=true;
  131. DeleteL(tekuci, L);
  132. }
  133. tekuci=NextL(tekuci, L);
  134. }
  135. if(!poznat)
  136. return 0;
  137. return 1;
  138. }
  139.  
  140. void spajanje(Zivotinja *polje,int donji,int sredina,int gornji)
  141. {
  142. int h,i,j,k;
  143. h=donji;
  144. i=donji;
  145. j=sredina+1;
  146.  
  147. Zivotinja *pom = new Zivotinja[gornji-donji+1];
  148.  
  149. while((h<=sredina)&&(j<=gornji)) {
  150. if(polje[h].cijena>polje[j].cijena || ((polje[h].cijena==polje[j].cijena)&&(strcmp(polje[h].naziv, polje[j].naziv)>0)))
  151. {
  152. pom[i]=polje[h];
  153. h++;
  154. }
  155. else {
  156. pom[i]=polje[j];
  157. j++;
  158. }
  159. i++;
  160. }
  161. if(h>sredina) {
  162. for(k=j; k<=gornji; k++)
  163. {
  164. pom[i]=polje[k];
  165. i++;
  166. }
  167. }
  168. else {
  169. for(k=h; k<=sredina; k++)
  170. {
  171. pom[i]=polje[k];
  172. i++;
  173. }
  174. }
  175. for(k=donji; k<=gornji; k++) polje[k]=pom[k];
  176. delete [] pom;
  177. }
  178.  
  179. void Mergesort(Zivotinja *polje, int donji,int gornji ) {
  180. int sredina;
  181. if(donji<gornji)
  182. {
  183. sredina=(donji+gornji)/2;
  184. Mergesort(polje,donji,sredina);
  185. Mergesort(polje,sredina+1,gornji);
  186. spajanje(polje,donji,sredina,gornji);
  187. }
  188. }
  189.  
  190. void Sortiranje_cijena_naziv(lista *L){
  191. int broj=0;
  192. element tekuci = FirstL(L);
  193. while(tekuci != EndL(L)){
  194. broj++;
  195. tekuci = NextL(tekuci,L);
  196. }
  197. Zivotinja* polje = new Zivotinja[broj];
  198.  
  199. tekuci = FirstL(L);
  200. int i = 0;
  201. while(tekuci!=EndL(L)){
  202. polje[i] = RetreiveL(tekuci, L);
  203. tekuci = NextL(tekuci,L);
  204. i++;
  205. }
  206. Mergesort(polje,0,broj-1);
  207. DeleteAllL(L);
  208. L=NULL;
  209. L=InitL(L);
  210. for( i = 0; i < broj; i++){
  211. InsertL(polje[i],EndL(L),L);
  212. Zivotinja x=polje[i];
  213. cout << "============================\n";
  214. cout << " Sifra zivotinje: "<< x.sifra<< endl;
  215. cout << " Vrsta zivotinje: "<< x.vrsta<< endl;
  216. cout << " Naziv zivotinje: "<< x.naziv<< endl;
  217. cout << "Cijena zivotinje: "<< x.cijena<< endl;
  218. cout << "Datum dostave zivotinje: "<< x.datum_dostave.dan<<"/"<<x.datum_dostave.mjesec << "/"<<x.datum_dostave.godina<<" "<< endl;
  219. cout <<"=============================\n";
  220. }
  221. system("pause");
  222. }
  223.  
  224. int main() {
  225. lista *L=NULL;
  226. L=InitL(L);
  227. int izbor=0;
  228. do {
  229. system("cls");
  230. cout << "===========================================================\n";
  231. cout << "\n IZBORNIK S MOGUCNOSTIMA \n";
  232. cout << "===========================================================\n";
  233. cout << " 1. Dodavanje zapisa o zivotinji\n";
  234. cout << " 2. Ispis liste (silazno prema sifri zivotinje)\n";
  235. cout << " 3. Ispis zivotinja dostavljenih nakon 23. rujna 2012.\n";
  236. cout << " 4. Brisanje pojedinacnih unosa (prema nazivu zivotinje)\n";
  237. cout << " 5. Brisanje svih zivotinja odabrane vrste\n";
  238. cout << " 6. Sortiranje liste prema cijeni i nazivu zivotinje\n";
  239. cout << " 7. Izlaz iz programa\n";
  240. cout << "\n\n Vas izbor je: \n";
  241. cin >> izbor;
  242. switch(izbor) {
  243. case 1: Dodavanje_zapisa_o_zivotinji(L);
  244. break;
  245. case 2: Ispis_silazno(L);
  246. break;
  247. case 3: Ispis_nakon_23_rujna_2012(23, 9, 2012, L);
  248. break;
  249. case 4: Brisanje_pojedinacnih_naziva(L);
  250. break;
  251. case 5: Brisanje_svih_zivotinja_odabrane_vrste(L);
  252. break;
  253. case 6: Sortiranje_cijena_naziv(L);
  254. break;
  255. case 7:
  256. break;
  257. }
  258. } while(izbor!=7);
  259.  
  260. DeleteAllL(L);
  261. return 0;
  262. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.