📄 salarymanager.cpp
字号:
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 + -