⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 salarymanager.cpp

📁 它是一个完整的工资管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    cout<<"\n=============================你所统计的信息如下================================="<<endl;
	cout<<"\n姓名  部门  基本工资 职务工资 补助 扣工资 应发工资 税费 电费 水费 清洁费 电视费"<<endl;
	for(int index=0; index<iNumNode; index++)///////////////////////输出排序结果
	{
		fTotalAmount += user[index]->m_cSalary.m_fSalary;

        cout<<left<<setw(6)<<user[index]->m_sName
			<<left<<setw(6)<<user[index]->m_sDepartment
			<<left<<setw(9)<<user[index]->m_cSalary.m_fBasePay
		    <<left<<setw(9)<<user[index]->m_cSalary.m_fDutyPay
			<<left<<setw(5)<<user[index]->m_cSalary.m_fAssistance
			<<left<<setw(7)<<user[index]->m_cSalary.m_fDutyPay
			<<left<<setw(9)<<user[index]->m_cSalary.m_fSalary
			<<left<<setw(5)<<user[index]->m_cSalary.m_fTax
			<<left<<setw(5)<<user[index]->m_cSalary.m_fElecCost
			<<left<<setw(5)<<user[index]->m_cSalary.m_fWaterRate
			<<left<<setw(7)<<user[index]->m_cSalary.m_iCleanCost
			<<left<<setw(7)<<user[index]->m_cSalary.m_iTVCost<<endl;
	}
	cout<<"\n\t\t\t\t公司总工资为:   "<<fTotalAmount<<endl;
	cout<<"\n==============================================================================="<<endl;
	user.clear();/////////////////////////////////////////////////清空向量方便下次应用
}
//=================================================================================

//==========统计全公司工资最高的人员前10名,并对它们进行排序=======================
void CSalaryManager::CTenAtFront_SalaryInComp()//============================zbh
{
	if( iNumNode == 0 )
	{
		cout<<"\n\t\t\t系统中没有任何信息。"<<endl;
		return;
	}
	CEmployee *emp;
    throughList();//遍历链表,并将节点地址存入待排序向量
    
	for(int sch_1=0;sch_1<iNumNode;sch_1++)///////////////////////双层循环 选择法排序
	{
		for(int sch_2=sch_1+1; sch_2 < iNumNode; sch_2++)
		{
			if( user[sch_1]->m_cSalary.m_fSalary>user[sch_2]->m_cSalary.m_fSalary )
			{   
				emp=user[sch_1];
				user[sch_1]=user[sch_2];
				user[sch_2]=emp;	
			}
		}
	}
	cout<<"\n=============================你所统计的信息如下================================="<<endl;
	int iEmpNumber = 0;
	if( iNumNode >= 10 )
		iEmpNumber = 10;
	else
	{
		iEmpNumber = iNumNode;
		cout<<"\n\t\t\t注意:目前有的员工资料不足10个!\n"<<endl;
	}
	cout<<"\n\t\t\t姓名  性别   工资卡号   部门     应发工资"<<endl;
	for( int index = iNumNode-1; index >= iNumNode-iEmpNumber; index-- )
	{
		cout<<"\t\t\t"<<left<<setw(6)<<user[index]->m_sName
			<<left<<setw(7)<<user[index]->m_cSex
			<<left<<setw(11)<<user[index]->m_sSalaryCardId
			<<left<<setw(9)<<user[index]->m_sDepartment
			<<left<<setw(8)<<user[index]->m_cSalary.m_fSalary<<endl;
	}
	cout<<"\n==============================================================================="<<endl;
	user.clear();
}
//=================================================================================

//==============按部门统计工资最高的人员前10名,并对它们进行排序===================
void CSalaryManager::CTenAtFront_SalaryInDep()//============================zbh??????
{
	if( iNumNode == 0 )
	{
		cout<<"\n\t\t\t系统中没有任何信息。"<<endl;
		return;
	}
	CEmployee *emp;
    throughList();//遍历链表,并将节点地址存入待排序向量
	int index = 0;

	for(int sch_1=0; sch_1<iNumNode; sch_1++)
	{
		for(int sch_2=sch_1+1; sch_2<iNumNode; sch_2++)
		{
			if( user[sch_1]->m_cSalary.m_fSalary < user[sch_2]->m_cSalary.m_fSalary )
			{   
				emp=user[sch_1];
				user[sch_1]=user[sch_2];
				user[sch_2]=emp;	
			}
		}
	}
	int iNumber = 0;
	cout<<"\n=============================你所统计的信息如下================================="<<endl;
	cout<<"\n\t\t\t姓名  性别   工资卡号   部门     应发工资"<<endl;
	for( index = 0; index < iNumNode; index++ )
	{
		if( user[index]->m_sDepartment == "开发" && iNumber < 10 )
		{
			iNumber++;
			cout<<"\t\t\t"<<left<<setw(6)<<user[index]->m_sName
				<<left<<setw(7)<<user[index]->m_cSex
				<<left<<setw(11)<<user[index]->m_sSalaryCardId
				<<left<<setw(9)<<user[index]->m_sDepartment
				<<left<<setw(8)<<user[index]->m_cSalary.m_fSalary<<endl;
		}
		if( iNumber == 10 )
			break;
	}
	if( iNumber < 10 )
		cout<<"\n\t\t\t开发部的员工不足十人"<<endl;
	iNumber = 0;
	cout<<"\n==============================================================================="<<endl;
    for( index = 0; index < iNumNode; index++ )
	{
		if( user[index]->m_sDepartment == "测试" && iNumber < 10 )
		{
			iNumber++;
			cout<<"\t\t\t"<<left<<setw(6)<<user[index]->m_sName
				<<left<<setw(7)<<user[index]->m_cSex
				<<left<<setw(11)<<user[index]->m_sSalaryCardId
				<<left<<setw(9)<<user[index]->m_sDepartment
				<<left<<setw(8)<<user[index]->m_cSalary.m_fSalary<<endl;
		}
		if( iNumber == 10 )
			break;
	}
	if( iNumber < 10 )
		cout<<"\n\t\t\t测试部的员工不足十人"<<endl;
	iNumber = 0;
	cout<<"\n==============================================================================="<<endl;
    for( index = 0; index < iNumNode; index++ )
	{
		if( user[index]->m_sDepartment == "公关" && iNumber < 10 )
		{
			iNumber++;
			cout<<"\t\t\t"<<left<<setw(6)<<user[index]->m_sName
				<<left<<setw(7)<<user[index]->m_cSex
				<<left<<setw(11)<<user[index]->m_sSalaryCardId
				<<left<<setw(9)<<user[index]->m_sDepartment
				<<left<<setw(8)<<user[index]->m_cSalary.m_fSalary<<endl;
		}
		if( iNumber == 10 )
			break;
	}
	if( iNumber < 10 )
		cout<<"\n\t\t\t开发部的员工不足十人"<<endl;
	iNumber = 0;
	cout<<"\n==============================================================================="<<endl;
    for( index = 0; index < iNumNode; index++ )
	{
		if( user[index]->m_sDepartment == "调研" && iNumber < 10 )
		{
			iNumber++;
			cout<<"\t\t\t"<<left<<setw(6)<<user[index]->m_sName
				<<left<<setw(7)<<user[index]->m_cSex
				<<left<<setw(11)<<user[index]->m_sSalaryCardId
				<<left<<setw(9)<<user[index]->m_sDepartment
				<<left<<setw(8)<<user[index]->m_cSalary.m_fSalary<<endl;
		}
		if( iNumber == 10 )
			break;
	}
	if( iNumber < 10 )
		cout<<"\n\t\t\t开发部的员工不足十人"<<endl;
	iNumber = 0;
	cout<<"\n==============================================================================="<<endl;
    for( index = 0; index < iNumNode; index++ )
	{
		if( user[index]->m_sDepartment == "人事" && iNumber < 10 )
		{
			iNumber++;
			cout<<"\t\t\t"<<left<<setw(6)<<user[index]->m_sName
				<<left<<setw(7)<<user[index]->m_cSex
				<<left<<setw(11)<<user[index]->m_sSalaryCardId
				<<left<<setw(9)<<user[index]->m_sDepartment
				<<left<<setw(8)<<user[index]->m_cSalary.m_fSalary<<endl;
		}
		if( iNumber == 10 )
			break;
	}
	if( iNumber < 10 )
		cout<<"\n\t\t\t开发部的员工不足十人"<<endl;
	iNumber = 0;
	cout<<"\n==============================================================================="<<endl;
}
//=================================================================================

