| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 244 人关注过本帖
标题:大家看看我这个C语言程序哪儿不对?
只看楼主 加入收藏
ROOM_520
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-7-3
结帖率:0
收藏
已结贴  问题点数:10 回复次数:1 
大家看看我这个C语言程序哪儿不对?
#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<employee> 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<<"简易职工薪水管理程序 by 做他\n";// delete this line
cout<<"版权没有 请随意复制或修改任何代码\n";//delete this line

cout<<"请选择操作:1.录入 2.删除 3.修改 4.查询 5.显示所有员工 6.退出 :";
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<<"请选择操作 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());
}
return 0;
}

void print(const employee &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;
}

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<<"员工录入操作完毕.\n";
}

void del()
{
if (emps.size()==0)
{
   cout<<"没有员工记录.\n";
   
}
string name;
bool isfind=false;
cout<<"请输入要删除的员工姓名:";
cin>>name;
list<employee>::iterator iter;
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;
}
}

void mod()
{
if (emps.size()==0)
{
   cout<<"员工记录为空.\n";
   return;
}
bool isfind=false;
string name;
cout<<"请输入要修改的员工姓名:";
cin>>name;
list<employee>::iterator iter;
for (iter=emps.begin();iter!=emps.end();iter++)
{
   if (iter->m_name==name)
   {
    isfind=true;
    cout<<"姓名为\""<<name<<"\"的员工记录已找到.\n";
    break;
   }
}
if (isfind)
{
   string num,name,dep;
   double tax,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";
}
}

void show_all()
{
if (emps.size()==0)

 


{
   cout<<"员工记录为空.\n";
   return;
}
cout<<"显示全体员工数据:\n";
cout<<"--------------------\n";
list<employee>::iterator iter;
for(iter=emps.begin();iter!=emps.end();iter++)
{
   cout<<endl;
   print(*iter);
   cout<<endl;
}
cout<<"--------------------\n";
}

void show_name()
{
if (emps.size()==0)
{
   cout<<"员工记录为空.\n";
   return;
}
bool isfind=false;
string name;
cout<<"请输入要查询的员工姓名:";
cin>>name;
list<employee>::iterator iter;
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;
}
}

void show_dep()
{
if (emps.size()==0)
{
   cout<<"员工记录为空.\n";
   return;
}
double isfind=0.00;
double total_salary=0.00;
string dep;
cout<<"请输入要查询的部门名称:";
cin>>dep;
cout<<"部门["<<dep<<"]的员工信息:\n";
cout<<"--------------------\n\n";
list<employee>::iterator iter;
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;
}
}
 
请大侠看看我这个程序怎么修改才能正确运行
搜索更多相关主题的帖子: C语言 
2010-07-03 23:01
逆灬皇小清
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2010-7-4
收藏
得分:10 
我。。新来的。呵呵,。
2010-07-04 01:30
快速回复:大家看看我这个C语言程序哪儿不对?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024632 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved