求大神解答,只有一处错误了。
#include"stdafx.h" #include"iostream" #include"string" #include"list" #include"cassert" usingnamespacestd; /* 编号、姓名、部门、应付工资、保险、税金、实付工资。 其中实付工资由公式计算得到:实付工资=应付工资-保险-税金 */ structemployee{ stringm_num;//编号 stringm_name;//姓名 stringm_dep;//部门 doublem_salary;//应付工资 doublem_insurance;//保险 doublem_tax;//税金 }; /* (1)录入:输入职工数据,其中“实付工资”通过计算得到; (2)删除:删除指定的职工信息(输入姓名,若找到则删除该信息) (3)修改:允许对已经录入的数据重新进行编辑、修改; (4)显示:显示全体职工数据; (5)查询: a.输入职工姓名,显示该职工的全部数据; b.输入某部门值,显示该部门职工的数据、工资总额、平均工资。 (6)退出程序。 */ list<employee>emps; int_tmain(intargc,_TCHAR*argv[]) { voidprint(constemployee&e); voidinput(); voiddel(); voidmod(); voidshow_all(); voidshow_name(); voidshow_dep(); cout<<"简易职工薪水管理程序by做他\n";//deletethisline cout<<"版权没有请随意复制或修改任何代码\n";//deletethisline cout<<"请选择操作:1.录入2.删除3.修改4.查询5.显示所有员工6.退出:"; intchoose=0; cin>>choose; assert(!cin.fail()); while(choose!=6) { if(choose==1)input(); if(choose==2)del(); if(choose==3)mod(); if(choose==4) { intchoice=0; cout<<"请选择操作1.按姓名查询2.按部门查询3.退出:"; cin>>choice; if(choice==1)show_name(); if(choice==2)show_dep(); if(choice==3) { cout<<"请选择操作:1.录入2.删除3.修改4.查询5.显示所有员工6.退出:"; cin>>choose; assert(!cin.fail()); continue; } } if(choose==5)show_all(); cout<<"请选择操作:1.录入2.删除3.修改4.查询5.显示所有员工6.退出:"; cin>>choose; assert(!cin.fail()); } return0; } voidprint(constemployee&e) { cout<<"编号:"<<e.m_num<<endl; cout<<"姓名:"<<e.m_name<<endl; cout<<"部门:"<<e.m_dep<<endl; cout<<"保险:"<<e.m_insurance<<endl; cout<<"税金:"<<e.m_tax<<endl; cout<<"应付工资:"<<e.m_salary<<endl; cout<<"实付工资:"<<e.m_salary-e.m_insurance-e.m_tax<<endl; } voidinput() { stringnum,name,dep; doublesalary,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()); employeetemp; 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<<"员工录入操作完毕.\n"; } voiddel() { if(emps.size()==0) { cout<<"没有员工记录.\n"; return; } stringname; boolisfind=false; cout<<"请输入要删除的员工姓名:"; cin>>name; list<employee>::iteratoriter; for(iter=emps.begin();iter!=emps.end();iter++) { if(iter->m_name==name) { isfind=true; emps.erase(iter); cout<<"姓名为\""<<name<<"\"的员工记录已删除.\n"; return; } } if(!isfind) { cout<<"没有找到姓名为\""<<name<<"\"的员工.\n"; return; } } voidmod() { if(emps.size()==0) { cout<<"员工记录为空.\n"; return; } boolisfind=false; stringname; cout<<"请输入要修改的员工姓名:"; cin>>name; list<employee>::iteratoriter; for(iter=emps.begin();iter!=emps.end();iter++) { if(iter->m_name==name) { isfind=true; cout<<"姓名为\""<<name<<"\"的员工记录已找到.\n"; break; } } if(isfind) { stringnum,name,dep; doubletax,ins,salary; print(*iter); cout<<endl; 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<<"1员工记录被成功修改.\n"; } else { cout<<"没有找到姓名为\""<<name<<"\"的员工记录.\n"; } } voidshow_all() { if(emps.size()==0) { cout<<"员工记录为空.\n"; return; } cout<<"显示全体员工数据:\n"; cout<<"--------------------\n"; list<employee>::iteratoriter; for(iter=emps.begin();iter!=emps.end();iter++) { cout<<endl; print(*iter); cout<<endl; } cout<<"--------------------\n"; } voidshow_name() { if(emps.size()==0) { cout<<"员工记录为空.\n"; return; } boolisfind=false; stringname; cout<<"请输入要查询的员工姓名:"; cin>>name; list<employee>::iteratoriter; for(iter=emps.begin();iter!=emps.end();iter++) { if(iter->m_name==name) { isfind=true; cout<<"姓名为\""<<name<<"\"的员工记录已找到.\n"; print(*iter); break; } } if(!isfind) { cout<<"没有找到姓名为\""<<name<<"\"的员工.\n"; return; } } voidshow_dep() { if(emps.size()==0) { cout<<"员工记录为空.\n"; return; } doubleisfind=0.00; doubletotal_salary=0.00; stringdep; cout<<"请输入要查询的部门名称:"; cin>>dep; cout<<"部门["<<dep<<"]的员工信息:\n"; cout<<"--------------------\n\n"; list<employee>::iteratoriter; for(iter=emps.begin();iter!=emps.end();iter++) { if(iter->m_dep==dep) { isfind++; total_salary+=iter->m_salary; print(*iter); cout<<endl; continue; } } cout<<"--------------------\n"; if(isfind==0) { cout<<"没有找到名称为["<<dep<<"]的部门.\n"; } else { cout<<"部门["<<dep<<"]工资统计:\n"; cout<<"工资总额:"<<total_salary<<endl; cout<<"平均工资:"<<total_salary/isfind<<endl; } }