C++实现员工工资管理系统

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ZhangXiaoyu_sy/article/details/74503593

类的抽象与类间关系

Ø Date类:日期类,表示一个日期

Ø Department类:表示部门类。

Ø Employee类:表示员工的抽象类。

Ø Technician类:表示技术员类。

Ø Saler类:表示销售员类。

Ø Manager类:表示经理类。

Ø SalerManager类:表示销售经理类。

类间关系——组合关系,如下图如下。


1 主控模块运行界面


2 添加信息模块运行界面


3 查询信息模块运行界面



4.删除信息模块运行界面



5 显示信息模块运行界面


6 部门管理运行界面


7 部门信息浏览界面


8 按部门统计信息界面


9 工资排序运行界面


10 部门相关操作运行界面





11 退出模块运行界面


部分代码:

//data.h	//类的设计
#ifndef _EMPLOYEE
#define _EMPLOYEE

#include <map>
#include "define.h"
#include <string>
#include <fstream>
#include <iostream>
using namespace std;

/*日期类*/
class Date
{
protected:
	int age;
	int year;
	int month;
	int day;
public:  
	void Init(int y, int m, int d);
	int GetYear();
	int GetMonth();
	int GetDay();
	int GetAge();
};
/*部门类*/
class Department
{
protected:
	static int dCount;		//部门数目
	string *str;			//储存所有部门
	int *bianhao;			//部门编号 
public:
	Department();					//默认构造函数
	~Department();					//清理动态申请的空间
	void InitDep(string *s, int *b, int length);	//加载文件后初始化部门信息

	string Check(string d);			//查找是否有这个部门  <绑定关系>
	void Add(string NewDep);		//添加部门
	void Delete(string OldDep);		//删除部门
	void Modify(string OldDep, string NewDep);	//修改部门的名字   depNa原来部门的名字  dep_Na修改后的名字	
	void Scan();					//浏览部门

	int GetDNumber(string d);		//获取部门编号
	static int GetDCount();			//获取部门数目
	string GetDep(int choice);		//获取所需部门
};

/*员工抽象类*/
class Employee				//派生类成员函数可以访问直接基类的保护成员,但派生的派生则不可以
{
protected:
	static int eCount;				//员工数目
	static int MaxNum;				//最大工号
	int number;						//工号 (系统自动赋值  不输入)
	int age;						//年龄
	float salary;					//当月工资
	string name;					//姓名
	string sex;						//性别
	string department;				//员工所属的部门
	Department dep;					//部门  (类的组合)
	string job;						//岗位	
	Date date;						//日期类
public:
	Employee();						//无参(默认)构造函数
	void Init();					//初始化员工   基本信息
	virtual void Output();			//输出员工信息	(虚函数 动态多态性)
	Employee &operator =(const Employee &obj);	//重载=

	static int GetECount();				//获取员工数目
	int GetNumber();					//获取工号     
	int GetAge();						//获取员工年龄
	float GetSalary();					//获取员工当月工资
	string GetName();					//获取员工姓名
	string GetSex();					//获取员工性别
	string GetJob();					//获取员工岗位
	string GetDepartment() const;		//获取员工的部门

	void SetMaxNum(int m);				//加载文件后设置初始化最大工号
	void SetECount(int size);			//修改员工数目
	void SetName(string tname);			//修改姓名
	void SetSex(string tsex);			//修改性别
	void SetAge(int tage);				//修改年龄
	void SetJob(string tjob);			//修改岗位	
	void SetSalary(float tsalary);		//修改当月工资
	void SetDep(string tdepart);		//修改员工所属的部门 

	void InitDep(string *s, int *b, int length);		//初始化部门信息
	string Check(string d);								//查找是否有这个部门  <绑定关系>
	void AddDep(string NewDep);							//添加部门
	void DeleteDep(string OldDep);						//删除部门
	void ModifyDep(string OldDep, string NewDep);		//修改部门的名字
	void BrowseDep();									//浏览部门
	int GetDNumber(string d);							//获取部门编号
	int GetDCount() const;								//获取部门数目
	string GetDep(int choice);							//获取所需部门
};

/*技术员类*/
class Technician :virtual public Employee			//虚基类继承(至多调用一次虚基类的构造函数)
{
private:
	float hours;						//工作时间
public:
	Technician();						//无参(默认)构造函数	
	Technician(const Technician &obj);	//拷贝构造函数			    ①拷贝构造的概念是用已有对象构造新对象.


