C++之员工分组案例

简介: C++之员工分组案例

公司今天招聘了10个员工 (ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在那个部门工作员工信息有:姓名工资组成;

部门分为: 策划、美术、研发;

随机给10名员工分配部门和工资;

通过multimap进行信息的插入 key(部门编号) value(员工);

分部门显示员工信息;

#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <ctime>
 
using namespace std;
 
/**
 * 公司今天招聘了10个员工 (ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在那个部门工作员工信息有:姓名工资组成;
部门分为: 策划、美术、研发
随机给10名员工分配部门和工资
通过multimap进行信息的插入 key(部门编号) value(员工)
分部门显示员工信息
 *
 */
#define  CEHUA 0
#define MEISHU 1
#define YANFA 2
 
class Worker {
public:
    Worker(string name, int salary) {
        this->m_Name = name;
        this->m_Salary = salary;
    }
 
    string m_Name;
    int m_Salary;
};
 
 
void printVector(const vector<Worker> &v) {
    for (vector<Worker>::const_iterator it = v.begin(); it != v.end(); it++) {
        cout << "名字: " << (*it).m_Name << " 薪资:" << (*it).m_Salary << endl;
    }
}
 
void createWorker(vector<Worker> &vector1) {
    string nameSeed = "ABCEDFGHIJ";
    for (int i = 0; i < 10; ++i) {
        string name = "员工:";
        name += nameSeed[i];
        int age = rand() % 2000 + 2000;
        Worker w(name, age);
        vector1.push_back(w);
    }
}
 
void setGroup(vector<Worker> &vector1, multimap<int, Worker> &multimap1) {
    int vSize = vector1.size();
    for (int i = 0; i < vSize; ++i) {
        int deptId = rand() % 3;
        multimap1.insert(make_pair(deptId, vector1[i]));
    }
}
 
void printMultmap(multimap<int, Worker> &mWorker) {
 
    multimap<int, Worker>::iterator posCehua = mWorker.find(CEHUA);
    multimap<int, Worker>::iterator posMeishu = mWorker.find(MEISHU);
    multimap<int, Worker>::iterator posYanfa = mWorker.find(YANFA);
    cout << "策划" << endl;
    for (; posCehua != posMeishu; posCehua++) {
        cout <<"名字:"<< posCehua->second.m_Name <<"薪资:"<< posCehua->second.m_Salary << endl;
    }
    cout << "美术" << endl;
    for (; posMeishu != posYanfa; posMeishu++) {
        cout <<"名字:"<< posMeishu->second.m_Name <<"薪资:"<< posMeishu->second.m_Salary << endl;
    }
    cout << "研发" << endl;
    for (; posYanfa != mWorker.end(); posYanfa++) {
        cout <<"名字:"<< posYanfa->second.m_Name <<"薪资:"<< posYanfa->second.m_Salary << endl;
    }
}
 
int main() {
    //生成随机数
    srand((unsigned int) time(NULL));
    // 1、创建员工
    vector<Worker> vWorker;
    createWorker(vWorker);
    printVector(vWorker);
    // 2、员工分组
    multimap<int, Worker> mWorker;
    setGroup(vWorker, mWorker);
    printMultmap(mWorker);
    system("pause");
    return 0;
}
 
 
 
 
相关文章
|
4月前
|
C++
C++命名空间学习应用案例
C++中的命名空间示例:通过`my_namespace`防止命名冲突,包含`print_message()`函数,在`main()`中调用时需加上命名空间前缀`my_namespace::`。
34 3
|
4月前
|
移动开发 监控 数据可视化
通过C++实现对管理员工上网行为的数据挖掘与可视化
这篇文章介绍了如何使用C++进行员工上网行为的监控数据挖掘与可视化。首先,通过读取系统日志收集上网数据,然后进行数据分析,包括统计访问频率和识别异常行为。接着,利用数据可视化工具展示结果。最后,讨论了如何将监控数据自动提交到网站,以实现实时监控和问题响应。示例代码展示了使用Boost.Asio库创建HTTP客户端上传数据的基本过程。
134 2
|
4月前
|
存储 C++ 容器
C++STL(标准模板库)处理学习应用案例
【4月更文挑战第8天】使用C++ STL,通过`std:vector`存储整数数组 `{5, 3, 1, 4, 2}`,然后利用`std::sort`进行排序,输出排序后序列:`std:vector<int> numbers; numbers = {5, 3, 1, 4, 2}; std:sort(numbers.begin(), numbers.end()); for (int number : numbers) { std::cout << number << " "; }`
38 2
|
4月前
|
编译器 C++
C++语言预处理器学习应用案例
【4月更文挑战第8天】C++预处理器包括条件编译、宏定义和文件包含等功能。例如,条件编译用于根据平台选择不同代码实现,宏定义可简化常量和变量名,文件包含则用于整合多个源文件。示例中展示了如何使用`#ifdef`等指令进行条件编译,当`DEBUG`宏定义时,`PRINT_LOG`会打印调试信息,否则不执行。
44 1
|
3天前
|
编译器 C++
【C++核心】指针和引用案例详解
这篇文章详细讲解了C++中指针和引用的概念、使用场景和操作技巧,包括指针的定义、指针与数组、指针与函数的关系,以及引用的基本使用、注意事项和作为函数参数和返回值的用法。
11 3
|
3天前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
12 3
|
15天前
|
JavaScript 前端开发 测试技术
一个google Test文件C++语言案例
这篇文章我们来介绍一下真正的C++语言如何用GTest来实现单元测试。
11 0
|
3月前
|
C++ 容器
C++之评委打分案例(vector与deque容器练习)
C++之评委打分案例(vector与deque容器练习)
|
3月前
|
C++
C++案例简单通讯录
C++案例简单通讯录
|
4月前
|
算法 C++ 容器
黑马c++ STL部分 笔记(4) 案例-评委打分
黑马c++ STL部分 笔记(4) 案例-评委打分