职工工资管理系统

大耗子 2020年06月04日 203次浏览

文章链接:https://codemouse.online/archives/2020-06-04160611

需求

八、职工工资管理系统(最多允许1人-组,最多允许4组选择)
需求:公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的
职工号、姓名、月工资、岗位、工龄、性别等信息。
程序基本功能:
1.增加、修改、删除一个职工信息。
2.显示全部职工信息。
3.按条件显示职工信息(条件有按电话号码、姓名、职称或职工号等)。
4.按条件显示工资信息(职工号,职称等)。
5.查找指定金额范围的职工职称。

代码

#include <stdio.h>
#include <vector>
#include <iostream>
#include <string>


using namespace std;

#define FPHONE		1
#define FNAME		2
#define FWNO		3
#define FPOSITION	4

class Worker{
public:
	string wno;
	string name;
	double money;
	string position;
	int workAge;
	string sex;
	string phoneNum;
	// 打印个人所有信息
	void print(){
		printf("职工号:%s \t 名字:%s \t 工资:%f \t 职位:%s \t 工龄:%d \t 性别:%s \t 电话号码:%s\n"
			, wno.c_str(), name.c_str(), money, position.c_str(), workAge, sex.c_str(), phoneNum.c_str());
	}
	// 打印工资信息
	void printMoney(){
		printf("职工号:%s \t 名字:%s \t 工资:%f \n"
			, wno.c_str(), name.c_str(), money);
	}
	// 打印职工职称
	void printPosition(){
		printf("职工号:%s \t 名字:%s \t 职位:%s \n"
			, wno.c_str(), name.c_str(), position.c_str());
	}
};

// 所有职员
vector<Worker> workers;

void printMenu(){
	printf("************职工工资管理系统************\n");
	printf("*1.输入职工信息                        *\n");
	printf("*2.修改职工信息                        *\n");
	printf("*3.删除职工信息                        *\n");
	printf("*4.打印全部职工信息                    *\n");
	printf("*5.按条件查询职工信息                  *\n");
	printf("*6.按条件显示工资信息                  *\n");
	printf("*7.查找指定金额范围的职工职称          *\n");
	printf("*8.退出程序                            *\n");
	printf("****************************************\n");
	printf("输入您的选择并回车(1-8)\n");
}


//// 程序中默认不重名
// 返回所在数组下标,条件有按电话号码、姓名、职工号
int findWorker(int flags){
	string info;
	int i = 0;
	switch (flags){
	case FPHONE:
		printf("请输入手机号码\n");
		cin >> info;
		for ( i = 0; i < workers.size(); i++)
		{
			if (!info.compare(workers[i].phoneNum))
				return i;
		}
		break;
	case FNAME:
		printf("请输入职员名字\n");
		cin >> info;
		for ( i = 0; i < workers.size(); i++)
		{
			if (!info.compare(workers[i].name))
				return i;
		}
		break;
	case FWNO:
		printf("请输入员工号\n");
		cin >> info;
		for ( i = 0; i < workers.size(); i++)
		{
			if (!info.compare(workers[i].wno))
				return i;
		}
		break;
	}
	return -1;
}

void insertWorkers(){
	int num = 0;
	printf("请输入要添加的职员数量\n");
	scanf("%d",&num);
	printf("职工号\t 名字\t 工资\t 职位\t 工龄\t 性别\t 电话号码 并用空格隔开\n");
	Worker temp;
	for (int i = 0; i < num; i++)
	{
		cin >> temp.wno >> temp.name >> temp.money >> temp.position >> temp.workAge >> temp.sex >> temp.phoneNum;
		workers.push_back(temp);
	}
	printf("添加完成\n");
}

// 输入职工号修改员工信息
void updateWorker(){

	int index = findWorker(FWNO);
	if (index < 0){
		printf("未找到该员工\n");
		return;
	}
	printf("找到该员工\n");
	printf("请输入修改 名字\t 工资\t 职位\t 工龄\t 性别\t 电话号码 并用空格隔开\n");
	cin >> workers[index].name >> workers[index].money >> workers[index].position >> workers[index].workAge >> workers[index].sex >> workers[index].phoneNum;
	printf("修改完成\n");
}

// 删除员工
void deleteWorker(){

	int index = findWorker(FWNO);
	if (index < 0){
		printf("未找到该员工\n");
		return;
	}
	printf("找到该员工\n");
	workers.erase(workers.begin() + index);
	printf("删除完成\n");
}

// 打印所有员工的信息
void printALL(){
	for (int i = 0; i < workers.size(); i++)
	{
		workers[i].print();
	}
}

// 查找一定范围的
void findRange(){
	double low;
	double hight;
	printf("请输入最低金额和最高金额\n");
	cin >> low >> hight;
	for (int i = 0; i < workers.size(); i++)
	{
		if (workers[i].money >= low && workers[i].money <= hight)
			workers[i].printPosition();
	}
}

// 按条件查询职员信息
void printCondition(){
	int flag = 0;
	printf("1.电话号码查询\n 2.姓名查询 \n 3.职工号查询 \n 4.职称查询\n");
	printf("请输入[1-4]\n");
	cin >> flag;
	
	if (flag <= 3){
		int index = findWorker(flag);
		if (index >= 0)
			workers[index].print();
		else
			printf("未找到员工\n");
	}
	else if (flag == FPOSITION){
		string info;
		printf("请输入职称\n");
		cin >> info;
		int flag = 1;
		for (int i = 0; i < workers.size(); i++)
		{
			if (!info.compare(workers[i].position)){
				workers[i].print();
				flag = 0;
			}
				
		}
		if (flag)
			printf("未找到员工\n");
	}
}
//按条件显示工资信息,条件(职工号,职称)
void printMoney(){
	int flag = 0;
	printf("1.职工号查询 \n 2.职称查询\n");
	printf("请输入[1-2]\n");
	cin >> flag;

	if (flag == 1 ){
		int index = findWorker(flag);
		if (index >= 0)
			workers[index].printMoney();
	}
	else if (flag == 2){
		string info;
		printf("请输入职称\n");
		cin >> info;
		for (int i = 0; i < workers.size(); i++)
		{
			if (!info.compare(workers[i].position))
				workers[i].printMoney();
		}
	}
}
/*3、
八、职工工资管理系统(最多允许1人-组,最多允许4组选择)
需求:公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的
职工号、姓名、月工资、岗位、工龄、性别等信息。
程序基本功能:
1.增加、修改、删除一个职工信息。
2.显示全部职工信息。
3.按条件显示职工信息(条件有按电话号码、姓名、职称或职工号等)。
4.按条件显示工资信息(职工号,职称等)。
5.查找指定金额范围的职工职称。
*/

int main()
{
	int select = 0;
	while (1){
		printMenu();
		cin >> select;
		switch (select)
		{
		case 1:
			insertWorkers();
			break;
		case 2:
			updateWorker();
			break;
		case 3:
			deleteWorker();
			break;
		case 4:
			printALL();
			break;
		case 5:
			printCondition();
			break;
		case 6:
			//按条件显示工资信息
			printMoney();
			break;
		case 7:
			findRange();
			break;
		case 8:
			exit(0);
			break;
		default:
			printf("输入错误,请重新输入\n");
			break;
		}
	}
	
	return 0;
}