con chó Phi
unknown
c_cpp
2 years ago
9.1 kB
5
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