C++学习

菜单功能

添加成员函数

在管理类worerManager.h中提那家成员函数void Show_Menu();

class WorkerManager
{
    public:
        //构造函数
        WorkerManager();
        //展示菜单
        void Show_Menu();
        //析构函数
        WorkerManager();

};

   

#include"employee.h"

Employee::Employee(int id, string name, int did)
{
    this->m_Id = id;
    this->m_Name = name;
    this->m_DeptId = dId;
}

void Employee::showInfo()
{
    cout << "职工编号:" << this->m_Id
        <<"\t职工姓名:" << this->m_Name
        <<"\t岗位:" << this->getDeptName()
        <<"\t岗位职责:完成经理交给的任务" << endl;
}

string Employee::getDeptName()
{
    return string("员工")
}

设定文件路径

#include<fstream>
#define FILENAME"empfile.txt"

成员函数声明

在workerManager.h中类里添加成员函数void save()

//保存文件
void save();

文件未创建

在workerMAnager.h中添加新的成员属性m_FilelsEmpty标志文件是否为空

//标志文件是否为空
bool m_FileIsEmpty;

修改WorkerManager.cpp中构造函数代码

workerManager::WorkerManager()
{
    ifstream ifs;
    ifs.open(FILENAME,ios::in);

    //文件不存在情况
    if (!ifs.is_open())
    {
        cout << "文件不存在" << endl;//测试输出
        this->m_EmpNum = 0; //初始化人数
        this->m_FileIsEmpty = true; //初始化文件为空标志    
        this->m_EmpArray = NuLL; //初始化数组
        ifs.close();//关闭文件
        return;
    }
}

文件存在且保存职工数据

获取记录的职工人数

在workerManager.h中添加成员函数int get_EmpNum();

//统计人数
int get_EmpNum();

workerManager,cpp中实现

int WorkerManager::get_EmpNum()
{
    ifstream ifs;
    ifs.open(FILENAME,ios::in);

    int id;
    string name;
    int did;

    int num = 0;

    while(ifs >> id && ifs >> name && ifs >> did)
    {
        //记录人数
        num++;
    }
    ifs.close();
    return num;
}

初始化数据

在WorkerManager.h中添加成员函数void init_Emp();

//初始化员工
void init_Emp();

显示职工

功能描述:显示当前所有职工信息

显示职工函数声明

在workerManager.h中添加成员函数void Show_Emp();

//显示职工
void Show_Emp();

显示职工函数实现

在workerManager.cpp中实现成员函数void Show_Emp();

//显示职工
void WorkerManager::Show_emp()
{
    if(this->m_Fo;eOsEmpty)
    {
        cout << "文件不存在或记录为空!" << endl;
    }
    else
    {
        for(int i = 0;i < m_EmpNum; i++)
        {
            //利用多态调用接口
            this->m_EmpArray[i]->showInfo();
        }
    }
    system("pause");
    system("cls");
}

删除职工

功能描述:按照职工的编号进行删除职工操作

删除职工函数声明

在workerManager.h中添加成员函数void Del_Emp();

//删除职工
void Del_Eap();

职工是否存在函数声明

在workerManager.h中添加成员函数int IsExist(int id);

//按照职工编号判断职工是否存在,若存在返回职工在数组中位置,不存在返回-1
int IsExist(int id);

职工是否存在函数实现

在workerManager.cpp中实现成员函数int IsExist(int id);

int WorkerManager::IsExist(int id)
{
    int index = -1;
    
    for (int i= 0; i < this->,_EmpNum; i++)
    {
        if (this->M_EmpArray[i]->m_Id == id)

        {
            index = i;

            break;
        }
    }
    return;
}

修改职工

功能描述:能够按照职工的编号对职工信息进行修改并保存

修改职工函数声明

在workerManager.h中添加成员函数void Mod_Emp();

//修改职工
void Mod_Emp();

修改职工函数实现

在workerManager.cpp中实现成员函数void Mod_Emp();

//修改职工
void WorkerManager::Mod_Emp()
{
    if (this->m_FileIsEmpty)
    {
        cout << "文件不存在或记录为空!" << endl;
    }
    else
    {
        cout << "请输入修改职工的编号:" << endl;
        int id;
        cin >> id;

        int ret = this -.IsExist(id);
        if (ret != -1)
        {
            //查找到编号的职工

            delete this->m_EmpArray[ret];

            int newId = 0;
            string newName = "";
            int dSelect = 0;

            cout << "查到:" << id << "号职工,请输入新职工号: " << endl;
            cin >> newId;
            
            cout <<"请输入新姓名:" << endl;
            cin >>newName;

            cout << "请输入岗位:" << endl;
            cout << "1.普通职工" << endl;
            cout << "2.经理" << endl;
            cout << "3.老板" << endl;
            cin >> dSelect;
            
            Worker * worker = NULL;
            switch (dSelect)
            {
                case1:
                    worker = new Employee(newId,newName,dSelect);
                    break;
                case2:
                    worker = new Manager(newId,newName,dSelect);
                    break;
                case3:
                    worker = new Boss(newId, newName, dSelect);
                    break;
            }
            //更改数据 到数组中
            this->m_EmpArray[ret] = worker;
    
            cout <<"修改成功!" << this->m_EmpArray[ret]->m_DeptId << endl;

            //保存到文件中
            this->save();
        }
        else
        {
            cout << "修改失败,查无此人" << endl;
        }
    }
    //按任意键清屏
    system("pause");
    system("cls");
}

查找职工

功能描述:提供两种查找职工方式,一种按照职工编号,一种按照职工姓名

查找职工函数声明

在workerManager.h中添加成员函数void Find_Emp();

//查找职工
void Find_Emp();

查找职工函数实现

在workerManager.cpp 中实现成员函数void Find_Emp();

//查找员工
void WorkerManager::Find_Emp()
{
    if (this->m_FileIsEmpty)
    {
        cout << "文件不存在或记录为空!" << endl;
    }
    else
    {
        cout << "请输入查找的方式:"  << endl;
        cout << "1.按职工编号查找" << endl;
        cout << "2.按照姓名查找" << endl;

        int select = 0;
        cin >> select;


        if(select == 1)//按职工号查找
        {
            int id;
            cout <<"请输入查找的职工号:" << endl;
            cin >> id;
            
            int ret = IsExist(id);
            if(ret != -1)
            {
                cout << "查找成功!该职工信息如下:" << endl;
                this->m_EmpArray[ret]->showInfo();
            } 
            else
            {
                cout << "查找失败,查无此人" << endl;
             }
        } 
        else if(select ==2)//该姓名查找
        {
            string name;
            cout << "请输入查找的姓名:" << endl;
            cin >> name;

            bool flag = false; //查找到的标志
            for (int i = 0; i < m_EmpNUm; i++)
            {
                if (m_EmpArray[i]->m_Name == name)
                {
                    cout << "查找成功,职工号编号为:"
                         << m_EmpArray[i]->m_Id
                         << "号的信息如下:" << endl;

                    flag = true;

                    this->m_EmpArray[i]->showInfo();
                }
            }
            if(flag == false)
            {
                //查无此人
                cout << "查找失败,查无此人" << endl;
            }
        }
        else
        {
            cout << "输入选项有误" << endl;
        }
    }
    

    system("pause");
    system("cls");
}

排序

功能描述:按照职工编号进行排序,排序的顺序由用户指定

排序函数声明

在workerManager.h中添加成员函数 void Sort_Emp();

//排序职工
void Sort_Emp();

排序函数实现

在workerManager.cpp中实现成员函数 void Sort_Emp();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值