C++小型公司员工管理系统

小型公司员工管理系统

 

(为了避免繁琐的初始化,所有虚基类的构造函数均不带参数,,采用键盘录入的方式赋值)

 

子对象:教育背景类==CEducation

(毕业学校,最高学历)

 

员工类==Staff

(属性:姓名,工作编号,基本工资,奖金,当月出勤记录;教育背景(子对象))

(行为:录入和显示信息,根据考勤等因素计算月薪(不同类别的员工计算的方法各不相同)【所以可以把这个声明为虚函数,当然也可以静态联编,使用作用域限定符就好了】) 

 

                                                                           销售人员                      行政人员                     经理


                                                                                                                  销售经理


#ifndef _WOSHILEIA_H_
#define _WOSHILEIA_H_
#include
   
   
    
    
using namespace std;
#include
    
    
     
     
#include
     
     
      
      
class CEducation  //定义教育背景类
{
public:
	CEducation();  //空的构造函数
	void Seteducation(void);  //输入毕业学校和最高学历
	void Geteducation(void); //输出毕业学校和最高学历
protected:
	char *gra_school;	//毕业学校
	char highest_edu;  //最高学历
};
class Staff  //定义职员类
{
public:
	Staff();  //空的构造函数
	void SetStaff(void);  //输入职员信息
	void show(void);      //显示职员信息
protected:
	char name[20];  //职员姓名
	long number;  //工作编号
	int base_salary;  //基础工资
	int award; //奖金
	double attendance; //当月出勤记录(0~1之间)
	CEducation education;  //教育背景子对象
};
class Salemen:virtual public Staff  //定义销售人员类
{
public:
	Salemen();  //空的构造函数
	void SetPerAmount(void);//输入个人销售额
	void SetPerRate(void); //输入销售人员提成率
	void GetSalary(void);//计算当月工资
protected:
	int PerAmount;//个人销售额
	double PerRate;//提成比例
};
class Excutive:public Staff  //定义行政人员类
{
public:
	Excutive();  //空的构造函数
	void GetSalary(void); //计算当月工资
};
class Manager :virtual public Staff //定义经理类
{
public:
	Manager(); //定义空的构造函数
	void SetComAmount(void); //输入公司销售额
	void SetComRate(void); //输入经理提成比例
	void GetSalary(void); //计算当月工资
protected:
	int Amount;//销售额
	double Rate;//提成比例
};
class Sale_Manager:public Salemen,public Manager //定义销售经理类
{
public:
	Sale_Manager(); //定义空的构造函数
	void GetSalary(void); //计算当月工资
};
#endif
     
     
    
    
   
   
#include"woshileia.h"
CEducation::CEducation(){};//CEducation类的空的构造函数
void CEducation::Seteducation(void)//输入毕业学校和最高学历
{
	char *temp_stu = new char[50];
	cout << "请输入毕业学校:";
	cin >> temp_stu;
	cout <
   
   
    
    << "请输入最高学历(专科H、本科B、硕研M、博研D):";
	cin >> highest_edu;
	highest_edu = toupper(highest_edu);
	gra_school = new char[strlen(temp_stu) + 1];
	strcpy(gra_school, temp_stu);
	delete[]temp_stu;
}
void CEducation::Geteducation(void)//输出毕业学校和最高学历
{
	cout << "毕业学校:" << gra_school << endl;
	switch (highest_edu)
	{
	case 'H':
		cout << "专科" << endl;
		break;
	case 'B':
		cout << "本科" << endl;
		break;
	case 'M':
		cout << "硕研" << endl;
		break;
	case 'D':
		cout << "博研" << endl; 
		break;
	}
}
Staff::Staff(){};//Staff类的空的构造函数
void Staff::SetStaff(void) //输入职员信息
{
	cout << "请输入姓名:";
	cin >> name;
	cout << "请输入工作编号:";
	cin >> number;
	cout << "请输入基础工资:";
	cin >> base_salary;
	cout << "请输入奖金:";
	cin >> award;
	cout<< "请输入当月出勤记录:";
	cin >> attendance;
}
void Staff::show(void)
{
	cout <
    
    
     
     << "姓名:" << name << endl << "工作编号:" << number << endl << "基本工资:" << base_salary << endl;
	cout<< "奖金:" << award << endl;
}
Salemen::Salemen(void){};//Salemen类的空的构造函数
void Salemen::SetPerAmount(void)
{
	cout << "请输入个人销售额:";
	cin >> PerAmount;
}
void Salemen::SetPerRate(void)
{
	cout << "请输入销售人员的提成比例:";
	cin >> PerRate;
}
void Salemen::GetSalary(void)
{
	cout <<"当月工资:" << base_salary + award + PerAmount*PerRate - (1 - attendance) * 200;
}
Excutive::Excutive(void){};//Excutive类的空的构造函数
void Excutive::GetSalary(void)
{
	cout << "当月工资:" << base_salary + award - (1 - attendance) * 200;
}
Manager::Manager(void){};//Manager类的空构造函数
void Manager::SetComAmount(void)
{
	cout <<  "请输入公司销售额:";
	cin >> Amount;
}
void Manager::SetComRate(void)
{
	cout <<"请输入经理的提成比例:";
	cin >> Rate;
}
void Manager::GetSalary(void)
{
	cout << "当月工资:" << base_salary + award + Amount*Rate - (1-attendance) * 200;
}
Sale_Manager::Sale_Manager(void){};//Sale_Manager类的空构造函数
void Sale_Manager::GetSalary(void)
{
	cout << "当月工资:" << base_salary + award + PerAmount*PerRate + Amount*Rate - (1 - attendance) * 200;
}
    
    
   
   
#include"woshileia.h"
#include
   
   
    
    
int main(void)
{
	char flag = 'y';
	int choose;
	while (toupper(flag) == 'Y')
	{
		cout << "请选择人员类别(1.销售人员,2.行政人员,3.经理,4.销售经理):";
		cin >> choose;
		switch (choose)
		{
		case 1:
		{
				  Salemen person;
				  person.SetStaff();
				  person.SetPerAmount();
				  person.SetPerRate();
				  cout << "================================================" << endl;
				  person.show();
				  person.GetSalary();
				  break;
		}
		case 2:
		{
				  Excutive person;
				  person.SetStaff();
				  cout << "================================================" << endl;
				  person.show();
				  person.GetSalary();
				  break;
		}
		case 3:
		{
				  Manager person;
				  person.SetStaff();
				  person.SetComAmount();
				  person.SetComRate();
				  cout << "================================================" << endl;
				  person.show();
				  person.GetSalary();
				  break;
		}
		case 4:
		{
				  Sale_Manager person;
				  person.SetStaff();
				  person.SetPerAmount();
				  person.SetPerRate();
				  person.SetComAmount();
				  person.SetComRate();
			      cout << "================================================" << endl;
				  person.show();
				  person.GetSalary();
				  break;
		}
		}
		cout << endl << "================================================";
		cout << endl << "是否继续输入信息(“是”[y],“否”[n]):";
		cin >> flag;
	}
	system("pause");
	return 0;
} 
   
   

  • 4
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值