con chó Phi
unknown
c_cpp
10 months ago
9.1 kB
1
Indexable
//#include <iostream> //#include <vector> //#include <string> // //using namespace std; // //class BaiHat { //private: // string tenBaiHat; // int namSanXuat; // //public: // // BaiHat(const string& ten, int nam) : tenBaiHat(ten), namSanXuat(nam){} // // string getTenBaiHat() const // { // return tenBaiHat; // } // // int getNamSanXuat() const // { // return namSanXuat; // } //}; // //class NgheSi { //protected: // string maNgheSi; // double hoaHong; //public: // NgheSi(const string& ma, double hh) : maNgheSi(ma), hoaHong(hh) {} // // virtual double tinhThuNhap() const = 0; // Phương thức trừu tượng // // virtual void hienThiThongTin() const = 0; // Phương thức trừu tượng // //}; // //class CaSi : public NgheSi { //private: // vector<BaiHat> cacBaiHatTrinhBay; // //public: // CaSi(const string& ma, double hh) // : NgheSi(ma, hh) {} // // void themBaiHat(const BaiHat& baiHat) { // cacBaiHatTrinhBay.push_back(baiHat); // } // // double tinhThuNhap() const override { // return 1500000 * cacBaiHatTrinhBay.size() + hoaHong; // } // // void hienThiThongTin() const override { // cout << "Ca Si: " << maNgheSi << "\n" // << "Thu Nhap: " << tinhThuNhap() << "\n" // << "Cac Bai Hat Trinh Bay: "; // for (const auto& baiHat : cacBaiHatTrinhBay) { // cout << baiHat.getTenBaiHat() << " (" << baiHat.getNamSanXuat() << "), "; // } // cout << endl; // } //}; // //class NhaSoanNhac : public NgheSi { //private: // double heSoSangTac; // vector<BaiHat> cacBaiHatSangTac; // //public: // NhaSoanNhac(const string& ma, double hh, double hsst) // : NgheSi(ma, hh), heSoSangTac(hsst) {} // // void themBaiHat(const BaiHat& baiHat) { // cacBaiHatSangTac.push_back(baiHat); // } // // double tinhThuNhap() const override // { // return 1500000 * cacBaiHatSangTac.size() * heSoSangTac + hoaHong; // } // // void hienThiThongTin() const override // { // cout << "Nha Soan Nhac: " << maNgheSi << "\n" // << "Thu Nhap: " << tinhThuNhap() << "\n" // << "Cac Bai Hat Sang Tac: "; // for (const auto& baiHat : cacBaiHatSangTac) { // cout << baiHat.getTenBaiHat() << " (" << baiHat.getNamSanXuat() << "), "; // } // cout << endl; // } //}; // //class QuanLy { //private: // vector<NgheSi*> danhSachNgheSi; // //public: // // void themNgheSi(NgheSi* ngheSi) { // danhSachNgheSi.push_back(ngheSi); // } // // void hienThiTatCaNgheSi() const { // for (const auto& ngheSi : danhSachNgheSi) { // ngheSi->hienThiThongTin(); // cout << "-----------------------------------\n"; // } // } // // double tinhTongThuNhap() const { // double tongThuNhap = 0; // for (const auto& ngheSi : danhSachNgheSi) { // tongThuNhap += ngheSi->tinhThuNhap(); // } // return tongThuNhap; // } // // void nhapDuLieu() { // int luaChon; // while (true) { // cout << "Chon loai nghe si de nhap (1. Ca Si, 2. Nha Soan Nhac, 0. Thoat): "; // cin >> luaChon; // if (luaChon == 0) break; // // string ma; // double hoaHong; // cout << "Nhap ma nghe si: "; // cin >> ma; // cout << "Nhap hoa hong: "; // cin >> hoaHong; // // if (luaChon == 1) { // CaSi* casi = new CaSi(ma, hoaHong); // int soBaiHat; // cout << "Nhap so bai hat: "; // cin >> soBaiHat; // for (int i = 0; i < soBaiHat; ++i) { // string tenBaiHat; // int namSanXuat; // cout << "Nhap ten bai hat " << i + 1 << ": "; // cin.ignore(); // Xóa bộ đệm // getline(cin, tenBaiHat); // cout << "Nhap nam san xuat: "; // cin >> namSanXuat; // casi->themBaiHat(BaiHat(tenBaiHat, namSanXuat)); // } // themNgheSi(casi); // } // else if (luaChon == 2) { // double heSoSangTac; // cout << "Nhap he so sang tac: "; // cin >> heSoSangTac; // NhaSoanNhac* nsn = new NhaSoanNhac(ma, hoaHong, heSoSangTac); // int soBaiHat; // cout << "Nhap so bai hat: "; // cin >> soBaiHat; // for (int i = 0; i < soBaiHat; ++i) { // string tenBaiHat; // int namSanXuat; // cout << "Nhap ten bai hat " << i + 1 << ": "; // cin.ignore(); // Xóa bộ đệm // getline(cin, tenBaiHat); // cout << "Nhap nam san xuat: "; // cin >> namSanXuat; // nsn->themBaiHat(BaiHat(tenBaiHat, namSanXuat)); // } // themNgheSi(nsn); // } // } // } //}; // //int main() { // QuanLy ql; // // // Dữ liệu mẫu // CaSi* casi1 = new CaSi("CS001", 2000000); // casi1->themBaiHat(BaiHat("Bai Hat 1", 2020)); // casi1->themBaiHat(BaiHat("Bai Hat 2", 2021)); // // NhaSoanNhac* nsn1 = new NhaSoanNhac("NSN001", 3000000, 1.5); // nsn1->themBaiHat(BaiHat("Bai Hat 3", 2020)); // nsn1->themBaiHat(BaiHat("Bai Hat 4", 2021)); // // ql.themNgheSi(casi1); // ql.themNgheSi(nsn1); // // ql.hienThiTatCaNgheSi(); // cout << "Tong Thu Nhap Cua Tat Ca Nghe Si: " << ql.tinhTongThuNhap() << endl; // // // Nhập dữ liệu từ bàn phím // ql.nhapDuLieu(); // // // Hiển thị thông tin sau khi nhập // ql.hienThiTatCaNgheSi(); // cout << "Tong Thu Nhap Cua Tat Ca Nghe Si: " << ql.tinhTongThuNhap() << endl; // // return 0; //} #include <iostream> #include <vector> #include <string> using namespace std; class BaiHat { private: string tenBaiHat; int namSanXuat; public: BaiHat(const string& ten, int nam) : tenBaiHat(ten), namSanXuat(nam) {} string getTenBaiHat() const { return tenBaiHat; } int getNamSanXuat() const { return namSanXuat; } }; class NgheSi { protected: string maNghesi; double hoaHong; public: NgheSi(const string& ma, const double& hh) : maNghesi(ma), hoaHong(hh) {} virtual double tinhThunhap() const = 0; virtual void xuatThongtin() const = 0; }; class CaSi : public NgheSi { private: vector<BaiHat> cacBaiHatTrinhBay; public: CaSi(const string& ma, const double& hh) : NgheSi(ma, hh) {} void themBaiHat(const BaiHat& bh) { cacBaiHatTrinhBay.push_back(bh); } double tinhThunhap() const override { return 1500000 * cacBaiHatTrinhBay.size() + hoaHong; } void xuatThongtin() const override { cout << "Ca si: " << maNghesi << endl << "Thu nhap: " << tinhThunhap() << endl << "Cac bai hat da trinh bay: "; for (const auto& bh : cacBaiHatTrinhBay) { cout << bh.getTenBaiHat() << " (" << bh.getNamSanXuat() << "), "; } cout << endl; } }; class TacGia : public NgheSi { private: double heSoSangTac; vector<BaiHat> cacBaiHatSangTac; public: TacGia(const string& ma, double hh, const double& hsst) : NgheSi(ma, hh), heSoSangTac(hsst) {} void themBaiHat(const BaiHat& bh) { cacBaiHatSangTac.push_back(bh); } double tinhThunhap() const override { return 1500000 * cacBaiHatSangTac.size() * heSoSangTac + hoaHong; } void xuatThongtin() const override { cout << "Nha sang tac: " << maNghesi << endl << "Thu nhap: " << tinhThunhap() << endl << "Cac bai hat da sang tac: "; for (const auto& bh : cacBaiHatSangTac) { cout << bh.getTenBaiHat() << " (" << bh.getNamSanXuat() << "), "; } cout << endl; } }; class TrungTamQuanLy { private: vector<NgheSi*> danhSachNgheSi; public: void khoiTaoNgheSi() { CaSi* casi1 = new CaSi("CS001", 2000000); casi1->themBaiHat(BaiHat("Bai Hat 1", 2020)); casi1->themBaiHat(BaiHat("Bai Hat 2", 2021)); TacGia* tacgia1 = new TacGia("NSN001", 3000000, 1.5); tacgia1->themBaiHat(BaiHat("Bai Hat 3", 2020)); tacgia1->themBaiHat(BaiHat("Bai Hat 4", 2021)); danhSachNgheSi.push_back(casi1); danhSachNgheSi.push_back(tacgia1); } double tinhTongThuNhap() const { double tongThuNhap = 0; for (const auto& ns : danhSachNgheSi) { tongThuNhap += ns->tinhThunhap(); } return tongThuNhap; } void hienThiTatCaNgheSi() const { for (const auto& ns : danhSachNgheSi) { ns->tinhThunhap(); ns->xuatThongtin(); } } }; int main() { TrungTamQuanLy trungtamcanhac; trungtamcanhac.khoiTaoNgheSi(); trungtamcanhac.hienThiTatCaNgheSi(); trungtamcanhac.tinhTongThuNhap(); }
Editor is loading...
Leave a Comment