职工工资管理系统C语言_第1页
职工工资管理系统C语言_第2页
职工工资管理系统C语言_第3页
职工工资管理系统C语言_第4页
职工工资管理系统C语言_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、设计内容

设计一个工资管理程序

存储的数据包括:姓名,职工号,所属部门,基本工资,奖励工资,补贴项

目及金额和扣款项目及金额。

功能:

1)加入一个人的记录

2)删除一个人的记录

3)显示所有人的记录

4)查询(包括按人名查询工资和按工号查询)

5)统计功能(包括统计某一工资范围的人数和统计各部门的工资总数)

6)修改功能

2、设计目的

1.熟悉C语言程序的编辑、编译链接和运行的过程。

2.熟练运用if语句和switch语句以及嵌套应用。

3.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。

4.掌握文件的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基

本操作函数。

5.掌握结构体类型变量、数组的定义和使用。

6.掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进

一步使用字符串。

3、设计思路(包括所用的函数)

图1程序功能图

voidshow。;voidxmcz()W按姓名查找

voidadd();〃添加职工信息voidbmczOW按部门查找

voidsee();〃查看职工信息void加1();〃删除职工信息

voidsearch。;//查找职工信息voidxmsc();〃按姓名删除

void劭czOW按工号查找voidghsc。;〃按工号删除

工资管理系统

voidsialislics();〃个人工资统计voidghxg();//按工号修改

voidstatistic。;//统计职工信息voidxmxgO;〃按姓名修改

voidgzdij();〃按工资段统计voidreserve。;“保存职工信息

voidbmtj();〃按部门统计

voidmodify。;//修改职工信息

工资管理系统

1、添加职工信息:

查看函数流程图

工资管理系统

3、查找职工信息:

按姓名查找

终止

查找函数流程图

工资管理系统

4、删除职工信息:

终止

删除函数流程图

工资管理系统

5、个人工资统计

个人工资统计流程图

工资管理系统

6、统计职工工资

工资统计流程图

工资管理系统

7、修改职工工资

结束

修改函数流程图

工资管理系统

4、程序代码

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

structworker

{chardcpa[3OJ;

charname[301;

charID[1OJ;

inisalary1,salary2,salary3,salary4;

};

inidq(struclworkerwo[l);

voidshow();

voidbc(structworkerwo[]);

voidadd();

voidscc();

voidsearch。;

voidghcz();

voidxmcz();

voidbmcz();

voiddel();

voidxmsc();

voidghsc();

voidstatistics();

voidstatistic();

voidgzdtjO;

voidbmtj();

voidmodifyO;

voidghxg();

voidxmxgO;

voidreserve();

voidback();

structworkerwo[IOO];〃保存所有的职工信息

intNumber:。;〃记录总的职工人数

voidmain()

(

intchoose=0;

while(l)

(

show();

printf(”\t\t====>请选择:");

scanf("%d",&choose);

systemC^cls");

工资管理系统

svvitch(choose)

(

case0:exit(0);〃退出

break;

casel:add();

back。;//添加职工信息

break;

case2:see();

back。;//查看职工信息

break;

case3:search();

back。,查找职工信息

break;

case4:del();

back();〃删除职工信息

break;

case5:statistics();

back。;//个人工资统计

break;

case6:stadstic();

back。,统计职工工资

break;

case7:modify();

back。;//修改职工信息

break;

case8:reserve();

back。;〃保存数据

break;

default:

break;

)

fnush(stdin);

system("cls");

)

}

inidq(structworkerwo[J)

|

FILE*fp=NULL;

inti=0;

fp=fopen("C://worker.dat","rb");

while(fread(&wo[i],sizeof(structworker),I,fp))

i++;

fclose(fp);

returni;

工资管理系统

voidshow()

prinlf("\n");

printf("\t**木*木****木*木***木耳只工一匚资管理系统*木***木木*水去木木*木*木替\n”)・

printf("\t*☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆*\n\n");

prinlf("\t"AAMAMAAAMNl]添加职工信息AAAAMMAMMAAMg");

prinlf("\tAAAAAAAAAAAAAAA[2]^WMm2fnMAAAAAAAAAAAAAAAAA\n")-

prinlf(”\l八MMAAAAAAA八AA[3]查找职工信息人AAAAAAAAAA人“AM\n");

printf("\S八AAAA八AAAAAAAA[4]删除职工信息AAAMMAAAAA人AA人A\n”);

printf("\tAAAAAAAAAAAAAAA[5]彳、人工资统计人人八丛人人\门”).

printf("\tAAAAAAAAAAAAAAA[6]^ci-bIlRn2T^■AAAAAAAAAAAAAAAAAA\n'1);

printf("\t八八MMAAAAAAAM[7]修改职工信息MAAAAAMAAAAAAAAW");

pi'intf("\tAAAAAAAAAAAAAAA[8]'保存数^AAAAAAAAAAAAAAAAA\n"),

printf("\tAAAAAAAAAAAAAAA[0]退出系^AAAAAAAAAAAAAAAAA\n\n")'

prinlf("\l;i:★★★★★★★★★★★★★★★★★★★★★★★*\n");

}

voidbc(structworker*wo)

(

FILE*fp=NULL;

fp=fopen("C://worker.da(","ab+");

fwritc(wo,sizeof(structworker),1,fp);

fclose(fp);

}

〃添加职工信息

voidadd()

(

intnumberTemp=O;

inti=0;

structworkertemp;

printf("请输入要添加职工个数:”);

scanf("%d",&numberTeinp);

for(i=0;i<numberTemp;i++)

工资管理系统

prinlf("输入第%d个职工信息

printf("姓名:");

scanf("%s",);

printf("工号:");

scanf("%s'\temp.ID);

printf("所属部门

scanf("%s",tenip.depa);

prinif("基本工资:”);

scanf("%d",&tcmp.salary1);

prinlf("奖励工资:”);

scanf("%d",&temp.salary2);

prinlf("补贴项目即金额:〕

scanf("%d'\&tenip.salary3);

printf("扣除项目即金额:"):

scanf("%d",&temp.salary4>:

wo(Numbcr++]=tcmp;〃写入到数组

bc(&tcmp);〃写入到文件

I

prinlf("添加成功\n”);

)

〃查看职工信息

voidsee()

|

inti=0;

printf("以下是全部职工\n”);

prinif("\l姓名\l工号\l所属部门\t基本工资\【奖励工资\1补贴项目及金额\1扣款项目及金额\1

总工资\n”);

while(i<Number)

(

printf("\t%s\t%s\t%s\t%d\t\[%d\t\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].dcpa,wo[i].salary

I.wo[i].salary2,wo[i].salary3,wo[i].sa]ary4,wo[i].salarj,l+wo(il.salary2+wo[i].salary3-wo[i].salar

y4);

i++;

}

)

〃查找职工信息

voidsearch()

(

intn=0;

printfC'l按姓名查找\n”);

printf("2按工号查找\n”);

prinlf("3按部门查找\n”);

scanf("%d'\&n);

工资管理系统

switch(n)

(

case1:xnicz();

break;

case2:ghcz();

break;

case3:bmcz();

break;

default:printf("输入错误!\n");

break;

}

}

voidxmcz()〃按姓名查找

|

charname[3()J;

inti=0;

printf("请输入要杳找职工姓名

scanf("%s",namc);

systemC'cls");

printf("\t姓名\l工号\l所属部门\l基本工资\l奖励工资\t补贴项目及金额\1扣款项目及金额\t

总工资\n”);

for(i=O;i<Nuniber;i++)

(

if(strcnip(namc,wo|i|.namc)==0)

(

printf("\t%s\t%s\t%s\t%d\tV%d\t\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].dcpa,vvo[i].salary

Isalary?,wo[i].salary3,wo[i].salary4,wo[i].salaryI+wo[i].salary2+wo[i].salary3-wo[i].salar

y4);

voidghcz()〃按工号查找

(

charid[IO];

inti=0;

printf("请输入要查找工号

scanf("%s",id);

system("clsH);

piinlf("\l姓名\l工号\l所属部门\l基本工资\t奖励工资\t补贴项目及金额\1扣款项目及金额\l

总工资\n”);

for(i=O;i<Number;i++)

if(strcmp(id,wo[i].ID)==0)

工资管理系统

printf("\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n",wo[iJ.iiame,wo[i].ID,wo[i].dcpa,woli].salary

I.wo[i].salary2.wo[i].salary3,wo[i].salary4.wo[i].salar),l+wo[i].salary2+wo[i].salary3-wo[i].salar

y4);

voidbmcz()〃按部门查找

(

chardepa[3O];

inti=0;

printf("请输入要查询的部门名称:“);

scanf("%s",depa);

system("cls");

printf("\t姓名\t工号\t所属部门\t基本工资\t奖励工资\t补贴项R及金额\t扣款项目及金额\t

总工资\n”);

for(i=O;i<Number;i++)

(

if(strcmp(dcpa.wo[il.dcpa)==0)

{

prinlf("\t%s\t%s\t%s\t%d\t\i%d\t\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary

1Avo[i].salary2Avo[i].salar),3,wo[i].salary4,wo[i].salarj'l+wo[i].salary2+wo[i].salary3-wo[i].salar

y4);

〃删除职工信息

voiddel()

(

intn=0;

piintfC'l按姓名删除\n”);

printf("2按工号删除\n”);

scanf("%d",&n);

switch(n)

{

caseI:xnisc();

break;

case2:ghsc();

break;

}

}

voidxmsc()〃按姓名删除

(

FILE*fp=NULL;

charnanie[30];

工资管理系统

inti=0;

intj=O;

printf("请输入要删除的职工姓名:”);

scanf("%s",name);

for(i=0;i<Number;i++)

(

if(strcmp(name,wo[i].name)==0)

(

for(j=i:j<Number-l;j++)

(

WO[j]=WO[j+l];

}

Number";

)

)

〃将剩余数据写入文件擦除以前的数据

fp=fopcn("C://workcr.dat",,,wb");

for(i=O;i<Numbcr;i++)

(

fwrite(&wo[i],sizeof(structworker),l,fp);

)

fclose(fp);

printf("删除成功

)

voidghsc()〃按工号删除

(

FILE*fp=NULL;

charid[60];

inti=0;

intj=0;

printf("请输入要删除的职工工号:”);

scanf("%s".id);

for(i=0;i<Number;i++)

{

if(strcmp(id,wo[i].ID)==0)

(

for(j=i;j<Number-l;j++)

(

\vo[j]=wo[j+l];

}

Number";

〃将剩余数据写入文件擦除以前的数据

工资管理系统

fp=fopcn("C://workcr.dat","wb");

for(i=O;i<Number:i++)

(

fwrile(&wo[i],sizeof(struc(worker),l,fp);

}

fclose(fp);

printfC删除成功;\n");

)

〃个人工资统计

voidstatistics()

(

inti=0;

doublesum[IOO];

for(i=0;i<Number;i+4-)

(

sum[i]=wo[i].salaryl+wo[i].salary2+wo[i].salary3-wo[il.salary4;

printf("%s的总工资为:%f\nH,wo[i].name,sum[i]);

}

)

voidstalisiic。//统计职工工资

(

intn=0;

printfC'I按工资段统计\n”);

printf("2按部门统计\n”);

scanf("%d".&n);

switch(n)

(

case1:gzdtj();

break;

case2:bmtj();

break;

default:printf("输入错误!\n");

break;

)

}

voidgzdlj。//按工资段统计

{intsal.sa2;

inti=0;

intn,m;

intsl[20]={0,0};

doublesum"00];

printf("请输入要查询的工资段:“);

scanf("%d-%d,r,&saI,&sa2);

systemC^cls");

工资管理系统

for(i=0;i<Numbcr;i++)

(

sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;

)

for(i=0;i<Number;i++)

{n=sum[i]/1000;

if(n>9)n=IO;

switch(n)

{caseO:slfO]++;break;

casel:sl[l]++;brcak;

case2:sl[2]++;break;

case3:sl[3]++;break;

case4:sl[4]++;break;

case5:sl[5]++;break;

case6:sl[6]++;break;

case7:sl[7]++;break;

case8:sl[8]++;break;

case9:sl[9]++;brcak;

case10:sl[10]++;break;

)

)

m=sal/l()(X);

switch(m)

{casc():printf("工资在KMX)以下的人数为%d\n”,sl[()]);brcak;

casel:printf("工资在1000到2000之间的人数为%d\n”,sl[l]);break;

case2:printf("工资在2000到3000之间的人数为%d\n",sl[2]);break;

case3:printf("工资在3000到4000之间的人数为%d\n”,sl[3]);break;

case4:printf("工资在4000到5000之间的人数为%d\n",sl[4]);break;

case5:printf("工资在5000到6000之间的人数为%d\n",sl[5]);break;

case6:printf("工资在6000到7000之间的人数为%d\n",sl[6]);break;

case7:printf("工资在7000至ij8000之间的人数为%d\n[l[7]);break;

case8:printf("工资在8000到9000之间的人数为%d\n”,sl[8]);break;

case9:printf("工资在9000到10000之间的人数为%d\n”,sl[9]);break;

case10:primf("工资在10000以上的人数为%d\n",sl[10]);break;

}

)

voidbmtj()〃按部门统计

(

chardepa[30];

floatsum=0:

inti=0;

printfC请输入要查询的部门名称:“);

scanf("%s",depa);

system("cls");

工资管理系统

printf("\t姓名\t工号\t所属部门\t基本工资\t奖励工资\t补贴项目及金额\t扣款项目及金额\t

总工资\n”);

for(i=O;i<Numbcr;i++)

{

if(strcnip(depa,wo[i].depa)==0)

(

piintf("\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n",wo[il.minieAvo[i].ID,wo[i].depa,wo[i].salaiy

1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salaryl+wo[ij.salary2+wo[i].salary3-wo[i].salar

y4);

sum=sum+wo[i].salaryl+wolij.salary2+woli].salary3-woli].salary4;

}

)

printf("该部门的总工资为:%An",sum);

)

〃修改职工信息

voidmodifyO

(

intmodc=0;

printf("请选择修改查找方式\n");

printfC'l按姓名查找修改大)

printf("2按工号查找修改)iT);

scanf("%d",&niodc);

switch(mode)

|

case1:xmxg();

break;

case2:ghxg();

break;

default:printf("输入错误!\n");

break;

)

}

voidxmxg()〃按姓名修改

{

FILE*fp=NULL;

charnarne[30];

inti=0;

printf("请输入要修改的职工姓名:”工

scanf("%s",name);

for(i=O;i<Number;i++)

(

if(strcmp(name,wo[i].name));

else

break;

工资管理系统

printf("\t姓名\1工号\t所属部门\t基本工资\1奖励工资\(补贴项目及金额V扣款项目及金额\t

总工资\n”);

printf("\t%s\t%s\t%s\t%d\t\i%d\t\l%d\t\t%d\t\(%d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary

lAvo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salami+wo[i].salary2+wo[i].salary3-wo[i].salar

y4);

printf("请重新输入该职工信息)

printf("姓名:”);

scanf("%s",);

printf(“工号:");

scanffwoHMD);

printf("所属部门:");

scanf("%s",wo[i].depa);

printf("基本工资:”);

scanf("%d",wo[i].salaryI);

prinlf("奖励工资:”);

scanf("%d'\wo[i].salary2);

prinif("补贴项目即金额;");

scanf("%d",wo[i].salary3);

priiHf("扣款项目及金额:0

scanf("%d",wo[i].salary4);

〃信息修改后重新更新文件里面的数据以保持数据一致性

fp=fopen("C://worker.dat",'wb");

for(i=O;i<Nunibcr;i++)

(

fwritc(&wo[i],sizcof(structworker),l,fp);

}

fclose(fp);

)

voidghxg。//按工号修改

(

FILE*fp=NULL;

charid[30];

inti=0;

printf("请输入要修改的职工工号:*');

scanf("%s",id);

for(i=O;i<Number;i++)

(

if(strcmp(id,wo[il.ID));

else

break;

}

printf("\t姓名\l工号\l所属部门\t基本工资\l奖励工资\t补贴项目及金额\1扣款项目及金额\1

总工资\n”);

工资管理系统

printf("\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].dcpa,wo[i].salary

I.wo[i].salary2.wo[i].salary3,wo[i].salary4,wo[i].salar),l+wo[i].salary2+wo[i].salary3-wo[i].salar

y4);

prinlfC请重新输入该职工信息)

printf("姓名:");

scanf("%s'\wo[);

printf("工号:”);

scanf("%s",wo[i].ID);

printf("所属部门

scanf("%s",wo[i].dcpa);

primf("基本工资:”);

scanf("%d",wo[i].salaryl);

prinlf("奖励工资:”);

scanf("%d'\wo[i].salarjf2);

printf("补贴项目即金额:");

scanf("%d",wo[i].salary3);

printf("扣款项目及金额:"):

scanf("%d",wo[il.salary4);

〃信息修改后重新更新文件里面的数据以保持数据•致性

fp=fopen("C://worker.dal","wb");

for(i=O;i<Number;i++)

(

fwrite(&wo[il,sizeof(structworker),l,fp);

)

fclose(fp);

printf(”\t=======>修改成功\n”);

}

〃保存数据

voidreserve()

(

printf(”\t====J呈序在运行时已自动保存.....\n");

}

voidback()

printf("\t===>按Enter键返回主菜单\n");

工资管理系统

5.、运行结果

****************职工丁资管理系统****************

*☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆*

AAAAAAAAAAAAAAAJ|]添力口职工信息AAAAAAAAAAAAMAM

AAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAA[2]查看职工信

AAAAAAAAAAAAAAA[^3]^:^HflJ2f^.@.AAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAJj册|]除职丁彳言AAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAJ5j?j<^<J2^^Qvf'

AAAAAAAAAAAAAA人[6]统计职一「工资AAAAAAAAAAAAAAAA人

AAAAAAAAAAAAAAAJ7j改职工信AAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAjgJ保存数

AAAAAAAAAAAAAAAJQj退出系^AAAAAAAAAAAAAAAAA

*★★★★★★★★★★★★★★★★★★★★★★★*

====>请选择:

输入一条记录信息:选择1,回车。

输入记录如图所示:

请输入要添加职工个数:2

请输入第一个职工信息

姓名:王五

工号:1

所属部门:行政部

基本工资:2000

奖励工资:200

补贴项目即金额:300

扣款项目及金额:100

请输入第二个职工信息

姓名:李四

工号:2

所属部门:外关

温馨提示

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

最新文档

评论

0/150

提交评论