Advertisement
Guest User

Untitled

a guest
Apr 24th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3. #include <stdio.h>
  4.  
  5. using namespace std;
  6.  
  7. char * crt = "\n---------------------------\n";
  8. struct Datum {
  9. int dan, mjesec, godina;
  10. };
  11. struct PolozeniPredmet {
  12. char * nazivPredmeta;
  13. int ocjena;
  14. Datum datumPolaganja;
  15. char * napomena;
  16. };
  17. struct Student {
  18. char * imePrezime;
  19. PolozeniPredmet polozeni[40];
  20. int brojPolozenih;
  21. };
  22.  
  23. int PrikaziMenu()
  24. {
  25. int izbor;
  26.  
  27. cout << "1. Dodaj studenta" << endl;
  28. cout << "2. Dodaj polozeni predmet" << endl;
  29. cout << "3. Pretraga" << endl;
  30. cout << "4. Kraj" << endl;
  31.  
  32. do {
  33. cout << "Vas izbor -> ";
  34. cin >> izbor;
  35. } while (izbor < 1 || izbor>4);
  36.  
  37. return izbor;
  38. }
  39.  
  40. void Unesi(char niz[], int velicina) {
  41. char znak = getchar();
  42. if (znak == '\n') znak = getchar();
  43. int i = 0;
  44. while (i < velicina - 1 && znak != '\n') {
  45. niz[i] = znak;
  46. i++;
  47. znak = getchar();
  48. }
  49. niz[i] = '\0';
  50. }
  51.  
  52. void DodajStudenta(Student *& pok)
  53. {
  54. pok = new Student;
  55. cout << "Unesite ime i prezime: ";
  56. char* s = new char[40];
  57. Unesi(s, 40);
  58. pok->imePrezime = s;
  59. pok->brojPolozenih = 0;
  60.  
  61. cout << "Koliko predmeta dodajete: ";
  62. int br_pr; cin >> br_pr;
  63. for (int j = 0; j < br_pr; j++) {
  64. cout << "Naziv predmeta: ";
  65. char *pr = new char[40];
  66. Unesi(pr, 40);
  67. pok->polozeni[pok->brojPolozenih].nazivPredmeta = pr;
  68. cout << "Datum polaganja: ";
  69. int m, d, g;
  70. cin >> d >> m >> g;
  71. pok->polozeni[pok->brojPolozenih].datumPolaganja.dan = d;
  72. pok->polozeni[pok->brojPolozenih].datumPolaganja.mjesec = m;
  73. pok->polozeni[pok->brojPolozenih].datumPolaganja.godina = g;
  74.  
  75.  
  76. cout << "Ocjena: ";
  77. int ocjena; cin >> ocjena;
  78. pok->polozeni[pok->brojPolozenih].ocjena = ocjena;
  79. cout << "Napomena: ";
  80. char * napomena = new char[255];
  81. Unesi(napomena, 255);
  82. pok->polozeni[pok->brojPolozenih].napomena = napomena;
  83. pok->brojPolozenih = pok->brojPolozenih + 1;
  84. }
  85.  
  86. }
  87. void Login(char sifra[])
  88. {
  89. char unesena_sifra[20];
  90. cout << "Unesite sifru: ";
  91. while (1) {
  92.  
  93. Unesi(unesena_sifra, 20);
  94. if (strcmp(unesena_sifra, sifra) == 0) break;
  95. else cout << "Pogresna sifra, unesite ponovo: ";
  96. }
  97. }
  98.  
  99. void Novipredmet(Student * student)
  100. {
  101. int i = student->brojPolozenih;
  102. if (i == 40) cout << "Student " << student->imePrezime << " ima maksimalan broj polozenih predmeta!";
  103. else
  104. {
  105. cout << "Naziv predmeta -> ";
  106. char *pr = new char[40];
  107. Unesi(pr, 40);
  108. student->polozeni[student->brojPolozenih].nazivPredmeta = pr;
  109. cout << "Datum polaganja -> ";
  110. int m, d, g;
  111. cin >> d >> m >> g;
  112. student->polozeni[student->brojPolozenih].datumPolaganja.dan = d;
  113. student->polozeni[student->brojPolozenih].datumPolaganja.mjesec = m;
  114. student->polozeni[student->brojPolozenih].datumPolaganja.godina = g;
  115.  
  116.  
  117. cout << "Ocjena -> ";
  118. int ocjena; cin >> ocjena;
  119. student->polozeni[student->brojPolozenih].ocjena = ocjena;
  120. cout << "Napomena -> ";
  121. char * napomena = new char[255];
  122. Unesi(napomena, 255);
  123. student->polozeni[student->brojPolozenih].napomena = napomena;
  124. student->brojPolozenih = student->brojPolozenih + 1;
  125.  
  126. }
  127.  
  128. }
  129.  
  130. void DodajPolozeniPredmet(Student ** studentiIgodina, int trenutnoStudenata)
  131. {
  132. char * student = new char[50];
  133. cout << "Ime i Prezime -> ";
  134. Unesi(student, 50);
  135.  
  136. for (int i = 0; i < trenutnoStudenata; i++)
  137. if (strstr(studentiIgodina[i]->imePrezime, student))
  138. {
  139. cout << "STUDENT PRONADJEN...." << endl;
  140. Novipredmet(studentiIgodina[i]);
  141. delete[] student;
  142. return;
  143. }
  144. delete[] student;
  145. cout << "STUDENT NIJE PRONADJEN....";
  146.  
  147.  
  148. }
  149.  
  150.  
  151. bool jelizmedju(Datum datumod, Datum datumdo, Datum studenta)
  152. {
  153. if (datumod.godina < studenta.godina && studenta.godina < datumdo.godina)
  154. return true;
  155. else if (datumod.godina == studenta.godina && studenta.godina == datumdo.godina)
  156. {
  157. if (datumod.mjesec < studenta.mjesec && studenta.mjesec < datumdo.mjesec)
  158. return true;
  159. else if (datumod.mjesec == studenta.mjesec && studenta.mjesec == datumdo.mjesec)
  160. {
  161. if (datumod.dan <= studenta.dan && studenta.dan <= datumdo.dan)
  162. return true;
  163. }
  164.  
  165. }
  166. return false;
  167.  
  168. }
  169.  
  170.  
  171.  
  172. double prosjek(Student *pok)
  173. {
  174. double suma = 0;
  175. for (int i = 0; i<pok->brojPolozenih; i++)
  176. {
  177. suma += pok->polozeni[i].ocjena;
  178. }
  179. return suma / pok->brojPolozenih;
  180. }
  181.  
  182.  
  183. void IspisiPretragu(Student* pok, int i, int j)
  184. {
  185.  
  186. cout << i << ". " << pok->imePrezime << " -> " << pok->polozeni[j].nazivPredmeta << " Prosjek studenta: " << prosjek(pok) << endl;
  187.  
  188.  
  189. }
  190.  
  191. void IspisiPretragu2(Student * pok, int i, int j)
  192. {
  193. cout << i << ". " << pok->imePrezime << " -> " << pok->polozeni[j].nazivPredmeta << endl;
  194. }
  195. void Pretraga(Student ** studenti, int trenutnoStudenata)
  196. {
  197. cout << "Pretraga: 1 = Datumu polaganja, 2 = Napomena: ";
  198. int izbor;
  199. do {
  200. cin >> izbor;
  201. } while (izbor != 1 && izbor != 2);
  202.  
  203. if (izbor == 1)
  204. {
  205. Datum OD, DO;
  206.  
  207. cout << "Unesite datum OD: ";
  208. cin >> OD.dan >> OD.mjesec >> OD.godina;
  209.  
  210. cout << "Unesite datum DO: ";
  211. cin >> DO.dan >> DO.mjesec >> DO.godina;
  212. int k = 1;
  213.  
  214. cout << "U periodu od" << OD.dan << "." << OD.mjesec << "." << OD.godina << " do " << DO.dan << "." << DO.mjesec << "." << DO.godina << " ispite su polozili sljedeci studenti" << endl;
  215.  
  216. for (int i = 0; i < trenutnoStudenata; i++)
  217.  
  218. {
  219.  
  220. for (int j = 0; j < studenti[i]->brojPolozenih; j++)
  221.  
  222. {
  223. if (jelizmedju(OD, DO, studenti[i]->polozeni[j].datumPolaganja))
  224. {
  225. IspisiPretragu(studenti[i], k, j);
  226. k++;
  227. }
  228. }
  229. }
  230. }
  231. else if (izbor == 2) {
  232. cout << "Unesite tekst: ";
  233. char *s = new char[255];
  234. Unesi(s, 255);
  235.  
  236. int k = 1;
  237. cout << "Trazeni sadrzaj" << s << "u napomeni posjeduju sljedeci studenti : \n";
  238. for (int i = 0; i < trenutnoStudenata; i++)
  239.  
  240. {
  241.  
  242. for (int j = 0; j < studenti[i]->brojPolozenih; j++)
  243.  
  244. {
  245. if (strstr(studenti[i]->polozeni[j].napomena, s))
  246. {
  247. IspisiPretragu2(studenti[i], k, j);
  248. k++;
  249. }
  250. }
  251. }
  252. delete[] s;
  253. }
  254. }
  255.  
  256. void Dealociraj(Student ** studentiIgodina, int trenutnoStudenata)
  257. {
  258. for (int i = 0; i < trenutnoStudenata; i++)
  259. {
  260. for (int j = 0; j < studentiIgodina[i]->brojPolozenih; j++)
  261. {
  262. delete[] studentiIgodina[i]->polozeni[j].nazivPredmeta;
  263. delete[] studentiIgodina[i]->polozeni[j].napomena;
  264. }
  265. delete[] studentiIgodina[i]->imePrezime;
  266. delete studentiIgodina[i];
  267. }
  268.  
  269. }
  270.  
  271.  
  272.  
  273. int main() {
  274. const int maxStudenata = 6;
  275. int trenutnoStudenata = 0, izbor = 0;
  276. Student * studentiIgodina[maxStudenata];
  277. char validPass[] = "ispitPRII2017";
  278. /*VRSITI VALIDACIJU KORISNIKOVIH UNOSA TE GA ONEMOGUCITI DA UNOSI VRIJEDNOSTI KOJE NISU VALIDNE*/
  279. do {
  280. /*
  281. za pristup aplikaciji zahtijevati logiranje,
  282. prilikom unosa password maskirati koristeći crticu (-)
  283. */
  284. Login(validPass);
  285.  
  286. izbor = PrikaziMenu();
  287. if (izbor == 1) {
  288. DodajStudenta(studentiIgodina[trenutnoStudenata]);
  289. /*
  290. Ime i prezime -> Denis Mušić
  291. Koliko predmeta dodajete -> 1
  292. Naziv predmeta -> Uvod u informacijske tehnologije
  293. Datum polaganja -> 11 4 2017
  294. Ocjena -> 6
  295. Napomena -> seminarski rad nije sadrzavao sve zahtijevane funkcionalnosti
  296. */
  297. trenutnoStudenata++;
  298. }
  299. else if (izbor == 2) {
  300. DodajPolozeniPredmet(studentiIgodina, trenutnoStudenata);
  301. /*
  302. Ime i prezime -> Denis Music
  303. STUDENT PRONADJEN....
  304. Naziv predmeta -> Racunarske mreze
  305. Datum polaganja -> 10 4 2017
  306. Ocjena -> 7
  307. Napomena -> studentu dodijeljen seminarski rad na temu OSI modela
  308. */
  309. }
  310. else if (izbor == 3) {
  311. Pretraga(studentiIgodina, trenutnoStudenata);
  312. /*
  313. Pratraga (1. Datumu polaganja, 2. Napomeni) -> 1
  314. Unesite datum OD -> 12 1 2017
  315. Unesite datum DO -> 14 4 2017
  316. U periodu od 12.1.2017 do 14.4.2017 ispite su polozili sljedeci studenti:
  317. 1. Denis Music -> Racunarske mreze (7) Prosjek studenta: 6.5
  318. 2. Denis Music -> Uvod u informacijske tehnologije (6) Prosjek studenta: 6.5
  319. 3. Adel Handzic -> Baze podataka (9) Prosjek studenta: 8.7
  320.  
  321. ----------UKOLIKO SE ODABERE OPCIJA 2---------------
  322. Pratraga (1. Datumu polaganja, 2. Napomeni) -> 2
  323. Unesite tekst -> nije sadrzavao
  324. Trazeni sadrzaj 'nije sadrzavao' u napomeni posjeduju sljedeci studenti:
  325. 1. Denis Music, predmet Uvod u informacijske tehnologije
  326. 2. ....
  327. */
  328. }
  329.  
  330. } while (izbor != 4);
  331.  
  332.  
  333. /*oslobađa zauzetu memoriju*/
  334. Dealociraj(studentiIgodina, trenutnoStudenata);
  335.  
  336.  
  337. return 0;
  338.  
  339. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement