Advertisement
Guest User

Lab3

a guest
Dec 9th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.72 KB | None | 0 0
  1. #include <iostream>
  2. #include "TablicaPracownikow.h"
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.     char c {};
  9.     TablicaPracownikow pracow;
  10.     while (c != 'q')
  11.     {
  12.         switch (c)
  13.         {
  14.         case 'd': {
  15.             Pracownik temp;
  16.             temp.Wpisz();
  17.             pracow.Dodaj(temp);
  18.             cout << "Dodano pracownika \n";
  19.         } break;
  20.  
  21.         case 'u': {
  22.             char imie[20];
  23.             char nazwisko[20];
  24.             cout << "Wpisz dane pracownika do usuniecia Imie-Nazwisko: ";
  25.             cin >> imie >> nazwisko;
  26.  
  27.             const Pracownik *p = pracow.Szukaj(nazwisko, imie);
  28.             if (p != nullptr)
  29.             {
  30.                 pracow.Usun(*p);
  31.                 cout << "Usunieto pracownika: " << imie << " " << nazwisko<< endl;
  32.                 break;
  33.             }
  34.             cout << "Nie ma takiego pracownika! \n";
  35.         } break;
  36.         case 'w':
  37.         {
  38.             pracow.WypiszPracownikow();
  39.         } break;
  40.         case 's':
  41.         {
  42.             char imie[20];
  43.             char nazwisko[20];
  44.             cout << "Wpisz dane pracownika do szukania Imie-Nazwisko: ";
  45.             cin >> imie >> nazwisko;
  46.  
  47.             const Pracownik *s = pracow.Szukaj(nazwisko, imie);
  48.             if (s != nullptr)
  49.             {
  50.                 cout << "Znaleziono pracownika: \n";
  51.                 s->Wypisz();
  52.                 //(*s).Wypisz();
  53.                 break;
  54.             }
  55.             cout << "Nie znaleziono pracownika \n";
  56.         } break;
  57.         case 'x':
  58.         {
  59.             Data d;
  60.             cout << "Wpisz date urodzenia: ";
  61.             d.Wpisz();
  62.             const Pracownik *e = pracow.Szukaj(d);
  63.             if (e != nullptr)
  64.             {
  65.                 cout << "Znaleziono pracownika: \n";
  66.                 e->Wypisz();
  67.                 //(*s).Wypisz();
  68.                 break;
  69.             }
  70.             cout << "Nie znaleziono pracownika \n";
  71.         }break;
  72.         default:
  73.             cout << "Instrukcja obslugi\n" <<
  74.                 "d - dodaj pracownika \n" <<
  75.                 "u - usun pracownika \n" <<
  76.                 "s - szukaj pracownika za pomoca imienia i nazwiska \n" <<
  77.                 "x - szukaj pracownika za pomoca daty urodzenia  \n" <<
  78.                 "w - wypisz tablice pracownikow \n" <<
  79.                 "q - wyjdz \n";
  80.                    
  81.         }
  82.         cout << "Wpisz instrukcje: ";
  83.         cin >> c;
  84.     }
  85.     return 0;
  86. }
  87.  
  88.  
  89.  
  90.  
  91. #include "Napis.h"
  92. #include <iostream>
  93. #include <cstring>
  94. #include <string.h>
  95. using namespace std;
  96. Napis::Napis(const char* napis)
  97. {
  98.     Ustaw(napis);
  99. }
  100.  
  101. const char* Napis::Zwroc() const
  102. {
  103.     return m_przNapis;
  104. }
  105.  
  106. void Napis::Ustaw(const char* nowy_napis)
  107. {
  108.     strncpy_s(m_przNapis, nowy_napis, sizeof(m_przNapis) - 1);
  109. }
  110.  
  111. void Napis::Wypisz() const
  112. {
  113.     cout << m_przNapis;
  114. }
  115.  
  116. void Napis::Wpisz()
  117. {
  118.     char temp[40];
  119.     cin >> temp;
  120.     Ustaw(temp);
  121. }
  122.  
  123. int Napis::SprawdzNapis(const char* por_napis) const
  124. {
  125.     return strcmp(m_przNapis, por_napis);
  126. }
  127.  
  128. #pragma once
  129. class Napis
  130. {
  131. private:
  132.     char m_przNapis[40];
  133. public:
  134.     Napis(const char* napis = " ");
  135.     const char* Zwroc() const;
  136.     void Ustaw(const char* nowy_napis);
  137.     void Wypisz() const;
  138.     void Wpisz();
  139.     int SprawdzNapis(const char* por_napis) const;
  140. };
  141.  
  142.  
  143.  
  144. #include "Data.h"
  145. #include <iostream>
  146.  
  147. using namespace std;
  148.  
  149. Data::Data(int d, int m, int r)
  150. {
  151.     m_nDzien = d;
  152.     m_nMiesiac = m;
  153.     m_nRok = r;
  154. }
  155. void Data::Ustaw(int d, int m, int r)
  156. {
  157.     m_nDzien = d;
  158.     m_nMiesiac = m;
  159.     m_nRok = r;
  160.     Koryguj();
  161. }
  162. int Data::Dzien() const
  163. {
  164.     return m_nDzien;
  165. }
  166. int Data::Miesiac() const
  167. {
  168.     return m_nMiesiac;
  169. }
  170. int Data::Rok() const
  171. {
  172.     return m_nRok;
  173. }
  174. void Data::Wypisz() const
  175. {
  176.     cout << "\nWyswietlam date\n";
  177.     cout << m_nDzien << "-" << m_nMiesiac << "-" << m_nRok << endl;
  178. }
  179. void Data::Wpisz()
  180. {
  181.     int d, m, r;
  182.     cout << "Wpisz dzien: ";
  183.     cin >> d;
  184.     cout << "Wpisz miesiac: ";
  185.     cin >> m;
  186.     cout << "Wpisz rok: ";
  187.     cin >> r;
  188.     Ustaw(d, m, r);
  189. }
  190. int Data::Porownaj(const Data& wzor) const
  191. {
  192.     Wypisz();
  193.     cout << "\nData ze wzorca:";
  194.     wzor.Wypisz();
  195.     /*unsigned int tempa = 31536000 * m_nRok + 2592000 * m_nMiesiac + 86400 * m_nDzien;
  196.     unsigned int tempb = 31536000 * wzor.Rok() + 2592000 * wzor.Miesiac() + 86400 * wzor.Dzien();
  197.     if (tempa == tempb) return 0;
  198.     else if (tempa < tempb) return 1;
  199.     else return -1;*/
  200.     if (wzor.Rok() > m_nRok) return 1;
  201.     else if (wzor.Rok() < m_nRok) return -1;
  202.     else if (wzor.Miesiac() > m_nMiesiac) return 1;
  203.     else if (wzor.Miesiac() < m_nMiesiac) return -1;
  204.     else if (wzor.Dzien() > m_nDzien) return 1;
  205.     else if (wzor.Dzien() < m_nDzien) return -1;
  206.     else return 0;
  207. }
  208. void Data::Koryguj()
  209. {
  210.     if (m_nMiesiac <= 0) m_nMiesiac = 1;
  211.     if (m_nMiesiac > 12) m_nMiesiac = 12;
  212.     if (m_nDzien < 0) m_nDzien = 1;
  213.     if (m_nDzien > 31) m_nDzien = 31;// tak tez mozna
  214.     /*int tmp[] = { 1, 3, 5, 7, 8, 10, 12};
  215.     for (int i = 0; i < sizeof(tmp); i++)
  216.     {
  217.         if (m_nMiesiac == tmp[i] && m_nDzien > 31) m_nDzien = 31;
  218.     }*/
  219.     int temp[] = { 4,6,9,11 };
  220.     for (int j = 0; j < sizeof(temp); j++)
  221.     {
  222.         if (m_nMiesiac == temp[j] && m_nDzien > 30) m_nDzien = 30;
  223.     }
  224.     if (m_nRok % 400 == 0 && m_nMiesiac == 2 && m_nDzien > 29) m_nDzien = 29;
  225.     if (m_nRok % 400 != 0 && m_nMiesiac == 2 && m_nDzien > 28) m_nDzien = 28;
  226. }
  227.  
  228. #pragma once
  229. class Data
  230. {
  231. private:
  232.     int m_nDzien;
  233.     int m_nMiesiac;
  234.     int m_nRok;
  235.     void Koryguj();
  236. public:
  237.     Data(int d = 1, int m = 1, int r = 2000);
  238.     void Ustaw(int d, int m, int r);
  239.     int Dzien() const;
  240.     int Miesiac() const;
  241.     int Rok() const;
  242.     void Wypisz() const;
  243.     void Wpisz();
  244.     int Porownaj(const Data& wzor) const;
  245. };
  246.  
  247.  
  248.  
  249.  
  250. #include <iostream>
  251. #include <string.h>
  252. #include "Pracownik.h"
  253.  
  254. using namespace std;
  255.  
  256. Pracownik::Pracownik(const char* imie, const char* nazwisko, int d, int m, int r)
  257. {
  258.     Imie(imie);
  259.     Nazwisko(nazwisko);
  260.     DataUrodzenia(d, m, r);
  261. }
  262.  
  263. const char* Pracownik::Imie() const
  264. {
  265.     return m_Imie.Zwroc();
  266. }
  267.  
  268. const char* Pracownik::Nazwisko() const
  269. {
  270.     return m_Nazwisko.Zwroc();
  271. }
  272.  
  273. void Pracownik::Imie(const char* nowe_imie)
  274. {
  275.     m_Imie.Ustaw(nowe_imie);
  276. }
  277.  
  278. void Pracownik::Nazwisko(const char* nowe_nazwisko)
  279. {
  280.     m_Nazwisko.Ustaw(nowe_nazwisko);
  281. }
  282.  
  283. void Pracownik::DataUrodzenia(int nowy_dzien, int nowy_miesiac, int nowy_rok)
  284. {
  285.     m_DataUrodzenia.Ustaw(nowy_dzien, nowy_miesiac, nowy_rok);
  286. }
  287.  
  288. void Pracownik::Wypisz() const
  289. {
  290.     cout << "Imie: ";
  291.     m_Imie.Wypisz();
  292.     cout << " Nazwisko: ";
  293.     m_Nazwisko.Wypisz();
  294.     m_DataUrodzenia.Wypisz();
  295. }
  296.  
  297. void Pracownik::Wpisz()
  298. {
  299.     cout << "Wpisz imie pracownika: ";
  300.     m_Imie.Wpisz();
  301.     cout << "Wpisz nazwisko pracownika: ";
  302.     m_Nazwisko.Wpisz();
  303.     cout << "Wpisz date urodzenia pracownika: \n";
  304.     m_DataUrodzenia.Wpisz();
  305. }
  306.  
  307. int Pracownik::SprawdzImie(const char* por_imie) const
  308. {
  309.     return m_Imie.SprawdzNapis(por_imie);
  310. }
  311.  
  312. int Pracownik::SprawdzNazwisko(const char* por_nazwisko) const
  313. {
  314.     return m_Nazwisko.SprawdzNapis(por_nazwisko);
  315. }
  316.  
  317. int Pracownik::Porownaj(const Pracownik& wzorzec) const
  318. {
  319.     int tmp_Nazwisko = this->SprawdzNazwisko(wzorzec.Nazwisko());
  320.     if (tmp_Nazwisko != 0) return tmp_Nazwisko > 0 ? 1 : -1;
  321.  
  322.     int tmp_Imie = this->SprawdzImie(wzorzec.Imie());
  323.     if (tmp_Imie != 0) return tmp_Imie > 0 ? 1 : -1;
  324.  
  325.     int tmp_Data = this->m_DataUrodzenia.Porownaj(wzorzec.m_DataUrodzenia);
  326.     return tmp_Data;
  327. }
  328.  
  329. int Pracownik::SprawdzData(const Data & wzorzec) const
  330. {
  331.     return m_DataUrodzenia.Porownaj(wzorzec);
  332. }
  333.  
  334.  
  335. #pragma once
  336. #include "Data.h"
  337. #include "Napis.h"
  338.  
  339. class Pracownik {
  340. private:
  341.     Napis m_Imie;
  342.     Napis m_Nazwisko;
  343.     Data m_DataUrodzenia;
  344.  
  345. public:
  346.     Pracownik() {};
  347.     Pracownik(const char* imie, const char* nazwisko, int d, int m, int r);
  348.     const char* Imie() const;
  349.     const char* Nazwisko() const;
  350.     void Imie(const char* nowe_imie);
  351.     void Nazwisko(const char* nowe_nazwisko);
  352.     void DataUrodzenia(int nowy_dzien, int nowy_miesiac, int nowy_rok);
  353.     void Wypisz() const;
  354.     void Wpisz();
  355.     int SprawdzImie(const char* por_imie) const;
  356.     int SprawdzNazwisko(const char* por_nazwisko) const;
  357.     int Porownaj(const Pracownik& wzorzec) const;
  358.     int SprawdzData(const Data& wzorzec) const;
  359. };
  360.  
  361.  
  362. #include "TablicaPracownikow.h"
  363. #include <iostream>
  364.  
  365.  
  366. TablicaPracownikow::TablicaPracownikow()
  367. {
  368.     m_nLiczbaPracownikow = 0;
  369. }
  370.  
  371.  
  372. TablicaPracownikow::~TablicaPracownikow()
  373. {
  374. }
  375.  
  376. void TablicaPracownikow::Dodaj(const Pracownik & p)
  377. {
  378.     int i;
  379.  
  380.     for (i = 0; i < m_nLiczbaPracownikow; i++)
  381.     {
  382.         int temp = m_pTablica[i].Porownaj(p);
  383.         if (temp == 0) return;
  384.         if (temp == 1) break;
  385.     }
  386.  
  387.     if (i > 19) i = 19;
  388.     int ostatni = m_nLiczbaPracownikow;
  389.     if (ostatni > 19) ostatni = 19;
  390.  
  391.     for (; ostatni > i; ostatni--)
  392.     {
  393.         m_pTablica[ostatni] = m_pTablica[ostatni - 1];
  394.     }
  395.     m_pTablica[i] = p;
  396.     if (m_nLiczbaPracownikow < 20) m_nLiczbaPracownikow++;
  397. }
  398.  
  399. void TablicaPracownikow::Usun(const Pracownik & wzorzec)
  400. {
  401.     int index = -1;
  402.  
  403.     for (int i = 0; i < m_nLiczbaPracownikow; i++)
  404.     {
  405.         if (m_pTablica[i].Porownaj(wzorzec) == 0)
  406.         {
  407.             index = i;
  408.             break;
  409.         }
  410.     }
  411.  
  412.     if (index == -1) return;
  413.  
  414.     for (int i = index; i < m_nLiczbaPracownikow - 1; i++)
  415.     {
  416.         m_pTablica[i] = m_pTablica[i + 1];
  417.     }
  418.     m_nLiczbaPracownikow--;
  419.     m_pTablica[m_nLiczbaPracownikow] = Pracownik();
  420.  
  421. }
  422.  
  423. void TablicaPracownikow::WypiszPracownikow() const
  424. {
  425.     std::cout << "Wypisanie pracownikow: \n";
  426.     for (int i = 0; i < m_nLiczbaPracownikow; i++)
  427.     {
  428.         m_pTablica[i].Wypisz();
  429.     }
  430. }
  431.  
  432. const Pracownik * TablicaPracownikow::Szukaj(const char * nazwisko, const char * imie) const
  433. {
  434.     for (int i = 0; i < m_nLiczbaPracownikow; i++)
  435.     {
  436.         int tmp = m_pTablica[i].SprawdzNazwisko(nazwisko);
  437.         if (tmp != 0) continue;
  438.         int tmpa = m_pTablica[i].SprawdzImie(imie);
  439.         if (tmpa != 0) continue;
  440.         return &m_pTablica[i];
  441.     }
  442.     return nullptr;
  443. }
  444.  
  445. const Pracownik * TablicaPracownikow::Szukaj(const Data & wzorzec) const
  446. {
  447.     for (int i = 0; i < m_nLiczbaPracownikow; i++)
  448.     {
  449.         int tmp = m_pTablica[i].SprawdzData(wzorzec);
  450.         if (tmp != 0) continue;
  451.         return &m_pTablica[i];
  452.     }
  453.     return nullptr;
  454. }
  455.  
  456.  
  457.  
  458. #pragma once
  459. #include "Pracownik.h"
  460.  
  461. class TablicaPracownikow
  462. {
  463.     Pracownik m_pTablica[20];
  464.     int m_nLiczbaPracownikow;
  465. public:
  466.     TablicaPracownikow();
  467.     ~TablicaPracownikow();
  468.     void Dodaj(const Pracownik& p);
  469.     void Usun(const Pracownik& wzorzec);
  470.     void WypiszPracownikow() const;
  471.     const Pracownik* Szukaj(const char* nazwisko, const char* imie) const;
  472.     const Pracownik* Szukaj(const Data& wzorzec) const;
  473. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement