C++实现职工工资管理系统_第1页
C++实现职工工资管理系统_第2页
C++实现职工工资管理系统_第3页
C++实现职工工资管理系统_第4页
C++实现职工工资管理系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第C++实现职工工资管理系统本文实例为大家分享了C++实现职工工资管理系统的具体代码,供大家参考,具体内容如下

main.cpp

#includeiostream

#includevector

#includemap

#includealgorithm

#includestring

#includewindows.h

#include"data.h"

#include"user.h"

#include"fuction1-9.h"

#include"fuction10.h"

#include"menu.h"

usingnamespacestd;

intmain()

system("color3f");

if(login()==false)

return0;

load_inf();

while(show_menu());

save_inf();

return0;

}

data.h

#pragmaonce

constintmaxn=100;

usingnamespacestd;

structdepartment

intcode;

intnumber;

stringdepartment_name;

voidshow_inf(){printf("%50s部门号:%-6d部门名称:%-12s部门人数:%-6d\n","",code,department_name.c_str(),number);}

mapint,departmentdep;//部门表的映射

structemployee

intcode;

stringname;

stringgender;

intworking_age;

intdepartment_code;//部门编码

voidshow_inf(){printf("%50s编号:%-6d姓名:%-12s性别:%-9s工龄(年):%-6d部门:%-12s\n","",code,name.c_str(),gender.c_str(),working_age,dep[department_code].department_name.c_str());}

mapint,employeeemp;///存储数据的容器

structwage

intcode;

intbase_wage;//基本工资

intovertime;//加班工资

intbonus;//津贴

intgross_pay;//应发工资

intwithholding;//代扣款

intpayment;//实发工资

voidshow_inf(){printf("%30s员工号:%-6d员工姓名:%-12s基本工资:%-6d\t加班工资:%-6d\t津贴:%-6d\t应发工资:%-6d\t代扣款:%6d\t实发工资:%6d\n","",code,emp[code].name.c_str(),base_wage,overtime,bonus,gross_pay,withholding,payment);}

voidcalculate(){gross_pay=base_wage+overtime+bonus,payment=gross_pay-withholding;}

mapint,wagewag;

fuciton1-9.h

#pragmaonce

usingnamespacestd;

voidload_inf()

FILE*p;

chars[maxn];

system("cls");

if((p=fopen("employee.txt","r"))==NULL)

{

printf("%70s数据异常,无法访问!\n","");

system("pause");

exit(0);

}

while(fgets(s,100,p))

{

intcode;

charname[maxn];

chargender[maxn];

intworking_age;

intdepartment_code;

sscanf(s,"%d%s%s%d%d",code,name,gender,working_age,department_code);

emp[code]=(employee{code,name,gender,working_age,department_code});

}

printf("%70s","");

for(inti=0;ii++){cout".";Sleep(200);}

printf("员工信息导入成功!\n");

coutendl;

fclose(p);

if((p=fopen("department.txt","r"))==NULL)

{

printf("%70s数据异常,无法访问!\n","");

system("pause");

exit(0);

}

while(fgets(s,100,p))

{

intcode;

intnumber;

chardepartment_name[maxn];

sscanf(s,"%d%d%s",code,number,department_name);

dep[code]={code,number,department_name};

}

printf("%70s","");

for(inti=0;ii++){cout".";Sleep(200);}

printf("部门信息导入成功!\n");

coutendl;

fclose(p);

if((p=fopen("wage.txt","r"))==NULL)

{

printf("%70s数据异常,无法访问!","");

system("pause");

exit(0);

}

while(fgets(s,100,p))

{

intcode;//员工号

intbase_wage;//基本工资

intovertime;//加班工资

intbonus;//津贴

intgross_pay;

intwithholding;//代扣款

intpayment;

sscanf(s,"%d%d%d%d%d%d%d",code,base_wage,overtime,bonus,gross_pay,withholding,payment);

wag[code]=(wage{code,base_wage,overtime,bonus,gross_pay,withholding,payment});

}

printf("%70s","");

for(inti=0;ii++){cout".";Sleep(200);}

printf("工资信息导入成功!\n");

coutendl;

fclose(p);

return;

voidsave_inf()

FILE*p=fopen("employee.txt","w");

charinf[maxn];

for(autoit=emp.begin();it!=emp.end();it++)

{

sprintf(inf,"%d%s%s%d%d\n",it-second.code,it-.c_str(),it-second.gender.c_str(),it-second.working_age,it-second.department_code);

fputs(inf,p);

}

printf("%70s","");

for(inti=0;ii++){cout".";Sleep(200);}

printf("员工信息保存成功!\n");

fclose(p);

p=fopen("department.txt","w");

for(autoit=dep.begin();it!=dep.end();it++)

{

sprintf(inf,"%d%d%s\n",it-second.code,it-second.number,it-second.department_name.c_str());

fputs(inf,p);

}

printf("%70s","");

for(inti=0;ii++){cout".";Sleep(200);}

printf("部门信息保存成功!\n");

fclose(p);

p=fopen("wage.txt","w");

for(autoit=wag.begin();it!=wag.end();it++)

{

sprintf(inf,"%d%d%d%d%d%d%d\n",it-second.code,it-second.base_wage,it-second.overtime,it-second.bonus,it-second.gross_pay,it-second.withholding,it-second.payment);

fputs(inf,p);

}

printf("%70s","");

for(inti=0;ii++){cout".";Sleep(200);}

printf("工资信息保存成功!\n");

fclose(p);

return;

/以下为部门表的操作

voidadd_dep()

printf("%70s请输入要添加的部门号:","");

intcode;cincode;

stringdepartment_name;

if(!dep.count(code))

{

printf("%70s请输入部门名称:","");

while(1)

{

intflag=0;

cindepartment_name;

for(autoit=dep.begin();it!=dep.end();it++)

if(it-second.department_name==department_name)

{

printf("%70s该部门已存在,请重新输入!\n","");

flag=1;

}

if(!flag)break;

}

dep[code]={code,0,department_name};

printf("%70s部门添加成功!该部门信息如下:\n","");

dep[code].show_inf();

}

else

printf("%70s该部门已存在!\n","");

return;

voidchange_dep()

printf("%70s请输入要修改的部门编号:","");

intcode;cincode;

if(!dep.count(code))

printf("%70s该部门不存在!\n","");

else

{

printf("%70s该部门当前信息如下:\n","");

dep[code].show_inf();

printf("%70s请输入部门的新名字:","");

while(1)

{

stringname;cinname;

intflag=0;

for(autoit=dep.begin();it!=dep.end();it++)

if(it-second.department_name==name)

{

flag=1;

break;

}

if(flag)

printf("%70s部门名字重复!请重新输入\n","");

else

{

dep[code].department_name=name;

printf("%70s修改成功!\n","");

printf("%70s修改后的部门信息如下:\n","");

dep[code].show_inf();

break;

}

}

}

return;

voiddelete_dep()

printf("%70s请输入要删除的部门编号:","");

intcode;cincode;

if(!dep.count(code))

printf("%70s该部门不存在,无法删除!\n","");

elseif(!dep[code].number)//如果该部门没有人,则可删除

{

for(autoit=dep.begin();it!=dep.end();it++)

if(it-first==code)

{

printf("%70s您删除了%s\n","",it-second.department_name.c_str());

dep.erase(it);

break;

}

}

else

printf("%70s该部门有员工,不可删除!\n","");

return;

/以下为员工表的操作

voidadd_emp()

printf("%70s请输入要添加的员工号:","");

intcode;cincode;

if(!emp.count(code))

{

emp[code].code=code;

printf("%70s请输入员工的姓名:","");cinemp[code].name;

printf("%70s请输入员工的性别:","");cinemp[code].gender;

printf("%70s请输入员工的工龄:","");cinemp[code].working_age;

printf("%70s请输入员工的部门号:","");

intdepartment_code;

while(cindepartment_code!dep.count(department_code))

printf("%70s该部门不存在,请重新输入:","");

emp[code].department_code=department_code;

dep[department_code].number++;

printf("%70s员工信息添加成功!员工信息如下:\n","");

emp[code].show_inf();

}

else

printf("%70s该员工号已存在\n","");

return;

voidchange_emp()

intcode;

printf("%70s请输入要修改的员工号:","");

while(cincode!emp.count(code))

printf("%70s该员工不存在!请重新输入:","");

printf("%70s该员工当前信息如下:\n","");

emp[code].show_inf();

printf("%70s请输入修改后的工龄:","");cinemp[code].working_age;

printf("%70s请输入修改后的部门编码:","");

dep[emp[code].department_code].number--;///原部门人数减一

cinemp[code].department_code;

dep[emp[code].department_code].number++;//现部门人数加一

printf("%70s修改成功!修改之后的信息如下:\n","");

emp[code].show_inf();

return;

voiddelete_emp()

printf("%70s请输入要删除的员工号:","");

intcode;cincode;

if(!emp.count(code))

printf("%70s该员工不存在!无法删除\n","");

else

{

dep[emp[code].department_code].number--;//原部门人数减一

for(autoit=emp.begin();it!=emp.end();it++)

if(it-first==code)

{

printf("%70s您删除的员工信息如下:\n","");

emp[it-second.code].show_inf();

emp.erase(it);

break;

}

for(autoit=wag.begin();it!=wag.end();it++)

if(it-first==code)

{

wag.erase(it);

break;

}

}

return;

voidadd_wag()

printf("%70s请输入录入工资的员工编号:","");

intcode;cincode;

if(!emp.count(code))

printf("%70s该员工不存在!\n","");

elseif(wag.count(code))

printf("%70s该员工信息已录入!\n","");

else

{

wag[code].code=code;

printf("%70s请输入员工的基本工资:","");cinwag[code].base_wage;

printf("%70s请输入员工的加班工资:","");cinwag[code].overtime;

printf("%70s请输入员工的津贴:","");cinwag[code].bonus;

printf("%70s请输入员工的代扣款:","");cinwag[code].withholding;

printf("%70s员工工资信息添加成功!\n","");

printf("%70s工资信息如下:\n","");

wag[code].calculate();

wag[code].show_inf();

}

return;

voidchange_wag()

intcode;

printf("%70s要修改者的编号:","");

while(cincode!wag.count(code))

printf("%70s该员工不存在!请重新输入\n","");

printf("%70s该员工当前的工资信息如下\n","");

wag[code].show_inf();

printf("%70s请输入基本工资:","");cinwag[code].base_wage;

printf("%70s请输入加班工资:","");cinwag[code].overtime;

printf("%70s请输入津贴:","");cinwag[code].bonus;

printf("%70s请输入代扣款:","");cinwag[code].withholding;

wag[code].calculate();

printf("%70s修改成功!修改之后的工资信息如下\n","");

wag[code].show_inf();

return;

voiddelete_wag()

printf("%70s请输入要删除工资信息的员工编号:","");

intcode;cincode;

if(!wag.count(code))

printf("%70s不存在该员工的工资信息\n","");

else

{

for(autoit=wag.begin();it!=wag.end();it++)

if(it-first==code)

{

wag.erase(it);

printf("%70s删除成功!\n","");

break;

}

}

return;

}

fuction10.h

#pragmaonce

boolcomp1(constinta,constintb)//升序

returnwag[a].paymentwag[b].payment;

boolcomp2(constinta,constintb)

returnwag[a].paymentwag[b].payment;

boolsearch_inf()

system("cls");

printf("%70s0.返回\n","");

printf("%70s1.查询全部员工的工资\n","");

printf("%70s2.按员工号查询员工工资\n","");

printf("%70s3.按部门查询员工工资\n","");

printf("%70s4.按指定实发工资区间查询员工工资\n","");

printf("%70s5.按员工姓名查询员工工资\n","");

printf("%70s6.查询全部部门信息\n","");

printf("%70s7.按编号查询单个员工的基本信息\n","");

printf("%70s8.按姓名查询单个员工的基本信息\n","");

printf("%70s9.显示所有员工的基本信息\n","");

printf("%70s请输入操作编号[0-9]:","");

intope;

intcode;

stringname;

intdir;

intflag=0;

longlongsum=0;

vectorinttemp;//存储满足查询要求的人员编号

while(cinope!(ope=0ope=9))

printf("%70s输入非法,请重新输入:","");

if(!ope)

returnfalse;

switch(ope)

{

case1:

for(autoit=wag.begin();it!=wag.end();it++)

{

temp.push_back(it-first);

sum+=it-second.payment;

}

printf("%70s1.按实发工资升序\n","");

printf("%70s2.按实发工资降序\n","");

printf("%70s请输入操作类型:","");

while(cindirdir!=1dir!=2)

printf("%70s输入非法,请重新输入!\n","");

if(dir==1)

sort(temp.begin(),temp.end(),comp1);

else

sort(temp.begin(),temp.end(),comp2);

for(inti=0;i(int)temp.size();i++)

wag[temp[i]].show_inf();

printf("%144s合计:%10lld\n","",sum);

break;

case2:

printf("%70s请输入要查询的员工号:","");

cincode;

if(!emp.count(code))

printf("%70s该员工不存在!\n","");

elseif(!wag.count(code))

printf("%70s该员工的工资信息未录入!\n","");

else

wag[code].show_inf();

break;

case3:

printf("%70s请输入所要查询员工的部门:","");

cincode;

if(!dep.count(code))

printf("%70s该部门不存在!\n","");

else

{

for(autoit=wag.begin();it!=wag.end();it++)

if(emp[it-first].department_code==code)

{

temp.push_back(it-first);

sum+=it-second.payment;

}

printf("%70s1.按实发工资升序\n","");

printf("%70s2.按实发工资降序\n","");

printf("%70s请输入操作类型:","");

while(cindirdir!=1dir!=2)

printf("%70s输入非法,请重新输入!\n","");

if(dir==1)

sort(temp.begin(),temp.end(),comp1);

else

sort(temp.begin(),temp.end(),comp2);

for(inti=0;i(int)temp.size();i++)

wag[temp[i]].show_inf();

printf("%144s合计:%10lld\n","",sum);

}

break;

case4:

intup,down;

printf("%70s请输入实发工资区间的上限:","");

cinup;

printf("%70s请输入实发工资区间的下限:","");

cindown;

if(updown)

printf("%70s非法的输入!\n","");

else

{

for(autoit=wag.begin();it!=wag.end();it++)

if(it-second.payment=downit-second.payment=up)

{

temp.push_back(it-first);

sum+=it-second.payment;

}

if(!temp.size())

{

printf("%70s查询不到符合条件的员工!\n","");

cout""endl;

break;

}

printf("%70s1.按实发工资升序\n","");

printf("%70s2.按实发工资降序\n","");

printf("%70s请输入操作类型:","");

intdir;cindir;

if(dir==1)

sort(temp.begin(),temp.end(),comp1);

else

sort(temp.begin(),temp.end(),comp2);

for(inti=0;i(int)temp.size();i++)

wag[temp[i]].show_inf();

printf("%144s合计:%10lld\n","",sum);

}

break;

case5:

printf("%70s请输入员工姓名:","");

cinname;

for(autoit=emp.begin();it!=emp.end();it++)

if(it-==name)

{

wag[it-first].show_inf();

flag=1;

}

if(!flag)

printf("%70s查询不到此人!\n","");

break;/这个不需要排序,考虑到会有重名

case6:

for(autoit=dep.begin();it!=dep.end();it++)

dep[it-first].show_inf();

break;

case7:

printf("%70s请输入员工编号:","");

cincode;

if(!emp.count(code))

printf("%70s该员工不存在!\n","");

else

emp[code].show_inf();

break;

case8:

printf("%70s请输入员工姓名:","");

cinname;

for(autoit=emp.begin();it!=emp.end();it++)

if(it-==name)

{

flag=1;

emp[it-second.code].show_inf();

}

if(!flag)

printf("%70s查询不到此人!\n","");

break;

case9:

for(autoit=emp.begin();it!=emp.end();it++)

emp[it-second.code].show_inf();

break;

default:

returnfalse;

}

system("pause");

returntrue;

}

menu.h

#pragmaonce

usingnamespacestd;

boolshow_menu()

intdir;

system("cls");//清屏

printf("%70s*************************\n","");

printf("%70s欢迎进入职工工资管理系统!\n","");

printf("%70s*************************\n","");

printf("%70s0.退出系统\n","");

printf("%70s1.部门信息录入\n","");

printf("%70s2.部门信息修改\n","");

printf("%70s3.部门信息删除\n","");

printf("%70s4.员工信息录入\n","");

printf("%70s5.员工信息修改\n","");

printf("%70s6.员工信息删除\n","");

printf("%70s7.员工工资录入\n","");

printf("%70s8.员工工资修改\n","");

printf("%70s9.员工工资删除\n","");

printf("%70s10.信息查询\n","");

printf("%70s11.修改登录密码\n","");

printf("%70s请输入操作选项[0-11]:","");

while(cindir(dir0||dir11))printf("%70s非法指令,请重新输入:\n","");

switch(dir)

{

case0:

returnfalse;

case1:

system("cls");

add_dep();

system("pause");

break;

case2:

system("cls");

change_dep();

system("pause");

break;

case3:

system("cls");

delete_dep();

system("pause");

break;

case4:

system("cls");

add_emp();

system("pause");

break;

case5:

system("cls");

change_emp();

system("pause");

break;

case6:

system("cls");

delete_emp();

system("pause");

break;

case7:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论