C++案例-員工分組
3.10.1 案例描述
- 公司今天招聘了10個員工(ABCDEFGHIJ),10名員工進入公司之後,需要指派員工在那個部門工作
- 員工資訊有: 姓名 工資組成;部門分為:策劃、美術、研發
- 隨機給10名員工分配部門和工資
- 通過multimap進行資訊的插入 key(部門編號) value(員工)
- 分部門顯示員工資訊
3.10.2 實現步驟
- 建立10名員工,放到vector中
- 遍歷vector容器,取出每個員工,進行隨機分組
- 分組後,將員工部門編號作為key,具體員工作為value,放入到multimap容器中
- 分部門顯示員工資訊
案例程式碼:
#include<iostream>
using namespace std;
#include <vector>
#include <string>
#include <map>
#include <ctime>
/*
- 公司今天招聘了10個員工(ABCDEFGHIJ),10名員工進入公司之後,需要指派員工在那個部門工作
- 員工資訊有: 姓名 工資組成;部門分為:策劃、美術、研發
- 隨機給10名員工分配部門和工資
- 通過multimap進行資訊的插入 key(部門編號) value(員工)
- 分部門顯示員工資訊
*/
#define CEHUA 0
#define MEISHU 1
#define YANFA 2
class Worker
{
public:
string m_Name;
int m_Salary;
};
void createWorker(vector<Worker>&v)
{
string nameSeed = "ABCDEFGHIJ";
for (int i = 0; i < 10; 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;
}
總結:
- 當資料以鍵值對形式存在,可以考慮用map 或 multimap
相關文章
- C++函式模板案例C++函式
- C++之友元成員C++
- 關於組員
- C++ 經典案例1例C++
- OpenCV之C++經典案例OpenCVC++
- c++ const 成員函式C++函式
- C++ 類成員函式C++函式
- C++(常量成員函式)C++函式
- C++ 類成員指標C++指標
- 【C++】C++的位元組對齊C++
- 案例(員工管理/部門管理)
- C++類中的常成員和靜態成員C++
- c++類的靜態成員C++
- C++ 靜態資料成員C++
- C++:類的成員函式C++函式
- C++:類的靜態成員C++
- c++中的靜態成員C++
- C++ 位元組對齊C++
- 組員技術培訓
- 管理員模組介面文件
- c++成員變數初始化C++變數
- C++ 突破私有成員訪問限制C++
- c/c++ 位元組對齊C++
- 21天學通C++(C++程式的組成部分)C++
- @圖靈不吃蘋果 #C++ 人員管理圖靈蘋果C++
- win10怎麼分屏_win10多工分屏的方法Win10
- 【Node】Addon C++模組開發C++
- 【C++設計模式】組合模式C++設計模式
- 多型 案例三 (電腦組裝)多型
- 專案小組成員介紹
- 匯出Wireless組中的成員
- 【C/C++】5.位元組對齊和位元組填充C++
- [C++之旅] 14 物件成員與物件陣列C++物件陣列
- C++如何開啟“開發人員命令提示”C++
- 【翻譯】c++類中“空成員”的優化C++優化
- C++ 成員資料指標成員函式指標簡單測試C++指標函式
- C++與Qt的位元組序探究:C++QT
- [C++設計模式] composite 組合模式C++設計模式