#include <iostream>
#include <string>
using namespace std;
// ==================== KHỐI 1: KHAI BÁO LỚP ====================
// Lớp SV - Sinh viên cơ bản
class SV {
protected:
string Lop;
string Hoten;
public:
SV();
SV(string lop, string ten);
virtual ~SV();
virtual void nhapDuLieu();
virtual void hienThiThongTin();
};
// Lớp SVSP - Sinh viên Sư phạm
class SVSP : public SV {
protected:
double Dtb;
double Hocbong;
public:
SVSP();
SVSP(string lop, string ten, double dtb, double hb);
virtual ~SVSP();
void nhapDuLieu() override;
void hienThiThongTin() override;
};
// Lớp SVCN - Sinh viên Cử nhân
class SVCN : public SVSP {
private:
double Hocphi;
public:
SVCN();
SVCN(string lop, string ten, double dtb, double hb, double hp);
~SVCN();
void nhapDuLieu() override;
void hienThiThongTin() override;
};
// ==================== KHỐI 2: ĐỊNH NGHĨA HÀM
====================
// Định nghĩa các hàm của lớp SV
SV::SV() {
Lop = "";
Hoten = "";
}
SV::SV(string lop, string ten) : Lop(lop), Hoten(ten) {}
SV::~SV() {}
void SV::nhapDuLieu() {
cout << "Nhap lop: ";
cin.ignore();
getline(cin, Lop);
cout << "Nhap ho ten: ";
getline(cin, Hoten);
}
void SV::hienThiThongTin() {
cout << "Lop: " << Lop << endl;
cout << "Ho ten: " << Hoten << endl;
}
// Định nghĩa các hàm của lớp SVSP
SVSP::SVSP() : SV() {
Dtb = 0.0;
Hocbong = 0.0;
}
SVSP::SVSP(string lop, string ten, double dtb, double hb)
: SV(lop, ten), Dtb(dtb), Hocbong(hb) {}
SVSP::~SVSP() {}
void SVSP::nhapDuLieu() {
SV::nhapDuLieu();
cout << "Nhap diem trung binh: ";
cin >> Dtb;
cout << "Nhap hoc bong: ";
cin >> Hocbong;
}
void SVSP::hienThiThongTin() {
SV::hienThiThongTin();
cout << "Diem trung binh: " << Dtb << endl;
cout << "Hoc bong: " << Hocbong << endl;
}
// Định nghĩa các hàm của lớp SVCN
SVCN::SVCN() : SVSP() {
Hocphi = 0.0;
}
SVCN::SVCN(string lop, string ten, double dtb, double hb, double hp)
: SVSP(lop, ten, dtb, hb), Hocphi(hp) {}
SVCN::~SVCN() {}
void SVCN::nhapDuLieu() {
SVSP::nhapDuLieu();
cout << "Nhap hoc phi: ";
cin >> Hocphi;
}
void SVCN::hienThiThongTin() {
SVSP::hienThiThongTin();
cout << "Hoc phi: " << Hocphi << endl;
}
// ==================== KHỐI 3: HÀM MAIN ====================
int main() {
SVCN* danhSachSinhVien[3];
cout << "========================================" << endl;
cout << " NHAP THONG TIN 3 SINH VIEN CU NHAN " << endl;
cout << "========================================" << endl << endl;
for (int i = 0; i < 3; i++) {
cout << "------- Sinh vien thu " << i + 1 << " -------" << endl;
danhSachSinhVien[i] = new SVCN();
danhSachSinhVien[i]->nhapDuLieu();
cout << endl;
}
cout << "========================================" << endl;
cout << " DANH SACH SINH VIEN CU NHAN " << endl;
cout << "========================================" << endl << endl;
for (int i = 0; i < 3; i++) {
cout << "------- Sinh vien thu " << i + 1 << " -------" << endl;
danhSachSinhVien[i]->hienThiThongTin();
cout << endl;
}
// Giải phóng bộ nhớ
for (int i = 0; i < 3; i++) {
delete danhSachSinhVien[i];
}
return 0;
}

