con chó Phi

 avatar
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