C++进阶实例2--员工分组

  1 #include<iostream>
2 #include<map>
3 #include<vector>
4 #include<ctime>
5 using namespace std;
6
7 #define CEHUA 0
8 #define MEISHU 1
9 #define YANFA 2
10
11 // 员工分组
12 //
13 // 案例描述:
14 // 1. 10名员工(ABCDEFGHIJ)
15 // 2. 员工信息:姓名,薪资组成;部门:策划、没熟、研发
16 // 3. 随机给10名员工分配部门和薪资
17 // 4. 通过multimap进行信息的插入,key(部门编号),value(员工)
18 // 5. 分部门显示员工信息
19 //
20 // 解决思路:
21 // 1. 创建10名员工,存入vector
22 // 2. 遍历vector容器,取出每个员工,进行随机分组
23 // 3. 分组后,将员工编号作为key,具体员工为value,存放到multimap容器中
24 // 4. 分部门显示员工信息
25 //
26
27 // 创建员工
28 class Worker
29 {
30 public:
31 string m_Name;
32 int m_Salary;
33 };
34
35 void createWorker(vector<Worker>& v) {
36
37 string nameSeed = "ABCDEFGHIJ";
38 for (int i = 0; i < 10; i++) {
39 Worker worker;
40 worker.m_Name = "员工";
41 worker.m_Name += nameSeed[i];
42
43 worker.m_Salary = rand() % 10000 + 10000; // 10000 ~ 19999;
44
45 v.push_back(worker);
46 }
47
48 }
49
50 // 员工分组
51 void setGroup(vector<Worker>& v, multimap<int, Worker>& m) {
52 for (vector<Worker>::iterator it = v.begin(); it != v.end(); it++) {
53 // 产生随机部门编号
54 int depId = rand() % 3; // 0, 1, 2
55
56 // 将员工插入到分组中
57 // key表示部门编号,value表示具体员工
58 m.insert(make_pair(depId, *it));
59 }
60 }
61
62 // 分组显式
63 void showWorkerByGroup(multimap<int, Worker>&m) {
64
65 cout << "策划部们:" << endl;
66 multimap<int, Worker>::iterator pos = m.find(CEHUA);
67 int count = m.count(CEHUA); // 统计具体人数
68 int index = 0;
69 for (; pos != m.end() && index < count; pos++, index++) {
70 cout << "姓名:" << pos->second.m_Name << " 薪资:" << pos->second.m_Salary << endl;
71 }
72
73 cout << "-----------------------" << endl;
74 cout << "美术部门:" << endl;
75 pos = m.find(MEISHU);
76 count = m.count(MEISHU); // 统计具体人数
77 index = 0;
78 for (; pos != m.end() && index < count; pos++, index++) {
79 cout << "姓名:" << pos->second.m_Name << " 薪资:" << pos->second.m_Salary << endl;
80 }
81
82 cout << "-----------------------" << endl;
83 cout << "研发部门:" << endl;
84 pos = m.find(YANFA);
85 count = m.count(YANFA); // 统计具体人数
86 index = 0;
87 for (; pos != m.end() && index < count; pos++, index++) {
88 cout << "姓名:" << pos->second.m_Name << " 薪资:" << pos->second.m_Salary << endl;
89 }
90 }
91
92 void test01() {
93
94 // 随机数
95 srand((unsigned int)time(NULL));
96
97 // 1.创建员工
98 vector<Worker>vWorker;
99 createWorker(vWorker);
100
101 // 测试员工信息
102 //for (vector<Worker>::iterator it = vWorker.begin(); it != vWorker.end(); it++) {
103 // cout << "姓名:" << it->m_Name << " 工资:" << it->m_Salary << endl;
104 //}
105
106 // 2.员工分组
107 multimap<int, Worker>mWorker;
108 setGroup(vWorker, mWorker);
109
110 // 3.分组显式员工
111 showWorkerByGroup(mWorker);
112 }
113
114 int main() {
115
116 test01();
117
118 system("pause");
119
120 return 0;
121 }