Preview text:

#include #include using namespace std;
// ==================== KHỐI 1: KHAI BÁO LỚP ====================
// Lớp SV - Sinh viên cơ bản class SV { protected: string Lop; string Hoten; public: SV(); SV(string lop, string ten); virtual ~SV(); virtual void nhapDuLieu();
virtual void hienThiThongTin(); };
// Lớp SVSP - Sinh viên Sư phạm class SVSP : public SV { protected: double Dtb; double Hocbong; public: SVSP();
SVSP(string lop, string ten, double dtb, double hb); virtual ~SVSP(); void nhapDuLieu() override;
void hienThiThongTin() override; };
// Lớp SVCN - Sinh viên Cử nhân class SVCN : public SVSP { private: double Hocphi; public: SVCN();
SVCN(string lop, string ten, double dtb, double hb, double hp); ~SVCN(); void nhapDuLieu() override;
void hienThiThongTin() override; };
// ==================== KHỐI 2: ĐỊNH NGHĨA HÀM ====================
// Định nghĩa các hàm của lớp SV SV::SV() { Lop = ""; Hoten = ""; }
SV::SV(string lop, string ten) : Lop(lop), Hoten(ten) {} SV::~SV() {} void SV::nhapDuLieu() { cout << "Nhap lop: "; cin.ignore(); getline(cin, Lop);
cout << "Nhap ho ten: "; getline(cin, Hoten); } void SV::hienThiThongTin() {
cout << "Lop: " << Lop << endl;
cout << "Ho ten: " << Hoten << endl; }
// Định nghĩa các hàm của lớp SVSP SVSP::SVSP() : SV() { Dtb = 0.0; Hocbong = 0.0; }
SVSP::SVSP(string lop, string ten, double dtb, double hb)
: SV(lop, ten), Dtb(dtb), Hocbong(hb) {} SVSP::~SVSP() {} void SVSP::nhapDuLieu() { SV::nhapDuLieu();
cout << "Nhap diem trung binh: "; cin >> Dtb;
cout << "Nhap hoc bong: "; cin >> Hocbong; }
void SVSP::hienThiThongTin() { SV::hienThiThongTin();
cout << "Diem trung binh: " << Dtb << endl;
cout << "Hoc bong: " << Hocbong << endl; }
// Định nghĩa các hàm của lớp SVCN SVCN::SVCN() : SVSP() { Hocphi = 0.0; }
SVCN::SVCN(string lop, string ten, double dtb, double hb, double hp)
: SVSP(lop, ten, dtb, hb), Hocphi(hp) {} SVCN::~SVCN() {} void SVCN::nhapDuLieu() { SVSP::nhapDuLieu();
cout << "Nhap hoc phi: "; cin >> Hocphi; }
void SVCN::hienThiThongTin() { SVSP::hienThiThongTin();
cout << "Hoc phi: " << Hocphi << endl; }
// ==================== KHỐI 3: HÀM MAIN ==================== int main() { SVCN* danhSachSinhVien[3];
cout << "========================================" << endl;
cout << " NHAP THONG TIN 3 SINH VIEN CU NHAN " << endl;
cout << "========================================" << endl << endl;
for (int i = 0; i < 3; i++) {
cout << "------- Sinh vien thu " << i + 1 << " -------" << endl;
danhSachSinhVien[i] = new SVCN();
danhSachSinhVien[i]->nhapDuLieu(); cout << endl; }
cout << "========================================" << endl;
cout << " DANH SACH SINH VIEN CU NHAN " << endl;
cout << "========================================" << endl << endl;
for (int i = 0; i < 3; i++) {
cout << "------- Sinh vien thu " << i + 1 << " -------" << endl;
danhSachSinhVien[i]->hienThiThongTin(); cout << endl; } // Giải phóng bộ nhớ
for (int i = 0; i < 3; i++) { delete danhSachSinhVien[i]; } return 0; }