销售公司员工管理c++实现


一、 设计目的

Ø  熟练掌握C++语法、能够使用该语言编写较为复杂的程序。

Ø  进一步熟悉类的用法,加深对类之间继承的规律的理解。

Ø  提高对较为复杂程序的编写能力,提高编程能力。

二、 题目设计要求

销售公司员工管理

设计一个虚基类Staff(员工),包含编号、姓名和年龄保护数据成员以及相关的成员函数;由Staff派生出销售员类Salesman,包含销售额保护数据成员以及相关的成员函数;再由Staff派生出经理类Manager;然后由Salesman和Manager类派生出销售经理类SalesManager。

设计一个利用文件处理方式实现对公司人员(包括销售员、经理和销售经理)进行管理,具有增加数据、更新数据、查询数据、删除数据以及重组文件的功能。(删除数据在记录中做删除标志,重组文件指在物理上删除有删除标志的记录。)另外要求分别统计这三类员工的人数以及所有员工的总数。

三、 问题分析

1.分析问题

由题目知至少需要四个类:一个基类、两个直接由基类派生的类、一个由上面两个派生出来的类共同派生的子类。对这四个类分别取名为:classstaff (基类)classSalesman、classManager、classSalesManager。其中classSalesman、classManager为基类直接派生,classSalesManager由classSalesman、classManager直接派生,他们之间关系图下图:


2.功能分析

   根据对问题的分析为了实现要求的功能,对基类设计voidInputInfo()用来输入信息,voidOutputInfo()用来输出信息、char*ShowInfo(int i)用来返回当前类的信息。在派生类中各自加入自己的函数。

 

>>类:
class staff
class Salesman:virtual public staff
class Manager:virtual public staff
class SalesManager:public Salesman,public Manager

>>函数:
void AddInfo();               //增加数据函数
void DeleteInfo(char no[ ]);     //删除数据函数
void LookforInfo(char no[ ]);    //查询数据函数
void ModifyInfo(char no[ ]);     //修改数据函数
void InputInfo();             
void OutputInfo();
char *ShowInfo(int i);

3.主要功能流程图

Ø  主要功能图:


Ø  增加数据:

Ø  查询数据:


Ø  更新数据:


Ø  删除数据:

四、 源代码


由于时间原因,此问题已经是好久之前写的了,在此只是做简单分析,具体细节的面向对象分析的uml图中类图等的分析并未给出,需要的话可以自行分析。

此题的具体代码实现如下:

 MyHeader.h
#ifndef MYHEADER_H_INCLUDED
#define MYHEADER_H_INCLUDED
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <cstring>
#include <fstream>
 
void AddInfo();                 //增加数据函数
void DeleteInfo(char no[]);     //删除数据函数
void LookforInfo(char no[]);    //查询数据函数
void ModifyInfo(char no[]);     //修改数据函数
 
#endif // MYHEADER_H_INCLUDED
   MyClass.h
#ifndef MYCLASS_H_INCLUDED
#define MYCLASS_H_INCLUDED
 
#include "MyHeader.h"
using namespace std;
class staff                         //staff类
{
protected:
    char Name[10];
    char Uid[10];
    char Age[10];
public:
    void InputInfo()                //构造函数
    {
        ;
    }
    void OutputInfo()
    {
        ;
    }
    char *ShowInfo(int i)
    {
        ;
    }
};
class Salesman:virtual public staff      //销售员类虚拟继承staff
{
protected:
    char career[10];
    char title[10];
public:
    void InputInfo()
    {
        cout<<"请输入编号:"<<endl;
        cin>>Uid;
        cout<<"请输入姓名:"<<endl;
        cin>>Name;
        cout<<"请输入年龄:"<<endl;
        cin>>Age;
        cout<<"请输入专业:"<<endl;
        cin>>career;
    //  cout<<"请输入职称:"<<endl;
    }
    void OutputInfo()
    {
        cout<<"编号:"<<Uid<<endl;
        cout<<"姓名:"<<Name<<endl;
        cout<<"年龄:"<<Age<<endl;
        cout<<"专业:"<<career<<endl;
    //  cout<<"职称:"<<endl;
    }
    char *ShowInfo(int i)
        {
            if(i==1)
            {
                return Uid;
            }
            else if(i==2)
            {
                return Name;
            }
            else if(i==3)
            {
                return Age;
            }
            else if(i==4)
            {
                return career;
            }
            else if(i==5)
            {
                return title;
            }
            return 0;
        }
 
};
class Manager:virtual public staff              //经理类虚拟继承staff
{
    protected:
        char Dep[10];
        char Job[10];
    public:
        void InputInfo()
        {
            cout<<"请输入编号:"<<endl;
            cin>>Uid;
            cout<<"请输入姓名:"<<endl;
            cin>>Name;
            cout<<"请输入年龄:"<<endl;
            cin>>Age;
            cout<<"请输入职务:"<<endl;
            cin>>Job;
            cout<<"请输入部门:"<<endl;
            cin>>Dep;
        }
        void OutputInfo()
        {
            cout<<"编号:"<<Uid<<endl;
            cout<<"姓名:"<<Name<<endl;
            cout<<"年龄:"<<Age<<endl;
            cout<<"职务:"<<Job<<endl;
            cout<<"部门:"<<Dep<<endl;
        }
        char *ShowInfo(int i)
        {
            if(i==1)
            {
                return Uid;
            }
            else if(i==2)
            {
                return Name;
            }
            else if(i==3)
            {
                return Age;
            }
            else if(i==4)
            {
                return Job;
            }
            else if(i==5)
            {
                return Dep;
            }
            return 0;
        }
};
 
class SalesManager:public Salesman,public Manager          //多继承销售经理类
{
    public:
        void InputInfo()
        {
            cout<<"请输入编号:"<<endl;
            cin>>Uid;
            cout<<"请输入姓名:"<<endl;
            cin>>Name;
            cout<<"请输入年龄:"<<endl;
            cin>>Age;
            cout<<"请输入职务:"<<endl;
            cin>>Job;
            cout<<"请输入部门:"<<endl;
            cin>>Dep;
            cout<<"请输入专业:"<<endl;
            cin>>career;
            cout<<"请输入职称:"<<endl;
            cin>>title;
        }
        void OutputInfo()
        {
            cout<<"编号:"<<Uid<<endl;
            cout<<
  • 11
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值