C++ STL小练习《员工分组》

一、问题描述

  • 公司今天招聘了10名员工(A B C D E F G H  I J),10名员工进入公司之后,需要指派员工在哪个部门工作
  • 员工信息:姓名、工资
  • 公司部门:策划、美术、研发
  • 随机给10名员工分配部门和工资、工资范围在10k-15k之间
  • 通过multimap进行信息的插入<key(部门编号),value(员工)>
  • 分部门显示员工信息

二、代码实现

#include <iostream>
#include <multimap>
#include <string>
#include <cstdlib>//随机数

using namespace std;

//员工类
class Staff {
	private :
		string name;
		unsigned int wages;

	public :
		Staff(string n, int w) : name(n), wages(w) {}

		void setName(string n) { this->name = n; }
		string getName() { return this->name; }
		void setWages(int w) { this->wages = w; }
		int getWages() { return this->wages; }
};

//重载<<运算符
ostream& operator<<(ostream& cout, Staff staff) {
	cout << staff.getName() << "的工资是" << staff.getWages() << "元";

	return cout;
}

//主函数
int main() {
	multimap<string, Staff> info;

	const string staffNames[10] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J"};
	const string departments[3] = { "策划", "美术", "研发"};

	//设置随机种子,种子根据程序执行时间确定,这样每次执行都可以获取不同的随机数
	srand(time(0));

	//为员工随机分配工资和部门
	for (int i = 0; i < 10; i++) {
		//员工工资范围10k-15k
		int wages = 10000 + (rand() % 5000);
		//根据名字创建员工对象
		Staff staff(staffNames[i], wages);
		//随机给员工分配一个部门
		string dep = departments[rand() % 3];
		//将员工和部门插入info中
		info.insert(pair<string, Staff>(dep, staff));
	}

	//使用equal_range()分部门显示员工信息
	pair<multimap<string, Staff>::iterator, multimap<string, Staff>::iterator> dt;
	cout << "------------------------------------------" << endl;
	for (int i = 0; i < 3; i++) {
		dt = info.equal_range(departments[i]);
		//遍历输出当前部门的所有员工
		for (multimap<string, Staff>::iterator it = dt.first; it != dt.second; it++) {
			cout << it->first << "部门:" << it->second << endl;
		}
		cout << "------------------------------------------" << endl;
	}

	return 0;
}

三、程序执行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值