要求編寫一個簡單的人員信息管理程序,具體要求如下:

(1)程序涉及到五個類,分別是employee,technician,salesman,manager,salsemanager。這五個類的關係爲:employee是頂層父類,technician,salesman,manager是employee的子類,salsemanager是salesman,manager的子類。

(2)employee具有員工號,姓名,收入等屬性,有設置姓名,獲取姓名,獲取員工號,獲取收入等函數。

(3)technician的收入計算方法爲工作小時數*時薪,另外具有設置工作小時數,時薪的函數,具有工作小時數和時薪的屬性。
salesman的收入計算方法爲銷售額*提成比例,另外具有設置銷售額,提成比例的函數,具有銷售額和提成比例的屬性。
manager的收入計算方法爲固定月薪,另外具有設置固定月薪的函數,具有固定月薪的屬性。salsemanager收入計算方法爲銷售額*提成比例+固定月薪。


(4)要求利用employee類型的指針數組,指向8個子類對象(technician,salesman,manager,salsemanager每個類2個),
通過相應方法輸出這些對象的姓名(姓名的初始化通過鍵盤錄入),員工號,收入(多態的形式)。

(5)整個程序分爲3個文件,employee.h,employee. cpp,mainemployee.cpp,分別用來聲明類,實現類,
以及實現主函數。在VC++環境下以project的形式進行聯編並輸出結果。

 

主函數

#include "stdafx.h"
#include<iostream>
#include "employee.h"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	  int hour=210;
	 int hourWage=13;


	  employee p1 ;
	  manager m;
	  p1.setName("張三");
	  p1.setNumber(1001);
	
	  
	  cout<<"姓名:"<<p1.getName()<<endl;
	  cout<<"工號:"<<p1.getNumber()<<endl;
	  cout<<"職位:"<<m.position()<<endl;
	  m.setMonthPay(2500);
	  cout<<"工資:"<<m.pay()<<endl;
	  cout<<"*******************:"<<endl;
	   
	  employee p2;
	  technician t;
	  p2.setName("李四");
	  p2.setNumber(1002);
	  
	  cout<<"姓名:"<<p2.getName()<<endl;
	  cout<<"工號:"<<p2.getNumber()<<endl;
	  cout<<"職位:"<<t.position()<<endl;
	  t.setHour(hour);
	  t.setHourPay(hourWage);
	  cout<<"工資:"<<t.pay()<<endl;
	  cout<<"*******************:"<<endl;
	    employee p3;
	  salesman s;
	  p3.setName("王二");
	  p3.setNumber(1003);
	  
	  cout<<"姓名:"<<p3.getName()<<endl;
	  cout<<"工號:"<<p3.getNumber()<<endl;
	  cout<<"職位:"<<s.position()<<endl;
	  s.setRate(0.3);
	  s.setSale(20000);
	  cout<<"工資:"<<s.pay()<<endl;
	  cout<<"*******************:"<<endl;
	  	    employee p4;
	  salsemanager s1;
	  p4.setName("麻子");
	  p4.setNumber(1004);
	  
	  cout<<"姓名:"<<p4.getName()<<endl;
	  cout<<"工號:"<<p4.getNumber()<<endl;
	  cout<<"職位:"<<s1.position()<<endl;
	  s1.setRate(0.3);
	  s1.setSale(20000);
	  s1.setMonthPay(2500);
	  cout<<"工資:"<<s1.pay()<<endl;
	  cout<<"*******************:"<<endl;
	
	
	return 0;
}


類聲明

#pragma once


class employee
{
public:
	void setNumber(int number);
	void setName(char *name);
	int getNumber();
	char*getName();
	double getSalary();
	virtual double pay();
	
	int e_number;
	char e_name[20];
	double e_salary;
	
};
class manager:public employee
{
public:
	virtual void setMonthPay(int pay);
	virtual char* position( );
	double pay();
private:
	int monthPay;
};
class technician:public employee
{
public:
	void setHour(int hour);
	void setHourPay(int hourPay);
	virtual char* position();
	double pay();
	
private:
	int t_hour;
	int t_hourPay;
};
class salesman:public employee
{
public:
	virtual void setRate(double rate);
	virtual void setSale(int sale);
	virtual char* position();
    double pay();

private:
	int s_sale;
	double s_rate;
};
class salsemanager:public salesman,public manager
{
public:
	double pay();
	void setRate(double rate);
	void setSale(int sale);
	void setMonthPay(int pay);
	virtual char* position();
private:
	int s_sale;
	double s_rate;
	int monthPay;
};


類實現

#include "StdAfx.h"
//#include "employee.h"
#include<string.h>
class employee
{
public:
 void setNumber(int number);
 void setName(char *name);
 int getNumber();
 char*getName();
 double getSalary();
 virtual double pay();
private:
 int e_number;
 char e_name[20];
 double e_salary;
 
};
void employee::setNumber(int number){e_number = number;}
void employee::setName(char *name){ strcpy(e_name,name);}
int employee::getNumber(){return e_number;}
char*employee::getName(){ return e_name;}
double employee::getSalary(){ return e_salary;}
double employee::pay(){ return e_salary;}

class manager:public employee
{
public:
 virtual void setMonthPay(int pay);
 double pay();
 virtual char* position( );
private:
 int monthPay;
};

void manager::setMonthPay(int pay){ monthPay = pay;}
 double manager::pay(){ return monthPay;}
 char* manager::position( ){return "manager";}

class technician:public employee
{
public:
 void setHour(int hour);
 void setHourPay(int hourPay);
 virtual char* position();
 double pay();
 
private:
 int t_hour;
 int t_hourPay;
};
 void technician::setHour(int hour){t_hour = hour;}
 void technician::setHourPay(int hourPay){t_hourPay = hourPay;}
   char* technician::position(){ return "technician";}
 double technician::pay(){  return t_hour*t_hourPay;}

 class salesman:public employee
{
public:
 virtual void setRate(double rate);
 virtual void setSale(int sale);
 virtual char* position();
    double pay();

private:
 int s_sale;
 double s_rate;
};
 void salesman::setRate(double rate){ s_rate = rate;}
 void salesman::setSale(int sale){ s_sale = sale;}
 char* salesman::position(){ return "salesman";}
    double salesman::pay(){ return s_sale*s_rate; }

 class salsemanager:public salesman,public manager
{
public:
 double pay();
 void setRate(double rate);
 void setSale(int sale);
 virtual char* position();
 void setMonthPay(int pay);
private:
 int s_sale;
 double s_rate;
 int monthPay;
};
  double salsemanager::pay(){ return  monthPay+ s_rate*s_sale;}
 void salsemanager::setRate(double rate){ s_rate = rate;}
 void salsemanager::setSale(int sale){ s_sale = sale;}
 char* salsemanager::position(){ return "salsemanager";}
 void salsemanager::setMonthPay(int pay){ monthPay = pay;}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章