//==============统计扣除工资最多的10个人===========================================
void CSalaryManager::CTenAtFront_DeductSalary()//============================zbh
{
	if( iNumNode == 0 )
	{
		cout<<"\n\t\t\t系统中没有任何信息。"<<endl;
		return;
	}
	CEmployee *emp;
    throughList();////////////////////////////遍历链表,并将节点地址存入待排序向量
    
	for(int sch_1=0;sch_1<iNumNode;sch_1++)///双层循环 选择法排序
	{
		for(int sch_2=sch_1+1;sch_2<iNumNode;sch_2++)/////////////双层循环 选择法排序
		{
			if(user[sch_1]->m_cSalary.DeductSalary()>user[sch_2]->m_cSalary.DeductSalary())
			{   
				emp=user[sch_1];
				user[sch_1]=user[sch_2];
				user[sch_2]=emp;	
			}
		}
	}
	cout<<"\n=============================你所统计的信息如下================================="<<endl;
	int iEmpNumber = 0;
	if( iNumNode >= 10 )
		iEmpNumber = 10;
	else
	{
		iEmpNumber = iNumNode;
		cout<<"\n\t\t\t\t注意:目前有的员工资料不足10个!"<<endl;
	}
	cout<<"\n\t\t\t姓名   性别   工资卡号   部门      扣除工资"<<endl;
	for( int index = iNumNode-1; index >= iNumNode-iEmpNumber; index-- )
	{
		cout<<"\n\t\t\t"<<left<<setw(7)<<user[index]->m_sName
			<<left<<setw(7)<<user[index]->m_cSex
			<<left<<setw(11)<<user[index]->m_sSalaryCardId
			<<left<<setw(10)<<user[index]->m_sDepartment
			<<left<<setw(8)<<user[index]->m_cSalary.m_fDutyPay<<endl;
	}
	cout<<"\n==============================================================================="<<endl;
	user.clear();
}


//=================================================================================
void CSalaryManager:: SortByBasePay()//wxw按基本工资排序
{   
	
	CEmployee *emp;
    throughList();//遍历链表,并将节点地址存入待排序向量
    
	for(int sch_1=0;sch_1<iNumNode;sch_1++)///////////////////////双层循环 选择法排序
	{
		for(int sch_2=sch_1+1;sch_2<iNumNode;sch_2++)
		{
			if(user[sch_1]->m_cSalary.m_fBasePay>user[sch_2]->m_cSalary.m_fBasePay)
			{   
				emp=user[sch_1];
				user[sch_1]=user[sch_2];
				user[sch_2]=emp;	
			}
		}
	}////////////////////////////////////////////////////////////排序结束

    ////////////////////////////////////////////////////////////输出排序结果
	cout<<"\t"<<left<<setw(10)<<"工资卡号"<<left<<setw(10)<<"姓名"<<left<<setw(10)<<"性别"//////////////////////输出排序结果
		<<left<<setw(10)<<"职称"<<left<<setw(10)<<"部门"<<left<<setw(10)<<"基本工资"
		<<endl<<endl;
	for(int index=0;index<iNumNode;index++)
		cout<<"\t"<<left<<setw(10)<<user[index]->m_sSalaryCardId
			<<left<<setw(10)<<user[index]->m_sName
			<<left<<setw(10)<<user[index]->m_cSex
			<<left<<setw(10)<<user[index]->m_sTechPost
			<<left<<setw(10)<<user[index]->m_sDepartment
			<<left<<setw(10)<<user[index]->m_cSalary.m_fBasePay<<endl<<endl;

	user.clear();///////////////////////////////////////////////清空向量方便下次应用

}

void CSalaryManager::SortByDutyPay()//wxw按职务工资排序
{
	CEmployee *emp;
    throughList();//遍历链表,并将节点地址存入待排序向量
    
	for(int sch_1=0;sch_1<iNumNode;sch_1++)//双层循环  选择法排序
	{
		for(int sch_2=sch_1+1;sch_2<iNumNode;sch_2++)
		{
			if(user[sch_1]->m_cSalary.m_fDutyPay>user[sch_2]->m_cSalary.m_fDutyPay)
			{   
				emp=user[sch_1];
				user[sch_1]=user[sch_2];
				user[sch_2]=emp;	
			}
		}
	}////////////////////////////////////////////////////////////排序结束

	////////////////////////////////////////////////////////////输出排序结果
	cout<<"\t"<<left<<setw(10)<<"工资卡号"<<left<<setw(10)<<"姓名"<<left<<setw(10)<<"性别"//////////////////////输出排序结果
		<<left<<setw(10)<<"职称"<<left<<setw(10)<<"部门"<<left<<setw(10)<<"职务工资"
		<<endl<<endl;
	for(int index=0;index<iNumNode;index++)
		cout<<"\t"<<left<<setw(10)<<user[index]->m_sSalaryCardId
			<<left<<setw(10)<<user[index]->m_sName
			<<left<<setw(10)<<user[index]->m_cSex
			<<left<<setw(10)<<user[index]->m_sTechPost
			<<left<<setw(10)<<user[index]->m_sDepartment
			<<left<<setw(10)<<user[index]->m_cSalary.m_fDutyPay<<endl<<endl;

	user.clear();///////////////////////////////////////////////清空向量方便下次应用

}

void CSalaryManager::SortByDeductPay()////////wxw按扣除工资排序
{
	CEmployee *emp;
    throughList();////////////////////////////遍历链表,并将节点地址存入待排序向量
    
	
	for(int sch_1=0;sch_1<iNumNode;sch_1++)///双层循环 选择法排序
	{
		for(int sch_2=sch_1+1;sch_2<iNumNode;sch_2++)/////////////双层循环 选择法排序
		{
			if(user[sch_1]->m_cSalary.DeductSalary()>user[sch_2]->m_cSalary.DeductSalary())
			{   
				emp=user[sch_1];
				user[sch_1]=user[sch_2];
				user[sch_2]=emp;	
			}
		}
	}////////////////////////////////////////////////////////////排序结束

	
	////////////////////////////////////////////////////////////输出排序结果
	cout<<"\t"<<left<<setw(10)<<"工资卡号"<<left<<setw(10)<<"姓名"<<left<<setw(10)<<"性别"//////////////////////输出排序结果
		<<left<<setw(10)<<"职称"<<left<<setw(10)<<"部门"<<left<<setw(10)<<"扣除工资"
		<<endl<<endl;
	for(int index=0;index<iNumNode;index++)
		cout<<"\t"<<left<<setw(10)<<user[index]->m_sSalaryCardId
			<<left<<setw(10)<<user[index]->m_sName
			<<left<<setw(10)<<user[index]->m_cSex
			<<left<<setw(10)<<user[index]->m_sTechPost
			<<left<<setw(10)<<user[index]->m_sDepartment
			<<left<<setw(10)<<user[index]->m_cSalary.DeductSalary()<<endl<<endl;

	user.clear();///////////////////////////////////////////////清空向量方便下次应用

}


void CSalaryManager::SortByTax()///////////////////////////////wxw按缴税信息排序
{
	CEmployee *emp;
    throughList();////////////////////////////////////////////遍历链表,并将节点地址存入待排序向量
    
	for(int sch_1=0;sch_1<iNumNode;sch_1++)//////////////////双层循环 选择法排序
	{
		for(int sch_2=sch_1+1;sch_2<iNumNode;sch_2++)
		{
			if(user[sch_1]->m_cSalary.m_fTax>user[sch_2]->m_cSalary.m_fTax)
			{   
				emp=user[sch_1];
				user[sch_1]=user[sch_2];
				user[sch_2]=emp;	
			}
		}
	}////////////////////////////////////////////////////////////排序结束

	////////////////////////////////////////////////////////////输出排序结果
	cout<<"\t"<<left<<setw(10)<<"工资卡号"<<left<<setw(10)<<"姓名"<<left<<setw(10)<<"性别"//////////////////////输出排序结果
		<<left<<setw(10)<<"职称"<<left<<setw(10)<<"部门"<<left<<setw(10)<<"缴税金额"
		<<endl<<endl;
	for(int index=0;index<iNumNode;index++)
		cout<<"\t"<<setw(10)<<user[index]->m_sSalaryCardId
			<<left<<setw(10)<<user[index]->m_sName
			<<left<<setw(10)<<user[index]->m_cSex
			<<left<<setw(10)<<user[index]->m_sTechPost
			<<left<<setw(10)<<user[index]->m_sDepartment
			<<left<<setw(10)<<user[index]->m_cSalary.m_fTax<<endl<<endl;

	user.clear();///////////////////////////////////////////////清空向量方便下次应用
  
}

void CSalaryManager::SortByName()//////////////////////////////wxw按姓名排序
{
	CEmployee *emp;
    throughList();//////////////////////////////////////////////遍历链表,并将节点地址存入待排序向量
    
	for(int sch_1=0;sch_1<iNumNode;sch_1++)
	{
		for(int sch_2=sch_1+1;sch_2<iNumNode;sch_2++)
		{
			if(user[sch_1]->m_sName>user[sch_2]->m_sName)
			{   
				emp=user[sch_1];
				user[sch_1]=user[sch_2];
				user[sch_2]=emp;	
			}
		}
	}////////////////////////////////////////////////////////////排序结束

	////////////////////////////////////////////////////////////输出排序结果
	cout<<"\t"<<left<<setw(10)<<"工资卡号"<<left<<setw(10)<<"姓名"<<left<<setw(10)<<"性别"//////////////////////输出排序结果
		<<left<<setw(10)<<"职称"<<left<<setw(10)<<"部门"<<left<<setw(10)<<"应发工资"
		<<endl<<endl;
	for(int index=0;index<iNumNode;index++)
		cout<<"\t"<<setw(10)<<user[index]->m_sSalaryCardId
		    <<left<<setw(10)<<user[index]->m_sName
			<<left<<setw(10)<<user[index]->m_cSex
			<<left<<setw(10)<<user[index]->m_sTechPost
			<<left<<setw(10)<<user[index]->m_sDepartment
			<<left<<setw(10)<<user[index]->m_cSalary.m_fSalary<<endl<<endl;

	user.clear();/////////////////////////////////////////////////清空向量方便下次应用
}

void CSalaryManager::SortByDuty()///////////////////////////////wxw按职务排序
{
	CEmployee *emp;
    throughList();//////////////////////////////////////////////遍历链表,并将节点地址存入待排序向量
    
	for(int sch_1=0;sch_1<iNumNode;sch_1++)/////////////////////双层循环 选择法排序
	{
		for(int sch_2=sch_1+1;sch_2<iNumNode;sch_2++)
		{
			if(user[sch_1]->m_sTechPostNum<user[sch_2]->m_sTechPostNum)
			{   
				emp=user[sch_1];
				user[sch_1]=user[sch_2];
				user[sch_2]=emp;	
			}
		}
	}////////////////////////////////////////////////////////////排序结束

	
	////////////////////////////////////////////////////////////输出排序结果
	cout<<"\t"<<left<<setw(10)<<"工资卡号"<<left<<setw(10)<<"姓名"<<left<<setw(10)<<"性别"//////////////////////输出排序结果
		<<left<<setw(10)<<"职称"<<left<<setw(10)<<"部门"
		<<left<<setw(10)<<"应发工资"<<endl<<endl;
	for(int index=0;index<iNumNode;index++)
		cout<<"\t"<<left<<setw(10)<<user[index]->m_sSalaryCardId
	    	<<left<<setw(10)<<user[index]->m_sName
		    <<left<<setw(10)<<user[index]->m_cSex
		    <<left<<setw(10)<<user[index]->m_sTechPost
		    <<left<<setw(10)<<user[index]->m_sDepartment
		    <<left<<setw(10)<<user[index]->m_cSalary.m_fSalary<<endl<<endl;

	user.clear();///////////////////////////////////////////////清空向量方便下次应用
}
void CSalaryManager:: throughList()////////////////////////////wxw 将链表的地址信息存入向量
{
	CEmployee *emp;
	emp=HeadEmployee->next;
	for(int i=0;i<iNumNode;i++)
	{
		user.push_back(emp);
		emp=emp->next;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -