Advertisement
Deriterath

Untitled

Jan 16th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.77 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <fstream>
  4. #include <cstdlib>
  5. #include <sstream>
  6. #include <string>
  7. #include <algorithm>
  8. #include <iterator>
  9.  
  10. using namespace std;
  11.  
  12. class Pracownik
  13. {
  14.     public:
  15.  
  16.     string imie, nazwisko;
  17.     int rok_urodzenia;
  18.  
  19.     public:
  20.  
  21.     Pracownik(string im="brak", string na="brak", int ro=0)
  22.     {
  23.         imie = im;
  24.         nazwisko = na;
  25.         rok_urodzenia = ro;
  26.     }
  27.  
  28.     ~Pracownik()
  29.     {
  30.     }
  31.  
  32.     virtual void wyswietl()=0;
  33. };
  34.  
  35. class Programista : public Pracownik
  36. {
  37.     int staz_pracy;
  38.     vector <string> technologie;
  39.  
  40.     public:
  41.  
  42.     Programista(string im, string na, int ro, int sp, vector <string> &te) : Pracownik(im, na, ro)
  43.     {
  44.         staz_pracy = sp;
  45.         technologie = te;
  46.     }
  47.     ~Programista()
  48.     {
  49.     }
  50.     virtual void wyswietl()
  51.     {
  52.         cout << imie << " " << nazwisko << ", " << rok_urodzenia << ", " << staz_pracy << ", " << endl;
  53.     }
  54. };
  55.  
  56. class Kierownik : public Pracownik
  57. {
  58.     int lata_doswiadczenia;
  59.     vector <string> szkolenia;
  60.  
  61.     public:
  62.  
  63.     Kierownik(string im, string na, int ro, int ld, vector <string> &sz) : Pracownik(im, na, ro)
  64.     {
  65.         lata_doswiadczenia = ld;
  66.         szkolenia = sz;
  67.     }
  68.     ~Kierownik()
  69.     {
  70.     }
  71.     virtual void wyswietl()
  72.     {
  73.         cout << imie << " " << nazwisko << ", " << rok_urodzenia << ", " << lata_doswiadczenia << ", " << endl;
  74.     }
  75. };
  76.  
  77. class Handlowiec : public Pracownik
  78. {
  79.     int liczba_sprzedanych;
  80.     vector <string> jezyki;
  81.  
  82.     public:
  83.  
  84.     Handlowiec(string im, string na, int ro, int ls, vector <string> &je) : Pracownik(im, na, ro)
  85.     {
  86.         liczba_sprzedanych = ls;
  87.         jezyki = je;
  88.     }
  89.     ~Handlowiec()
  90.     {
  91.     }
  92.     virtual void wyswietl()
  93.     {
  94.         cout << imie << " " << nazwisko << ", " << rok_urodzenia << ", " << liczba_sprzedanych << ", " << endl;
  95.     }
  96. };
  97. /*
  98. class Lista
  99. {
  100.     vector<Pracownik> pracownicy;
  101.  
  102. public:
  103.  
  104.     void sortuj_nazwiska()
  105.     void sortuj_urodzenia()
  106.  
  107. };
  108. */
  109. Pracownik* generator_klas(string text)
  110. {
  111.     int rok, staz;
  112.  
  113.     istringstream iss(text);
  114.     vector<string> results((istream_iterator<string>(iss)),
  115.         istream_iterator<string>());
  116.  
  117.     size_t const half_size = 5;
  118.     vector<string> split_lo(results.begin(), results.begin() + half_size);
  119.  
  120.     vector<string> split_hi;
  121.     split_hi.push_back("");
  122.  
  123.     Pracownik *pracownik;
  124.  
  125.     if (split_lo[0] == "P:")
  126.     {
  127.         rok = atoi(split_lo[3].c_str());
  128.         staz = atoi(split_lo[4].c_str());
  129.         pracownik = new Programista(split_lo[1], split_lo[2], rok, staz, split_hi);
  130.         pracownik ->wyswietl();
  131.     }
  132.     else if (split_lo[0] == "K:")
  133.     {
  134.         rok = atoi(split_lo[3].c_str());
  135.         staz = atoi(split_lo[4].c_str());
  136.         pracownik = new Kierownik(split_lo[1], split_lo[2], rok, staz, split_hi);
  137.         pracownik ->wyswietl();
  138.     }
  139.     else if (split_lo[0] == "H:")
  140.     {
  141.         rok = atoi(split_lo[3].c_str());
  142.         staz = atoi(split_lo[4].c_str());
  143.         pracownik = new Handlowiec(split_lo[1], split_lo[2], rok, staz, split_hi);
  144.         pracownik ->wyswietl();
  145.     }
  146.     else
  147.     {
  148.         cout << "BLAD: nieznany typ rekordu! - linia: " << text;
  149.     }
  150.     return pracownik;
  151. }
  152.  
  153. void zaladuj_dane(string nazwa_pliku)
  154. {
  155.     fstream plik;
  156.     string linia;
  157.     plik.open(nazwa_pliku.c_str());
  158.     if(plik.good()==false)
  159.     {
  160.         cout << "BLAD: nieznaleziono danych!";
  161.         exit(0);
  162.     }
  163.         while(!plik.eof())
  164.         {
  165.             getline(plik, linia);
  166.             generator_klas(linia);
  167.             //vector<Pracownik> pracownicy(generator_klas(linia));
  168.         }
  169. }
  170. /*
  171. void wypisz_dane()
  172. {
  173.  
  174. }
  175. */
  176.  
  177. int main()
  178. {
  179.  
  180.     zaladuj_dane("dane.txt");
  181.  
  182.     return 0;
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement