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

本文介绍了一个使用C++编程实现的销售公司员工管理系统,包括员工、销售员和经理类的设计,具备增删查改功能,并涉及文件处理和虚基类的使用。通过这个项目,作者加深了对C++类、继承、多态的理解,并意识到需要继续学习和实践以巩固知识。
摘要由CSDN通过智能技术生成


一、 设计目的

Ø  熟练掌握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<<
员工管理系统】 问题描述:每个员工的信息包括:编号姓名、性别、出生年月、学历、职务、电话、住址等。系统能够完成员工信息的查询、更新、插入、删除、排序等功能。 基本要求:排序:按不同关键字,对所有员工的信息进行排序;查询:按特定条件查找员工;更新,按编号对某个员工的某项信息进行修改;插入,加入新员工的信息;删除,按编号删除已离职的员工的信息。 选作内容:实现图形用户界面。 通过链表实现 数据结构: #include #include #include #include #include using namespace std; typedef struct workers{ char name[15];//姓名 char department[18];//单位 char gender;//性别 unsigned int age;//年龄 unsigned long long telephone;//电话 unsigned long wage;//工资 unsigned long num;//职工号 struct workers *next; }*Linklist,Lnode; void frist_print() { printf("\t\t⊙▽⊙ ⊙▽⊙ ⊙▽⊙ ⊙▽⊙ ⊙▽⊙ ⊙▽⊙ \n\n"); printf("\t\t\t欢迎进入员工管理系统\n"); } void menu() { printf("\n\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("\t\t \t ◎1.创建员工信息\t \n"); printf("\t\t \t ◎2.插入员工信息\t \n"); printf("\t\t \t ◎3.修改员工信息\t \n"); printf("\t\t \t ◎4.删除员工信息\t \n"); printf("\t\t \t ◎5.查询员工信息\t \n"); printf("\t\t \t ◎6.员工信息排序\t \n"); printf("\t\t \t ◎7.显示员工信息\t \n"); printf("\t\t \t ◎8.员工工资情况\t \n"); printf("\n\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("注意:输入均以回车作为结束\n"); printf("please choise 1--8:\t "); //putchar(12); } void Inset(Linklist Head){ Linklist s,L; unsigned int agee; unsigned long wagee,numm;
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值