	void Input();			//输入技术员信息
	void Output();			//输出技术员信息
	float GetHours();		//获取工时
	void SetHours(float hour);//修改工时

	Technician &operator =(const Technician &obj);		//重载=		  //②赋值运算的概念是=左右操作数均已存在
	friend ostream & operator << (ostream &out, Technician &tec);		//友元函数重载输出运算符"<<"  ( 函数/运算符重载 静态多态性)
	friend istream & operator >> (istream &in, Technician &tec);		//友元函数输入重载运算符">>"  ;
};

/*销售员类*/
class Saler :virtual public Employee
{
private:
	float balance;		//销售额度
public:
	Saler();			//无参(默认)构造函数
	Saler(const Saler &obj);	//拷贝构造函数

	void Input();		//输入销售员信息
	void Output();		//输出销售员信息
	float GetBalance();	//获取员工销售额度
	void SetBalance(float tbalance);	//修改员工销售额度

	Saler &operator =(const Saler &obj);		//重载=
	friend ostream & operator << (ostream &out, Saler &s);	    //友元函数重载输出运算符"<<"  ( 函数/运算符重载 静态多态性)
	friend istream & operator >> (istream &in, Saler &s);	    //友元函数重载输出运算符"<<"  ( 函数/运算符重载 静态多态性)
};

/*经理类*/
class Manager :virtual public Employee
{

public:
	Manager();			//无参(默认)构造函数
	Manager(const Manager &obj);	//拷贝构造函数

	void Input();		//输入经理信息
	void Output();		//输出经理信息

	//Manager &operator =(const Manager &obj);		//重载=
	friend ostream & operator << (ostream &out, Manager &m);	    //友元函数重载输出运算符"<<"  ( 函数/运算符重载 静态多态性)
	friend   istream & operator >> (istream &in, Manager &m);
};

/*销售经理类*/
class SalerManager :public Saler, public Manager		//继承销售员   经理  先调用构造Saler    在调用 Manager
{
	float totalBalance;	//该部门的销售总额度
public:
	SalerManager();		//无参(默认)构造函数
	SalerManager(const SalerManager &obj);	//拷贝构造函数

	void Input();		//输入销售经理信息
	void Output();		//输出销售经理信息

	int GetNumber();
	int GetAge();
	float GetTotal();						//获取该部门的销售总额度
	float GetSalary();
	string GetName();
	string GetDepartment() const;			//获取员工的部门

	void SetName(string tname);				//修改姓名
	void SetSex(string tsex);				//修改性别
	void SetAge(int tage);					//修改年龄
	void SetJob(string tjob);				//修改岗位	
	void SetSalary(float tsalary);			//修改当月工资
	void SetDep(string tdepart);			//修改员工所属的部门 
	void SetTotal(float ttotalBalance);		//修改该部门的销售总额度


	SalerManager &operator =(const SalerManager &obj);					//重载=
	friend ostream & operator << (ostream &out, SalerManager &sm);	    //友元函数重载输出运算符"<<"  ( 函数/运算符重载 静态多态性)
	friend istream & operator >> (istream &in, SalerManager &sm);	    //友元函数重载输出运算符"<<"  ( 函数/运算符重载 静态多态性)
};

#endif

//data.cpp 类的实现
#define _CRT_SECURE_NO_WARNINGS
#include "define.h"
#include "data.h"
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

int Department::dCount = 6;		//部门数目  默认6个部门(1.财政部  2.人力部  3.营销部 4.研发部 5.信息部 6.服务部 )
int Employee::eCount = 0;		//员工数目
int Employee::MaxNum = 0;
string Dep[6] = { "财政部", "人力部", "营销部", "研发部", "信息部", "服务部" };

/********************Date类成员函数定义********************/
void Date::Init(int y,int m,int d)
{
	year = y;
	month = m;
	day = d;
}
int Date::GetYear()
{
	return year;
}
int Date::GetMonth()
{
	return month;
}
int Date::GetDay()
{
	return day;
}
int Date::GetAge()
{
	time_t t=time(NULL); 
	int yNow, mNow, dNow;
	char y[5];

	strftime(y,5,"%Y",localtime(&t));
	//字符串转数字
	sscanf(y, "%d", &yNow);
	// 计算年数
	age = yNow - year;
	return age;
}
/*****************Department类成员函数定义*****************/
Department::Department()					//默认构造函数
{
	str = new string[Department::dCount];
	for (int i = 0; i < dCount; i++)		//初始化部门名
		str[i] = Dep[i];

	bianhao = new int[Department::dCount];
	for (int i = 0; i < dCount; i++)		//初始化部门编号
		bianhao[i] = i + 1;
}

