员工月收入管理:主要对员工月收入信息,如序号、员工编号、年份、月份、收入、备注等进行增加、删除、修改和查询等操作;
如有帮助,请采纳。
#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