职工管理系统

职工管理系统可以用来管理公司内部所有员工的信息

公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责

普通员工的职责:完成经理交给的任务

经理职责:完成老板交给的任务,并下发任务给员工

老板职责:管理公司所有事物

管理系统中需要实现的功能如下:

退出管理系统:退出当前管理系统

增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、岗位

显示职工信息:显示公司内部所有职工的信息

删除离职职工:按照编号删除指定的职工

修改职工信息:按照编号修改职工个人信息

按照编号排序:按照职工编号,进行排序

清空所有文档:清空记录的所有职工信息

#include<iostream>
#include<string>
#include<fstream>
#define MAX 100
using namespace std;

//欢迎界面
void Menu()
{
	cout << "***********************************" << endl;
	cout << "*********职 工 管 理 系 统*********" << endl;
	cout << "**********0、退出管理系统**********" << endl;
	cout << "**********1、增加职工信息**********" << endl;
	cout << "**********2、显示职工信息**********" << endl;
	cout << "**********3、删除离职职工**********" << endl;
	cout << "**********4、修改职工信息**********" << endl;
	cout << "**********5、按照编号排序**********" << endl;
	cout << "**********6、清空所有文档**********" << endl;
	cout << "***********************************" << endl;
	cout << "请输入你的选择" << endl;
}

//职工
class Person
{
public:
	//增加员工信息
	void m_Add()
	{
		//录入
		cout << "你正在添加职工信息" << endl;
		cout << "请输入你要增加的职工信息" << endl;
		cout << "请输入职工编号" << endl;
		int number;
		cin >> number;
		m_Number = number;

		cout << "请输入职工姓名" << endl;
		string name;
		cin >> name;
		m_Name = name;

		cout << "请输入职工岗位编号" << endl;
		cout << "1、普通职工" << endl;
		cout << "2、经理" << endl;
		cout << "3、老板" << endl;

		int post;
		bool flag = false;

		do
		{
			cin >> post;

			switch (post)
			{
			case 1://普通员工
			{
				m_Post = "普通员工";
				m_Duty = "完成经理交给的任务";
				flag = false;
				break;
			}
			case 2://经理
			{
				m_Post = "经理";
				m_Duty = "完成老板交给的任务,并下发给员工";
				flag = false;
				break;
			}
			case 3://显示职工信息
			{
				m_Post = "老板";
				m_Duty = "管理公司所有事物";
				flag = false;
				break;
			}
			default:
			{
				cout << "输入无效,请重新输入" << endl;
				flag = true;
				break;
			}
			}
		} while (flag);
	}

	//修改职工信息
	void m_Modify()
	{
		//录入
		cout << "你正在修改职工信息" << endl;

		cout << "请输入修改后的职工编号" << endl;
		int number;
		cin >> number;
		this->m_Number = number;

		cout << "请输入修改后的职工姓名" << endl;
		string name;
		cin >> name;
		this->m_Name = name;

		cout << "请输入修改后的职工岗位编号" << endl;
		cout << "1、普通职工" << endl;
		cout << "2、经理" << endl;
		cout << "3、老板" << endl;

		int post;
		bool flag = false;

		do
		{
			cin >> post;

			switch (post)
			{
			case 1://普通员工
			{
				this->m_Post = "普通员工";
				this->m_Duty = "完成经理交给的任务";
				flag = false;
				break;
			}
			case 2://经理
			{
				this->m_Post = "经理";
				this->m_Duty = "完成老板交给的任务,并下发给员工";
				flag = false;
				break;
			}
			case 3://显示职工信息
			{
				this->m_Post = "老板";
				this->m_Duty = "管理公司所有事物";
				flag = false;
				break;
			}
			default:
			{
				cout << "输入无效,请重新输入" << endl;
				flag = true;
				break;
			}
			}
		} while (flag);
	}
	//属性
	int m_Number;//职工编号
	string m_Name;//职工姓名
	string m_Post;//职工岗位
	string m_Duty;//职工职责
};

