Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.86 KB | None | 0 0
  1. #include<iostream>
  2. #include<iomanip>
  3. #include<string.h>
  4. #include<fstream>
  5.  
  6. using namespace std;
  7.  
  8. double m;//ukupni bodovi
  9. double um;//bodovi za prolaznost
  10. double max=0;
  11. double min=INT_MAX;
  12. double max2=INT_MIN;
  13. int br=0;
  14. int br2=0;
  15.  
  16.  
  17. void ispis(){
  18. cout.width(85);
  19. cout << "------------------------------------------------------------------------" << endl;
  20. cout.width(25);
  21. cout<< "\t\t\t\tMENU" << endl ;
  22. cout.width(85);
  23. cout<< "------------------------------------------------------------------------" << endl;
  24. cout << " ID\tOPTION" << endl;
  25. cout << " 0)\tUnos studenata "<<endl;
  26. cout << " 1)\tStudent sa maksimalnim brojem bodova" << endl << " 2)\tStudent sa minimalnim brojem bodova" << endl;
  27. cout << " 3)\tStudenti koji su polozili predmet"<<endl<<" 4)\tStudenti koji nisu polozili predmet"<<endl;
  28. cout << " 5)\tSortiranji niz studenata po broju bodova"<<endl<<" 6)\tUnesi nove studente"<<endl<<" 7)\tIspisi podatake o studentu na osnovu unesenog predmeta i imena\n"<<" 8)\tSortirani niz studenata po broju bodova na osnovu unesenog predmeta\n"<<" 9)\tProlaznost[%]"<<endl;
  29. cout << " 10)\ Sacuvaj i izadi";
  30.  
  31. }
  32. void cls(){
  33. system("pause");
  34. system("cls");
  35. ispis();
  36. }
  37. struct prosjek{
  38. double pp,dp;//prva parcijala,druga parcijala
  39. };
  40.  
  41. struct pamtime{
  42. char ime1[25],ime2[25];
  43. };
  44.  
  45. struct student{
  46.  
  47. char predmet[30];
  48. char ip[25];
  49. prosjek unos;
  50. pamtime pi;
  51.  
  52. };
  53.  
  54.  
  55. student unesi_podatke(){
  56. student s;
  57. cout<<"Unesite predmet: ";cin.getline(s.predmet,30);
  58. while(!cin) {
  59. cout << "Pogresan unos!.\nUnesite predmet: ";
  60. cin.clear(); // Oporavak toka
  61. cin.ignore(10000, '\n'); // Brisanje spremnika
  62. cin.getline(s.predmet,30);
  63. }
  64. cout<<"Unesite ime i prezime: ";cin.getline(s.ip,25);
  65. while(!cin) {
  66. cout << "Pogresan unos!.\nUnesite ime i prezime: ";
  67. cin.clear(); // Oporavak toka
  68. cin.ignore(10000, '\n'); // Brisanje spremnika
  69. cin.getline(s.ip,25);
  70. }
  71. cout<<"Unesite bodove sa [ 1.] parcijalnog ispita: ";cin>>s.unos.pp;
  72. while(!cin) {
  73. cout << "Pogresan unos!.\nUnesite bodove sa [ 1.] parcijalnog ispita: ";
  74. cin.clear(); // Oporavak toka
  75. cin.ignore(10000, '\n'); // Brisanje spremnika
  76. cin>>s.unos.pp;
  77. }
  78. cout<<"Unesite bodove sa [ 2.] parcijalnog ispita: ";cin>>s.unos.dp;
  79. while(!cin) {
  80. cout << "Pogresan unos!.\nUnesite bodove sa [ 2.] parcijalnog ispita: ";
  81. cin.clear(); // Oporavak toka
  82. cin.ignore(10000, '\n'); // Brisanje spremnika
  83. cin>>s.unos.dp;
  84. }
  85. return s;
  86. }
  87.  
  88. void ispisi_max(student A[],int a){
  89. int maxI;
  90. for(int i=0;i<a;i++){
  91. if(A[i].unos.pp+A[i].unos.dp>::max){
  92. ::max=A[i].unos.pp+A[i].unos.dp;
  93. strcpy(A->pi.ime1,A[i].ip);
  94. ::br++;
  95. for(int i=1;i<br;i++){
  96. if(i==br){
  97. maxI=i;
  98. strcpy(A->pi.ime1,A[maxI].ip);
  99. }
  100. }
  101.  
  102. }
  103.  
  104. }
  105. cout<<"Student sa maximalnim brojem bodova je "<<A->pi.ime1<<" i ima ukupno ["<<::max<<"] bodova";
  106. }
  107.  
  108.  
  109. void ispisi_min(student A[],int a){
  110. int minI;
  111. for(int i=0;i<a;i++){
  112. if(A[i].unos.pp+A[i].unos.dp<(::min)){
  113. ::min=A[i].unos.pp+A[i].unos.dp;
  114. strcpy(A->pi.ime2,A[i].ip);
  115. ::br2++;
  116. for(int i=1;i<br2;i++){
  117. if(i==br2){
  118. minI=i;
  119. strcpy(A->pi.ime2,A[minI].ip);
  120. }
  121.  
  122. }
  123.  
  124. }
  125. }
  126. cout<<"Student sa minimalnim brojem bodova je "<<A->pi.ime2<<" i ima ukupno ["<<::min<<"] bodova";
  127. }
  128.  
  129.  
  130. void ispisi_polozili(student A[],int a){
  131. int br1=0;
  132. int br2=0;
  133. cout<<"Studenti koji su zadovoljili kriterije su: ";
  134. for(int i=0;i<a;i++){
  135. if(A[i].unos.pp+A[i].unos.dp>um){
  136. br1++;
  137. cout<<i+1<<". "<<A[i].ip<<endl;
  138. }else{
  139. br2++;
  140. if(br2==a){
  141. cout<<endl;cout<<"Niti jedan student nije zadovoljio ocekivani kriteriji."<<endl;
  142. }
  143.  
  144. }
  145. }
  146. }
  147.  
  148. void ispisi_nisupolozili(student A[],int a){
  149. int br1=0;
  150. int br2=0;
  151. cout<<"Studenti koji nisu zadovoljili kriterije su: ";
  152. for(int i=0;i<a;i++){
  153. if(A[i].unos.pp+A[i].unos.dp<um){
  154. br1++;
  155. cout<<i+1<<". "<<A[i].ip<<endl;
  156. }else{
  157. br2++;
  158. if(br2==a){
  159. cout<<endl;cout<<"Svi studenti su zadovoljili ocekivane kriterije. "<<endl;
  160. }
  161. }
  162.  
  163. }
  164. }
  165. void rotiraj(student &x,student &y){
  166. student temp=x;
  167. x=y;
  168. y=temp;
  169. }
  170. void sortiraj(student A[],int a){
  171. for(int i=0;i<a-1;i++){
  172. for(int j=0;j<a-1;j++){
  173. if((A[j].unos.pp+A[j].unos.dp)<(A[j+1].unos.pp+A[j+1].unos.dp)){
  174. rotiraj(A[j],A[j+1]);
  175. }
  176. }
  177. }
  178. }
  179. void ispisi_sortirano(student A[],int a){
  180. sortiraj(A,a);
  181. cout<<"====================================================================\n";
  182. for(int i=0;i<a;i++){
  183. cout<<" "<<i+1<<". "<<A[i].ip<<" - "<<" PREDMET "<<"["<<A[i].predmet<<"]"<<" "<<(A[i].unos.pp+A[i].unos.dp)<<" [BODA]"<<endl;
  184. }
  185. cout<<"====================================================================\n";
  186. }
  187.  
  188. void ispisi_prolaznost(student A[], int a){
  189. float prolaznost;
  190. float br3=0;
  191. for(int i=0;i<a;i++){
  192. if(A[i].unos.pp+A[i].unos.dp>um){
  193. br3++;
  194. }
  195.  
  196. }
  197. prolaznost=(br3/a)*100;
  198. cout <<"Prolaznost iznosi ["<<prolaznost<<"%]";
  199. }
  200.  
  201.  
  202. void ispisi_studenta(student A){
  203. cout<<"==========================================\n";
  204. cout<<" "<<A.ip<<" "<<(A.unos.pp+A.unos.dp)<<" [BODA]"<<endl;
  205. cout<<"==========================================\n";
  206. }
  207.  
  208.  
  209. void pretraga_po_imenu(student *A, char *B, int a){
  210. student uneseni;
  211. for(int i=0;i<a;i++){
  212. if(stricmp((A+i)->ip,B)==0){
  213. uneseni=A[i];
  214. }
  215. }
  216. ispisi_studenta(uneseni);
  217. }
  218.  
  219. void spisak_unesenih_predmeta(student *A,int a){
  220. int j=a;
  221. cout<<" Spisak unesenih predmeta\n";
  222. cout<<"=================================\n";
  223. for(int i=0;i<a;i++){
  224. if(stricmp((A+i)->predmet,(A+j)->predmet)==0){
  225. }else{
  226. cout<<"\t"<<(A+i)->predmet<<endl;
  227. }
  228. j++;
  229. }
  230. cout<<"==================================\n";
  231.  
  232. }
  233. void pretraga_po_predmetu(student *A, char *B, int a){
  234. student predmet;
  235. for(int i=0;i<a;i++){
  236. if(stricmp((A+i)->predmet,B)==0){
  237. predmet=A[i];
  238. }
  239. }
  240. }
  241.  
  242. void pretraga_po_predmetu_isti_predmet(student *A, char *B, int a){
  243. student predmet2;
  244. cout<<"=====================================\n";
  245. for(int i=0;i<a;i++){
  246. if(stricmp((A+i)->predmet, B)==0){
  247. predmet2 = A[i];
  248. cout<<" "<<predmet2.ip<<" "<<(predmet2.unos.pp+predmet2.unos.dp)<<" [BODA]"<<endl;
  249.  
  250. }
  251. }
  252. cout<<"=====================================\n";
  253. }
  254.  
  255. void sacuvaj_trenutno_stanje(student s[], int n){
  256.  
  257. ofstream unosBrojaStudenata("broj_prijava.dat", ios::out|ios::binary);
  258. unosBrojaStudenata.write((char*)&n, sizeof(int));
  259. unosBrojaStudenata.close();
  260.  
  261.  
  262. ofstream unosStudenata("studenti.dat", ios::out|ios::binary);
  263. for(int i(0); i<n; ++i){
  264. unosStudenata.write((char*)&s[i], sizeof s);
  265. }
  266. unosStudenata.close();
  267.  
  268. }
  269.  
  270. int main(){
  271.  
  272. cout<<endl;
  273.  
  274.  
  275. student s[30];
  276. int izbor,n=0;
  277. ifstream brojPrijava("broj_prijava.dat", ios::binary);
  278. brojPrijava.read((char*)(&n), sizeof(int));
  279. brojPrijava.close();
  280.  
  281. ifstream citanje("studenti.dat", ios::binary);
  282. for(int i=0; i<n; ++i){
  283. citanje.read((char*)&s[i], sizeof s);
  284. }
  285. citanje.close();
  286.  
  287. cls();
  288. cout << endl << "---Odaberite opciju: "; cin >> izbor;cout<<endl;
  289.  
  290. while(!cin) {
  291. cout << "Pogresan unos!. Unesite broj: ";
  292. cin.clear(); // Oporavak toka
  293. cin.ignore(10000, '\n'); // Brisanje spremnika
  294. cin >> izbor;
  295. }
  296. cin.ignore(10000,'\n');cin.clear();
  297. system("cls");
  298.  
  299. do{
  300. if(izbor==0){
  301. cout<<"==========================\n";
  302. cout<<"Unesite broj studenata: ";
  303. cin>>n;
  304. while(!cin) {
  305. cout << "Pogresan unos!. Unesite broj studenata: ";
  306. cin.clear(); // Oporavak toka
  307. cin.ignore(10000, '\n'); // Brisanje spremnika
  308. cin >> n;
  309. }
  310. cout<<"==========================\n";
  311. cout<<endl;
  312. cout<<"----------------------------------------------------------------------\n";
  313. cout<<"[UKUPNI BROJ BODOVA MORA BITI VECI OD 55% DA BI STUDENT POLOZIO ISPIT]\n\n";
  314. cout<<"Unesite ukupan broj bodova [ 1.] i [ 2.] parcijalnog ispita: ";
  315. cin>>m;cin.ignore(10000, '\n'); cin.clear();
  316. while(!cin) {
  317. cout << "Pogresan unos!.\nUnesite ukupan broj bodova [ 1.] i [ 2.] parcijalnog ispita: ";
  318. cin.clear(); // Oporavak toka
  319. cin.ignore(10000, '\n'); // Brisanje spremnika
  320. cin >> m;
  321. }
  322. cout<<endl;
  323. um=m/1.8;
  324. cout<<" [UKUPNI BROJ BODOVA MORA BITI VECI OD "<<um<<"]\n";
  325. cout<<"----------------------------------------------------------------------\n";
  326. cout<<endl;
  327. for(int i=0;i<n;i++){
  328. system("cls");
  329. cout<<"Unesite podatke o "<<i+1<<". studentu:\n";
  330. s[i]=unesi_podatke();
  331. cin.ignore(10000,'\n');cin.clear();
  332. cout<<endl;
  333. }
  334. sacuvaj_trenutno_stanje(s,n);
  335. cls();
  336. cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
  337. cin.ignore(10000,'\n');cin.clear();
  338. }
  339. if(izbor==1){
  340. system("cls");
  341. ispisi_max(s,n);
  342. cout<<endl;
  343. cls();
  344. cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
  345. }
  346. if(izbor==2){
  347. system("cls");
  348. ispisi_min(s,n);
  349. cout<<endl;
  350. cls();
  351. cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
  352. }
  353. if(izbor==3){
  354. system("cls");
  355. ispisi_polozili(s,n);
  356. cout<<endl;
  357. cls();
  358. cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
  359. cin.ignore(10000,'\n');cin.clear();
  360. system("cls");
  361. }
  362. if(izbor==4){
  363. ispisi_nisupolozili(s,n);
  364. cout<<endl;
  365. cls();
  366. cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
  367. cin.ignore(10000,'\n');cin.clear();
  368. system("cls");
  369. }
  370. if(izbor==5){
  371. ispisi_sortirano(s,n);
  372. cout<<endl;
  373. cls();
  374. cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
  375. cin.ignore(10000,'\n');cin.clear();
  376. system("cls");
  377. }
  378. if(izbor==6){
  379. cout<<"Unesite podatke o novom studentu:\n";
  380. s[n]=unesi_podatke();
  381. n=n+1;
  382. sacuvaj_trenutno_stanje(s,n);
  383. cout<<endl;
  384. cls();
  385. cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
  386. cin.ignore(10000,'\n');cin.clear();
  387. system("cls");
  388. }
  389.  
  390. if(izbor==7){
  391. system("cls");
  392. char pretraga[25];
  393. char clas[30];
  394. spisak_unesenih_predmeta(s, n);
  395. cout<<"Unesite predmet: ";
  396. cin.getline(clas,30);
  397. pretraga_po_predmetu(s, clas, n);
  398. cout <<"Unesite ime za ispis: ";
  399. cin.getline(pretraga,25);
  400. pretraga_po_imenu(s, pretraga, n);
  401. cout<<endl;
  402. cls();
  403. cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
  404. cin.ignore(10000,'\n');cin.clear();
  405. system("cls");
  406. }
  407. if(izbor==8){
  408. char clas2[30];
  409. system("cls");
  410. spisak_unesenih_predmeta(s,n);
  411. cout<<"Unesite predmet: ";
  412. cin.getline(clas2,30);
  413. sortiraj(s,n);
  414. pretraga_po_predmetu_isti_predmet(s,clas2,n);
  415. cout<<endl;
  416. cls();
  417. cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
  418. cin.ignore(10000,'\n');cin.clear();
  419.  
  420. }
  421. if(izbor==9){
  422. system("cls");
  423. ispisi_prolaznost(s,n);
  424. cout<<endl;
  425. cls();
  426. cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
  427. cin.ignore(10000,'\n');cin.clear();
  428.  
  429. }
  430.  
  431. } while(izbor!=10);
  432.  
  433. sacuvaj_trenutno_stanje(s,n);
  434.  
  435. return 0;
  436. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement