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"); }