大一C++课设,需要一段完整版的程序

员工月收入管理:主要对员工月收入信息,如序号、员工编号、年份、月份、收入、备注等进行增加、删除、修改和查询等操作;

如有帮助,请采纳。

#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