匿名用户
1级
2011-06-28 回答
#include "stdafx.h"
#include "iostream"
#include "string"
#include "list"
#include "cassert"
using namespace std;
/*
编号、姓名、部门、应付工资、保险、税金、实付工资。
其中实付工资由公式计算得到:实付工资=应付工资 - 保险- 税金
*/
struct employee{
string m_num;//编号
string m_name;//姓名
string m_dep;//部门
double m_salary;//应付工资
double m_insurance;//保险
double m_tax;//税金
};
/*
(1)录入:输入职工数据,其中“实付工资”通过计算得到;
(2)删除:删除指定的职工信息(输入姓名,若找到则删除该信息)
(3) 修改:允许对已经录入的数据重新进行编辑、修改;
(4) 显示:显示全体职工数据;
(5)查询:
a. 输入职工姓名,显示该职工的全部数据;
b. 输入某部门值,显示该部门职工的数据、工资总额、平均工资。
(6) 退出程序。
*/
list emps;
int _tmain(int argc, _TCHAR* argv[])
{
void print(const employee &e);
void input();
void del();
void mod();
void show_all();
void show_name();
void show_dep();
cout<
cout<
cout<
int choose=0;
cin>>choose;
assert(!cin.fail());
while (choose!=6)
{
if (choose==1) input();
if (choose==2) del();
if (choose==3) mod();
if (choose==4)
{
int choice=0;
cout<
cin>>choice;
if (choice==1) show_name();
if (choice==2) show_dep();
if (choice==3)
{
cout<
cin>>choose;
assert(!cin.fail());
continue;
}
}
if (choose==5) show_all();
cout<
cin>>choose;
assert(!cin.fail());
}
return 0;
}
void print(const employee &e)
{
cout<
cout<
cout<
cout<
cout<
cout<
cout<
}
void input()
{
string num,name,dep;
double salary,ins,tax;
cout<
cin>>num;
cout<
cin>>name;
cout<
cin>>dep;
cout<
cin>>ins;
assert(!cin.fail());
cout<
cin>>tax;
assert(!cin.fail());
cout<
cin>>salary;
assert(!cin.fail());
employee temp;
temp.m_dep=dep;
temp.m_insurance=ins;
temp.m_name=name;
temp.m_num=num;
temp.m_salary=salary;
temp.m_tax=tax;
emps.push_back(temp);
cout<
}
void del()
{
if (emps.size()==0)
{
cout<
return;
}
string name;
bool isfind=false;
cout<
cin>>name;
list::iterator iter;
for (iter=emps.begin();iter!=emps.end();iter++)
{
if (iter->m_name==name)
{
isfind=true;
emps.erase(iter);
cout<
return;
}
}
if (!isfind)
{
cout<
return;
}
}
void mod()
{
if (emps.size()==0)
{
cout<
return;
}
bool isfind=false;
string name;
cout<
cin>>name;
list::iterator iter;
for (iter=emps.begin();iter!=emps.end();iter++)
{
if (iter->m_name==name)
{
isfind=true;
cout<
break;
}
}
if (isfind)
{
string num,name,dep;
double tax,ins,salary;
print(*iter);
cout<
cout<
cin>>num;
cout<
cin>>name;
cout<
cin>>dep;
cout<
cin>>ins;
assert(!cin.fail());
cout<
cin>>tax;
assert(!cin.fail());
cout<
cin>>salary;
assert(!cin.fail());
iter->m_dep=dep;
iter->m_insurance=ins;
iter->m_name=name;
iter->m_num=num;
iter->m_salary=salary;
iter->m_tax=tax;
cout<
}
else
{
cout<
}
}
void show_all()
{
if (emps.size()==0)
{
cout<
return;
}
cout<
cout<
list::iterator iter;
for(iter=emps.begin();iter!=emps.end();iter++)
{
cout<
print(*iter);
cout<
}
cout<
}
void show_name()
{
if (emps.size()==0)
{
cout<
return;
}
bool isfind=false;
string name;
cout<
cin>>name;
list::iterator iter;
for(iter=emps.begin();iter!=emps.end();iter++)
{
if (iter->m_name==name)
{
isfind=true;
cout<
print(*iter);
break;
}
}
if (!isfind)
{
cout<
return;
}
}
void show_dep()
{
if (emps.size()==0)
{
cout<
return;
}
double isfind=0.00;
double total_salary=0.00;
string dep;
cout<
cin>>dep;
cout<
cout<
list::iterator iter;
for(iter=emps.begin();iter!=emps.end();iter++)
{
if (iter->m_dep==dep)
{
isfind++;
total_salary+=iter->m_salary;
print(*iter);
cout<
continue;
}
}
cout<
if (isfind==0)
{
cout<
}
else
{
cout<
cout<
cout<
}
}