Advertisement
neogz

PR1 - pacijent

Sep 8th, 2014
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.55 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. char crt[] = { "\n------------------------------------------\n" };
  5. enum Drzavljanin { bih, hr, sr, cg, slo };
  6. char * DrzavljaninOpis[] { "bih", "hr", "sr", "cg", "slo" };
  7.  
  8. struct Datum {
  9.     int * _dan;
  10.     int * _mjesec;
  11.     int * _godina;
  12.  
  13.     void Unos(){
  14.         int d, m, g;
  15.         cout << "Unesite datum: [dd-mm-gggg] " << endl;
  16.         cin >> d >> m >> g;
  17.         cin.ignore();
  18.         // -----------------------------------------
  19.         _dan = new int(d);
  20.         _mjesec = new int(m);
  21.         _godina = new int(g);
  22.     }
  23.     void Unos(int d, int m, int g){
  24.         _dan = new int(d);
  25.         _mjesec = new int(m);
  26.         _godina = new int(g);
  27.     }
  28.     void Ispis(){
  29.         cout << "Datum : [" << *_dan << "/" << *_mjesec << "/" << *_godina << "]" << endl;
  30.     }
  31.     void Ispis(int d, int m, int g){
  32.         cout << "Datum : [" << d << "/" << m << "/" << g << "]" << endl;
  33.     }
  34.     void Dealociraj(){
  35.         delete _dan, _mjesec, _godina;
  36.         _dan = _mjesec = _godina = nullptr;
  37.     }
  38. };
  39. struct Pregled {
  40.     Datum _datumPregleda;
  41.     char * _dijagnoza;
  42.     char * _terapija;
  43.     // -------------------------
  44.     void Unos(){
  45.         _datumPregleda.Unos();
  46.  
  47.         char temp1[1000], temp2[1000];
  48.         cout << "Unesite dijagnozu: (#-za prekid)" << endl;
  49.         cin.getline(temp1, 1000, '#');
  50.         int velicina = strlen(temp1) + 1;
  51.         _dijagnoza = new char[velicina];
  52.         strcpy_s(_dijagnoza, velicina, temp1);
  53.  
  54.         cout << "Unesite terapiju: (#-za prekid)" << endl;
  55.         cin.getline(temp2, 1000, '#');
  56.         velicina = strlen(temp2) + 1;
  57.         _terapija = new char[velicina];
  58.         strcpy_s(_terapija, velicina, temp2);
  59.  
  60.  
  61.     }
  62.     void unos(Datum datumPregleda, char* dijagnoza, char*terapija){
  63.  
  64.         _datumPregleda.Unos(*datumPregleda._dan, *datumPregleda._mjesec, *datumPregleda._godina);
  65.         int brojZnakova = strlen(dijagnoza) + 1;
  66.  
  67.         _dijagnoza = new char[brojZnakova];
  68.         strcpy_s(_dijagnoza, brojZnakova, dijagnoza);
  69.  
  70.         brojZnakova = strlen(terapija) + 1;
  71.  
  72.         _terapija = new char[brojZnakova];
  73.         strcpy_s(_terapija, brojZnakova, terapija);
  74.  
  75.  
  76.     }
  77.  
  78.     void Ispis(){
  79.         cout << crt;
  80.         _datumPregleda.Ispis();
  81.         cout << "\nDIJAGNOZA: " << endl << _dijagnoza << endl;
  82.         cout << "TERAPIJA: " << endl << _terapija << crt;
  83.  
  84.     }
  85.     void Dealokacija(){
  86.         _datumPregleda.Dealociraj();
  87.         delete[]_dijagnoza;
  88.         delete[]_terapija;
  89.         _dijagnoza = _terapija = nullptr;
  90.     }
  91. };
  92. struct Pacijent {
  93.     char _JMBG[14];
  94.     char * _imePrezime;
  95.     Datum _datumRodjenja;
  96.     Drzavljanin _drzava;
  97.     Pregled * _listaPregleda;
  98.     int _brojPregleda;
  99.  
  100.     void Unos(){
  101.         cout << "Unesite JMBG: ";
  102.         cin.getline(_JMBG, 14);
  103.  
  104.         _imePrezime = new char[30];
  105.         cout << "Unesite ime i prezime: ";
  106.         cin.getline(_imePrezime, 30);
  107.  
  108.         cout << "Unesite datum rodjenja: ";
  109.         _datumRodjenja.Unos();
  110.  
  111.         int drz;
  112.         cout << "Unesite drzavu: (0-BIH | 1-HR | 2-SR | 3-CG | 4-SLO): ";
  113.         cin >> drz;
  114.         cin.ignore();
  115.         _drzava = (Drzavljanin)drz;
  116.  
  117.         _brojPregleda = 0;
  118.         _listaPregleda = nullptr;
  119.     }
  120.     void Ispis(){
  121.         cout << _imePrezime << " " << _JMBG << endl;
  122.         _datumRodjenja.Ispis();
  123.         for (int i = 0; i < _brojPregleda; i++)
  124.             _listaPregleda[i].Ispis();
  125.  
  126.     }
  127.     void dodajPregled(Pregled p){
  128.         Pregled * temp = new Pregled[_brojPregleda + 1];
  129.  
  130.         for (int i = 0; i < _brojPregleda; i++)
  131.             temp[i].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
  132.  
  133.         for (int i = 0; i < _brojPregleda; i++)
  134.             _listaPregleda[i].Dealokacija();
  135.         delete[]_listaPregleda;
  136.         _listaPregleda = temp;
  137.  
  138.         _listaPregleda[_brojPregleda].unos(p._datumPregleda, p._dijagnoza, p._terapija);
  139.         _brojPregleda++;
  140.  
  141.  
  142.         void dodajPregled(Datum, char*, char*);
  143.     }
  144.     void dodajPregled(Datum dp, char* d, char*t)
  145.     {
  146.         Pregled * temp = new Pregled[_brojPregleda + 1];
  147.  
  148.         for (int i = 0; i < _brojPregleda; i++)
  149.             temp[i].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
  150.  
  151.         for (int i = 0; i < _brojPregleda; i++)
  152.             _listaPregleda[i].Dealokacija();
  153.         delete[]_listaPregleda;
  154.         _listaPregleda = temp;
  155.  
  156.         _listaPregleda[_brojPregleda].unos(dp, d, t);
  157.         _brojPregleda++;
  158.     }
  159.     void ukloniPregled(){
  160.  
  161.         for (int i = 0; i < _brojPregleda; i++)
  162.         {
  163.             cout << crt << "PREGLED " << i + 1 << endl;
  164.             _listaPregleda[i].Ispis();
  165.         }
  166.         int izbor;
  167.         do
  168.         {
  169.             cout << "Izaberi pregled koji zelite ukloniti: ";
  170.             cin >> izbor;
  171.         } while (izbor < 1 || izbor >_brojPregleda);
  172.         izbor--;
  173.  
  174.         Pregled * temp = new Pregled[_brojPregleda - 1];
  175.         for (int i = 0; i < _brojPregleda - 1; i++){
  176.             if (i >= izbor) temp[i].unos(_listaPregleda[i + 1]._datumPregleda, _listaPregleda[i + 1]._dijagnoza, _listaPregleda[i + 1]._terapija);
  177.             else temp[i].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
  178.         }
  179.  
  180.         for (int i = 0; i < _brojPregleda; i++)
  181.             _listaPregleda[i].Dealokacija();
  182.  
  183.         delete[] _listaPregleda;
  184.         _listaPregleda = temp;
  185.         _brojPregleda--;
  186.     }
  187.     Pregled * getPreglediByDijagnoza(char * dijagnoza, int & brojPregleda){
  188.         int brojacPregleda = 0, tempBrojacPregleda = 0;
  189.         for (int i = 0; i < _brojPregleda; i++)
  190.         if (!strstr(_listaPregleda[i]._dijagnoza, dijagnoza) == NULL)
  191.             brojacPregleda++;
  192.  
  193.         Pregled * temp = new Pregled[brojacPregleda];
  194.         for (int i = 0; i < _brojPregleda; i++)
  195.         {
  196.             if (!strstr(_listaPregleda[i]._dijagnoza, dijagnoza) == NULL){
  197.                 temp[tempBrojacPregleda].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
  198.                 tempBrojacPregleda++;
  199.             }
  200.         }
  201.  
  202.         brojPregleda = brojacPregleda;
  203.         return temp;
  204.  
  205.     }
  206.     Pregled * getPreglediByMjesec(int m, int & brojPregleda){
  207.         int tempBrojacPregleda = 0, brojacPregleda = 0;
  208.         for (int i = 0; i < _brojPregleda; i++)
  209.         if (*_listaPregleda[i]._datumPregleda._mjesec == m) brojacPregleda++;
  210.  
  211.         Pregled * temp = new Pregled[brojacPregleda];
  212.  
  213.         for (int i = 0; i < brojacPregleda; i++)
  214.         {
  215.             temp[tempBrojacPregleda].unos(_listaPregleda[i]._datumPregleda, _listaPregleda[i]._dijagnoza, _listaPregleda[i]._terapija);
  216.             tempBrojacPregleda++;
  217.         }
  218.         brojacPregleda = brojacPregleda;
  219.         return temp;
  220.     }
  221.     void Dealociraj(){
  222.         delete[]_imePrezime;
  223.         _datumRodjenja.Dealociraj();
  224.  
  225.         for (int i = 0; i < _brojPregleda; i++)
  226.             _listaPregleda->Dealokacija();
  227.         delete[] _listaPregleda;
  228.  
  229.         _imePrezime = nullptr;
  230.         _listaPregleda = nullptr;
  231.     }
  232. };
  233.  
  234. int main(){
  235.  
  236.     Pacijent nedim;
  237.     nedim.Unos();
  238.  
  239.     Datum dp;
  240.  
  241.     dp.Unos(10, 4, 1995);
  242.     nedim.dodajPregled(dp, "Dijagnoza 1", "Terapija 1");
  243.     nedim.dodajPregled(dp, "Dijagnoza 2", "Terapija 2");
  244.     nedim.dodajPregled(dp, "Dijagnoza 3", "Terapija 3");
  245.     nedim.ukloniPregled();
  246.  
  247.     nedim.Ispis();
  248.     system("pause > null");
  249.     return 0;
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement