30/09/2018, 19:09
M.N ai rãnh xem giúp mình cái này với
#include<stdio.h>
#include<conio.h>
#include"iostream"
using namespace std;
class nhanvien
{
protected:
char hoten[100];
int ngay, thang, nam;
public:
nhanvien(void);
~nhanvien(void);
virtual void nhap();
virtual void xuat();
virtual long luong();
};
nhanvien::nhanvien(void)
{
}
nhanvien::~nhanvien(void)
{
}
void nhanvien::nhap()
{
cout << "Ho ten:"; fflush(stdin); gets_s(hoten);
cout << "Ngay sinh d/m/y :";
cin >> ngay; cin.ignore(); cin >> thang; cin.ignore(); cin >> nam;
}
void nhanvien::xuat()
{
cout << hoten << endl << "Ngay sinh: " << ngay << "/" << thang << "/" << nam << endl;
}
long nhanvien::luong()
{
return 0;
}
class sanxuat : virtual public nhanvien
{
private:
long luongcoban, sosp;
public:
sanxuat(void);
~sanxuat(void);
virtual void nhap();
virtual void xuat();
virtual long luong();
};
sanxuat::sanxuat(void)
{
}
sanxuat::~sanxuat(void)
{
}
void sanxuat::nhap()
{
nhanvien::nhap();
cout << "Luong co ban:"; cin >> luongcoban;
cout << "So san pham:"; cin >> sosp;
}
void sanxuat::xuat()
{
nhanvien::xuat();
cout << "Luong co ban:" << luongcoban << endl << "So san pham :" << sosp << endl;
}
long sanxuat::luong()
{
return luongcoban + sosp * 5000;
}
class vanphong : virtual public nhanvien
{
private:
int songay;
public:
vanphong(void);
~vanphong(void);
virtual void nhap();
virtual void xuat();
virtual long luong();
};
vanphong::vanphong(void)
{
}
vanphong::~vanphong(void)
{
}
void vanphong::nhap()
{
nhanvien::nhap();
cout << "So ngay lam viec: "; cin >> songay;
}
void vanphong::xuat()
{
nhanvien::xuat();
cout << "So ngay lam viec:" << songay << endl;
}
long vanphong::luong()
{
return songay * 100000;
}
class quanlynhanvien
{
private:
nhanvien **x;
int n;
public:
quanlynhanvien(void);
~quanlynhanvien(void);
void nhap();
void xuat();
};
quanlynhanvien::quanlynhanvien(void)
{
n = 0;
x = new nhanvien*[1000];
}
quanlynhanvien::~quanlynhanvien(void)
{
delete[]x;
}
void quanlynhanvien::nhap()
{
int k;
for (int i = 0;; i++)
{
do{
cout << "
Loai nhan vien:
1-Van phong
2-San xuat
0-Ket thuc
";
cin >> k;
if (k != 1 && k != 2 && k != 0) cout << "
khong hop le!
";
} while (k != 1 && k != 2 && k != 0);
if (k == 0) return;
else if (k == 1)
{
n++;
x[i] = new vanphong;
}
else
{
n++;
x[i] = new sanxuat;
}
x[i]->nhap();
}
}
void quanlynhanvien::xuat()
{
cout << "So nhan vien = " << n << "
";
for (int i = 0; i<n; i++)
{
cout << endl;
x[i]->xuat();
cout << "Luong = " << x[i]->luong();
cout << endl;
}
}
void main()
{
quanlynhanvien x;
x.nhap();
x.xuat();
system("pause");
}
Bài này mình code trong 1 file cpp thì chạy ok, nhưng khi tách ra các file header thì nó bị vấn đề này:khi ctrl+F5 nó chỉ cho mình nhập lương và tính lương, không cho nhập họ tên, ngày sinh. Mình không hiểu nó bị lỗi j trong quá trình kế thừa đa hình nữa
Bài liên quan