Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.64 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. //************************************************************************************************** class Personel
  8. class Personel {
  9.  
  10. public:
  11.     Personel() {};
  12.     Personel(string _nazwisko, short _biuro = 0);
  13.     ~Personel();
  14.     void print();
  15.     void set_biuro(short _biuro) { biuro = _biuro; }
  16.     int get_telefon();
  17.  
  18. private:
  19.     string nazwisko;
  20.     short biuro;
  21. };
  22.  
  23. Personel::Personel(string _nazwisko, short _biuro) : biuro(_biuro), nazwisko(_nazwisko)
  24. { }
  25.  
  26. void Personel::print() {
  27.  
  28.     cout << "PRACOWNIK: " << nazwisko << endl;
  29.     cout << "BIURO: " << biuro << " // "
  30.         << "TELEFON: " << get_telefon() << endl;
  31. }
  32.  
  33. int Personel::get_telefon() {
  34.  
  35.     return 111111100 + biuro;
  36. }
  37.  
  38. //************************************************************************************************** class Pracownik
  39. class Pracownik : public virtual Personel {
  40.  
  41. public:
  42.     Pracownik(string _nazwisko, int _biuro = 0, float _stawka = 0.0, float _godziny = 0.0);
  43.     void print();
  44.     void set_stawka(float _stawka) { stawka = _stawka; }
  45.     void set_godziny(float _godziny) { godziny = _godziny; }
  46.     float oblicz_place();
  47.  
  48. private:
  49.     float stawka;
  50.     float godziny;
  51. };
  52.  
  53. Pracownik::Pracownik(string _nazwisko, int _biuro, float _stawka, float _godziny)
  54.     : Personel(_nazwisko, _biuro), stawka(_stawka), godziny(_godziny)
  55. { }
  56.  
  57. void Pracownik::print() {
  58.  
  59.     Personel::print();
  60.     cout << "STAWKA/H: " << stawka << " PLN // "
  61.         << "GODZINY: " << godziny << " " << endl;
  62. }
  63.  
  64. float Pracownik::oblicz_place() {
  65.  
  66.     return stawka * godziny;
  67. }
  68. //************************************************************************************************** class Sprzedawca
  69. class Sprzedawca : public Pracownik {
  70.  
  71. public:
  72.     Sprzedawca(string _nazwisko, short _biuro = 0, float _stawka = 0.0, float _godziny = 0.0, float _procent = 0.0, float _sprzedaz = 0.0);
  73.     void print();
  74.     void set_procent(float _procent) { procent = _procent / 100; }
  75.     void set_sprzedaz(float _sprzedaz) { sprzedaz = _sprzedaz; }
  76.     float oblicz_place();
  77.  
  78. private:
  79.     float procent;
  80.     float sprzedaz;
  81. };
  82.  
  83. Sprzedawca::Sprzedawca(string _nazwisko, short _biuro, float _stawka, float _godziny, float _procent, float _sprzedaz)
  84.     : Pracownik(_nazwisko, _biuro, _stawka, _godziny), procent(_procent), sprzedaz(_sprzedaz), Personel(_nazwisko, _biuro)
  85. { }
  86.  
  87. void Sprzedawca::print() {
  88.  
  89.     Pracownik::print();
  90.     cout << "PROCENT: " << procent << "% // "
  91.         << "SPRZEDAZ: " << sprzedaz << endl;
  92. }
  93.  
  94. float Sprzedawca::oblicz_place() {
  95.  
  96.     return Pracownik::oblicz_place() + procent * sprzedaz;
  97. }
  98.  
  99. //************************************************************************************************** class Dyrektor
  100. class Dyrektor : public virtual Personel {
  101.  
  102. public:
  103.     Dyrektor(string _nazwisko, short _biuro = 0, float _pensja = 0.0, float _premia = 0.0, int _ile_pracownikow = 0);
  104.     void print();
  105.     void set_pensja(float _pensja) { pensja = _pensja; }
  106.     void set_premia(Dyrektor &Dyrektor) {premia = Dyrektor.ile_pracownikow * 50.0; }
  107.     void set_ile_pracownikow(int _ile_pracownikow)
  108.     {
  109.         ile_pracownikow = _ile_pracownikow;
  110.     }
  111.     float oblicz_place();
  112.     int ile_pracownikow;
  113.  
  114. private:
  115.     float pensja; float premia;
  116. };
  117.  
  118. Dyrektor::Dyrektor(string _nazwisko, short _biuro, float _pensja, float _premia, int _ile_pracownikow)
  119.     : Personel(_nazwisko, _biuro), pensja(_pensja), premia(_premia), ile_pracownikow(_ile_pracownikow)
  120. { }
  121.  
  122. void Dyrektor::print() {
  123.  
  124.     Personel::print();
  125.     cout << "PENSJA: " << pensja << " PLN // "
  126.         << "PREMIA: " << premia << " PLN" << endl;
  127.     cout << "LICZBA PRACOWNIKOW: " << ile_pracownikow << endl;
  128. }
  129.  
  130. float Dyrektor::oblicz_place() {
  131.  
  132.     return pensja + premia;
  133. }
  134. //************************************************************************************************** class Dyrektor Handlowy
  135. class DyrektorHandlowy : public Dyrektor, public Sprzedawca {
  136.  
  137. public:
  138.     DyrektorHandlowy(string _nazwisko, short _biuro, float _pensja, float _premia);
  139.     void print();
  140.     void set_procent(float _procent) { procent = _procent / 100; }
  141.     void set_sprzedaz(float _sprzedaz) { sprzedaz = _sprzedaz; }
  142.     float oblicz_place();
  143.     void set_pensja(float _pensja) { pensja = _pensja; }
  144.     void set_premia(Dyrektor &Dyrektor) { premia = Dyrektor.ile_pracownikow * 50; }
  145.     void set_ile_pracownikow(int _ile_pracownikow) { ile_pracownikow = _ile_pracownikow; }
  146.  
  147. private:
  148.     float pensja; float premia;
  149.     float procent;
  150.     float sprzedaz;
  151. };
  152.  
  153. DyrektorHandlowy::DyrektorHandlowy(string _nazwisko, short _biuro, float _pensja, float _premia)
  154.     : Dyrektor(_nazwisko, _biuro, _pensja, _premia), Sprzedawca(_nazwisko, _biuro)
  155. { }
  156.  
  157. void DyrektorHandlowy::print()
  158. {
  159.     Personel::print();
  160.     cout << "PENSJA: " << pensja << " PLN // "
  161.         << "PREMIA: " << premia << " PLN" << endl;
  162.     cout << "LICZBA PRACOWNIKOW: " << ile_pracownikow << endl;
  163. }
  164.  
  165.  
  166. float DyrektorHandlowy::oblicz_place()
  167. {
  168.     return Pracownik::oblicz_place() + procent * sprzedaz + pensja + premia;
  169. }
  170.  
  171. //************************************************************************************************** MAIN
  172. int main() {
  173.     Personel personel("Personel_test", 1);
  174.     personel.print(); // Personel::print()
  175.     personel.set_biuro(4); // Personel::set_biuro()
  176.  
  177.     cout << endl << "------------------------------------------------------" << endl;
  178.     Pracownik pracownik("Pracownik_Test", 2, 9.0, 160.0);
  179.     pracownik.set_biuro(2); // Personel::set_biuro() // 3 -> 4
  180.     pracownik.set_stawka(7.0); // Pracownik::set_stawka() //
  181.     pracownik.print(); // Pracownik::print()
  182.     cout << "WYPLATA: " << pracownik.oblicz_place() << endl;
  183.  
  184.     cout << endl << "------------------------------------------------------" << endl;
  185.  
  186.     Sprzedawca sprzedawca("Sprzedawca_test");
  187.     sprzedawca.set_biuro(3); // Personel::set_biuro()
  188.     sprzedawca.set_stawka(9.0); // Pracownik::set_stawka()
  189.     sprzedawca.set_godziny(160.0); // Pracownik::set_godziny()
  190.     sprzedawca.set_procent(5*100); // Sprzedawca::set_procent()
  191.     sprzedawca.set_sprzedaz(9000.0); // Sprzedawca::set_sprzedaz()
  192.     sprzedawca.print(); // Sprzedawca::print()
  193.     cout << "WYPLATA: " << sprzedawca.oblicz_place() << endl;
  194.  
  195.     cout << endl << "------------------------------------------------------" << endl;
  196.  
  197.     Dyrektor dyrektor("Dyrektor_test");
  198.     dyrektor.set_biuro(4); // Personel::set_biuro()
  199.     dyrektor.set_pensja(10000.0); // Dyrektor::set_pensja()
  200.     dyrektor.set_ile_pracownikow(25); // Dyrektor::set_ile_pracownikow()
  201.     dyrektor.set_premia(dyrektor);
  202.     dyrektor.print(); // Dyrektor::print()
  203.     cout << "WYPLATA: " << dyrektor.oblicz_place() << endl;
  204.  
  205.     cout << endl << "------------------------------------------------------" << endl;
  206.  
  207.     DyrektorHandlowy dyrektor_handlowy("DyrektorHandlowy");
  208.  
  209.     system("pause");
  210.     return 0;
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement