职工管理系统可以用来管理公司内部所有员工的信息
公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责
普通员工的职责:完成经理交给的任务
经理职责:完成老板交给的任务,并下发任务给员工
老板职责:管理公司所有事物
管理系统中需要实现的功能如下:
退出管理系统:退出当前管理系统
增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、岗位
显示职工信息:显示公司内部所有职工的信息
删除离职职工:按照编号删除指定的职工
修改职工信息:按照编号修改职工个人信息
按照编号排序:按照职工编号,进行排序
清空所有文档:清空记录的所有职工信息
#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);
}