//左移运算符重载,输出职工类型
ostream& operator<<(ostream& cout, Person& person)//本质 operator<<(cout,p) 简化 cout<<p
{
	cout << "职工编号:" << person.m_Number
		<< " \t职工姓名:" << person.m_Name
		<< " \t职工岗位:" << person.m_Post
		<< " \t\t\t职工职责:" << person.m_Duty;
	return cout;
}

//员工管理系统
class EmployeeManagementSystem
{
public:
	//排序
	void m_Sort()
	{
		int i, j;
		Person temp;
		for (i = 0; i < this->m_Number; i++)
		{
			for (j = 0; j < this->m_Number - 1; j++)
			{
				if (All[j].m_Number > All[j + 1].m_Number)
				{
					temp = All[j];
					All[j] = All[j + 1];
					All[j + 1] = temp;
				}
			}
		}
		cout << "排序完成" << endl;

		int k = 0;
		for (; k < this->m_Number; k++)
		{
			cout << this->All[k] << endl;
		}
	}

	friend Person;
	Person All[MAX];
	int m_Number = 0;
};

//判断员工是否存在(用于增加成员时,防止职工序号相同)
int m_isExist(EmployeeManagementSystem& employeeManagementSystem, int number)//1、员工管理系统 2、员工编号
{
	for (int i = 0; i < employeeManagementSystem.m_Number; i++)
	{
		if (employeeManagementSystem.All[i].m_Number == number)
		{
			return i;//返回被查找人的位置
		}
	}
	return -1;//没有找到这个人
}

//寻找员工是否存在
int isExist(EmployeeManagementSystem& employeeManagementSystem, int number)//1、员工管理系统 2、员工编号
{
	for (int i = 0; i < employeeManagementSystem.m_Number; i++)
	{
		if (employeeManagementSystem.All[i].m_Number == number)
		{
			return i;//返回被查找人的位置
		}
	}
	return -1;
}

//增加职工信息(用全局函数调用成员函数实现批量添加)
void Add(EmployeeManagementSystem& employeeManagementSystem)
{
	int flag = 1;
	int check;
	for (int i = employeeManagementSystem.m_Number; flag == 1; i++, employeeManagementSystem.m_Number++)
	{
		employeeManagementSystem.All[i].m_Add();
		//检查编号有没有重复
		check = isExist(employeeManagementSystem, employeeManagementSystem.All[i].m_Number);

		if (check == -1)//编号没有重复
		{
			cout << "是否还要添加职工(1、是 0、否)" << endl;
			cin >> flag;
			system("cls");
			continue;
		}

		//编号重复了
		else
		{
			cout << "职工序号重复" << endl;
			system("pause");
			system("cls");
			//清理调刚刚录入的职工
			for (int j = check; j < employeeManagementSystem.m_Number; j++)
			{
				employeeManagementSystem.All[j] = employeeManagementSystem.All[j + 1];
			}
			employeeManagementSystem.m_Number--;
			//继续添加
			cout << "是否还要添加职工(1、是 0、否)" << endl;
			cin >> flag;
			system("cls");
			continue;
		}
	}
}

//显示职工信息
void Show(EmployeeManagementSystem& employeeManagementSystem)
{
	if (employeeManagementSystem.m_Number == 0)
	{
		cout << "无职工!" << endl;
	}
	else
	{
		system("cls");
		int i = 0;
		for (; i < employeeManagementSystem.m_Number; i++)
		{
			cout << employeeManagementSystem.All[i] << endl;
		}
	}
	system("pause");
	system("cls");
}

//删除离职员工
void Delete(EmployeeManagementSystem& employeeManagementSystem)
{
	if (employeeManagementSystem.m_Number == 0)//职工管理系统为空
	{
		cout << "职工管理系统为空" << endl;
		system("pause");
		system("cls");
		return;
	}

	else
	{
		cout << "请输入你要删除的员工编号" << endl;
		int number;
		cin >> number;

		int i = isExist(employeeManagementSystem, number);

		if (i != -1)
		{
			//执行删除操作
			//再利用一个for循环
			for (int j = i; j < employeeManagementSystem.m_Number; j++)
			{
				employeeManagementSystem.All[j] = employeeManagementSystem.All[j + 1];
			}
			employeeManagementSystem.m_Number--;
			cout << "删除成功!" << endl;
		}
		else
		{
			cout << "查无此人" << endl;
		}

		system("pause");
		system("cls");
	}
}

//修改职工信息
void Modify(EmployeeManagementSystem& employeeManagementSystem)
{

	if (employeeManagementSystem.m_Number == 0)//职工管理系统为空
	{
		cout << "职工管理系统为空" << endl;
		system("pause");
		system("cls");
		return;
	}

	else
	{
		int flag = 1;
		int check;
		int number;
		for (int i = employeeManagementSystem.m_Number; flag == 1; i++, employeeManagementSystem.m_Number++)
		{
			cout << "请输入你要修改的职工序号" << endl;
			cin >> number;
			//检查(要修改的)编号有没有重复
			check = isExist(employeeManagementSystem, number);

			if (check != -1)
			{
				for (int k = employeeManagementSystem.m_Number; flag == 1; k++, employeeManagementSystem.m_Number++)
				{
					employeeManagementSystem.All[k].m_Modify();
					//检查(修改后的)编号有没有重复
					check = isExist(employeeManagementSystem, k);

					if (check == -1)//(修改后的)编号没有重复
					{
						cout << "是否还要修改职工信息(1、是 0、否)" << endl;
						cin >> flag;
						system("cls");
					}
					//(修改后的)编号重复了
					else
					{
						cout << "新的职工序号与现有职工序号重复" << endl;
						system("pause");
						system("cls");
						//清理调刚刚录入的职工
						for (int j = check; j < employeeManagementSystem.m_Number; j++)
						{
							employeeManagementSystem.All[j] = employeeManagementSystem.All[j + 1];
						}
						employeeManagementSystem.m_Number--;
						//继续修改
						cout << "是否还要修改其他职工信息(1、是 0、否)" << endl;
						cin >> flag;
						system("cls");
					}
				}
			}
			//编号重复了
			else
			{
				cout << "查无此人" << endl;
				system("pause");
				system("cls");

				//继续修改
				cout << "是否还要修改其他职工信息(1、是 0、否)" << endl;
				cin >> flag;
				system("cls");
			}
		}
	}
}

//按照编号排序
void Sort(EmployeeManagementSystem& employeeManagementSystem)
{
	if (employeeManagementSystem.m_Number == 0)//职工管理系统为空
	{
		cout << "职工管理系统为空" << endl;
		system("pause");
		system("cls");
		return;
	}

	else
	{
		employeeManagementSystem.m_Sort();
		system("pause");
		system("cls");
	}
}

//主函数
int main()
{
	//创建系统
	EmployeeManagementSystem employeeManagementSystem;
	Menu();
	int choice;

	do
	{
		cin >> choice;
		system("cls");
		switch (choice)
		{
		case 0://退出管理系统
			break;
			return 0;
		case 1://增加职工信息
		{
			Add(employeeManagementSystem);
			Menu();
			break;
		}
		case 2://显示职工信息
		{
			Show(employeeManagementSystem);
			Menu();
			break;
		}
		case 3://删除职工信息
		{
			Delete(employeeManagementSystem);
			Menu();
			break;
		}
		case 4://修改离职职工
		{
			Modify(employeeManagementSystem);
			Menu();
			break;
		}
		case 5://按照编号排序
		{
			Sort(employeeManagementSystem);
			Menu();
			break;
		}
		case 6://清空所有文档
		{
			employeeManagementSystem.m_Number = 0;
			Show(employeeManagementSystem);
			break;
		}
		default:
		{
			cout << "无效输入,请重新输入" << endl;
			break;
		}
		}
	} while (choice);
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pioneer_one

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值