Advertisement
huutho_96

Đề thực hành

Dec 27th, 2015
496
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.33 KB | None | 0 0
  1. //Lưu ý bài tập này chỉ áp dụng cho đề này, vì sử dụng con trỏ tuy nhiên chưa định nghĩa constructor sao chép nên sinh lỗi nếu như truyền đối tượng dạng tham trị
  2. //https://www.facebook.com/CungHocLapTrinhUIT
  3.  
  4. #include <iostream>
  5. #include <string>
  6. #include <conio.h>
  7. using namespace std;
  8.  
  9. enum NV{
  10.     GV = 1,
  11.     NCV = 2,
  12.     NVVP = 3
  13. };
  14.  
  15. class NhanVien
  16. {
  17. protected:
  18.     string Hoten, MNV, NS;
  19. public:
  20.     NhanVien(){};
  21.     ~NhanVien(){};
  22.     virtual bool NVTT() = 0;
  23.     virtual void Nhap()
  24.     {
  25.         fflush(stdin);
  26.         cout << "Ho ten: ";
  27.         getline(cin, Hoten);
  28.         cout << "Ma nhan vien: ";
  29.         getline(cin, MNV);
  30.         cout << "Ngay sinh: ";
  31.         getline(cin, NS);
  32.     }
  33.     virtual void Xuat()
  34.     {
  35.         cout << endl;
  36.         cout << "Ho ten: " << Hoten << endl;
  37.         cout << "Ma nhan vien: " << MNV << endl;
  38.         cout << "Ngay sinh: " << NS << endl;
  39.     }
  40. private:
  41.  
  42. };
  43.  
  44. class GiangVien : public NhanVien
  45. {
  46.     int sotiet, sodetai;
  47. public:
  48.     GiangVien(){};
  49.     ~GiangVien(){};
  50.     bool NVTT()
  51.     {
  52.         return (sotiet >= 300 && sodetai >= 5);
  53.     }
  54.     void Nhap()
  55.     {
  56.         NhanVien::Nhap();
  57.         cout << "So tiet: ";
  58.         cin >> sotiet;
  59.         cout << "So de tai: ";
  60.         cin >> sodetai;
  61.     }
  62.     void Xuat()
  63.     {
  64.         NhanVien::Xuat();
  65.         cout << "So tiet: " << sotiet << endl;
  66.         cout << "So de tai: " << sodetai << endl;
  67.     }
  68. };
  69.  
  70. class NghienCuuVien : public NhanVien
  71. {
  72.     int sodetai, sobaocao;
  73. public:
  74.     NghienCuuVien(){};
  75.     ~NghienCuuVien(){};
  76.     bool NVTT()
  77.     {
  78.         return (sodetai >= 1 && sobaocao >= 2);
  79.     }
  80.     void Nhap()
  81.     {
  82.         NhanVien::Nhap();
  83.         cout << "So bao cao: ";
  84.         cin >> sobaocao;
  85.         cout << "So de tai: ";
  86.         cin >> sodetai;
  87.     }
  88.     void Xuat()
  89.     {
  90.         NhanVien::Xuat();
  91.         cout << "So bao cao: " << sobaocao << endl;
  92.         cout << "So de tai: " << sodetai << endl;
  93.     }
  94. };
  95.  
  96. class NVVanPhong : public NhanVien
  97. {
  98.     int soluong, sogio;
  99. public:
  100.     NVVanPhong(){};
  101.     ~NVVanPhong(){};
  102.     bool NVTT()
  103.     {
  104.         return (soluong >= 1 && sogio >= 20);
  105.     }
  106.     void Nhap()
  107.     {
  108.         NhanVien::Nhap();
  109.         cout << "So luong lop boi duong: ";
  110.         cin >> soluong;
  111.         cout << "So gio lao dong cong ich: ";
  112.         cin >> sogio;
  113.     }
  114.     void Xuat()
  115.     {
  116.         NhanVien::Xuat();
  117.         cout << "So luong lop boi duong: " << soluong << endl;
  118.         cout << "So gio lao dong cong ich: " << sogio << endl;
  119.     }
  120. };
  121.  
  122.  
  123. class QLNV
  124. {
  125. private:
  126.     int n;
  127.     NhanVien **nv;
  128. public:
  129.     QLNV()
  130.     {
  131.         n = 0;
  132.         nv = NULL;
  133.     }
  134.     ~QLNV()
  135.     {
  136.         for (int i = 0; i < n; i++)
  137.             delete nv[i];
  138.         delete[] nv;
  139.         n = 0;
  140.     }
  141.  
  142.     friend istream& operator >> (istream& in, QLNV &q)
  143.     {
  144.         int LoaiNV;
  145.         cout << "So nhan vien: ";
  146.         in >> q.n;
  147.         q.nv = new NhanVien*[q.n];
  148.         for (int i = 0; i < q.n; i++)
  149.         {
  150.             system("cls");
  151.             cout << "Nhan vien thu " << i + 1 << ": \n";
  152.             cout << "Loai nhan vien:\n1. Giang Vien\n2.Nghien cuu vien\n3.Nhan vien van phong\nLua chon: ";
  153.             in >> LoaiNV;
  154.             switch (LoaiNV)
  155.             {
  156.             case NV::GV:
  157.                 q.nv[i] = new GiangVien;
  158.                 break;
  159.             case NV::NCV:
  160.                 q.nv[i] = new NghienCuuVien;
  161.                 break;
  162.             case NV::NVVP:
  163.                 q.nv[i] = new NVVanPhong;
  164.                 break;
  165.             default:
  166.                 i--;
  167.                 continue;
  168.                 break;
  169.             }
  170.             q.nv[i]->Nhap();
  171.         }
  172.         return in;
  173.     }
  174.  
  175.     friend ostream& operator << (ostream& out, QLNV &q)
  176.     {
  177.         for (int i = 0; i < q.n; i++)
  178.         {
  179.             if (q.nv[i]->NVTT())
  180.                 q.nv[i]->Xuat();
  181.         }
  182.         return out;
  183.     }
  184. };
  185.  
  186. void main()
  187. {
  188.     QLNV a;
  189.     cin >> a;
  190.     cout << a;
  191.     getch();
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement