nhanvien.h
#pragma once
#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.cpp
#include "nhanvien.h"
nhanvien::nhanvien(void)
{
}
nhanvien::~nhanvien(void)
{
}
void nhanvien::nhap()
{
cout<<"ho ten:";fflush(stdin);gets(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;
}
sanxuat.h
#pragma once
#include "nhanvien.h"
class sanxuat :
virtual public nhanvien
{
private:
long luongcoban,sosp;
public:
sanxuat(void);
~sanxuat(void);
virtual void nhap();
virtual void xuat();
virtual long luong();
};
sanxuat.cpp
#include "sanxuat.h"
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;
}
vanphong.h
#pragma once
#include "nhanvien.h"
class vanphong :
virtual public nhanvien
{
private:
int songay;
public:
vanphong(void);
~vanphong(void);
virtual void nhap();
virtual void xuat();
virtual long luong();
};
canphong.cpp
#include "vanphong.h"
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;
}
quanlynhanvien.h
#pragma once
#include"nhanvien.h"
#include<vector>
using namespace std;
class quanlynhanvien
{
private:
nhanvien **x;
int n;
public:
quanlynhanvien(void);
~quanlynhanvien(void);
void nhap();
void xuat();
};
quanlynhanvien.cpp
#include "quanlynhanvien.h"
#include"vanphong.h"
#include"sanxuat.h"
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<<"\nloai nhan vien: \n1-van phong\n2-san xuat\n0-ket thuc\n";
cin>>k;
if(k!=1 && k!=2 && k!=0) cout<<"\nkhong hop le!\n";
}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<<"\n";
for(int i=0;i<n;i++)
{
cout<<endl;
x[i]->xuat();
cout<<"luong = "<<x[i]->luong();
cout<<endl;
}
}
main.cpp
#include"quanlynhanvien.h"
void main()
{
quanlynhanvien x;
x.nhap();
x.xuat();
system("pause");
}






.png)