# include <iostream>
# include <fstream>
# include <iomanip>
using namespace std;
class SINHVIEN
{
protected:
char masv[10];
char hoten[25];
char khoa[10];
char lop[5];
float TRR, CTDLGT, LTHDT;
public:
void NHAP();
};
class CNPM : public SINHVIEN
{
protected:
float PTTKHT, KNPM;
float trungbinh_CNPM;
public:
void NHAP_CNPM();
void INRA_CNPM();
void SUA_CNPM();
float DTB_CNPM();
};
class QTM : public SINHVIEN
{
protected:
float mangCB, mangNC;
float trungbinh_QTM;
public:
void NHAP_QTM();
void INRA_QTM();
void SUA_QTM();
float DTB_QTM();
private:
};
void SINHVIEN::NHAP()
{
cout << "Ma Sinh Vien : "; cin.getline(masv, 10);
cout << "Ho va Ten: "; cin.getline(hoten, 25);
cout << "Khoa : "; cin.getline(khoa, 10);
cout << "Lop : "; cin.getline(lop, 5);
cout << "Diem Toan RR, CTDLGT, LTHDT: ";
cin >> TRR >> CTDLGT >> LTHDT; cin.ignore();
}
void CNPM::NHAP_CNPM()
{
CNPM pm;
fstream FW;
char ok;
FW.open("CNPM.DAT", ios::out);
cout << "\n Nhap ds sinh vien lop CNPM \n";
while (1)
{
pm.NHAP();
//float PTTKHT, KNPM;
//float trungbinh_CNPM;
cout << " Diem PT-K-HT : "; cin >> pm.PTTKHT; cin.ignore();
cout << " Diem KNPM : "; cin >> pm.KNPM; cin.ignore();
FW.write((char*)&pm, sizeof(pm));
cout << "\n Tiep tuc (C/K) ?"; cin >> ok; cin.ignore();
if (ok == 'k' || ok == 'K') break;
}
FW.close();
}
float CNPM::DTB_CNPM()
{
return (TRR * 3 + CTDLGT * 4 + LTHDT * 4 + PTTKHT * 3 + KNPM * 3) / 17.0;
}
void CNPM::INRA_CNPM()
{
CNPM pm;
fstream FR;
FR.open("CNPM.DAT", ios::in);
if (FR.fail()) { cout << "\n Loi mo tep tin"; return; }
cout << "\n Danh sach sinh vien lop CNPM \n";
int TT = 1;
while (FR.read((char*)&pm, sizeof(pm)))
{
cout << "\n" << setw(3) << TT << " ";
cout << setw(10) << pm.masv << setw(25) << pm.hoten << setw(8) << pm.khoa
<< setw(7) << pm.lop << setw(4) << pm.TRR << setw(4) << pm.CTDLGT << setw(4) << pm.LTHDT << setw(4) << pm.KNPM << setw(4) << pm.PTTKHT << DTB_CNPM() << endl;
//cin >> TRR >> CTDLGT >> LTHDT;
TT = TT + 1;
}
FR.close();
}
void CNPM::SUA_CNPM()
{
CNPM pm;
fstream FW;
int n; char ok;
cout << "\n Nhap ban ghi can sua:";
cin >> n; cin.ignore();
FW.open("CNPM.DAT", ios::in | ios::out);
if (FW.fail()) { cout << " \n Loi mo tep "; return; }
cout << "\n nhap du lieu sua lai:\n ";
cout << "Ma sinh vien: "; cin.getline(pm.masv, 10);
cout << "Ho va ten : "; cin.getline(pm.masv, 25);
cout << "Khoa : "; cin.getline(pm.khoa, 10);
cout << "Lop : "; cin.getline(pm.lop, 5);
cout << "Diem Toan RR, CTDLGT, LTHDT: ";
cin >> pm.TRR >> pm.CTDLGT >> pm.LTHDT; cin.ignore();
cout << " Diem PT-K-HT : "; cin >> pm.PTTKHT; cin.ignore();
cout << " Diem KNPM : "; cin >> pm.KNPM; cin.ignore();
cout << "\nNhap nua khong (C/K) ? ";
cin >> ok; cin.ignore();
FW.seekp((n - 1) * sizeof(pm)); //chuyen con tron den ban ghi thu n
if (ok == 'c' || ok == 'C') FW.write((char*)&pm, sizeof(pm)); //ghi lai ban ghi
FW.close();
}
void QTM::NHAP_QTM()
{
QTM qtm;
fstream FW;
char ok;
FW.open("QTM.DAT", ios::out);
cout << "\n Nhap ds sinh vien lop QTM \n";
while (1)
{
qtm.NHAP();
//float PTTKHT, KNqtm;
//float trungbinh_QTM;
cout << " Diem Mang CB : "; cin >> qtm.mangCB; cin.ignore();
cout << " Diem Mang NC : "; cin >> qtm.mangNC; cin.ignore();
FW.write((char*)&qtm, sizeof(qtm));
cout << "\n Tiep tuc (C/K) ?"; cin >> ok; cin.ignore();
if (ok == 'k' || ok == 'K') break;
}
FW.close();
}
float QTM::DTB_QTM()
{
return (TRR * 3 + CTDLGT * 4 + LTHDT * 4 + mangCB * 3 + mangNC * 3) / 17.0;
}
void QTM::INRA_QTM()
{
QTM qtm;
fstream FR;
FR.open("QTM.DAT", ios::in);
if (FR.fail()) { cout << "\n Loi mo tep tin"; return; }
cout << "\n Danh sach sinh vien lop QTM \n";
int TT = 1;
while (FR.read((char*)&qtm, sizeof(qtm)))
{
cout << "\n" << setw(3) << TT << " ";
cout << setw(10) << qtm.masv << setw(25) << qtm.hoten << setw(8) << qtm.khoa
<< setw(7) << qtm.lop << setw(4) << qtm.TRR << setw(4) << qtm.CTDLGT << setw(4) << qtm.LTHDT << setw(4) << qtm.mangCB << setw(4) << qtm.mangNC << DTB_QTM() << endl;
//cin >> TRR >> CTDLGT >> LTHDT;
TT = TT + 1;
}
FR.close();
}
void QTM::SUA_QTM()
{
QTM qtm;
fstream FW;
int n; char ok;
cout << "\n Nhap ban ghi can sua:";
cin >> n; cin.ignore();
FW.open("QTM.DAT", ios::in | ios::out);
if (FW.fail()) { cout << " \n Loi mo tep "; return; }
cout << "\n nhap du lieu sua lai:\n ";
cout << "Ma sinh vien: "; cin.getline(qtm.masv, 10);
cout << "Ho va ten : "; cin.getline(qtm.masv, 25);
cout << "Khoa : "; cin.getline(qtm.khoa, 10);
cout << "Lop : "; cin.getline(qtm.lop, 5);
cout << "Diem Toan RR, CTDLGT, LTHDT: ";
cin >> qtm.TRR >> qtm.CTDLGT >> qtm.LTHDT; cin.ignore();
cout << " Diem mang CB : "; cin >> qtm.mangCB; cin.ignore();
cout << " Diem Mang NC : "; cin >> qtm.mangNC; cin.ignore();
cout << "\nNhap nua khong (C/K) ? ";
cin >> ok; cin.ignore();
FW.seekp((n - 1) * sizeof(qtm)); //chuyen con tron den ban ghi thu n
if (ok == 'c' || ok == 'C') FW.write((char*)&qtm, sizeof(qtm)); //ghi lai ban ghi
FW.close();
}
int main()
{
CNPM pm;
pm.NHAP_CNPM();
pm.INRA_CNPM();
pm.SUA_CNPM();
pm.INRA_CNPM();
QTM qtm;
qtm.NHAP_QTM();
qtm.INRA_QTM();
qtm.SUA_QTM();
qtm.INRA_QTM();
cin.ignore();
}