zoukankan      html  css  js  c++  java
  • C++ STL 之 multimap案例之员工分组

    #include <iostream>
    #include <vector>
    #include <map>
    #include <string>
    #include <time.h>
    #include <stdlib.h>
    using namespace std;
    
    #define SALE_DEPATMENT 1 // 销售部门
    #define DEVELOP_DEPATMENT 2 // 研发部门
    #define FINACIAL_DEPATMENT 3 // 财务部门
    
    // multimap 案例
    // 公司今天招聘了 5 个员工, 5 名员工进入公司之后,需要指派员工在那个部门工作
    // 人员信息有: 姓名 年龄 电话 工资等组成
    // 通过 Multimap 进行信息的插入 保存 显示
    // 分部门显示员工信息 显示全部员工信息
    
    class Worker
    {
    public:
        string mName;
        string mTele;
        int mAge;
        int mSalary;
    };
    
    // 创建员工
    void Create_Worker(vector<Worker>& vWorker)
    {
        string seedName = "ABCDE";
        for (int i = 0; i < 5; i++)
        {
            Worker worker;
            worker.mName = "员工";
            worker.mName += seedName.at(i);
            worker.mAge = rand() % 10 + 20;
            worker.mTele = "010-88888888";
            worker.mSalary = rand() % 10000 + 10000;
            // 保存员工信息
            vWorker.push_back(worker);
        }
    }
    
    // 员工分组
    void WorkerByGroup(vector<Worker>& vWorker, multimap<int, Worker>& workeGroup)
    {
        // 把员工随机分配到不同部门
        srand(time(NULL));
        for (vector<Worker>::iterator it = vWorker.begin(); it != vWorker.end(); it++)
        {
            int departID = rand() % 3 + 1;
            switch (departID)
            {
            case SALE_DEPATMENT:
                workeGroup.insert(make_pair(SALE_DEPATMENT, *it));
                break;
            case DEVELOP_DEPATMENT:
                workeGroup.insert(make_pair(DEVELOP_DEPATMENT, *it));
                break;
            case FINACIAL_DEPATMENT:
                workeGroup.insert(make_pair(FINACIAL_DEPATMENT, *it));
                break;
            default:
                break;
            }
        }
    }
    
    void showGroupWorkers(multimap<int, Worker>& workerGroup, int departID)
    {
        // find(key);//查找键 key 是否存在,若存在,返回该键的元素的迭代器;/若不存在,返回 map.end();
        multimap<int, Worker>::iterator it = workerGroup.find(departID);
        // 找当前部门总人数
        // count(keyElem);//返回容器中 key 为 keyElem 的对组个数。对 map 来说,要么是 0,要么是 1。对multimap 来说,值可能大于 1。
        int Departcount = workerGroup.count(departID);
        int num = 0;
        for (multimap<int, Worker>::iterator pos = it; it != workerGroup.end() && num < Departcount; pos++, num++)
        {
            cout << "姓名:" << pos->second.mName << " 年龄:" << pos->second.mAge << " 电话:" << pos->second.mTele << " 工资:" << pos->second.mSalary << endl;
        }
    }
    
    // 打印每一部分员工信息
    void PrintWorkerByGroup(multimap<int, Worker>& workerGroup)
    {
        // 打印销售部门员工信息
        cout << "销售部门:" << endl;
        showGroupWorkers(workerGroup, SALE_DEPATMENT);
        // 打印研发部门员工信息
        cout << "研发部门:" << endl;
        showGroupWorkers(workerGroup, DEVELOP_DEPATMENT);
        // 打印财务部门员工信息
        cout << "财务部门:" << endl;
        showGroupWorkers(workerGroup, FINACIAL_DEPATMENT);
    }
    
    int main()
    {
        // 存放新员工信息
        vector<Worker> vWorker;
        // multimap保存分组信息
        multimap<int, Worker> workerGroup;
        // 创建员工
        Create_Worker(vWorker);
        // 员工分组
        WorkerByGroup(vWorker, workerGroup);
        // 打印员工信息
        PrintWorkerByGroup(workerGroup);
        getchar();
        return 0;
    }
  • 相关阅读:
    fiddler——异常退出以及session排序
    fiddler——设置断点,修改http响应
    fiddler——保存抓到的包(导出和导入)
    fiddler——session的操作
    基本套接字:套接字地址
    Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析
    用“DB查询分析器”的对象浏览器来展现数据库的数据字典
    基本套接字:UDP 客户端/服务器端
    信息编码:基本整型
    基本套接字:UDP 套接字
  • 原文地址:https://www.cnblogs.com/duxie/p/10928122.html
Copyright © 2011-2022 走看看