asmodeus94

strukturaDziennik

Apr 9th, 2013
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 25.83 KB | None | 0 0
  1. /*Stwórz bazę danych „Dziennik”
  2. Dane w bazie:
  3. - od 1 do 10 uczniów (ilość_uczniów(int), nr ewidencyjny (int), klasa (string), imie (string), nazwisko (string)),
  4. -  każdy uczeń ma posiadać: oceny za 1 semestr, oceny za 2 semestr, średnia ocen z 1 i 2 semestru
  5. - w każdym semestrze jest 5 przedmiotów,
  6. - w każdym przedmiocie jest od 0 do 10 ocen(int) , ilość_ocen(int), oraz średnia (float),
  7.  
  8. Operacje na bazie danych
  9. Wyświetlanie:
  10. - wyświetl wszystkich uczniów,
  11. - wyświetl wybranego ucznia, (tylko z istniejących),
  12. - wyświetl oceny i średnie wszystkich uczniów,
  13. - wyświetl oceny i średnią wybranego ucznia,
  14. - wyświetl oceny i średnie z wybranego przedmiotu (wszyscy uczniowie),
  15.  
  16. Zmiany
  17. - zmień dane wybranego ucznia(tylko z istniejących),
  18. - zmień wybraną ocenę z wybranego przedmiotu (tylko istniejącą),
  19.  
  20. Dodawanie
  21. - dodaj ucznia,
  22. - dodaj ocenę z wybranego przedmiotu,
  23.  
  24. Usuwanie
  25. - usuń ucznia,
  26. - usuń ocenę,
  27.  
  28. Na co uważać:
  29. - rozrysuj sobie układ struktur i tablic, robienie wszystkiego na bieżąco może skutkować tym, że w pewnym momencie lepiej będzie skasować wszystko i robić to od zera, niż bawić się w zmiany,
  30. - postaraj się zrobić program IO, będę próbował zmienić dane nieistniejącego ucznia, zmienić siódmą ocenę z polskiego dla ucznia, który ma sześć ocen z polskiego itd. ( znacie mnie J ),
  31. - po zmianie oceny musi też zmienić się średnia,
  32. - wyświetlanie danych ma za zadanie przekazać użytkownikowi informacje – zrób to w przejrzysty sposób,
  33. - przygotuj sobie procedurę testową, która wypełnia dane paru uczniów – nie będziesz tracił czasu na wprowadzanie przykładowych danych, za każdym uruchomieniem programu
  34. - staraj się zamykać ukończone partie kodu w procedurach i funkcjach – łatwiej będzie szukać późniejszych błędów w kodzie.
  35.  
  36. Bonus:
  37. - wyświetl uczniów wg średniej – rosnąco lub malejąco
  38. - wyświetl przedmioty wg średniej – od przedmiotu z najlepszą średnią*/
  39. #include <windows.h>
  40. #include <sstream>
  41. #include <conio.h>
  42. #include <cstdlib>
  43. #include <iostream>
  44. #include <cstdlib>
  45. #include <ctime>
  46. using namespace std;
  47. HANDLE g_hConsol = GetStdHandle(STD_OUTPUT_HANDLE);
  48. void gotoxy(const int x, const int y){
  49.         COORD coord = {x, y};
  50.         SetConsoleCursorPosition(g_hConsol, coord);
  51. }
  52. struct sm12isr{
  53.        int sem1[10],sem2[10];
  54.        float srS1,srS2,srZJPrzed;
  55. };
  56. struct oceny{
  57.         sm12isr przedmioty[5];    
  58.         float srWszS1,srWszS2,srWsz;
  59. };
  60. struct dziennik{
  61.        oceny zb_ocen;
  62.        int nr_ew;
  63.        string klasa,imie,nazwisko;      
  64. };
  65. // ####################################
  66. const int pojD=10;
  67. dziennik tab[pojD],czyscTab;
  68. // ####################################
  69. void czyscB(){
  70.      cin.clear();
  71.      cin.sync();
  72.      cin.ignore();
  73. }
  74. // UPIEKSZACZ {
  75. void naglowek(byte ktory){
  76. switch(ktory){
  77. case 1:{
  78.         gotoxy(1,0);cout<<"Nr_ewid.";
  79.         gotoxy(11,0);cout<<"Imie";
  80.         gotoxy(24,0);cout<<"Nazwisko";
  81.         gotoxy(43,0);cout<<"klasa";      
  82.         ;break;}
  83. case 2:{
  84.         gotoxy(1,0);cout<<"LP";
  85.         gotoxy(10,0);cout<<"Nr_ewid.";
  86.         gotoxy(21,0);cout<<"Imie";
  87.         gotoxy(34,0);cout<<"Nazwisko";
  88.         gotoxy(53,0);cout<<"klasa";        
  89.         break;}
  90. case 3:{
  91.         gotoxy(0,0);cout<<"LP";
  92.         gotoxy(3,0);cout<<"Nazwisko";
  93.         gotoxy(16,0);cout<<"Matematyka";
  94.         gotoxy(29,0);cout<<"Fizyka";
  95.         gotoxy(42,0);cout<<"MePr";
  96.         gotoxy(55,0);cout<<"Polski";
  97.         gotoxy(68,0);cout<<"SO";
  98.         // 2. linia
  99.         gotoxy(16,1);cout<<"sem1|sem2|k";
  100.         gotoxy(29,1);cout<<"sem1|sem2|k";
  101.         gotoxy(42,1);cout<<"sem1|sem2|k";
  102.         gotoxy(55,1);cout<<"sem1|sem2|k";
  103.         gotoxy(68,1);cout<<"sem1|sem2|k";
  104.         break;}
  105. case 4:{
  106.         gotoxy(1,0);cout<<"LP";
  107.         gotoxy(4,0);cout<<"Przedmiot";
  108.         gotoxy(15,0);cout<<"Srednia";      
  109.         break;}
  110. case 5:{
  111.         gotoxy(0,0);cout<<"Matematyka";
  112.         gotoxy(15,0);cout<<"Fizyka";
  113.         gotoxy(30,0);cout<<"MePr";
  114.         gotoxy(45,0);cout<<"Polski";
  115.         gotoxy(60,0);cout<<"SO";
  116.         // 2. linia
  117.         gotoxy(0,1);cout<<"sem1|sem2";
  118.         gotoxy(15,1);cout<<"sem1|sem2";
  119.         gotoxy(30,1);cout<<"sem1|sem2";
  120.         gotoxy(45,1);cout<<"sem1|sem2";
  121.         gotoxy(60,1);cout<<"sem1|sem2";
  122.         break;}
  123. case 6:{
  124.         gotoxy(0,0);cout<<"Matematyka";
  125.         gotoxy(15,0);cout<<"Fizyka";
  126.         gotoxy(30,0);cout<<"MePr";
  127.         gotoxy(45,0);cout<<"Polski";
  128.         gotoxy(60,0);cout<<"SO";
  129.         // 2. linia
  130.         gotoxy(0,1);cout<<"sem1|sem2|k";
  131.         gotoxy(15,1);cout<<"sem1|sem2|k";
  132.         gotoxy(30,1);cout<<"sem1|sem2|k";
  133.         gotoxy(45,1);cout<<"sem1|sem2|k";
  134.         gotoxy(60,1);cout<<"sem1|sem2|k";
  135.         // spod
  136.         gotoxy(0,4);cout<<"--------------";
  137.         gotoxy(0,5);cout<<"Srednia";
  138.         gotoxy(15,4);cout<<"--------------";
  139.         gotoxy(15,5);cout<<"Srednia";
  140.         gotoxy(30,4);cout<<"--------------";
  141.         gotoxy(30,5);cout<<"Srednia";
  142.         gotoxy(45,4);cout<<"--------------";
  143.         gotoxy(45,5);cout<<"Srednia";
  144.         gotoxy(60,4);cout<<"--------------";
  145.         gotoxy(60,5);cout<<"Srednia";
  146.         gotoxy(0,8);cout<<"--------------";
  147.         gotoxy(0,9);cout<<"Ocena";
  148.         gotoxy(15,8);cout<<"--------------";
  149.         gotoxy(15,9);cout<<"Ocena";
  150.         gotoxy(30,8);cout<<"--------------";
  151.         gotoxy(30,9);cout<<"Ocena";
  152.         gotoxy(45,8);cout<<"--------------";
  153.         gotoxy(45,9);cout<<"Ocena";
  154.         gotoxy(60,8);cout<<"--------------";
  155.         gotoxy(60,9);cout<<"Ocena";
  156.         break;}
  157. case 7:{
  158.         gotoxy(1,0);cout<<"Nr_ewid.";
  159.         gotoxy(11,0);cout<<"Imie";
  160.         gotoxy(24,0);cout<<"Nazwisko";
  161.         gotoxy(40,0);cout<<"Oceny (semestr 1)";
  162.         // nizej
  163.         gotoxy(1,12);cout<<"Nr_ewid.";
  164.         gotoxy(11,12);cout<<"Imie";
  165.         gotoxy(24,12);cout<<"Nazwisko";
  166.         gotoxy(40,12);cout<<"Oceny (semestr 2)";
  167.         break;}
  168. case 8:{
  169.         gotoxy(1,1);cout<<"Nr_ewid.";
  170.         gotoxy(11,1);cout<<"Imie";
  171.         gotoxy(24,1);cout<<"Nazwisko";
  172.         gotoxy(43,0);cout<<"Srednia";
  173.         gotoxy(64,0);cout<<"Ocena";
  174.         // 2 linia
  175.         gotoxy(40,1);cout<<"Sem1|Sem2|Kon";
  176.         gotoxy(60,1);cout<<"Sem1|Sem2|Kon";
  177.         break;}
  178. case 9:{
  179.         gotoxy(1,0);cout<<"Nr_ewid.";
  180.         gotoxy(11,0);cout<<"Imie";
  181.         gotoxy(24,0);cout<<"Nazwisko";
  182.         gotoxy(43,0);cout<<"Srednia";
  183.         break;}
  184. }
  185. }
  186. // UPIEKSZACZ }
  187. // ***************************************************************************
  188. // PROCEDURY/FUNKCJE {
  189. int sprawdzIleUcz(){ // licz ile wklepanych uczniow
  190. int count=0;
  191.     for(int i=0;i<10;i++){
  192.         if (tab[i].nazwisko.length()>0) count++;
  193.     }
  194. return count;
  195. }
  196. void obliczSr(){     // licz srednie wszystkich uczniow, z wszystkich przedmiotow, z dwoch semestrow
  197. int j,k,sO1,sO2,ilO1,ilO2;
  198. float srZPrzedmiotowS1,srZPrzedmiotowS2;
  199. for(int i=0;i<sprawdzIleUcz();i++){
  200. srZPrzedmiotowS1=0;srZPrzedmiotowS2=0;
  201.     for(j=0;j<5;j++){
  202.     ilO1=0;ilO2=0;sO1=0;sO2=0;
  203.         for(k=0;k<10;k++){
  204.             if (tab[i].zb_ocen.przedmioty[j].sem1[k]!=0){ilO1++;sO1+=tab[i].zb_ocen.przedmioty[j].sem1[k];}
  205.             if (tab[i].zb_ocen.przedmioty[j].sem2[k]!=0){ilO2++;sO2+=tab[i].zb_ocen.przedmioty[j].sem2[k];}
  206.         }
  207.         tab[i].zb_ocen.przedmioty[j].srS1=0;
  208.         tab[i].zb_ocen.przedmioty[j].srS2=0;
  209.         if(ilO1==0) ilO1=1;
  210.         if(ilO2==0) ilO2=1;
  211.         tab[i].zb_ocen.przedmioty[j].srS1=float(sO1)/float(ilO1);
  212.         tab[i].zb_ocen.przedmioty[j].srS2=float(sO2)/float(ilO2);
  213.         tab[i].zb_ocen.przedmioty[j].srZJPrzed=(tab[i].zb_ocen.przedmioty[j].srS1+tab[i].zb_ocen.przedmioty[j].srS2)/2;
  214.         srZPrzedmiotowS1+=tab[i].zb_ocen.przedmioty[j].srS1;
  215.         srZPrzedmiotowS2+=tab[i].zb_ocen.przedmioty[j].srS2;
  216.     }
  217.     tab[i].zb_ocen.srWszS1=srZPrzedmiotowS1/5;
  218.     tab[i].zb_ocen.srWszS2=srZPrzedmiotowS2/5;
  219.     tab[i].zb_ocen.srWsz=(tab[i].zb_ocen.srWszS1+tab[i].zb_ocen.srWszS2)/2;
  220. }  
  221. }
  222. void wysWszUczn(byte lp){ // (1)
  223. int modyf;
  224.      for(int i=0;i<sprawdzIleUcz();i++){
  225.         if (lp==1){gotoxy(1,i+1);cout<<i+1<<".";modyf=10;} else modyf=1;
  226.         gotoxy(modyf,i+1);cout<<tab[i].nr_ew;
  227.         gotoxy(11+modyf,i+1);cout<<tab[i].imie;
  228.         gotoxy(24+modyf,i+1);cout<<tab[i].nazwisko;
  229.         gotoxy(43+modyf,i+1);cout<<tab[i].klasa;
  230.      }
  231. if (lp==0) czyscB();
  232. }
  233. void wysJUcz(){           // (2)
  234. int lP,ileOs=sprawdzIleUcz();
  235. wysWszUczn(1);
  236. cout<<"\nKogo chcesz zobaczyc?\nPodaj liczbe porzadkowa (0 - anuluj): ";do{cin>>lP;}while((lP<0)||(lP>ileOs));system("cls");
  237. if (lP!=0){naglowek(1);
  238. gotoxy(1,1);cout<<tab[lP-1].nr_ew;
  239. gotoxy(11,1);cout<<tab[lP-1].imie;
  240. gotoxy(24,1);cout<<tab[lP-1].nazwisko;
  241. gotoxy(43,1);cout<<tab[lP-1].klasa;
  242. }czyscB();
  243. }
  244. int zaokraglOc(float nieZo){ // zaokraglanie ocen
  245. int zaok;
  246. if (nieZo>=1) zaok=1;
  247. if (nieZo>1.75) zaok=2;
  248. if (nieZo>2.75) zaok=3;
  249. if (nieZo>3.75) zaok=4;
  250. if (nieZo>4.75) zaok=5;
  251. if (nieZo>5.75) zaok=6;
  252. return zaok;
  253. }
  254. void wysWszOcUczn(){      // (3)
  255. int j,k,modyf,dlaS1,dlaS2,dlaK;
  256. obliczSr();
  257. for(int i=0;i<sprawdzIleUcz();i++){
  258.     modyf=16;
  259.     gotoxy(0,i+2);cout<<i+1<<".";
  260.     gotoxy(3,i+2);cout<<tab[i].nazwisko;
  261.     for(j=0;j<5;j++){
  262.         dlaS1=zaokraglOc(tab[i].zb_ocen.przedmioty[j].srS1);
  263.         dlaS2=zaokraglOc(tab[i].zb_ocen.przedmioty[j].srS2);
  264.         dlaK=zaokraglOc(tab[i].zb_ocen.przedmioty[j].srZJPrzed);
  265.         gotoxy(modyf,i+2);cout<<dlaS1;
  266.         gotoxy(modyf+5,i+2);cout<<dlaS2;
  267.         gotoxy(modyf+10,i+2);cout<<dlaK;
  268.         modyf+=13;
  269.     }
  270. gotoxy(37,18);cout<<"Oceny";   
  271.     //gotoxy(1,24);cout<<tab[0].zb_ocen.przedmioty[0].srS1;
  272. }  
  273. gotoxy(69,23);cout<<"Srednie >>>";getch();system("cls");naglowek(3);
  274. gotoxy(37,18);cout<<"Srednie";cout.precision(2);
  275. for(int i=0;i<sprawdzIleUcz();i++){
  276. obliczSr();
  277.     gotoxy(0,i+2);cout<<i+1<<".";
  278.     gotoxy(3,i+2);cout<<tab[i].nazwisko;
  279.     modyf=16;
  280.     for(j=0;j<5;j++){
  281.         gotoxy(modyf,i+2);cout<<tab[i].zb_ocen.przedmioty[j].srS1<<"|"<<tab[i].zb_ocen.przedmioty[j].srS2<<"|"<<tab[i].zb_ocen.przedmioty[j].srZJPrzed;
  282.         modyf+=13;
  283.     }
  284. }          
  285. czyscB();
  286. }  
  287. void wysJUczOcSr(){ // (4)
  288. int lP,ileOs=sprawdzIleUcz(),j,dlImINaz,modyf=0;
  289. string lacznik;
  290. obliczSr();
  291. wysWszUczn(1);
  292. cout<<"\nKogo oceny chcesz zobaczyc?\nPodaj liczbe porzadkowa (0 - anuluj): ";do{cin>>lP;}while((lP<0)||(lP>ileOs));system("cls");
  293. if (lP!=0){
  294. naglowek(5);gotoxy(33,18);cout<<"Oceny czastkowe";
  295. lacznik=tab[lP-1].imie+" "+tab[lP-1].nazwisko;dlImINaz=lacznik.length()-1;gotoxy(40-dlImINaz/2,20);cout<<tab[lP-1].imie<<" "<<tab[lP-1].nazwisko;
  296. gotoxy(38,21);cout<<tab[lP-1].klasa;
  297. for(int i=0;i<5;i++){
  298.     for(j=0;j<10;j++){
  299.         gotoxy(modyf,j+2);if(tab[lP-1].zb_ocen.przedmioty[i].sem1[j]!=0) cout<<tab[lP-1].zb_ocen.przedmioty[i].sem1[j];
  300.         gotoxy(modyf+5,j+2);if(tab[lP-1].zb_ocen.przedmioty[i].sem2[j]!=0) cout<<tab[lP-1].zb_ocen.przedmioty[i].sem2[j];
  301.     }      
  302. modyf+=15;
  303. }
  304. gotoxy(69,23);cout<<"Srednie >>>";getch();system("cls");naglowek(6);gotoxy(40-dlImINaz/2,20);cout<<tab[lP-1].imie<<" "<<tab[lP-1].nazwisko;
  305. gotoxy(38,21);cout<<tab[lP-1].klasa;
  306. gotoxy(28,18);cout<<"Oceny koncowe i srednie";cout.precision(2);
  307. modyf=0;
  308. for(int i=0;i<5;i++){
  309.     gotoxy(modyf,3);cout<<tab[lP-1].zb_ocen.przedmioty[i].srS1;
  310.     gotoxy(modyf+5,3);cout<<tab[lP-1].zb_ocen.przedmioty[i].srS2;
  311.     gotoxy(modyf+10,3);cout<<tab[lP-1].zb_ocen.przedmioty[i].srZJPrzed;
  312.     gotoxy(modyf,7);cout<<zaokraglOc(tab[lP-1].zb_ocen.przedmioty[i].srS1);
  313.     gotoxy(modyf+5,7);cout<<zaokraglOc(tab[lP-1].zb_ocen.przedmioty[i].srS2);
  314.     gotoxy(modyf+10,7);cout<<zaokraglOc(tab[lP-1].zb_ocen.przedmioty[i].srZJPrzed);
  315.     modyf+=15;
  316. }cout.precision(3);
  317. gotoxy(0,20);cout<<"Srednia z 1. semestru: "<<tab[lP-1].zb_ocen.srWszS1;
  318. gotoxy(0,21);cout<<"Srednia z 2. semestru: "<<tab[lP-1].zb_ocen.srWszS2;
  319. gotoxy(0,22);cout<<"Srednia caloroczna: "<<tab[lP-1].zb_ocen.srWsz;
  320. }
  321. czyscB();
  322. }
  323. void wysWszOcenPrzed(){ // (5)
  324. string przedmSrT[5]={"Matematyka","Fizyka","MePr","Polski","SO"};
  325. int lP,j,bylOc;
  326. obliczSr();
  327.     for(int i=0;i<5;i++){
  328.         cout<<i+1<<". "<<przedmSrT[i]<<endl;
  329.     }
  330.     cout<<"Z jakiego przedmiotu chcesz zobaczyc oceny i srednie?\nPodaj liczbe porzadkowa (0 - anuluj): ";do{cin>>lP;}while((lP<0)||(lP>5));
  331. if (lP!=0){
  332.     system("cls");naglowek(7);gotoxy(32,23);cout<<"Przedmiot: "<<przedmSrT[lP-1];
  333.     gotoxy(27,24);cout<<"Oceny czastkowe z 1. i 2. semestru";
  334.     for(int i=0;i<sprawdzIleUcz();i++){
  335.         gotoxy(1,i+1);cout<<i+1<<".";
  336.         gotoxy(11,i+1);cout<<tab[i].imie;
  337.         gotoxy(24,i+1);cout<<tab[i].nazwisko;
  338.         gotoxy(40,i+1);
  339.         bylOc=0;
  340.         for(j=0;j<10;j++){
  341.             if(tab[i].zb_ocen.przedmioty[lP-1].sem1[j]!=0){
  342.                 if(bylOc>0) cout<<", ";
  343.                 cout<<tab[i].zb_ocen.przedmioty[lP-1].sem1[j];bylOc++;
  344.             }              
  345.         }
  346.     }
  347.     for(int i=0;i<sprawdzIleUcz();i++){
  348.         gotoxy(1,12+i+1);cout<<i+1<<".";
  349.         gotoxy(11,12+i+1);cout<<tab[i].imie;
  350.         gotoxy(24,12+i+1);cout<<tab[i].nazwisko;
  351.         gotoxy(40,12+i+1);
  352.         bylOc=0;
  353.         for(j=0;j<10;j++){
  354.             if(tab[i].zb_ocen.przedmioty[lP-1].sem2[j]!=0){
  355.                 if(bylOc>0) cout<<", ";
  356.                 cout<<tab[i].zb_ocen.przedmioty[lP-1].sem2[j];bylOc++;
  357.             }              
  358.         }
  359.     }
  360. gotoxy(65,24);cout<<"Srednie >>>";getch();system("cls");
  361. naglowek(8);gotoxy(32,23);cout<<"Przedmiot: "<<przedmSrT[lP-1];
  362. gotoxy(27,24);cout<<"Oceny koncowe i srednie";
  363.     for(int i=0;i<sprawdzIleUcz();i++){
  364.         gotoxy(1,i+2);cout<<i+1<<".";
  365.         gotoxy(11,i+2);cout<<tab[i].imie;
  366.         gotoxy(24,i+2);cout<<tab[i].nazwisko;
  367.         gotoxy(40,i+2);cout<<tab[i].zb_ocen.przedmioty[lP-1].srS1;
  368.         gotoxy(45,i+2);cout<<tab[i].zb_ocen.przedmioty[lP-1].srS2;
  369.         gotoxy(50,i+2);cout<<tab[i].zb_ocen.przedmioty[lP-1].srZJPrzed;
  370.     }
  371.     for(int i=0;i<sprawdzIleUcz();i++){
  372.         gotoxy(1,i+2);cout<<i+1<<".";
  373.         gotoxy(11,i+2);cout<<tab[i].imie;
  374.         gotoxy(24,i+2);cout<<tab[i].nazwisko;
  375.         gotoxy(60,i+2);cout<<zaokraglOc(tab[i].zb_ocen.przedmioty[lP-1].srS1);
  376.         gotoxy(65,i+2);cout<<zaokraglOc(tab[i].zb_ocen.przedmioty[lP-1].srS2);
  377.         gotoxy(70,i+2);cout<<zaokraglOc(tab[i].zb_ocen.przedmioty[lP-1].srZJPrzed);
  378.     }
  379. }czyscB();
  380. }
  381. void zmDWU(){ // (6)
  382. int lP=1,d,nrEw;
  383. do{
  384. system("cls");naglowek(2);wysWszUczn(1);
  385. cout<<"\nKtorego ucznia dane chcesz zmienic?\nPodaj liczbe porzadkowa (0 - anuluj): ";do{cin>>lP;}while((lP<0)||(sprawdzIleUcz()<lP));
  386. if(lP!=0){
  387. cout<<"Wybrano "<<tab[lP-1].imie<<" "<<tab[lP-1].nazwisko;
  388. cout<<"\nPodaj imie: ";do{cin>>tab[lP-1].imie;}while((tab[lP-1].imie.length()==0)&&(tab[lP-1].imie==" "));
  389. cout<<"Podaj nazwisko: ";do{cin>>tab[lP-1].nazwisko;}while((tab[lP-1].nazwisko.length()==0)&&(tab[lP-1].nazwisko==" "));
  390. cout<<"Podaj klase: ";do{cin>>tab[lP-1].klasa;}while((tab[lP-1].klasa.length()==0)&&(tab[lP-1].klasa==" "));
  391. cout<<"Podan numer ewidenyjny (rozny od 0): ";do{d=0;cin>>nrEw;
  392.     for(int i=0;i<sprawdzIleUcz();i++){
  393.         if(nrEw==tab[i].nr_ew){d=1;cout<<"Niestety, "<<tab[i].imie<<" "<<tab[i].nazwisko<<" posiada taki numer ewidencyjny\nPodaj inny: ";break;}
  394.     }
  395. }while((d==1)||(nrEw<=0));
  396. tab[lP-1].nr_ew=nrEw;
  397. }
  398. }while(lP!=0);
  399. czyscB();
  400. }
  401. void zmWOZWP(){ //(7)
  402. int lP,nrPrz,semK,lPOc,jO,czySaOceny;
  403. string przedmSrT[5]={"Matematyka","Fizyka","MePr","Polski","SO"};
  404. obliczSr();
  405. do{
  406. system("cls");naglowek(2);wysWszUczn(1);
  407. cout<<"\nKogo ocene chcesz zmienic?\nPodaj liczbe porzadkowa (0 - anuluj): ";do{cin>>lP;}while((lP<0)||(sprawdzIleUcz()<lP));
  408. system("cls");
  409. if(lP!=0){
  410. cout<<"Wybrano "<<tab[lP-1].imie<<" "<<tab[lP-1].nazwisko;
  411. cout<<"\nZ jakiego przedmiotu?\n1 - matematyka\n2 - fizyka\n3 - MePr\n4 - polski\n5 - SO\nWybor:";do{cin>>nrPrz;}while((nrPrz<1)||(5<nrPrz));
  412. cout<<"Z ktorego semestru\nWybor: ";do{cin>>semK;}while((semK!=1)&&(semK!=2));
  413. system("cls");
  414. cout<<"Imie: "<<tab[lP-1].imie;
  415. cout<<"\nNazwisko: "<<tab[lP-1].nazwisko;
  416. cout<<"\nPrzedmiot: "<<przedmSrT[nrPrz-1];
  417. cout<<"\nSemestr: "<<semK;getch();system("cls");
  418. gotoxy(1,0);cout<<"Lp";gotoxy(7,0);cout<<"Oceny";
  419. czySaOceny=0;
  420. for(int i=0;i<sprawdzIleUcz();i++){
  421.     if(semK==1){
  422.         if(tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem1[i]!=0){czySaOceny=1;gotoxy(1,i+1);cout<<i+1;gotoxy(7,i+1);cout<<tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem1[i];}
  423.     }
  424.     else{
  425.         if(tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem2[i]!=0){czySaOceny=1;gotoxy(1,i+1);cout<<i+1;gotoxy(7,i+1);cout<<tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem2[i];}
  426.     }
  427. }
  428. if(czySaOceny==1){
  429. cout<<"\nKtora ocene chcesz zmienic?\nPodaj lp: ";
  430. if(semK==1){
  431.     do{cin>>lPOc;}while(tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem1[lPOc-1]==0);
  432.     cout<<"Podaj ocene: ";do{cin>>jO;}while((jO<1)||(6<jO));
  433.     tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem1[lPOc-1]=jO;
  434.     }
  435. else{do{cin>>lPOc;}while(tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem2[lPOc-1]==0);
  436.     cout<<"Podaj ocene: ";do{cin>>jO;}while((jO<1)||(6<jO));
  437.     tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem2[lPOc-1]=jO;
  438. }
  439. }else{cout<<"\nNiestety, ta osoba nie posiada ocen w tym semestrze.";}
  440. obliczSr();
  441. }
  442. }while(lP!=0);
  443. czyscB();
  444. }
  445. void dodajUcz(){ //(8)
  446. int idNUcz=-1,d,nrEw;
  447. system("cls");
  448. for(int i=1;i<pojD;i++){
  449.     if((tab[i].nazwisko.length()==0)||(tab[i].nazwisko==" ")){
  450.         idNUcz=i;break;
  451.     }
  452. }
  453. if(idNUcz!=-1){
  454. cout<<"Podaj imie: ";do{cin>>tab[idNUcz].imie;}while((tab[idNUcz].imie.length()==0)&&(tab[idNUcz].imie==" "));
  455. cout<<"Podaj nazwisko: ";do{cin>>tab[idNUcz].nazwisko;}while((tab[idNUcz].nazwisko.length()==0)&&(tab[idNUcz].nazwisko==" "));
  456. cout<<"Podaj klase: ";do{cin>>tab[idNUcz].klasa;}while((tab[idNUcz].klasa.length()==0)&&(tab[idNUcz].klasa==" "));
  457. cout<<"Podan numer ewidenyjny (rozny od 0): ";do{d=0;cin>>nrEw;
  458.     for(int i=0;i<sprawdzIleUcz();i++){
  459.         if(i!=idNUcz){
  460.             if(nrEw==tab[i].nr_ew){d=1;cout<<"Niestety, "<<tab[i].imie<<" "<<tab[i].nazwisko<<" posiada taki numer ewidencyjny\nPodaj inny: ";break;}
  461.         }
  462.     }
  463. }while((d==1)||(nrEw<=0));
  464. tab[idNUcz].nr_ew=nrEw;
  465. obliczSr();
  466. }else cout<<"\nDziennik pelny";
  467. czyscB();  
  468. }
  469. void dodajOc(){ //(9)
  470. int lP,nrPrz,semK,czyNieMaOceny,jO;
  471. system("cls");naglowek(2);wysWszUczn(1);
  472. cout<<"\nKtoremu uczniowi chcesz dodac ocene/oceny?\nPodaj liczbe porzadkowa (0 - anuluj): ";do{cin>>lP;}while((lP<0)||(sprawdzIleUcz()<lP));
  473. system("cls");
  474. if(lP!=0){
  475. cout<<"Wybrano "<<tab[lP-1].imie<<" "<<tab[lP-1].nazwisko;
  476. do{
  477.     cout<<"\nZ jakiego przedmiotu dodac ocene?\n1 - matematyka\n2 - fizyka\n3 - MePr\n4 - polski\n5 - SO\n6 - anuluj\nWybor:";do{cin>>nrPrz;}while((nrPrz<1)||(6<nrPrz));
  478.     if(nrPrz!=6){
  479.         cout<<"Z ktorego semestru\nWybor: ";do{cin>>semK;}while((semK!=1)&&(semK!=2));
  480.         czyNieMaOceny=0;
  481.     for(int i=0;i<10;i++){
  482.         if(semK==1){
  483.             if(tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem1[i]==0){
  484.                 czyNieMaOceny=1;tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem1[i];
  485.                 cout<<"Podaj ocene: ";do{cin>>jO;}while((jO<1)||(6<jO));
  486.                 tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem1[i]=jO;
  487.                 break;
  488.             }
  489.         }
  490.         else{
  491.             if(tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem2[i]==0){
  492.                 czyNieMaOceny=1;tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem2[i];
  493.                 cout<<"Podaj ocene: ";do{cin>>jO;}while((jO<1)||(6<jO));
  494.                 tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem2[i]=jO;
  495.                 break;
  496.             }
  497.         }      
  498.     }
  499.     if(czyNieMaOceny==0) cout<<"\nUczen ma wszystkie 10 ocen w tym semestrze";
  500.     }
  501. obliczSr();}while(nrPrz!=6);
  502. }
  503. czyscB();
  504. }
  505. void usunUcz(){ //(10)
  506. int lP;
  507. system("cls");naglowek(2);wysWszUczn(1);
  508. cout<<"\nKtorego ucznia chcesz usunac?\nPodaj liczbe porzadkowa (0 - anuluj): ";do{cin>>lP;}while((lP<0)||(sprawdzIleUcz()<lP));
  509. if(lP!=0){
  510.     for(int i=lP-1;i<pojD-1;i++){
  511.         tab[i]=tab[i+1];       
  512.     }
  513.     if((tab[pojD-1].nazwisko.length()!=0)||(tab[pojD-1].nazwisko!=" ")) tab[pojD-1]=czyscTab;
  514. }
  515. czyscB();
  516. }
  517. void usunOc(){ //(11)
  518. int lP,nrPrz,semK,czySaOceny,lPOc,jO;
  519. string przedmSrT[5]={"Matematyka","Fizyka","MePr","Polski","SO"};
  520. do{
  521. system("cls");naglowek(2);wysWszUczn(1);
  522. cout<<"\nKtoremu uczniowi chcesz usunac ocene/oceny?\nPodaj liczbe porzadkowa (0 - anuluj): ";do{cin>>lP;}while((lP<0)||(sprawdzIleUcz()<lP));
  523. system("cls");
  524. if(lP!=0){
  525. cout<<"Wybrano "<<tab[lP-1].imie<<" "<<tab[lP-1].nazwisko; 
  526. cout<<"\nZ jakiego przedmiotu?\n1 - matematyka\n2 - fizyka\n3 - MePr\n4 - polski\n5 - SO\nWybor:";do{cin>>nrPrz;}while((nrPrz<1)||(5<nrPrz));
  527. cout<<"Z ktorego semestru\nWybor: ";do{cin>>semK;}while((semK!=1)&&(semK!=2));
  528. system("cls");
  529. cout<<"Imie: "<<tab[lP-1].imie;
  530. cout<<"\nNazwisko: "<<tab[lP-1].nazwisko;
  531. cout<<"\nPrzedmiot: "<<przedmSrT[nrPrz-1];
  532. cout<<"\nSemestr: "<<semK;getch();system("cls");
  533. gotoxy(1,0);cout<<"Lp";gotoxy(7,0);cout<<"Oceny";
  534. czySaOceny=0;
  535. for(int i=0;i<sprawdzIleUcz();i++){
  536.     if(semK==1){
  537.         if(tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem1[i]!=0){czySaOceny=1;gotoxy(1,i+1);cout<<i+1;gotoxy(7,i+1);cout<<tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem1[i];}
  538.     }
  539.     else{
  540.         if(tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem2[i]!=0){czySaOceny=1;gotoxy(1,i+1);cout<<i+1;gotoxy(7,i+1);cout<<tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem2[i];}
  541.     }
  542. }
  543. if(czySaOceny==1){
  544. cout<<"\nKtora ocene chcesz usunac?\nPodaj lp: ";
  545. if(semK==1){
  546.     do{cin>>lPOc;}while(tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem1[lPOc-1]==0);
  547.     tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem1[lPOc-1]=0;
  548.     }
  549. else{do{cin>>lPOc;}while(tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem2[lPOc-1]==0);
  550.     tab[lP-1].zb_ocen.przedmioty[nrPrz-1].sem2[lPOc-1]=0;
  551. }
  552. }else{cout<<"\nNiestety, ta osoba nie posiada ocen w tym semestrze.";}
  553. }
  554. obliczSr();
  555. }while(lP!=0);
  556. czyscB();
  557. }
  558. void wysWgSrZWsz(){ // (12 a)
  559. dziennik tabK[10];
  560. int j,ks;
  561. string uporzJ;
  562. obliczSr();
  563. for(int i=0;i<sprawdzIleUcz();i++){
  564.     tabK[i]=tab[i];
  565. }
  566. cout<<"Sortowanie\n1 - rosnace\n2 - malejace\nWybor";do{cin>>ks;}while((ks<0)||(2<ks));
  567. switch(ks){
  568. case 1:{
  569. for(int i=0;i<sprawdzIleUcz()-1;i++){
  570.     for(int j=0;j<sprawdzIleUcz()-1;j++){
  571.         if(tabK[j].zb_ocen.srWsz>tabK[j+1].zb_ocen.srWsz){
  572.             swap(tabK[j],tabK[j+1]);
  573.         }
  574.     }
  575. }
  576. uporzJ="rosnace";break;}
  577. case 2:{
  578. for(int i=0;i<sprawdzIleUcz()-1;i++){
  579.     for(int j=0;j<sprawdzIleUcz()-1;j++){
  580.         if(tabK[j].zb_ocen.srWsz<tabK[j+1].zb_ocen.srWsz){
  581.             swap(tabK[j],tabK[j+1]);
  582.         }
  583.     }
  584. }
  585. uporzJ="malejace";break;}
  586. }
  587. system("cls");
  588. naglowek(9);
  589. for(int i=0;i<sprawdzIleUcz();i++){
  590.     gotoxy(1,i+1);cout<<tabK[i].nr_ew;
  591.     gotoxy(11,i+1);cout<<tabK[i].imie;
  592.     gotoxy(24,i+1);cout<<tabK[i].nazwisko;
  593.     gotoxy(43,i+1);cout<<tabK[i].zb_ocen.srWsz;
  594. }
  595. gotoxy(32,24);cout<<"Uporzadkowane "<<uporzJ;
  596. czyscB();
  597. }
  598. void wysWgSrPrzed(){ // (12 b)
  599. int count,j;
  600. float przedSrO[5];
  601. string przedmSrT[5]={"Matematyka","Fizyka","MePr","Polski","SO"};
  602. obliczSr();
  603. naglowek(4);
  604. for(int i=0;i<5;i++){
  605. count=0;przedSrO[i]=0;
  606.     for(j=0;j<sprawdzIleUcz();j++){
  607.         if (tab[j].zb_ocen.przedmioty[i].srZJPrzed!=0){przedSrO[i]+=tab[j].zb_ocen.przedmioty[i].srZJPrzed;count++;}
  608.         //gotoxy(1,10);cout<<"srZJPrzed: "<<tab[j].zb_ocen.przedmioty[i].srZJPrzed<<";count="<<count;getch();gotoxy(1,10);cout<<"                                ";
  609.     }
  610.     if (count>0) przedSrO[i]/=count;
  611.     //gotoxy(1,11);cout<<"Przedmiot="<<przedmSrT[i]<<";Srednia="<<przedSrO[i];getch();cout<<"                       ";
  612. }
  613. for(int i=0;i<4;i++){
  614.     for(j=0;j<4;j++){
  615.         if(przedSrO[j]<przedSrO[j+1]){
  616.             swap(przedSrO[j],przedSrO[j+1]);swap(przedmSrT[j],przedmSrT[j+1]);
  617.         }
  618.     }
  619. }
  620. for(int i=0;i<5;i++){
  621.     gotoxy(1,i+1);cout<<i+1<<".";
  622.     gotoxy(4,i+1);cout<<przedmSrT[i];
  623.     gotoxy(15,i+1);cout<<przedSrO[i];
  624. }
  625. //gotoxy(1,24);cout<<tab[0].zb_ocen.przedmioty[0].sem1[9];
  626. czyscB();
  627. }
  628. void podWgSr(){ // pod 12 wybor dwoch roznych sortowan
  629. int kt;
  630. cout<<"Sortowanie wg:\n1 - sredniej wszystkich uczniow\n2 - sredniej z przedmiotow\nWybor: ";do{cin>>kt;}while((kt<1)||(2<kt));
  631. system("cls");
  632. switch(kt){
  633. case 1:{wysWgSrZWsz();break;}
  634. case 2:{wysWgSrPrzed();break;}
  635. }
  636. }
  637.     // PROCEDURY/FUNKCJE }                                            
  638. // ***************************************************************************
  639. // PRZYKLADOWE DANE (tylko 3 oceny na przedmiot) {
  640. void przykDan(){
  641. srand(time(NULL));
  642. int j,k,m,f;
  643. for(int i=0;i<8;i++){
  644. do{f=0;tab[i].nr_ew=rand()%(100)+1;
  645. if (i>0){
  646.          for(m=i-1;m>=0;m--){
  647.             if(tab[i].nr_ew==tab[m].nr_ew){
  648.                f=1;break;
  649.             }}
  650.         }else f=0;
  651. }while(f==1);
  652.         for(j=0;j<5;j++){
  653.             for(k=0;k<10;k++){
  654.                 tab[i].zb_ocen.przedmioty[j].sem1[k]=0;
  655.                 tab[i].zb_ocen.przedmioty[j].sem2[k]=0;
  656.             }
  657.            for(k=0;k<3;k++){
  658.               tab[i].zb_ocen.przedmioty[j].sem1[k]=rand()%(6)+1;
  659.               tab[i].zb_ocen.przedmioty[j].sem2[k]=rand()%(6)+1;
  660.            }
  661.         }
  662. }  
  663. tab[0].imie="Adam";tab[0].nazwisko="Zygadlo";tab[0].klasa="3F";
  664. tab[1].imie="Barbara";tab[1].nazwisko="Nowak";tab[1].klasa="3F";
  665. tab[2].imie="Dariusz";tab[2].nazwisko="Makaroniewski";tab[2].klasa="3F";
  666. tab[3].imie="Ryszard";tab[3].nazwisko="Niciecki";tab[3].klasa="3G";
  667. tab[4].imie="Piotr";tab[4].nazwisko="Szefler";tab[4].klasa="3G";
  668. tab[5].imie="Jacek";tab[5].nazwisko="Wolny";tab[5].klasa="3G";
  669. tab[6].imie="Kamil";tab[6].nazwisko="Andrusiewicz";tab[6].klasa="3G";
  670. tab[7].imie="Patryk";tab[7].nazwisko="Zacharjasik";tab[7].klasa="3G";
  671. }
  672. // PRZYKLADOWE DANE }
  673. int main(){
  674. przykDan();
  675. int wybor;
  676. do{cout.precision(3);
  677. system("cls");
  678. // wyswietlanie
  679. cout<<"1 - wyswietl wszystkich uczniow\n";// (+)
  680. cout<<"2 - wyswietl wybranego ucznia, (tylko z istniejacych)\n"; // (+)
  681. cout<<"3 - wyswietl oceny i srednie wszystkich uczniow\n";
  682. cout<<"4 - wyswietl oceny i srednia wybranego ucznia\n";
  683. cout<<"5 - wyswietl oceny i srednie z wybranego przedmiotu (wszyscy uczniowie)\n";
  684. // zmiany
  685. cout<<"6 - zmien dane wybranego ucznia (tylko z istniejacych)\n";
  686. cout<<"7 - zmien wybrana ocene z wybranego przedmiotu (tylko istniejaca)\n";
  687. // dodawanie
  688. cout<<"8 - dodaj ucznia\n";
  689. cout<<"9 - dodaj ocene z wybranego przedmiotu\n";
  690. // usuwanie
  691. cout<<"10 - usun ucznia\n";
  692. cout<<"11 - usun ocene\n";
  693. cout<<"12 - wyswietl wg sredniej (uczniow/przedmiotow)\n";
  694. cout<<"13 - Wylacz\n";
  695. cout<<"Wybor: ";
  696. cin>>wybor;
  697. switch(wybor){
  698. case 1:{system("cls");naglowek(1);wysWszUczn(0);break;}
  699. case 2:{system("cls");naglowek(2);wysJUcz();break;}
  700. case 3:{system("cls");naglowek(3);wysWszOcUczn();break;}
  701. case 4:{system("cls");naglowek(2);wysJUczOcSr();break;}
  702. case 5:{system("cls");wysWszOcenPrzed();break;}
  703. case 6:{zmDWU();break;}
  704. case 7:{zmWOZWP();break;}
  705. case 8:{dodajUcz();break;}
  706. case 9:{dodajOc();break;}
  707. case 10:{usunUcz();break;}
  708. case 11:{usunOc();break;}
  709. case 12:{system("cls");podWgSr();/*naglowek(4);wysWgSrPrzed();*/break;}
  710. }}while(wybor!=13);  
  711. }
Advertisement
Add Comment
Please, Sign In to add comment