Untitled
unknown
plain_text
a year ago
10 kB
2
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