基于多态的职工管理系统(14)------排序

14、排序

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

14.1 排序函数声明

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

    //排序职工
    void Sort_Emp();

14.2 排序函数实现

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

//排序职工
void WorkerManager::Sort_Emp()
{
    if (this->m_FileIsEmpty)
    {
        cout << "文件不存在或记录为空!" << endl;
        system("pause");
        system("cls");
    }
    else
    {
        cout << "请选择排序方式: " << endl;
        cout << "1、按职工号进行升序" << endl;
        cout << "2、按职工号进行降序" << endl;

        int select = 0;
        cin >> select;


        for (int i = 0; i < m_EmpNum; i++)
        {
            int minOrMax = i;
            for (int j = i + 1; j < m_EmpNum; j++)
            {
                if (select == 1) //升序
                {
                    if (m_EmpArray[minOrMax]->m_Id > m_EmpArray[j]->m_Id)
                    {
                        minOrMax = j;
                    }
                }
                else  //降序
                {
                    if (m_EmpArray[minOrMax]->m_Id < m_EmpArray[j]->m_Id)
                    {
                        minOrMax = j;
                    }
                }
            }

            if (i != minOrMax)
            {
                Worker * temp = m_EmpArray[i];
                m_EmpArray[i] = m_EmpArray[minOrMax];
                m_EmpArray[minOrMax] = temp;
            }

        }

        cout << "排序成功,排序后结果为:" << endl;
        this->save();
        this->Show_Emp();
    }

}

14.3 测试排序功能

在main函数分支 6 选项中,调用排序职工接口

 

测试:

首先我们添加一些职工,序号是无序的,例如:

 

测试 - 升序排序

文件同步更新

测试 - 降序排序

文件同步更新

至此,职工按照编号排序的功能实现完毕!

posted @ 2021-06-24 17:19  清水石头  阅读(86)  评论(0)    收藏  举报