Untitled
unknown
plain_text
2 years ago
8.3 kB
14
Indexable
#include <iostream>
#include <vector>
using namespace std;
class nhanVien
{
protected:
int ID;
std::string hoTen;
double luongCB;
double luongHT;
public:
virtual void xuat() = 0;
virtual void tinhLuongHT() = 0;
nhanVien(int ID, std::string hoTen, double luongCB, double luongHT)
{
this->ID = ID;
this->hoTen = hoTen;
this->luongCB = luongCB;
this->luongHT = luongHT;
}
int getID()
{
return this->ID;
}
double getLuongHT()
{
return this->luongHT;
}
void setLuongCB(double luongCB)
{
this->luongCB = luongCB;
}
double getLuongCB()
{
return this->luongCB;
}
};
class nhanVienVanPhong :public nhanVien
{
private:
int soGioLam;
public:
nhanVienVanPhong(int ID, std::string hoTen, double luongCB, int soGioLam, double luongHT) : nhanVien(ID, hoTen, luongCB, luongHT)
{
this->soGioLam = soGioLam;
}
void xuat() override
{
cout << this->ID << " nhanVien VanPhong " << this->hoTen << " luong CB " << this->luongCB << " so gio lam " << this->soGioLam << " luong HT " << this->luongHT << endl;
}
void tinhLuongHT() override
{
if (this->soGioLam < 100)
this->luongHT = (this->luongCB + this->soGioLam * 220000);
else
this->luongHT = (this->luongCB + this->soGioLam * 220000) + 5000000;
}
};
class nhanVienSanXuat :public nhanVien
{
private:
int soSanPham;
public:
nhanVienSanXuat(int ID, std::string hoTen, double luongCB, int soSanPham, double luongHT) : nhanVien(ID, hoTen, luongCB, luongHT)
{
this->soSanPham = soSanPham;
}
void xuat() override
{
cout << this->ID << " nhanVien SanXuat " << this->hoTen << " luong CB " << this->luongCB << " so san pham " << this->soSanPham << " luong HT " << this->luongHT << endl;
}
void tinhLuongHT() override
{
if (this->soSanPham < 150)
this->luongHT = (this->luongCB + this->soSanPham * 175000);
else
this->luongHT = (this->luongCB + this->soSanPham * 220000) * 1.2;
}
};
class nhanVienQuanLy :public nhanVien
{
private:
double heSoChucVu;
double thuong;
public:
nhanVienQuanLy(int ID, std::string hoTen, double luongCB, double heSoChucVu, double thuong, double luongHT) : nhanVien(ID, hoTen, luongCB, luongHT)
{
this->heSoChucVu = heSoChucVu;
this->thuong = thuong;
}
void xuat() override
{
cout << this->ID << " nhanVien QuanLy " << this->hoTen << " luong CB " << this->luongCB << " so chuc vu " << this->heSoChucVu << " Thuong " << this->thuong << " luong HT " << this->luongHT << endl;
}
void tinhLuongHT() override
{
this->luongHT = this->luongCB * this->heSoChucVu + this->thuong;
}
};
class daiLy
{
private:
std::string ten;
int ID;
std::vector <nhanVien*> dsNhanVien;
int soNhanVien;
public:
daiLy(int ID, std::string ten)
{
this->ID = ID;
this->ten = ten;
}
void taoDL() //cau 1
{
nhanVienVanPhong* NV0 = new nhanVienVanPhong(101, "Nguyen A", 4500000, 200, 0);
nhanVienVanPhong* NV1 = new nhanVienVanPhong(102, "Nguyen B", 5600000, 100, 0);
nhanVienVanPhong* NV2 = new nhanVienVanPhong(103, "Nguyen C", 8900000, 90, 0);
nhanVienSanXuat* NV3 = new nhanVienSanXuat(201, "Nguyen D", 7800000, 250, 0);
nhanVienSanXuat* NV4 = new nhanVienSanXuat(202, "Nguyen E", 4500000, 110, 0);
nhanVienSanXuat* NV5 = new nhanVienSanXuat(203, "Nguyen F", 6600000, 360, 0);
nhanVienQuanLy* NV6 = new nhanVienQuanLy(301, "Nguyen G", 8500000, 1.3, 19500000, 0);
nhanVienQuanLy* NV7 = new nhanVienQuanLy(302, "Nguyen H", 7600000, 1.2, 18600000, 0);
dsNhanVien.push_back(NV0);
dsNhanVien.push_back(NV1);
dsNhanVien.push_back(NV2);
dsNhanVien.push_back(NV3);
dsNhanVien.push_back(NV4);
dsNhanVien.push_back(NV5);
dsNhanVien.push_back(NV6);
dsNhanVien.push_back(NV7);
soNhanVien = dsNhanVien.size();
}
void xuat() //cau 2
{
for (int i = 0; i < soNhanVien; i++)
{
dsNhanVien[i]->xuat();
}
}
/* cau 3
Input dsNhanVien
Output kham chieuy luong nhanVien vao ds */
void tinhLuongHT()
{
for (int i = 0; i < soNhanVien; i++)
{
dsNhanVien[i]->tinhLuongHT();
}
return;
}
/* cau 4 tim nv
Input dsNhanVien
Output return Nhanvien qua con tro */
nhanVien* timNV(int ID)
{
for (int i = 0; i < soNhanVien; i++)
{
if (dsNhanVien[i]->getID() == ID)
{
return dsNhanVien[i];
}
}
}
/* cau 5 tim trung binh
Input dsNhanVien
Output return average can phai tra */
double trungBinh()
{
double index = 0 ;
for (int i = 0; i < soNhanVien; i++)
{
index = index + dsNhanVien[i]->getLuongHT();
}
return index / double(soNhanVien);
}
/* cau 6 cap nhat luong
Input dsNhanVien
Output kham chieu luong qua ds */
void capNhat(int ID, double luong)
{
for (int i = 0; i < soNhanVien; i++)
{
if (dsNhanVien[i]->getID() == ID)
{
dsNhanVien[i]->setLuongCB(luong);
return;
}
}
}
/* cau 4 tim nv max luong cb
Input dsNhanVien
Output return Nhanvien qua con tro */
nhanVien* timNVMax()
{
double MAX = 0;
int index = 0;
for (int i = 0; i < soNhanVien; i++)
{
if (dsNhanVien[i]->getLuongCB() > MAX)
{
MAX = dsNhanVien[i]->getLuongCB();
index = i;
}
}
return dsNhanVien[index];
}
/* cau 7 tim nvsx luonght min
Input dsNhanVien
Output return Nhanvien qua con tro */
nhanVien* timNVSXMin()
{
double Min = dsNhanVien[3]->getLuongHT();
int index = 3;
for (int i = 0; i < soNhanVien; i++)
{
if (dsNhanVien[i]->getID() > 200 && dsNhanVien[i]->getID() < 300)
{
if (dsNhanVien[i]->getLuongHT() < Min)
{
Min = dsNhanVien[i]->getLuongHT();
index = i;
}
}
}
return dsNhanVien[index];
}
/* cau 4 tim nv cb
Input dsNhanVien
Output return std::vector<Nhanvien*> ds nhan vien luong min */
std::vector<nhanVien*> timMin()
{
std::vector<nhanVien*> dsMin;
double Min = dsNhanVien[0]->getLuongCB();
for (int i = 0; i < soNhanVien; i++)
{
if (dsNhanVien[i]->getLuongCB() < Min)
{
Min = dsNhanVien[i]->getLuongCB();
}
}
for (int i = 0; i < soNhanVien; i++)
{
if (dsNhanVien[i]->getLuongCB() == Min)
{
dsMin.push_back(dsNhanVien[i]);
}
}
return dsMin;
}
};
int main()
{
daiLy A(100, "UIT");
A.taoDL(); //cau 1
A.tinhLuongHT(); //cau 3
A.xuat(); //cau 2
cout << endl << endl;
cout << endl << endl;
nhanVien* index1 = A.timNV(201); //cau 4
index1->xuat();
cout << endl << endl;
std::cout << A.trungBinh(); //cau 5
cout << endl << endl;
nhanVien* index2 = A.timNVMax(); //cau 7
index2->xuat();
cout << endl << endl;
A.capNhat(202, 30002340);
nhanVien* index112 = A.timNV(202); //cau 6
index112->xuat();
cout << endl << endl;
nhanVien* index3 = A.timNVSXMin(); //cau 8
index3->xuat();
cout << endl << endl;
std::vector <nhanVien*> index4;
index4 = A.timMin();
for (int i = 0; i < index4.size(); i++) //cau 9
{
index4[i]->xuat();
}
}
Editor is loading...