Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. PRACOWNIK.CPP
  2.  
  3. #include "Pracownik.h"
  4.  
  5. using namespace std;
  6.  
  7. Pracownik::Pracownik(const char* imie, const char* nazwisko, int dzien, int miesiac, int rok) : m_DataUrodzenia(dzien, miesiac, rok), m_Imie(imie), m_Nazwisko(nazwisko), m_nIDZatrudnienia(m_nIDZatrudnienia)
  8. {
  9. }
  10.  
  11. Pracownik::Pracownik(const Pracownik &wzor) : m_nIDZatrudnienia(m_nIDZatrudnienia + 1), m_Imie(wzor.m_Imie), m_Nazwisko(wzor.m_Nazwisko), m_DataUrodzenia(wzor.m_DataUrodzenia)
  12. {
  13. }
  14.  
  15. Pracownik::~Pracownik()
  16. {
  17. }
  18.  
  19. const char* Pracownik::Imie() const
  20. {
  21. return m_Imie.Zwroc();
  22. }
  23.  
  24. const char* Pracownik::Nazwisko() const
  25. {
  26. return m_Nazwisko.Zwroc();
  27. }
  28.  
  29. void Pracownik::Imie(const char* nowe_imie)
  30. {
  31. m_Imie.Ustaw(nowe_imie);
  32. }
  33.  
  34. void Pracownik::Nazwisko(const char* nowe_nazwisko)
  35. {
  36. m_Nazwisko.Ustaw(nowe_nazwisko);
  37. }
  38.  
  39. void Pracownik::DataUrodzenia(int nowy_dzien, int nowy_miesiac, int nowy_rok)
  40. {
  41. m_DataUrodzenia.Ustaw(nowy_dzien, nowy_miesiac, nowy_rok);
  42. }
  43.  
  44. void Pracownik::Wypisz() const
  45. {
  46. m_Imie.Wypisz();
  47. cout << '\t';
  48. m_Nazwisko.Wypisz();
  49. cout << '\t';
  50. m_DataUrodzenia.Wypisz();
  51. }
  52.  
  53. void Pracownik::Wpisz()
  54. {
  55. cout << "Podaj imie : ";
  56. m_Imie.Wpisz();
  57.  
  58. cout << "Podaj nazwisko : ";
  59. m_Nazwisko.Wpisz();
  60.  
  61. cout << "Podaj date urodzenia" << endl;
  62. m_DataUrodzenia.Wpisz();
  63. //cout << endl;
  64. }
  65.  
  66. int Pracownik::SprawdzImie(const char* por_imie) const
  67. {
  68. return m_Imie.SprawdzNapis(por_imie);
  69. }
  70.  
  71. int Pracownik::SprawdzNazwisko(const char* por_nazwisko) const
  72. {
  73. return m_Nazwisko.SprawdzNapis(por_nazwisko);
  74. }
  75.  
  76. int Pracownik::Porownaj(const Pracownik& wzorzec) const
  77. {
  78. if (wzorzec.SprawdzNazwisko(m_Nazwisko.Zwroc()) == 0)
  79. {
  80. if (wzorzec.SprawdzNazwisko(m_Nazwisko.Zwroc()) == 0)
  81. {
  82. if (wzorzec.m_DataUrodzenia.Porownaj(m_DataUrodzenia) == 0)
  83. {
  84. return 0;
  85. }
  86. else
  87. {
  88. if (wzorzec.m_DataUrodzenia.Porownaj(m_DataUrodzenia) > 0)
  89. {
  90. return 1;
  91. }
  92. else
  93. {
  94. return -1;
  95. }
  96. }
  97. }
  98. else
  99. {
  100. if (wzorzec.SprawdzNazwisko(m_Nazwisko.Zwroc()) > 0)
  101. {
  102. return 1;
  103. }
  104. else
  105. {
  106. return -1;
  107. }
  108. }
  109. }
  110. else
  111. {
  112. if (wzorzec.SprawdzNazwisko(m_Nazwisko.Zwroc()) > 0)
  113. {
  114. return 1;
  115. }
  116. else
  117. {
  118. return -1;
  119. }
  120. }
  121. }
  122.  
  123. Pracownik& Pracownik::operator=(const Pracownik &wzor)
  124. {
  125. if (this == &wzor)
  126. return *this;
  127. m_DataUrodzenia = wzor.m_DataUrodzenia;
  128. m_Imie = wzor.m_Imie;
  129. m_Nazwisko = wzor.m_Nazwisko;
  130. }
  131.  
  132. bool Pracownik::operator == (const Pracownik &wzor) const
  133. {
  134. if (this == &wzor)
  135. return true;
  136. if (this->Porownaj(wzor) == 0)
  137. return true;
  138. else
  139. return false;
  140. }
  141.  
  142. ostream &operator<<(ostream& wy, const Pracownik &p)
  143. {
  144. wy << p.m_Imie << endl << p.m_Nazwisko << endl << p.m_DataUrodzenia;
  145. return wy;
  146. }
  147.  
  148. istream &operator >> (istream& we, Pracownik &p)
  149. {
  150. we >> p.m_Imie >> p.m_Nazwisko >> p.m_DataUrodzenia;
  151. return we;
  152. }
  153. void Pracownik::WypiszDane()
  154. {
  155. m_Imie.Wypisz();
  156. cout << ' ';
  157. m_Nazwisko.Wypisz();
  158. cout << ' ';
  159. m_DataUrodzenia.Wypisz();
  160. }
  161.  
  162. Pracownik* Pracownik::KopiaObiektu()
  163. {
  164. Pracownik* nowyPracownik;
  165. nowyPracownik = new Pracownik(*this);
  166. return nowyPracownik;
  167. }
  168.  
  169. ///////////////////////////////////////////////////
  170.  
  171. PRACOWNIK.H
  172.  
  173. #pragma once
  174. #include "Napis.h"
  175. #include "Data.h"
  176. #include <iostream>
  177.  
  178. class Pracownik
  179. {
  180. private:
  181. Napis m_Imie;
  182. Napis m_Nazwisko;
  183. Data m_DataUrodzenia;
  184. const int m_nIDZatrudnienia;
  185. public:
  186. Pracownik(const char* imie = "", const char* nazwisko = "", int dzien = 1, int miesiac = 1, int rok = 2000);
  187. Pracownik(const Pracownik &wzor);
  188. ~Pracownik();
  189. Pracownik *m_pNastepny;
  190. const char* Imie() const;
  191. const char* Nazwisko() const;
  192. void Imie(const char* nowe_imie);
  193. void Nazwisko(const char* nowe_nazwisko);
  194. void DataUrodzenia(int nowy_dzien, int nowy_miesiac, int nowy_rok);
  195. void Wypisz() const;
  196. void Wpisz();
  197. int SprawdzImie(const char* por_imie) const;
  198. int SprawdzNazwisko(const char* por_nazwisko) const;
  199. int Porownaj(const Pracownik& wzorzec) const;
  200. Pracownik &operator=(const Pracownik &wzor);
  201. bool operator == (const Pracownik &wzor) const;
  202. friend ostream &operator<<(ostream& wy, const Pracownik &p);
  203. friend istream &operator >> (istream& we, Pracownik &p);
  204. virtual void WypiszDane(); // wypisuje na ekranie wszystkie dane o pracowniku
  205. virtual Pracownik* KopiaObiektu(); // zwraca nowo stworzonego obiektu
  206.  
  207. };
  208.  
  209.  
  210. ////////////////////////////////////////////////////////////////////////////////////////////////////
  211.  
  212. NAPIS.CPP
  213.  
  214. #define _CRT_SECURE_NO_WARNINGS
  215. #include "Napis.h"
  216.  
  217. using namespace std;
  218.  
  219. Napis::Napis(const char* napis)
  220. {
  221. m_nDl = strlen(napis) + 1;
  222. m_pszNapis = new char[m_nDl];
  223. strcpy(m_pszNapis, napis);
  224. }
  225.  
  226. Napis::Napis(const Napis &wzor)
  227. {
  228. m_nDl = wzor.m_nDl;
  229. m_pszNapis = new char[m_nDl];
  230. strcpy(m_pszNapis, wzor.m_pszNapis);
  231. }
  232.  
  233. Napis::~Napis()
  234. {
  235. delete[] m_pszNapis;
  236. }
  237.  
  238. const char* Napis::Zwroc() const
  239. {
  240. return m_pszNapis;
  241. }
  242.  
  243. void Napis::Ustaw(const char* nowy_napis)
  244. {
  245. m_nDl = strlen(nowy_napis) + 1;
  246. m_pszNapis = new char[m_nDl];
  247. strcpy(m_pszNapis, nowy_napis);
  248. }
  249.  
  250. void Napis::Wypisz() const
  251. {
  252. cout << m_pszNapis;
  253. }
  254.  
  255. void Napis::Wpisz()
  256. {
  257. string napis;
  258. cin >> napis;
  259. Ustaw(napis.c_str());
  260. }
  261.  
  262. int Napis::SprawdzNapis(const char* por_napis) const
  263. {
  264. return strcmp(m_pszNapis, por_napis);
  265. }
  266.  
  267. Napis & Napis::operator=(const Napis & wzor)
  268. {
  269. if (this == &wzor)
  270. return *this;
  271. m_nDl = wzor.m_nDl;
  272. m_pszNapis = new char[m_nDl];
  273. strcpy(m_pszNapis, wzor.m_pszNapis);
  274. return *this;
  275. }
  276.  
  277. bool Napis::operator ==(const Napis & wzor) const
  278. {
  279. if (this == &wzor)
  280. return true;
  281. if (m_nDl == wzor.m_nDl && strcmp(m_pszNapis, wzor.m_pszNapis) == 0)
  282. return true;
  283. else
  284. return false;
  285. }
  286.  
  287. ostream & operator << (ostream& wy, const Napis & p)
  288. {
  289. wy << p.m_pszNapis;
  290. return wy;
  291. }
  292.  
  293. istream &operator >> (istream &we, Napis &p)
  294. {
  295. string str;
  296. we >> str;
  297. p.m_nDl = str.length() + 1;
  298. p.m_pszNapis = new char[p.m_nDl];
  299. strcpy(p.m_pszNapis, str.c_str());
  300. return we;
  301. }
  302.  
  303. /////////////////////////////////////////////////////////////////////////////////////////////
  304.  
  305. NAPIS.H
  306.  
  307. #pragma once
  308. #include <iostream>
  309. #include <string>
  310.  
  311. using namespace std;
  312.  
  313. class Napis
  314. {
  315. private:
  316. char* m_pszNapis;
  317. int m_nDl;
  318. public:
  319. Napis(const char* napis = "");
  320. Napis(const Napis &wzor);
  321. ~Napis();
  322. const char* Zwroc() const;
  323. void Ustaw(const char* nowy_napis);
  324. void Wypisz() const;
  325. void Wpisz();
  326. int SprawdzNapis(const char* por_napis) const;
  327. Napis & operator=(const Napis & wzor);
  328. bool operator ==(const Napis & wzor) const;
  329. friend ostream & operator << (ostream& wy, const Napis & p);
  330. friend istream &operator >> (istream &we, Napis &p);
  331. };
  332.  
  333. /////////////////////////////////////////////////////////////////////////////
  334.  
  335. LISTA PRACOWNIKÓW.CPP
  336.  
  337. #include "ListaPracownikow.h"
  338.  
  339. #include<fstream>
  340.  
  341. ListaPracownikow::ListaPracownikow()
  342. {
  343. m_nLiczbaPracownikow = 0;
  344. m_pPoczatek = nullptr;
  345. }
  346.  
  347.  
  348. ListaPracownikow::~ListaPracownikow()
  349. {
  350. }
  351.  
  352. void ListaPracownikow::Dodaj(Pracownik& p)
  353. {
  354. Pracownik* aktualny = m_pPoczatek;
  355. Pracownik* nastepny;
  356. int licznik = 0;
  357. if (m_nLiczbaPracownikow == 0)
  358. {
  359. m_pPoczatek = &p;
  360. p.m_pNastepny = nullptr;
  361. m_nLiczbaPracownikow++;
  362. return;
  363. }
  364. else if (m_nLiczbaPracownikow == 1)
  365. {
  366. if (aktualny->SprawdzNazwisko(p.Nazwisko()) > 0)
  367. {
  368. m_pPoczatek = &p;
  369. p.m_pNastepny = aktualny;
  370. m_nLiczbaPracownikow++;
  371. return;
  372. }
  373. else if (aktualny->SprawdzNazwisko(p.Nazwisko()) < 0)
  374. {
  375. aktualny->m_pNastepny = &p;
  376. p.m_pNastepny = nullptr;
  377. m_nLiczbaPracownikow++;
  378. return;
  379. }
  380. }
  381. else
  382. {
  383. nastepny = aktualny->m_pNastepny;
  384. if (aktualny->SprawdzNazwisko(p.Nazwisko()) > 0)
  385. {
  386. m_pPoczatek = &p;
  387. p.m_pNastepny = aktualny;
  388. m_nLiczbaPracownikow++;
  389. return;
  390. }
  391. while (licznik <= m_nLiczbaPracownikow)
  392. {
  393. if (nastepny->SprawdzNazwisko(p.Nazwisko()) > 0)
  394. {
  395. aktualny->m_pNastepny = &p;
  396. p.m_pNastepny = nastepny;
  397. m_nLiczbaPracownikow++;
  398. return;
  399. }
  400. else if (nastepny->SprawdzNazwisko(p.Nazwisko()) < 0)
  401. {
  402. aktualny = nastepny;
  403. nastepny = aktualny->m_pNastepny;
  404. licznik++;
  405. }
  406.  
  407. if (nastepny == nullptr)
  408. {
  409. aktualny->m_pNastepny = &p;
  410. p.m_pNastepny = nullptr;
  411. m_nLiczbaPracownikow++;
  412. return;
  413. }
  414. }
  415. }
  416. }
  417.  
  418. void ListaPracownikow::Usun(const Pracownik& wzorzec)
  419. {
  420. Pracownik* aktualny = m_pPoczatek;
  421. Pracownik* poprzedni = nullptr;
  422. if (m_nLiczbaPracownikow == 0)
  423. {
  424. std::cout << "Brak pracownikow!" << std::endl;
  425. }
  426. else
  427. {
  428. for (int i = 0; i <= m_nLiczbaPracownikow; i++)
  429. {
  430. if (aktualny->Porownaj(wzorzec) == 0)
  431. {
  432. if (aktualny == m_pPoczatek)
  433. {
  434. m_pPoczatek = aktualny->m_pNastepny;
  435. m_nLiczbaPracownikow--;
  436. return;
  437. }
  438. else
  439. {
  440. poprzedni->m_pNastepny = aktualny->m_pNastepny;
  441. m_nLiczbaPracownikow--;
  442. return;
  443. }
  444.  
  445. }
  446. else
  447. {
  448. poprzedni = aktualny;
  449. aktualny = aktualny->m_pNastepny;
  450. }
  451. }
  452. std::cout << "Nie znaleziono podanego pracownika na liscie!" << std::endl;
  453. }
  454. }
  455.  
  456. void ListaPracownikow::WypiszPracownikow() const
  457. {
  458. Pracownik* aktualny = m_pPoczatek;
  459. if (m_nLiczbaPracownikow == 0)
  460. {
  461. std::cout << "Lista pracownikow jest pusta!" << std::endl;
  462. }
  463. else
  464. {
  465. for (int i = 1; i <= m_nLiczbaPracownikow; i++)
  466. {
  467. std::cout << "Pracownik #" << i << ": ";
  468. aktualny->Wypisz();
  469. aktualny = aktualny->m_pNastepny;
  470. }
  471. }
  472. }
  473.  
  474. const Pracownik* ListaPracownikow::Szukaj(const char* nazwisko, const char* imie) const
  475. {
  476. Pracownik* aktualny = m_pPoczatek;
  477. if (m_nLiczbaPracownikow == 0)
  478. {
  479. std::cout << "Lista pracownikow jest pusta!" << std::endl;
  480. return nullptr;
  481. }
  482. else
  483. {
  484. for (int i = 1; i <= m_nLiczbaPracownikow; i++)
  485. {
  486. if ((aktualny->SprawdzImie(imie) == 0) && (aktualny->SprawdzNazwisko(nazwisko) == 0))
  487. {
  488. std::cout << "Znaleziono pracownika!" << std::endl;
  489. aktualny->Wypisz();
  490. return aktualny;
  491. }
  492. else
  493. {
  494. aktualny = aktualny->m_pNastepny;
  495. }
  496. }
  497. return nullptr;
  498. }
  499. }
  500.  
  501. void ListaPracownikow::ZapisDoPliku()const
  502. {
  503. ofstream plik;
  504. plik.open("lista.dat", fstream::out);
  505. if (!plik.good())
  506. {
  507. cout << "Problem z otwarciem pliku docelowego!" << endl;
  508. }
  509. else
  510. {
  511. Pracownik* aktualny = m_pPoczatek;
  512. for (int i = 0; i < m_nLiczbaPracownikow; i++)
  513. {
  514. if (aktualny != nullptr)
  515. {
  516. plik << *aktualny << endl;
  517. }
  518. aktualny = aktualny->m_pNastepny;
  519. }
  520. }
  521. plik.close();
  522. }
  523.  
  524. void ListaPracownikow::WczytajZPliku()
  525. {
  526. ifstream plik;
  527. plik.open("lista.dat", fstream::in);
  528. if (!plik.good())
  529. {
  530. cout << "Plik z danymi nie istnieje!" << endl;
  531. }
  532. else
  533. {
  534. m_nLiczbaPracownikow = 0;
  535. m_pPoczatek = nullptr;
  536. Pracownik* temp = new Pracownik();
  537. while (plik >> *temp)
  538. {
  539. Dodaj(*temp);
  540. temp = new Pracownik();
  541. }
  542. }
  543. }
  544.  
  545. ///////////////////////////////////////////////////////////////////////////////////
  546.  
  547. LISTA PRACOWNIKÓW.H
  548.  
  549. #pragma once
  550. #include "Pracownik.h"
  551. #include <iostream>
  552.  
  553. using namespace std;
  554.  
  555. class ListaPracownikow
  556. {
  557. public:
  558. ListaPracownikow();
  559. ~ListaPracownikow();
  560.  
  561. void Dodaj(Pracownik& p);
  562. void Usun(const Pracownik& wzorzec);
  563. void WypiszPracownikow() const;
  564. const Pracownik* Szukaj(const char* nazwisko, const char* imie) const;
  565. void ZapisDoPliku()const;
  566. void WczytajZPliku();
  567. private:
  568. Pracownik* m_pPoczatek;
  569. int m_nLiczbaPracownikow;
  570. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement