Advertisement
limun11

9. ZapisnikStavke**-Postavka

Jun 19th, 2019
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.76 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. /*
  5. 1. BROJ I VRSTA PARAMETARA MORAJU BITI IDENTICNI KAO U PRIMJERIMA. U SUPROTNOM SE RAD NEÆE BODOVATI
  6. 2. STAVITE KOMENTAR NA DIJELOVE CODE-A KOJE NE BUDETE IMPLEMENTIRALI
  7. 3. KREIRAJTE .DOC FAJL SA VAŠIM BROJEM INDEKSA ( NPR. IB160061.DOC BEZ IMENA I PREZIMENA), TE NA KRAJU ISPITA U NJEGA KOPIRAJTE RJEŠENJA VAŠIH ZADATAKA. NE PREDAVATI .TXT ILI .CPP FAJLOVE
  8. 4. TOKOM IZRADE ISPITA NIJE DOZVOLJENO KORIŠTENJE HELP-A
  9. 5. TOKOM IZRADE ISPITA MOGU BITI POKRENUTA SAMO TRI PROGRAMA: PDF READER (ISPITNI ZADACI), MS VISUAL STUDIO, MS WORD (U KOJI ÆETE KOPIRATI VAŠA RJEŠENJA)
  10. 6. BEZ OBZIRA NA TO DA LI SU ISPITNI ZADACI URAÐENI, SVI STUDENTI KOJI SU PRISTUPILI ISPITU MORAJU PREDATI SVOJ RAD
  11. */
  12. //narednu liniju code-a ignorisite, osim u slucaju da vam bude predstavljala smetnje u radu
  13. #pragma warning(disable:4996)
  14.  
  15. /*
  16. u nastavku je prikazan primjer ispitnog zapisnika (izvještaj o održanom ispitu) sa detaljima/stavkama
  17.  
  18. Datum ispita: 07.09.2017
  19. Predmet: Programiranje II
  20. IZVJESTAJ O ODRZANOM ISPITU
  21. Br indeksa Ime prezime Komisijsko*** Ocjena
  22. 16001 A. Joldic DA 5
  23. 15251 D. Music NE 7 Ponisteno
  24. 16014 E. Babovic DA 8
  25. UKUPNO POLOZILO: 2
  26. PROSJECNA OCJENA: 6.67
  27. *** komisijski ispit: ako student pristupa èetvrti put i dalje (raèunajuæi i poništene rezultate)
  28. */
  29.  
  30. char * crt = "\n-------------------------------------------\n";
  31. struct Datum {
  32. int _dan;
  33. int _mjesec;
  34. int _godina;
  35. void Unos(int d, int m, int g) {
  36. _dan = d;
  37. _mjesec = m;
  38. _godina = g;
  39. }
  40. void Ispis() {
  41. cout << _dan << "." << _mjesec << "." << _godina << " ";
  42. }
  43. };
  44. struct Student {
  45. char _imePrezime[20];
  46. int _brojIndeksa;
  47. int _polozioECTS;
  48.  
  49. void Unos(char* naziv, float cijena) {
  50. strcpy_s(_imePrezime, naziv);
  51. _brojIndeksa = cijena;
  52. _polozioECTS = 0;
  53. }
  54. void DodajECTS(float ects) {
  55. _polozioECTS += ects;
  56. }
  57. void UmanjiECTS(float ects) {
  58. _polozioECTS += ects;
  59. }
  60. void Ispis() {
  61. cout << _imePrezime << ", Indeks: " << _brojIndeksa << ", ECTS: " << _polozioECTS << " " << endl;
  62. }
  63. };
  64.  
  65. struct ZapisnikStavka {
  66. int _ocjena;
  67. Student* _student; //ZapisnikStavka æe pokazivati na objekat tipa student koji se nalazi u instanci tipa Fakultet, pa nije potrebno vršiti nove alokacije
  68. bool _ponisteno;
  69. bool _komisijskoPolaganje;
  70.  
  71. void Unos(Student* proizvod, int ocjena, bool komisijskoPolaganje) {
  72. _ocjena = ocjena;
  73. _student = proizvod;
  74. _komisijskoPolaganje = komisijskoPolaganje;
  75. _ponisteno = false;
  76. }
  77.  
  78. void Ispis() {
  79. cout << _student->_imePrezime << "\t" << _ocjena << "\t" << _student->_brojIndeksa << "\t";
  80. if (_ponisteno)
  81. cout << " Ponisteno";
  82. cout << endl;
  83. }
  84. };
  85. struct IspitniZapisnik {
  86. Datum _datum;
  87. ZapisnikStavka ** _stavke;//svaki put se dodaje po jedna stavka
  88. int _brojStavki;
  89. int _ects;
  90. char _predmet[20];
  91. void Unos(Datum datum, char* predmet, int ects) {
  92. _datum = datum;
  93. _brojStavki = 0;
  94. _stavke = nullptr;
  95. _ects = ects;
  96. strcpy_s(_predmet, predmet);
  97. }
  98. /*Prosjecnu ocjenu izraèunati koristeæi lambda funkciju koja se poziva koristeæi objekat
  99. tipa auto. u prosjek raèunati i poništene rezultate (stavke)*/
  100. float GetProsjecnaOcjena() {
  101. return 0;
  102. }
  103. };
  104. const int Max = 100;
  105.  
  106. /*unutar objekta tipa Fakultet ce se cuvati podaci o svim studentima i ispitnim zapisnicima, a dodaju se pomocu globalnih funkcija*/
  107. struct Fakultet {
  108. //umjesto brojaca koristiti default.ne vrijednosti
  109. Student* Studenti[Max] = { NULL };
  110. IspitniZapisnik* Zapisnici[Max] = { NULL };
  111.  
  112. void Dealociraj() {
  113. for (size_t i = 0; i < Max; i++) {
  114. delete Studenti[i]; Studenti[i] = NULL;
  115. }
  116. for (size_t i = 0; i < Max; i++) {
  117. delete Zapisnici[i]; Zapisnici[i] = NULL;
  118. }
  119. }
  120. };
  121. void main() {
  122. Fakultet fakultet;
  123.  
  124. /*dodaje podatke o novom studentu u fakultet */
  125. //fakultet, imePrezime, broj indeksa
  126. dodaj_student(fakultet, "A. Joldic", 16001);
  127. dodaj_student(fakultet, "D. Music", 15251);
  128. dodaj_student(fakultet, "E. Babovic ", 16014);
  129. dodaj_student(fakultet, "E. Junuz", 16015);
  130. dodaj_student(fakultet, "J. Azemovic", 16014);//ne dodaje studenta jer je broj indeksa zauzet
  131. /*kraira novi zapisnik*/
  132. //fakultet, datum, predmet, ects krediti
  133. kreiraj_zapisnik(fakultet, 6, 9, 2017, "Programiranje 2", 7);
  134.  
  135. /*dodaje stavku na posljednji kreiran zapisnik, a ects studenta uveæa ako je student položio ispit. */
  136.  
  137. if (dodaj_stavku_na_zapisnik(fakultet, 16001, 5))
  138. cout << "Stavka (rezultat) uspjesno dodata!" << endl;
  139.  
  140. /*ako je student vec dodat u zapisnik, onda se vrsi samo modifikacija njegove ocjene*/
  141. if (!dodaj_stavku_na_zapisnik(fakultet, 16001, 6))
  142. cout << "Student vec dodat na zapisnik. Ocjena je ispravljena!" << endl;
  143.  
  144. dodaj_stavku_na_zapisnik(fakultet, 15251, 5);
  145. dodaj_stavku_na_zapisnik(fakultet, 16015, 6);
  146. dodaj_stavku_na_zapisnik(fakultet, 16014, 8);
  147.  
  148. kreiraj_zapisnik(fakultet, 7, 9, 2017, "Raèunarske mreze", 5);
  149. //naredne stavke se dodaju na novi zapisnik
  150. dodaj_stavku_na_zapisnik(fakultet, 16015, 5);
  151. dodaj_stavku_na_zapisnik(fakultet, 16014, 10);
  152.  
  153.  
  154. /*u posljednjem zapisniku stavku za studenta 16001 ponistiti, a studentu umanjiti ects bodove.
  155. funkcija vraca false u slucaju da se student ne nalazi na posljednjem zapisniku*/
  156.  
  157. if (ponisti_stavku_rezultat(fakultet, 16001))
  158. cout << "Stavka (rezultat) uspjesno ponisten!" << endl;
  159.  
  160. if (!ponisti_stavku_rezultat(fakultet, 19001))
  161. cout << "Student nije pronadjen!" << endl;
  162.  
  163. /* funkcija printaj prikazuje posljednji ispitni zapisnik u formatu prikazanom na pocetku zadatka.
  164. * pored prikazivanja, identican sadrzaj ispitnog zapisnika je potrebno je pasiti u tekstualni fajl.
  165. * naziv fajla treba biti Predmet_datum.txt, npr. ProgramiranjeII_2017-09-01.txt. zapisnik se nece
  166. prikazati niti sacuvati u fajl ukoliko ne posjeduje niti jednu stavku ili su sve stavke ponistene*/
  167. if (printaj(fakultet))
  168. cout << "Ispitni zapisnik uspjesno prikazan i spasen u fajl!" << endl;
  169. fakultet.Dealociraj();
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement