Untitled
unknown
plain_text
a year ago
10 kB
8
Indexable
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class NhanVienVanPhong
{
private: //Thanh phan du lieu -> Khai bao bien =>Thuoc tinh
int maNV;
string hoTen;
float luongCB;
float luongHT;
int soNG;
public://Thanh phan xu ly -> Khai bao ham => Phuong thuc
NhanVienVanPhong() {}; //tao ra constructor khong tham so
NhanVienVanPhong(int, string, float, int);
//In thong tin nhan vien
void printfNVVP();
//Tinh luong nhan vien
float tinhluongHT();
//Tim nhan vien theo ma
int getmaNVVP();
//Tim luong co ban
float getluongCB();
//Cap nhat luong co ban
void setluongCB(float);
//Tim luong hang thang
float getluongHT();
};
typedef NhanVienVanPhong NVVP;
//Trien khai
NhanVienVanPhong::NhanVienVanPhong(int maNV, string hoTen, float luongCB, int soNG)
{
this->maNV = maNV;
this->hoTen = hoTen;
this->luongCB = luongCB;
this->soNG = soNG;
this->luongHT = 0;
}
void NVVP::printfNVVP()
{
cout << this->maNV << " " << this->hoTen << " " << this->luongCB << " " << this->soNG << " Luong HT: " << this->luongHT << endl;
}
float NVVP::tinhluongHT()
{
//Lương HT = luongCB + soNG*250.000
//Luong hang thang = luong co ban + so ngay * 250.000
//Neu so ngay lam viec be hon 15 thi phu cap them 20%
float luong = 0;
luong = this->luongCB + this->soNG * 250000;
if (this->soNG < 15)
{
luong = luong + luong * 0.2;
}
return this->luongHT = luong;
}
int NVVP::getmaNVVP()
{
return this->maNV;
}
float NVVP::getluongCB()
{
return this->luongCB;
}
void NVVP::setluongCB(float newluongCB)
{
this->luongCB = newluongCB;
}
float NVVP::getluongHT()
{
return this->luongHT;
}
class NhanVienSanXuat
{
private: //Thanh phan du lieu -> Khai bao bien => Thuoc tinh
int maNV;
string hoTen;
float luongCB;
float luongHT;
int soSP;
public://Thanh phan xu ly -> Khai bao ham => Phuong thuc
NhanVienSanXuat() {}; //tao ra constructor khong tham so
NhanVienSanXuat(int, string, float, int);
//In thong tin nhan vien
void printfNVSX();
//Tinh luong nhan vien
float tinhluongHT();
//Tim nhan vien theo ma
int getmaNVSX();
//Cap nhat luong co ban
void setluongCB(float);
//Tim luong hang thang
float getluongHT();
//Tim so san pham
int getsoSP();
};
typedef NhanVienSanXuat NVSX;
//TRiển khai
NVSX::NhanVienSanXuat(int maNV, string hoTen, float luongCB, int soSP)
{
this->maNV = maNV;
this->hoTen = hoTen;
this->luongCB = luongCB;
this->soSP = soSP;
this->luongHT = 0;
}
void NVSX::printfNVSX()
{
printf("[%d,%s,%f,%f,%d]\n", this->maNV,
this->hoTen.c_str(),
this->luongCB,
this->luongHT,
this->soSP);
}
//Tính lương nhân viên sản xuất
float NVSX::tinhluongHT()
{
//Luong hang thang = luong co ban + so san pham * 175.000
//Neu luong tu 10 trieu tro len thi thuong 10%. Neu so san pham duoi 10 thi tro cap them 30%
int luong = this->luongCB;
luong = luong + soSP * 175000;
if (luong > 10000000)
{
luong = luong + luong * 0.1;
}
if (soSP < 10)
{
luong = luong + luong * 0.3;
}
return this->luongHT = luong;
}
//Tim nhan vien theo ma
int NVSX::getmaNVSX()
{
return this->maNV;
}
//Cap nhat luong co ban
void NVSX::setluongCB(float newluongCB)
{
this->luongCB = newluongCB;
}
//Tim luong hang thang
float NVSX::getluongHT()
{
return this->luongHT;
}
//Tim so san pham
int NVSX::getsoSP()
{
return this->soSP;
}
class CongTy
{
int maCT;
string tenCT;
NVVP mangVP[100];
int soVP;
vector<NVSX> vtSX;
public:
CongTy(int, string);
//1. Tao du lieu nhan vien. Biet cong ty co toi da 200 nhan vien
void initDSNV();
//2. Xuat cac nhan vien trong cong ty
void printfDSNV();
//3. Tinh luong trong cong ty
float tinhluongHT();
//4. Tim nhan vien theo ma nhan vien
NVVP maNVVP(int);
NVSX maNVSX(int);
//5. Cap nhat luong co ban theo ma nhan vien
void luongCBmaNVVP(float, NVVP&);
void luongCBmaNVSX(float, NVSX&);
//6. Tim nhan vien co luong cao nhat
void luongCaoNhat();
//7. Tim nhan vien co so san pham ban ra thap nhat
NVSX soSPthapnhat();
//8. Tim 10 nhan vien co luong cao nhat
void top10luong();
};
typedef CongTy ct;
//Trien khai
CongTy::CongTy(int maCT, string tenCT)
{
this->maCT = maCT;
this->tenCT = tenCT;
}
//1. Tao du lieu nhan vien
void ct::initDSNV()
{
NVVP vp1(123, "Nguyen Van A", 9e6, 20);
NVVP vp2(124, "Albert Einstein", 10e6, 25);
NVVP vp3(125, "Isaac Newton", 9.5e6, 22);
NVVP vp4(126, "Marie Curie", 9e6, 23);
NVVP vp5(127, "Stephen Hawking", 8.5e6, 21);
NVVP vp6(128, "Nikola Tesla", 8e6, 20);
NVVP vp7(129, "Galileo Galilei", 7.5e6, 19);
NVVP vp8(130, "Ada Lovelace", 7e6, 18);
NVVP vp9(131, "Alan Turing", 6.5e6, 17);
NVVP vp10(132, "Charles Darwin", 6e6, 16);
NVVP vp11(133, "Leonardo da Vinci", 5.5e6, 15);
NVVP vp12(134, "Hypatia", 5e6, 14);
NVVP vp13(135, "Aristotle", 4.5e6, 13);
NVVP vp14(136, "Marie Sklodowska Curie", 4e6, 18);
mangVP[0] = vp1;
mangVP[1] = vp2;
mangVP[2] = vp3;
mangVP[3] = vp4;
mangVP[4] = vp5;
mangVP[5] = vp6;
mangVP[6] = vp7;
mangVP[7] = vp8;
mangVP[8] = vp9;
mangVP[9] = vp10;
mangVP[10] = vp11;
mangVP[11] = vp12;
mangVP[12] = vp13;
mangVP[13] = vp14;
this->soVP = 13;
NVSX sx1(221, "Nguyen Van B", 6e6, 90);
NVSX sx2(222, "Max Planck", 7.5e6, 80);
NVSX sx3(223, "Richard Feynman", 7e6, 85);
NVSX sx4(224, "Niels Bohr", 6.5e6, 75);
NVSX sx5(225, "Erwin Schrodinger", 6e6, 70);
NVSX sx6(226, "Werner Heisenberg", 5.5e6, 65);
NVSX sx7(227, "Enrico Fermi", 5e6, 60);
NVSX sx8(228, "Paul Dirac", 4.5e6, 55);
NVSX sx9(229, "Lise Meitner", 4e6, 50);
NVSX sx10(230, "Louis de Broglie", 3.5e6, 45);
NVSX sx11(231, "Richard Feynman", 3e6, 40);
NVSX sx12(232, "Niels Bohr", 2.5e6, 35);
NVSX sx13(233, "Marie Curie", 2e6, 30);
NVSX sx14(234, "Rosalind Franklin", 1.5e6, 25);
this->vtSX.push_back(sx1);
this->vtSX.push_back(sx2);
this->vtSX.push_back(sx3);
this->vtSX.push_back(sx4);
this->vtSX.push_back(sx5);
this->vtSX.push_back(sx6);
this->vtSX.push_back(sx7);
this->vtSX.push_back(sx8);
this->vtSX.push_back(sx9);
this->vtSX.push_back(sx10);
this->vtSX.push_back(sx11);
this->vtSX.push_back(sx12);
this->vtSX.push_back(sx13);
this->vtSX.push_back(sx14);
}
//2. Xuat cac nhan vien trong cong ty
void ct::printfDSNV()
{
cout << "\nIn ds nv van phong tu mang: " << endl;
for (int i = 0; i < soVP; i++)
{
mangVP[i].printfNVVP();
}
cout << "\nIn ds nv san xuat tu mang: " << endl;
for (int i = 0; i < this->vtSX.size(); i++)
{
this->vtSX[i].printfNVSX();
}
}
//3. Tinh luong nhan vien trong cong ty
float ct::tinhluongHT()
{
cout << "In danh sach nhan vien van phong tu mang: " << endl;
for (int i = 0; i < this->soVP; i++)
{
mangVP[i].tinhluongHT();
}
cout << "\nIn danh sach nhan vien san xuat tu mang: " << endl;
for (int i = 0; i < this->vtSX.size(); i++)
{
this->vtSX[i].tinhluongHT();
}
}
//4. Tim nhan vien theo ma nhan vien
NVVP ct::maNVVP(int maVP)
{
cout << "Nhan vien van phong theo ma nhan vien: " << endl;
for (int i = 0; i < this->soVP; i++)
{
if (mangVP[i].getmaNVVP() == maVP)
{
return mangVP[i];
}
}
}
NVSX ct::maNVSX(int maSX)
{
cout << "\nNhan vien san xuat theo ma nhan vien: " << endl;
for (int i = 0; i < this->vtSX.size(); i++)
{
if (vtSX[i].getmaNVSX() == maSX)
{
return this->vtSX[i];
}
}
}
//5. Cap nhat luong co ban theo ma nhan vien
void ct::luongCBmaNVVP(float luong, NVVP& a)
{
a.setluongCB(luong);
}
void ct::luongCBmaNVSX(float luong, NVSX& b)
{
b.setluongCB(luong);
}
//6. Tim nhan vien co luong cao nhat
void ct::luongCaoNhat()
{
float maxluong = 0;
NVVP VPluongcaonhat;
NVSX SXluongcaonhat;
for (int i = 0; i < soVP; i++)
{
float luong = mangVP[i].tinhluongHT();
if (luong > maxluong)
{
maxluong = luong;
VPluongcaonhat = mangVP[i];
}
}
for (int i = 0; i < vtSX.size(); i++)
{
float luong = vtSX[i].tinhluongHT();
if (luong > maxluong)
{
maxluong = luong;
SXluongcaonhat = vtSX[i];
}
}
if (VPluongcaonhat.getluongHT() > SXluongcaonhat.getluongHT())
{
VPluongcaonhat.printfNVVP();
}
else
{
SXluongcaonhat.printfNVSX();
}
}
//7. Tim nhan vien co so san pham ban ra thap nhat
NVSX ct::soSPthapnhat()
{
NVSX nhanvienSPthapnhat;
int soSP = INT_MAX;
for (int i; i < vtSX.size(); i++)
{
if (vtSX[i].getsoSP() < soSP)
{
soSP = vtSX[i].getsoSP();
nhanvienSPthapnhat = vtSX[i];
}
}
return nhanvienSPthapnhat;
}
//8. Tim 10 nhan vien co luong cao nhat
void ct::top10luong()
{
float luongNhanVien[soVP + vtSX.size()];
for (int i = 0; i < soVP; i++)
{
luongNhanVien[i] = mangVP[i].tinhluongHT();
}
for (int i = 0; i < vtSX.size(); i++)
{
luongNhanVien[i + soVP] = vtSX[i].tinhluongHT();
}
sort(luongNhanVien, luongNhanVien + soVP + vtSX.size(), greater<float>());
int tongnv = soVP + vtSX.size();
for (int i = 0; i < min(10, tongnv); i++)
{
if (i < soVP)
{
cout << "Nhan vien van phong: ";
mangVP[i].printfNVVP();
}
else
{
cout << "Nhan vien san xuat: ";
vtSX[i - soVP].printfNVSX();
}
}
}
int main()
{
//Test 1. Tao ds cho nhan vien cong ty
CongTy ct(202, "NTV UIT");
ct.initDSNV();
cout << "\n\nTest: 2. In danh sanh nhan vien: " << endl;
ct.printfDSNV();
cout << "\n\nTest: 3.Tinh luong cho nhan vien cong ty: " << endl;
ct.tinhluongHT();
ct.printfDSNV();
cout << "\nTest: 4. Tim nhan vien theo ma nhan vien: " << endl;
int maVP = 123;
int maSX = 231;
NVVP a1 = ct.maNVVP(maVP);
a1.printfNVVP();
NVSX b1 = ct.maNVSX(maSX);
b1.printfNVSX();
cout << "\nTest 5: Cap nhat luong co ban theo ma nhan vien: " << endl;
maVP = 126;
int luongVP = 1e7;
NVVP a2 = ct.maNVVP(maVP);
ct.luongCBmaNVVP(luongVP, a2);
a2.printfNVVP();
maSX = 225;
int luongSX = 8e6;
NVSX b2 = ct.maNVSX(maSX);
ct.luongCBmaNVSX(luongSX, b2);
b2.printfNVSX();
cout << "\nTest 6: Tim nhan vien co luong cao nhat: " << endl;
ct.luongCaoNhat();
cout << "\nTest 7: Nhan vien co so san pham ban ra thap nhat: " << endl;
NVSX a3 = ct.soSPthapnhat();
a3.printfNVSX();
cout << "\nTest 8: Tim 10 nhan vien co luong cao nhat: " << endl;
ct.top10luong();
return 0;
}
Editor is loading...
Leave a Comment