SLIDE1

Saturday, May 16, 2015

[OOP C++] quản lý nhân viên và tính lương cho từng nhân viên

bài tập OOP C++. Giả sử Công ty có hai loại nhân viên: Nhân viên văn phòng và Nhân viên sản xuất. Viết chương trình quản lý và tính lương cho từng nhân viên của công ty: Mỗi nhân viên cần quản lý các thông tin sau: Họ tên, ngày sinh, lương Công ty cần tính lương cho nhân viên như sau: - Đối với nhân viên sản xuất:  Lương=lương căn bản + số sản phẩm * 5.000 - Đối nhân viên văn phòng:  lương = số ngày làm việc * 100.000
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");
}