ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ //案列-员工分组 ( 容器存放,查找,打印,统计,宏定义 ,随机)

2021-08-16 16:34:22  阅读:170  来源: 互联网

标签:10 Name 案列 C++ 员工 部门 vWorker 分组


//案列-员工分组
//描述:公司招聘10个员工(ABCDEFGHIJ),10名指派员工进入公司,需要指派那个员工在那个部门工作
//员工信息有:姓名 工资组成; 部门分为:策划 美术 研发
//随机给10名员工分配工资和部门
//通过multimap进行信息的插入,key(部门编号) value员工
//分部门显示员工信息

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

 

 

每次打印结果都不一样 随机分配

 

标签:10,Name,案列,C++,员工,部门,vWorker,分组
来源: https://www.cnblogs.com/Bytezero/p/15148466.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有