Department::~Department()					//清理动态申请的空间
{
	if (str)
		delete[]str;
	str = NULL;

	if (bianhao)
		delete[]bianhao;
	bianhao = NULL;
}

void Department::InitDep(string *s, int *b, int length)	//加载文件后初始化部门信息
{
	str = new string[length];
	bianhao = new int[length];
	for (int i = 0; i < length; i++)
	{
		str[i] = s[i];
		bianhao[i] = b[i];
	}
}

string Department::Check(string d)			//查找是否有这个部门  <绑定关系>
{
	for (int i = 0; i < dCount; i++)
	{
		if (d == str[i])
			return d;
	}
	return "0";
}

void Department::Add(string NewDep)			//添加部门
{
	if (Check(NewDep) != "0")				//部门存在 则不添加
		return;

	string *temp = new string[Department::dCount];
	int *itemp = new int[Department::dCount];
	for (int i = 0; i < dCount; i++)		//备份原有的部门
		temp[i] = str[i];
	for (int i = 0; i < dCount; i++)		//备份原有的部门编号
		itemp[i] = bianhao[i];
	if (str)
		delete[]str;
	if (bianhao)
		delete[]bianhao;

	int i;
	str = new string[Department::dCount + 1];
	bianhao = new int[Department::dCount + 1];
	for (i = 0; i < dCount; i++)		//覆盖原有的部门
		str[i] = temp[i];
	for (i = 0; i < dCount; i++)		//新增加1
		bianhao[i] = itemp[i];

	bianhao[dCount] = bianhao[i - 1] + 1;
	str[dCount] = NewDep;					//新增
	dCount++;
	cout << "添加部门成功。\n";
	delete[]temp;
}

void Department::Delete(string OldDep)		//删除部门
{
	if (dCount != 0 && Check(OldDep) != "0")
	{
		for (int i = 0; i < dCount; i++)
		{
			if (str[i] == OldDep)						//查找要删除的部门
			{
				cout << "删除" << OldDep << "部门成功!\n";
				for (int j = i; j < dCount - 1; j++)
				{
					str[j] = str[j + 1];				//将要删除的部门覆盖掉
					bianhao[j] = bianhao[j + 1];
				}
				break;
			}
		}
		dCount--;
	}
	else
		cout << "还没有该部门!\n";
}

void Department::Modify(string OldDep, string NewDep)	//修改部门的名称
{
	if (dCount != 0 && Check(OldDep) != "0")
	{
		for (int i = 0; i < dCount; i++)
		{
			if (str[i] == OldDep)						//查找要修改的部门
			{
				str[i] = NewDep;
				cout << "修改部门成功!\n";
				break;
			}
		}
	}
	else
		cout << "还没有该部门!\n";
}

void Department::Scan()						//浏览部门
{
	cout << endl;
	SIGN_3;
	for (int i = 0; i < dCount; i++)
	{
		cout << "       ┃ 选项:(" << i + 1 << ")   ┃ 编号:" << bianhao[i] << "   ┃ " << str[i] <<" ┃"<< endl;
		if (i + 1 != dCount)
			SIGN_4;
	}
	SIGN_5;
}

int  Department::GetDNumber(string d)		//获取部门编号 
{
	for (int i = 0; i < dCount; i++)
	{
		if (str[i] == d)
			return i;
	}
	return -1;
}

int Department::GetDCount()					//获取部门数目
{
	return dCount;
}

string Department::GetDep(int choice)		//获取所需部门
{
	if (choice < 0 || choice >= dCount)
		return "0";
	return str[choice];
}

