欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-12 14:32:41
...

类的抽象与类间关系

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

Ø Department类:表示部门类。

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

Ø Technician类:表示技术员类。

Ø Saler类:表示销售员类。

Ø Manager类:表示经理类。

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

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


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

1 主控模块运行界面

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

2 添加信息模块运行界面

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

3 查询信息模块运行界面


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

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

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

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

5 显示信息模块运行界面

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

6 部门管理运行界面

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

7 部门信息浏览界面

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

8 按部门统计信息界面

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

9 工资排序运行界面

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

10 部门相关操作运行界面

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

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


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

11 退出模块运行界面

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

部分代码:

//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