1. 程式人生 > 其它 >C++學習-案例2-員工分組

C++學習-案例2-員工分組

1 案例描述

2 實現步驟

#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <ctime>
using namespace std;
#define CEHUA 0
#define MEISHU 1
#define YANFA 2/*
公司今天招聘了10個員工(ABCDEFGHIJ),10名員工進入公司之後,
需要指派員工在那個部門工作
員工資訊:姓名 工資組成;部門分為:策劃、美術、研發
隨機給10名員工分配部門和工資
通過multimap進行資訊的插入 key(部門編號) value(員工)
分部門顯示員工資訊
*/class Worker { public: string m_Name; int m_Salary; }; ​ void createWorker(vector<Worker> &v) { string nameSeed = "ABCDEFGHIJ"; for (int i = 0; i < nameSeed.length(); i++) { Worker worker; worker.m_Name = "員工"; worker.m_Name += nameSeed[i]; ​ worker.m_Salary
= rand() % 10000 + 10000;//10000~19999 //將員工放入到容器中 v.push_back(worker); } } ​ //員工分組 void setGroup(vector<Worker> &v, multimap<int, Worker> &m) { for (vector<Worker>::iterator it = v.begin(); it!= v.end(); it++) { //產生隨機部門編號 int deptId = rand() % 3; //0 1 2
//將員工插入到分組中 //key代表部門的編號,value具體的員工 m.insert(make_pair(deptId,*it)); } } ​ //分組顯示 void showWorkerByGourp(multimap<int, Worker> &m) { //0 A B C 1 D E 2 F G cout << "策劃部門" << endl; multimap<int,Worker>::iterator pos = m.find(CEHUA); int count = m.count(CEHUA);//統計具體人數 int index = 0; for (; pos != m.end() && index < count; pos++,index++) { cout << "姓名:" << pos->second.m_Name << " 薪資:" << pos->second.m_Salary << endl; } ​ cout << "--------------------" << endl; cout << "美術部門:" << endl; pos = m.find(MEISHU); count = m.count(MEISHU);//統計具體人數 index = 0; for (; pos != m.end() && index < count; pos++, index++) { cout << "姓名:" << pos->second.m_Name << " 薪資:" << pos->second.m_Salary << endl; } cout << "--------------------" << endl; cout << "研發部門:" << endl; pos = m.find(YANFA); count = m.count(YANFA);//統計具體人數 index = 0; for (; pos != m.end() && index < count; pos++, index++) { cout << "姓名:" << pos->second.m_Name << " 薪資:" << pos->second.m_Salary << endl; } } ​ int main() { //隨機數種子 srand((unsigned int)time(NULL)); //1、建立員工 vector<Worker> vWorker; createWorker(vWorker); ​ //2、員工分組 multimap<int, Worker> mWorker; setGroup(vWorker, mWorker); ​ //3、分組顯示員工 showWorkerByGourp(mWorker); ​ //測試 //for (vector<Worker>::iterator it = vWorker.begin(); it != vWorker.end(); it++) { // cout << "姓名:" << it->m_Name << "工資:" << it->m_Salary << endl; //} ​ system("pause"); return 0; }