/*****************Employee类成员函数定义*****************/
Employee::Employee()					//无参(默认)构造函数
{
	age = 0;							//表示还没有这个员工
	salary = 0;							//工资初始化为0
	job = "---";
	name = "---";
	number = 0;
	sex = "---";
	SetDep("----");
}
void Employee::Init()					//初始化员工
{
	string depart;
	cout << "输入姓名:";
	cin >> name;
	cout << "输入性别:";
	cin >> sex;
	while (sex != "男" && sex != "女")
	{
		cout << "输入错误!请重新输入(男或者女):";
		cin >> sex;
	}

	cout << "输入出生日期(格式为 1999-1-1):";
	char strAge[13];
	int year, month, day;
	int i;
	cin >> strAge;
	while (strAge[4] != '-' || (strAge[7] != '-'&& strAge[6]!='-'))
	{
		cout << "格式错误,请重新输入:";
		AGAIN:
		cin >> strAge;
	}
	char y[5] = {0};
	for (i = 0; i < strlen(strAge); i++)
	{
		if (strAge[i] == '-')
			break;
		y[i] = strAge[i];
	}
	int k = 0;
	char m[3] = {0};
	for (i++; i < strlen(strAge); i++)
	{
		if (strAge[i] == '-')
			break;
		m[k++] = strAge[i];
	}
	int j = 0;
	char d[3] = {0};
	for (i++; i < strlen(strAge); i++)
	{
		if (strAge[i] == '\0')
			break;
		d[j++] = strAge[i];
	}
	sscanf(y, "%d", &year);   
	sscanf(m,"%d", &month);
	sscanf(d, "%d", &day);
	if (year >2000 || year < 1900 || month>12 || day>31)
	{
		cout << "输入的日期不切实际!请重新输入:";
		goto AGAIN;
	}
	date.Init(year, month, day);
	age = date.GetAge();
	
	cout << "输入部门:";
	cin >> depart;
	while (Check(depart) == "0")
	{
		cout << "还没有" << depart << "这个部门,请重新输入:";
		cin >> depart;
	}
	SetDep(depart);
	number = MaxNum + 1;					//最大员工数加1  备注	
	eCount++;								//实际员工数加1
	MaxNum++;
}
void Employee::Output()						//输出员工信息
{

}
Employee &Employee::operator = (const Employee &obj)
{
	this->number = obj.number;				//工号
	this->name = obj.name;					//姓名
	this->sex = obj.sex;					//性别
	this->age = obj.age;					//年龄
	SetDep(department);						//部门
	this->job = obj.job;					//岗位	
	this->salary = obj.salary;				//当月工资
	return *this;
}

int Employee::GetECount()					//获取员工数目
{
	return eCount;
}
int Employee::GetNumber()					//获取工号  (函数访问静态成员数据)
{
	return number;
}
int Employee::GetAge()						//获取员工年龄
{
	return age;
}
float Employee::GetSalary()					//获取员工当月工资
{
	return salary;
}
string Employee::GetName()					//获取员工姓名
{
	return name;
}
string Employee::GetSex()					//获取员工性别
{
	return sex;
}
string Employee::GetJob()					//获取员工岗位
{
	return job;
}
string Employee::GetDepartment()  const		//获取员工的部门
{
	return department;
}

void Employee::SetMaxNum(int m)				//加载文件后设置初始化最大工号
{
	MaxNum = m;
}

void Employee::SetECount(int size)			//修改员工数目
{
	eCount = size;
}
void Employee::SetName(string tname)		//修改姓名
{
	name = tname;
}
void Employee::SetSex(string tsex)			//修改性别
{
	sex = tsex;
}
void Employee::SetAge(int tage)				//修改年龄
{
	age = tage;
}
void Employee::SetJob(string tjob)			//修改岗位	
{
	job = tjob;
}
void Employee::SetSalary(float tsalary)		//修改当月工资
{
	salary = tsalary;
}
void Employee::SetDep(string tdepart)		//修改员工所属的部门 
{
	department = tdepart;
}

void Employee::InitDep(string *s, int *b, int length)	//初始化部门信息
{
	dep.InitDep(s, b, length);
}
string Employee::Check(string d)						//查找是否有这个部门  <绑定关系>
{
	return dep.Check(d);
}
void Employee::AddDep(string NewDep)					//添加部门
{
	dep.Add(NewDep);
}
void Employee::DeleteDep(string OldDep)					//删除部门
{
	dep.Delete(OldDep);
}
void Employee::ModifyDep(string OldDep, string NewDep)	//修改部门的名字
{
	dep.Modify(OldDep, NewDep);
}
void Employee::BrowseDep()						//浏览部门
{
	dep.Scan();
}
int Employee::GetDNumber(string d)				//获取部门数目
{
	return dep.GetDNumber(d);
}
int Employee::GetDCount()const					//获取部门数目
{
	return dep.GetDCount();
}
string Employee::GetDep(int choice)				//获取所需部门
{
	return dep.GetDep(choice);
}