C++进阶实例2--员工分组的更多相关文章

  1. 《Genesis-3D开源游戏引擎-官方录制系列视频教程:进阶实例篇》

    注:本系列教程仅针对引擎编辑器:v1.2.2及以下版本 G3D进阶实例   第四课<2D编辑与脚本的统一入口> 使用G3D完成一个简单的类飞机大战游戏,介绍了G3D2d游戏制作的流程包括: ...

  2. [代码]multimap员工分组案例

    案例要求: //multimap 案例//公司今天招聘了 5 个员工,5 名员工进入公司之后,需要指派员工在那个部门工作//人员信息有: 姓名 年龄 电话 工资等组成//通过 Multimap 进行信 ...

  3. C++ STL 之 multimap案例之员工分组

    #include <iostream> #include <vector> #include <map> #include <string> #incl ...

  4. MySQL进阶5--分组函数 / 分组排序和分组查询 group by(having) /order by

    MySQL进阶--分组排序和分组查询 group by(having) /order by /* 介绍分组函数 功能:用做统计使用,又称为聚合函数或组函数 1.分类: sum, avg 求和 /平均数 ...

  5. 01_dubbo实例_服务分组

    [为什么要服务分组?] 当一个接口有多种实现时,可以用group区分. [ Provider 的配置信息] <?xml version="1.0" encoding=&quo ...

  6. mysql group by 与order by的实例分析(mysql分组统计后最大值)

    CREATE TABLE `test` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) CHARACTER SET latin1 DEFAULT NULL, `c ...

  7. vue进阶 --- 实例演示

    这篇博客将通过一个实例来对vue构建项目的过程有一个了解. 主要用到的知识点如下所示: vue-router 2.0路由配置 router-view 和 router-link的使用 transiti ...

  8. 《SQL 进阶教程》 自连接分组排序:练习题1-2-2

    分组排序 SELECT d1.district, d1. NAME, (SELECT COUNT(d2.price) FROM district_products d2 WHERE d2.price ...

  9. Java JNI 编程进阶 实例+c++数据类型与jni数据类型转换

    原文:http://www.iteye.com/topic/295776 JNI一直以来都很少去关注,但却是我心中的一个结,最近这几天刚好手头有点时间,因此抽空看了一下这方面的东西,整理了一份文档,J ...

随机推荐

  1. 学习Jenkins(二)

    一:持续集成的概念: 总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部署Continuous Deployment 二:安装部署 ...

  2. Python学习--21天Python基础学习之旅(Day05、Day06、Day07)

    Day05: Chapter 8 函数 1.1函数定义与调用 1.1.1向函数传递参数 1.2传递实参 1.2.1位置实参:基于实参顺序 1.2.2关键字实参:调用时指出各个实参对应的形参 1.2.3 ...

  3. 180度\360度sg90舵机的使用及代码程序

    大部资料都是在网上找到网友大神所共享的,在网上找了几种舵机的,刚接触有点懵,之后找得多了就理解了,想要控制一个硬件就要先了解这个硬件.这里有介绍180度舵机和360度舵机的具体使用,有网上大神的程序, ...

  4. stm32CubeMX+keil5好用还是stm32CubeID好用

    cubemx是图形配置软件, 可以节省往常配置IO口的时间, cubemx主推hal库, 它是生成keil工程的工具 cubemx生成的工程可以用keilv5编程软件来编辑... 用Cube mx定义 ...

  5. char向wchar的转换-MultiByteToWideChar

    问题产生 使用CreateFile函数,如下: CreateFile(lpcTheFile, GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NO ...

  6. 激光雷达 LOAM 论文 解析

    转自:https://blog.csdn.net/hltt3838/article/details/109261334 固态激光雷达的一段视频:https://v.qq.com/x/page/a078 ...

  7. Cloud Design Patterns & Architecture Styles

    Cloud Design Patterns Categories Data Management Design and Implementation Messaging Patterns Ambass ...

  8. Thoughtworks Technology Radar #26 技术雷达26期

    Thoughtworks Technology Radar #26 Techniques Adopt Four key metrics Google Cloud's DevOps Research a ...

  9. 微信小程序 MinUI 组件库系列之 price 价格组件

    MinUI 是基于微信小程序自定义组件特性开发而成的一套简洁.易用.高效的组件库,适用场景广,覆盖小程序原生框架.小程序组件化框架等,并且提供了高效的命令行工具.MinUI 组件库包含了很多基础的组件 ...

  10. token的工作原理及其功能

    一.前言 登录模块是我们在前端项目中一定会有的模块,模块中有一个重要的部分是用户登录验证,对于验证用户是否登录过,我们直接处理办法是检查缓存中是否存在token值,若存在则用户可直接登录,反之,用户需 ...