关闭

【c++】公司职员系统

99人阅读 评论(0) 收藏 举报

项目要求:

http://wenku.baidu.com/link?url=7W1Xe8gGtxs-uS-idLhFEEtPg_EIwlr7IdicivC5M7aDdy-QsUWjFx-qJz3f2_Zkh51mvKAHwoOVOjvXqVpfHSJpHw1tzaLmvMCYXyzkfNi

系统分成5个类:Employee基类,包含Manager类,SalesMan类,SalesManager类,Techicians类,EmployeeManager类(管理器类),头文件代码如下(cpp文件太多了,有需要的可以私信我):


#pragma once

enum Sex
{
    MALE,
    FEMALE,
};

enum Department
{
    DEPARTMENT_1,
    DEPARTMENT_2,
    DEPARTMENT_3,
    DEPARTMENT_4,
};

enum EmployeeType
{
    MANAGER,
    TECHNICIAN,
    SALESMAN,
    SALESMANAGER,
};


#pragma once
#include "Enum.h"

class CEmployee
{
public:
    CEmployee();
    CEmployee(const CEmployee& Ep);
    ~CEmployee();

    void SetName(const char* pstrName);
    void SetNumber(const int nNumber);
    void SetSex(const Sex nSex );
    void SetDepartment(const Department nDep);
    void SetGrade(const int nGrade);

    const char* GetName() const;
    const int GetNumber() const;
    int GetSex() const;
    int GetDepartment()const;
    const int GetGrade() const;

    //判断两个职员的名字是否相同   
    bool IsSameName(char* pName,int nNum)const;

    //拷贝构造函数,深拷贝指向职员基类的指针
    virtual CEmployee* Copy();
    virtual double GetSalary() const;
    virtual EmployeeType GetEmployeeType() const;

protected:
    //初始化基类中的数据成员
    void Init(int nNum,char* pstrName,Sex nSex,
              Department nDepartment,int nGrade);

private:
    char*        m_pstrName;      //职员姓名
    int          m_nNumber;       //职员编号
    Sex          m_nSex;          //职员性别
    Department   m_nDepartment;   //职员所在部门
    int          m_nGrade;        //职员级别
    EmployeeType m_nET;           //职员职务
};

#pragma once
#include "Employee.h"


class CManager : public CEmployee
{
public:
    CManager();
    //自定义构造函数
    CManager(int nNum,char* pstrName,Sex nSex,
             Department nDepartment,int nGrade,double m_dFixSalary);
    ~CManager();
    //拷贝构造函数
    CManager(const CManager& Mgr);

    void SetFixSalary(double dSalary);

    virtual double GetSalary()const;
    virtual EmployeeType GetEmployeeType()const;
    virtual CEmployee* Copy();

private:    
    double m_dFixSalary;

};
#pragma once
#include "Employee.h"

class CSalesMan : public CEmployee
{
public:
    CSalesMan();
    ~CSalesMan();
    CSalesMan(const CSalesMan& SM);
    CSalesMan(int nNum,char* pstrName,Sex nSex,
        Department nDepartment,int nGrade,double dSalesVolume);

    void SetSalesVolume(double dSalesVolume);

    virtual double GetSalary()const;
    virtual EmployeeType GetEmployeeType()const;
    virtual CEmployee* Copy();
private:
    double m_dSalesVolume;
};

#pragma once
#include "Employee.h"

class CSalesManager : public CEmployee
{
public:
    CSalesManager();
    ~CSalesManager();

    CSalesManager(int nNum,char* pstrName,Sex nSex,
                  Department nDepartment,int nGrade,double dSalesVolume,double dFixSalary);
    CSalesManager(const CSalesManager& SMgr);

    
    void SetSalesVolume(double dSalesVolume);
    void SetFixSalary(double dFixSalary);
    virtual double GetSalary() const;
    virtual EmployeeType GetEmployeeType()const;
    virtual CSalesManager* Copy();
private:
    double m_dSalesVolume;
    double m_dFixSalary;

};

#pragma once
#include "Employee.h"

class CTechnician:public CEmployee
{
public:
    CTechnician();
    ~CTechnician();
    CTechnician(int nNum,char* pstrName,Sex nSex,
                Department nDepartment,int nGrade,double dWorkTime);
    CTechnician(const CTechnician& Tec);

    void SetWorkTime(double dWorkTime);
    virtual double GetSalary()const;
    virtual EmployeeType GetEmployeeType()const;
    virtual CTechnician* Copy();
private:
    double m_dWorkTime;

};
#pragma once
#include "stdafx.h"
#include <vector>
#include "Manager.h"
#include "SalesMan.h"
#include "Technicians.h"
#include "SalesManager.h"

using namespace std;

class CEmployeeManager
{
public:
    CEmployeeManager();
    ~CEmployeeManager();
    CEmployeeManager(CEmployeeManager& EmpMgr);

    //增删查方法
    void Add(CEmployee* pE);
    void Delete(const int nIndex);
    CEmployee* Find(char* strName) const;

    //获取容器中第i(nIndex)个容器
    CEmployee* GetEmployee(int nIndex);
    CEmployeeManager* Copy();
    //将管理器中的数据拷贝到另一管理器中
    void CopyTo(CEmployeeManager*)const;

    //获得容器中职员个数
    int GetSize();
    //获取容器中上次选中职员的在容器中的位置
    int GetPreSel()const;
    //设置容器中下次选中职员在容器中的位置
    void SetPreSel(int nIndex);
    //删除容器及其中的指针
    void DeleteVector();
    //仅删除容器中的指针
    void Clear();

private:
    std::vector <CEmployee*>     m_vEM;    //职员管理器指针
    int                          m_nPreSel;//记录对话框中上次选中的职员
};

注:本文也是初学者,希望大家能共同学习!



0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1383次
    • 积分:127
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条