Advertisement

c++:实现公司员工计算薪资功能

阅读量:

1、首先明确Person.h里面的内容

公司职员包含管理层中的管理者、技术部门的专业人才以及各销售领域的代表人物和负责区域管理的销售经理。

(2)当每增加一个员工,对应的员工工号就加一。

(3)薪资:部门领导月均基础薪金为8000元;技术员工日薪标准定为300元,按考勤天数发放;销售人员月收入等于其销售额乘以4%;担任销售经理职务者月薪由部门总销售额乘以2%的基础上再加派4千固定奖金。

(4)该销售经理不仅有固定的薪资收入还拥有提成奖励机制;因此,在不增加额外代码的情况下使其承袭 Manager 和 SALE_MANAGER;通过采用虚继承的方式可以在不影响现有功能的前提下节省内存占用与编程复杂度。

(5)c++中没有java中接口这个概念,可以用纯虚函数实现接口 。

为了统计销售人员的数量,并定义了两个静态成员变量:其中一个成员变量用于统计销售人员的数量,并用来获取员工的工号信息;另一个成员变量则用于记录销售人员的总收入。

复制代码
 #ifndef _PERSON_H

    
 #define _PERSON_H
    
 #include<iostream>
    
 #include<string.h>
    
 using namespace std;
    
  
    
 class Person
    
 {
    
 protected:
    
     static int count;
    
     string m_name;
    
 	double m_salary;     //访问权限定义为保护类型是为了能被继承下去
    
 	int m_id;            //工号
    
 public:
    
 	virtual void print() = 0;
    
 	virtual double Get() = 0;        //纯虚函数
    
 };
    
  
    
 class Manager : virtual public Person           //经理
    
 {
    
 protected:
    
     int m_base;
    
 public:
    
 	Manager(string n,int b);
    
 	double Get();
    
     void show();
    
 };
    
  
    
 class Technician : public Person                //技术人员
    
 {
    
 private:
    
     int m_day;
    
 public:
    
 	Technician(string n,int d);
    
 	double Get();
    
     void show();
    
 };
    
  
    
 class SaleMan : virtual public Person           //销售人员
    
 {
    
 protected:
    
     static int sum; 
    
     int m_s1;
    
 public:
    
 	SaleMan(string n,int s1);
    
 	double Get();
    
     void show();
    
 };
    
  
    
 class SaleManager : public Saleman,public Manager         //销售经理
    
 {
    
 public:
    
 	SaleManager(string n);
    
 	double Get();
    
     void show();
    
 };
    
  
    
 #endif

2、根据类中内容编写各个类的成员函数

复制代码
 #include<iostream>

    
 #include<string.h>
    
 #include"Person.h"
    
 using namespace std;
    
  
    
 int Person::count = 0;            //静态成员变量 计算工号
    
 int SaleMan::sum = 0;             //静态成员变量 计算部门销售总额
    
  
    
 Person::Person()
    
 {
    
 	count++;
    
 	m_id = count;
    
 }
    
  
    
 Manager::Manager(string n,int b=8000)
    
 {
    
 	m_name = n;
    
 	m_base = b;
    
 }
    
  
    
 double Manager::Get()
    
 {
    
 	m_salary = m_base;        //基本的固定工资
    
 	return m_salary;
    
 }
    
  
    
 void Manager::show()
    
 {
    
 	cout<< "名字:" << m_name << "工号:" << m_id << "工资:" << Get() <<endl;
    
 }	
    
  
    
 Technician::Technician(string n,int d)
    
 {
    
 	m_name = n;
    
 	m_day = d;
    
 }
    
  
    
 double Technician::Get()
    
 {
    
 	m_salary = m_day*300
    
 	return m_salary;
    
 }
    
  
    
 void Technician::show()
    
 {
    
 	cout<< "名字:" << m_name << "工号:" << m_id << "工资:" << Get() <<endl;
    
 }
    
  
    
 SaleMan::SaleMan(string n,int s1=0)
    
 {
    
 	m_name = n;
    
 	m_s1 = s1;
    
 	sum += m_s1;                //部门销售总额就是个人销售总额的和
    
 }
    
  
    
 double SaleMan::Get()
    
 {
    
 	m_salary = 0.04*m_s1;
    
 	return m_salary;
    
 }
    
  
    
 void Saleman::show()
    
 {
    
 	cout<< "名字:" << m_name << "工号:" << m_id << "工资:" << Get() <<endl;
    
 }
    
  
    
 SaleManager::SaleManager(string n) : SaleMan(n),Manager(n,4000)
    
 {
    
 	//已经继承,不需再写
    
 }
    
  
    
 double SaleManager::Get()
    
 {
    
 	m_salary = 0.02*sum + m_base;
    
 	return m_salary;
    
 }
    
  
    
 void SaleManager::show()
    
 {
    
 	cout<< "名字:" << m_name << "工号:" << m_id << "工资:" << Get() <<endl;
    
 }

3、最后编写main函数,实现功能

复制代码
 #include <iostream>

    
 #include "Person.h"
    
 using namespace std;
    
  
    
 int main()
    
 {
    
 	srand(time(NULL));
    
 	char name[20] = {0};
    
 	Person *p1[5] = {0};
    
 	Person *p2[10] = {0};
    
 	Person *p3 = NULL;
    
 	Person *p4 = new Manager("aa",8000);
    
 	
    
 	for(int i=0;i<5;i++)     //技术人员
    
 	{
    
 		sprintf(name,"Technician%d",i);
    
 		p1[i] = new Technician(name,rand() % 22 + 1);
    
     p1[i]->show();
    
 	}
    
 	
    
 	for(int i=0;i<10;i++)     //销售人员
    
 	{
    
 		sprintf(name,"S%d",i);
    
 		p2[i] = new SaleMan(name,rand() % 100000);
    
     p2[i]->show();
    
 	}
    
 	
    
 	p3 = new SaleManager("bb");
    
     p3->show();
    
 	
    
 	return 0;
    
 }

全部评论 (0)

还没有任何评论哟~