C++职工管理系统 具体实现(五)-显示职工功能 删除职工功能 修改职工功能

文章介绍了如何在C++中实现职工管理系统的三个关键功能:显示所有职工信息,按照编号删除职工,以及按编号修改职工信息。这些功能涉及到文件操作、多态调用和用户交互。代码示例详细展示了每个操作的步骤和实现细节。
摘要由CSDN通过智能技术生成

1. 显示职工

功能描述:显示当前所有职工信息
步骤
显示职工函数声明:在workerManager.h中添加成员函数void Show_Emp();
显示职工函数声明:在workerManager.cpp中实现成员函数 void Show_Emp();
写Show_Emp()函数时,首先通过文件标志判断文件是否存在或者文件是否为空文件;
通过循环,利用多态调用接口,调用函数展示职工信息。
代码

//workerManager.h中
	void Show_Emp();//显示职工功能

//workerManager.cpp中
//显示职工功能
void WorkerManager::Show_Emp()
{
	if (this->m_FileisEmpty)
	{
		cout << "文件不存在或记录为空" << endl;
	}
	else
	{
		for (int i = 0; i < m_EmpNum; i++)
		{
			this->m_EmpArray[i]->showInfo();//利用多态调用接口进行信息展示
		}
	}
	system("pause");
	system("cls");
}

2. 删除职工

功能描述:按照职工的编号进行删除职工操作

2.1 步骤:

删除职工函数声明:在workerManager.h中添加成员函数,删除职工函数void Del_Emp();的声明
职工是否存在函数声明:很多功能都需要用到根据职工是否存在来进行操作如:删除职工、修改职工、查找职工。因此添加该公告函数,以便后续调用。在workerManager.h中添加成员函数,判断职工是否存在的声明,int IsExist(int id);
职工是否存在函数实现:在workerManager.cpp中实现成员函数 int IsExist(int id);
删除职工函数实现:在workerManager.cpp中实现成员函数 void Del_Emp();

2.2 代码展示

//workerManager.h中
	void Del_Emp();//删除职工功能
	int isExist(int id);//判断职工是否存在,存在返回职工所在数组中位置,否则返回-1

//workerManager.cpp中
//删除职工功能
void WorkerManager::Del_Emp()
{
	if (this->m_FileisEmpty)
	{
		cout << "文件不存在或记录为空" << endl;
	}
	else
	{
		//根据职工编号删除
		cout << "请输入想要删除的职工编号:" << endl;
		int id = 0;
		cin >> id;

		//判断职工是否存在,并找到职工
		int index = this->isExist(id);
		if (index != -1)//找到职工,并删除
		{
			for (int i = index; i < this->m_EmpNum - 1; i++)//this->m_EmpNum - 1数组的最后一个
			{
				this->m_EmpArray[i] = this->m_EmpArray[i + 1];//数据前移
			}
			this->m_EmpNum--;//更新数组中记录的人员个数
			this->save();//数据更新到文件中
			cout << "删除成功" << endl;
		}
		else
		{
			cout << "该职工不存在" << endl;
		}
	}
	system("pause");
	system("cls");
}

//判断职工是否存在,存在返回职工所在数组中位置,否则返回-1
int WorkerManager::isExist(int id)
{
	int index = -1;
	for (int i = 0; i < this->m_EmpNum; i++)
	{
		if (this->m_EmpArray[i]->mId == id)
		{
			index = i;//找到员工
			break;
		}
	}
	return index;
}

3. 修改职工

功能描述:能够按照职工的编号对职工信息进行修改并保存

3.1 步骤:

修改职工函数声明:在workerManager.h中添加成员函数 void Mod_Emp();
修改职工函数实现:在workerManager.cpp中实现成员函数 void Mod_Emp();,具体步骤如下:

  • 首先,需要判断文件是否存在,并且判断职工是否存在
  • 其次,职工存在,则删除职工原来的信息
  • 然后,提示用户输入职工的新信息,根据输入的岗位创建不同的职工类,并用父类指针接收
  • 最后,保存到数组中,并保存文件。

3.2 代码展示

//workerManager.h中,修改职工功能
	void Mod_Emp();//修改职工功能

//workerManager.cpp中,修改职工功能
void WorkerManager::Mod_Emp()
{
	//判断文件是否存在
	if (this->m_FileisEmpty)
	{
		cout << "文件不存在或记录为空" << endl;
	}
	else
	{
		//根据职工编号删除
		cout << "请输入想要修改的职工编号:" << endl;
		int id = 0;
		cin >> id;

		//判断职工是否存在,并找到职工
		int index = this->isExist(id);
		if (index != -1)//找到职工,并修改
		{
			//删除该员工原有信息
			delete this->m_EmpArray[index];

			//提示用户输入在职工新信息,根据职工编号来添加
			int newid = 0;
			string newname;
			int newdeptid = 0;
			cout << "找到:" << id << "h号职工,请输入职工新编号:" << endl;
			cin >> newid;

			cout << "请输入职工新姓名" << endl;
			cin >> newname;
			cout << "请输入职工新岗位:" << endl;
			cout << "1——普通员工" << endl;
			cout << "2——经理" << endl;
			cout << "3——总裁" << endl;
			cin >> newdeptid;

			//根据新职工的岗位来创建不同的职工类别 普通员工、经理、总裁
			Worker* worker = NULL;//创建父类指针来指向子类对象
			switch (newdeptid)
			{
			case 1:
				worker = new Employee(newid, newname, 1);
				break;
			case 2:
				worker = new Manager(newid, newname, 2);
				break;
			case 3:
				worker = new Boss(newid, newname, 3);
				break;
			default:
				break;
			}

			//将职工指针保存到数组中
			this->m_EmpArray[index] = worker;

			//提示信息
			cout << "成功修改职工信息!" << endl;

			//保存文件
			this->save();

		}
		else
		{
			cout << "该职工不存在" << endl;
		}
	}
	system("pause");
	system("cls");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值