Facebook
From Ivory Pig, 6 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 300
  1. #include "ListaPracownikow.h"
  2. #include "Pracownik.h"
  3. #include "Napis.h"
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. ListaPracownikow::ListaPracownikow()
  10. {
  11.         m_nLiczbaPracownikow = 0;
  12.         m_pPoczatek = nullptr;
  13. }
  14.  
  15.  
  16. ListaPracownikow::~ListaPracownikow()
  17. {
  18. }
  19.  
  20. void ListaPracownikow::Dodaj(const Pracownik & p)
  21. {
  22.         auto sz = Szukaj(p.Nazwisko(), p.Imie());
  23.                 if (sz != nullptr)
  24.                 {
  25.                         return;
  26.                 }
  27.                 Pracownik *cp = new Pracownik(p);
  28.                 if (m_pPoczatek == nullptr)
  29.                 {
  30.                         cp->m_pNastepny = nullptr;
  31.                         m_pPoczatek = cp;
  32.                         m_nLiczbaPracownikow = 1;
  33.                         return;
  34.                 }
  35.                 Pracownik *old = nullptr;
  36.                 Pracownik *s = m_pPoczatek;
  37.                 while (s != nullptr)
  38.                 {
  39.                         auto cmpp = cp->Porownaj(*s);
  40.                         if (cmpp < 0)
  41.                         {
  42.                                 if (old != nullptr)
  43.                                 {
  44.                                         old->m_pNastepny = cp;
  45.                                         cp->m_pNastepny = s;
  46.                                 }
  47.                                 m_nLiczbaPracownikow++;
  48.                                 return;
  49.                         }
  50.                         old = s;
  51.                         s = s->m_pNastepny;
  52.                 }
  53.                 s = old;
  54.                 s->m_pNastepny = cp;
  55.                 cp->m_pNastepny = nullptr;
  56.                 m_nLiczbaPracownikow++;
  57. }
  58. void ListaPracownikow::Usun(const Pracownik& wzorzec)
  59. {
  60.         Pracownik *obecny = m_pPoczatek;
  61.         Pracownik *poprzedni = nullptr;
  62.         if (m_nLiczbaPracownikow == 0)
  63.         {
  64.                 cout << "Nie ma pracownikow" << endl;
  65.         }
  66.         else
  67.         {
  68.                 for (int i = 0; i <= m_nLiczbaPracownikow; i++)
  69.                 {
  70.                         if (obecny->Porownaj(wzorzec) == 0)
  71.                         {
  72.                                 if (obecny == m_pPoczatek)
  73.                                 {
  74.                                         m_pPoczatek = obecny->m_pNastepny;
  75.                                         m_nLiczbaPracownikow--;
  76.                                         delete obecny;
  77.                                         return;
  78.                                 }
  79.                                 else
  80.                                 {
  81.                                         poprzedni->m_pNastepny = obecny->m_pNastepny;
  82.                                         m_nLiczbaPracownikow--;
  83.                                         delete obecny;
  84.                                         return;
  85.                                 }
  86.                         }
  87.                         else
  88.                         {
  89.                                 poprzedni = obecny;
  90.                                 obecny = obecny->m_pNastepny;
  91.                         }
  92.                 }
  93.                 cout << "Nie ma podanego pracownika" << endl;
  94.         }
  95. }
  96. void ListaPracownikow::WypiszPracownikow() const
  97. {
  98.        
  99.         Pracownik *obecny = m_pPoczatek;
  100.         int i = 1;
  101.         /*if (m_nLiczbaPracownikow==0)
  102.         {
  103.                 cout << "Brak pracownikow na liscie"<<endl;
  104.         }
  105.         else
  106.         {
  107.                 for (int i = 1; i <= m_nLiczbaPracownikow; i++)
  108.                 {
  109.                         cout << "Pracownik " << i << ": " << endl;
  110.                         obecny->Wypisz();
  111.                         obecny = obecny->m_pNastepny;
  112.                 }
  113.         }
  114.         */
  115.         while (obecny->m_pNastepny != nullptr)
  116.         {
  117.                 cout << "Pracownik " << i << ": " << endl;
  118.                 obecny->Wypisz();
  119.                 i++;
  120.                 obecny = obecny->m_pNastepny;
  121.         }
  122. }
  123. const Pracownik*ListaPracownikow::Szukaj(const char* nazwisko, const char* imie) const
  124. {
  125.         Pracownik *obecny = m_pPoczatek;
  126.         if (m_nLiczbaPracownikow == 0)
  127.         {
  128.                 cout << "Brak pracownikow na liscie" << endl;
  129.                 return nullptr;
  130.         }
  131.         else
  132.         {
  133.                 for (int i = 1; i <= m_nLiczbaPracownikow; i++)
  134.                 {
  135.                         if (obecny->SprawdzImie(imie) == 0 && obecny->SprawdzNazwisko(nazwisko) == 0)
  136.                         {
  137.                                 cout << "Znaleziono pracownika" << endl;
  138.                                 return obecny;
  139.                         }
  140.                         else
  141.                         {
  142.                                 obecny = obecny->m_pNastepny;
  143.                         }
  144.                 }
  145.                 return nullptr;
  146.         }
  147. }