/**************Technician类成员函数定义*******************/
Technician::Technician()						//无参(默认)构造函数
{
	hours = 0;
	job = "技术员";
}
Technician::Technician(const Technician &obj)	//拷贝构造函数	
{
	hours = obj.hours;				//工时
	eCount = obj.eCount;			//员工数目
	number = obj.number;			//工号 (系统自动赋值  不输入)
	name = obj.name;					//姓名
	sex = obj.sex;					//性别
	age = obj.age;					//年龄
	SetDep(obj.GetDepartment());	//部门  (类的组合)
	job = obj.job;					//岗位	
	salary = obj.salary;			//当月工资
}

void Technician::Input()			//输入技术员信息
{
	this->Init();
}
void Technician::Output()			//输出技术员信息
{ 
	cout << setw(5) << number << setw(8) << name << setw(6) << sex << setw(7) << age << setw(11) << GetDepartment() << setw(10) << job << setw(6) << hours << "       ----" << setw(12) << salary << endl;
}

float Technician::GetHours()		//获取工时
{
	return hours;
}
void Technician::SetHours(float hour)	//修改工时
{
	this->hours = hour;
}

Technician &Technician::operator = (const Technician &obj)	//重载=
{
	Employee::operator = (obj);								//调用Employee的重载=
	this->hours = obj.hours;
	return *this;
}
ostream & operator << (ostream &out, Technician &tec)	    //友元函数重载输出运算符"<<"  ( 函数/运算符重载 静态多态性)
{
	out << tec.number << ' ' << tec.name << ' ' << tec.sex << ' ' << tec.age << ' ' << tec.GetDepartment()
		<< ' ' << tec.job << ' ' << tec.hours << ' ' << tec.salary << endl;
	return out;
}
istream & operator >> (istream &in, Technician &tec)	    //友元函数重载输出运算符">>"  ( 函数/运算符重载 静态多态性)
{
	in >> tec.number >> tec.name >> tec.sex >> tec.age >> tec.department
		>> tec.job >> tec.hours >> tec.salary;
	return in;
}
/****************Saler类成员函数定义********************/
Saler::Saler()				//无参(默认)构造函数
{
	job = "销售员";
	balance = 0;
}
Saler::Saler(const Saler &obj)
{
	balance = obj.balance;			//销售额度
	eCount = obj.eCount;			//员工数目
	number = obj.number;			//工号 (系统自动赋值  不输入)
	name = obj.name;				//姓名
	sex = obj.sex;					//性别
	age = obj.age;					//年龄
	SetDep(obj.GetDepartment());	//部门  (类的组合)
	job = obj.job;					//岗位	
	salary = obj.salary;			//当月工资
}

void Saler::Input()			//输入销售员信息
{
	this->Init();
}
void Saler::Output()		//输出销售员信息
{
	cout << setw(5) << number << setw(8) << name << setw(6) << sex << setw(7) << age << setw(11) << GetDepartment() << setw(10) << job << "    ---" << setw(10) << balance << setw(12) << salary << endl;
}

float Saler::GetBalance()	//获取销售额度
{
	return balance;
}
void Saler::SetBalance(float tbalance)	//修改员工销售额度
{
	balance = tbalance;
}

Saler &Saler::operator =(const Saler &obj)		//重载=
{
	Employee::operator = (obj);
	this->balance = obj.balance;
	return *this;
}
ostream & operator << (ostream &out, Saler &s)	    //友元函数重载输出运算符"<<"  ( 函数/运算符重载 静态多态性)
{
	out << s.number << ' ' << s.name << ' ' << s.sex << ' ' << s.age << ' ' << s.department << ' ' << s.job << ' ' << s.balance << ' ' << s.salary << endl;
	return out;
}
istream & operator >> (istream &in, Saler &s)	    //友元函数重载输出运算符"<<"  ( 函数/运算符重载 静态多态性)
{
	in >> s.number >> s.name >> s.sex >> s.age >> s.department
		>> s.job >> s.balance >> s.salary;
	return in;
}
/****************Manager类成员函数定义********************/
Manager::Manager()			//无参(默认)构造函数
{
	salary = REGULAR_SALARY;
	job = "经理";
}
Manager::Manager(const Manager &obj)	//拷贝构造函数
{
	eCount = obj.eCount;				//员工数目
	number = obj.number;				//工号 (系统自动赋值  不输入)
	name = obj.name;					//姓名
	sex = obj.sex;						//性别
	age = obj.age;						//年龄
	SetDep(obj.GetDepartment());		//部门  (类的组合)
	job = obj.job;						//岗位	
	salary = obj.salary;				//当月工资
}

void Manager::Input()
{
	this->Init();			//输入经理信息
}
void Manager::Output()
{
	cout << setw(5) << number << setw(8) << name << setw(6) << sex << setw(7) << age << setw(11) << department << setw(10) << job << "    ---" << "      ----" << setw(12) << salary << endl;
}

//Manager &Manager::operator = (const Manager &obj)		//重载=
//{
//	Employee::operator = (obj);
//	return *this;
//}
ostream & operator << (ostream &out, Manager &m)	    //友元函数重载输出运算符"<<"  ( 函数/运算符重载 静态多态性)
{
	out << m.number << ' ' << m.name << ' ' << m.sex << ' ' << m.age << ' ' << m.department << ' ' << m.job << ' ' << m.salary << endl;
	return out;
}
istream & operator >> (istream &in, Manager &m)	    //友元函数重载输出运算符"<<"  ( 函数/运算符重载 静态多态性)
{
	in >> m.number >> m.name >> m.sex >> m.age >> m.department
		>> m.job >> m.salary;
	return in;
}
/**************SalerManager类成员函数定义*****************/
SalerManager::SalerManager()			//无参(默认)构造函数
{
	totalBalance = 0;
}
SalerManager::SalerManager(const SalerManager &obj)
{
	eCount = obj.eCount;				//员工数目
	number = obj.number;				//工号 (系统自动赋值  不输入)
	name = obj.name;					//姓名
	sex = obj.sex;						//性别
	age = obj.age;						//年龄
	SetDep(obj.GetDepartment());		//部门  (类的组合)
	job = obj.job;						//岗位	
	salary = obj.salary;				//当月工资
	totalBalance = obj.totalBalance;	//该部门的总销售额度
}

void SalerManager::Input()					//输入销售经理信息
{
	Saler::SetJob("销售经理");
	this->Saler::Init();
}
void SalerManager::Output()					//输出销售经理信息
{
	cout << setw(5) << GetNumber() << setw(8) << GetName() << setw(6) << GetSex() << setw(7) << GetAge() << setw(11) << GetDepartment() << setw(10) << GetJob() << "    ---" << setw(10) << GetTotal() << setw(12) << GetSalary() << endl;
}

float SalerManager::GetSalary()
{
	return Saler::GetSalary();
}
float SalerManager::GetTotal()				//获取该部门的销售总额度
{
	return totalBalance;
}
int SalerManager::GetNumber()				//获取工号 
{
	return Saler::GetNumber();
}
int SalerManager::GetAge()					//获取年龄
{
	return Saler::GetAge();
}
string SalerManager::GetName()				//获取姓名
{
	return Saler::GetName();
}
string SalerManager::GetDepartment() const				//获取员工的部门
{
	return Saler::GetDepartment();
}

void SalerManager::SetTotal(float ttotalBalance)		//修改该部门的销售总额度
{
	totalBalance = ttotalBalance;
}

void SalerManager::SetName(string tname)				//修改姓名
{
	Saler::SetName(tname);
}
void SalerManager::SetSex(string tsex)					//修改性别
{
	Saler::SetSex(tsex);
}
void SalerManager::SetAge(int tage)						//修改年龄
{
	Saler::SetAge(tage);
}
void SalerManager::SetJob(string tjob)					//修改岗位	
{
	Saler::SetJob(tjob);
}
void SalerManager::SetSalary(float tsalary)				//修改当月工资
{
	Saler::SetSalary(tsalary);
}
void SalerManager::SetDep(string tdepart)				//修改员工所属的部门 
{
	Saler::SetDep(tdepart);
}

SalerManager &SalerManager::operator = (const SalerManager &obj)		//重载=
{
	Employee::operator = (obj);
	totalBalance = obj.totalBalance;
	return *this;
}
ostream & operator << (ostream &out, SalerManager &sm)	    //友元函数重载输出运算符"<<"  ( 函数/运算符重载 静态多态性)
{
	out << sm.GetNumber() << ' ' << sm.GetName() << ' ' << sm.GetSex() << ' ' << sm.GetAge() << ' ' << sm.department << ' ' << sm.GetJob() << ' ' << sm.GetTotal() << ' ' << sm.GetSalary() << endl;
	return out;
}
istream & operator >> (istream &in, SalerManager &sm)	    //友元函数重载输出运算符"<<"  ( 函数/运算符重载 静态多态性)
{
	in >> sm.number >> sm.name >> sm.sex >> sm.age >> sm.department
		>> sm.job >> sm.totalBalance >> sm.salary;
	return in;
}

完整的代码:

http://download.csdn.net/detail/zhangxiaoyu_sy/9889872

展开阅读全文

没有更多推荐了,返回首页