职工工资管理系统C语言.docx

上传人:b****8 文档编号:9856069 上传时间:2023-02-07 格式:DOCX 页数:30 大小:207.84KB
下载 相关 举报
职工工资管理系统C语言.docx_第1页
第1页 / 共30页
职工工资管理系统C语言.docx_第2页
第2页 / 共30页
职工工资管理系统C语言.docx_第3页
第3页 / 共30页
职工工资管理系统C语言.docx_第4页
第4页 / 共30页
职工工资管理系统C语言.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

职工工资管理系统C语言.docx

《职工工资管理系统C语言.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统C语言.docx(30页珍藏版)》请在冰豆网上搜索。

职工工资管理系统C语言.docx

职工工资管理系统C语言

1、设计内容

设计一个工资管理程序

存储的数据包括:

姓名,职工号,所属部门,基本工资,奖励工资,补贴项目及金额和扣款项目及金额。

功能:

1)加入一个人的记录

2)删除一个人的记录

3)显示所有人的记录

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

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

6)修改功能

2、设计目的

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

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

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

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

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

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

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

图1程序功能图

voidshow();

voidadd();//添加职工信息

voidsee();//查看职工信息

voidsearch();//查找职工信息

voidghcz();//按工号查找

voidxmcz();//按姓名查找

voidbmcz();//按部门查找

voiddel();//删除职工信息

voidxmsc();//按姓名删除

voidghsc();//按工号删除

voidstatistics();//个人工资统计

voidstatistic();//统计职工信息

voidgzdtj();//按工资段统计

voidbmtj();//按部门统计

voidmodify();//修改职工信息

voidghxg();//按工号修改

voidxmxg();//按姓名修改

voidreserve();//保存职工信息

1、添加职工信息:

添加函数流程图

2、查看职工信息:

查看函数流程图

 

3、查找职工信息:

查找函数流程图

 

4、删除职工信息:

删除函数流程图

5、个人工资统计

个人工资统计流程图

6、统计职工工资

工资统计流程图

7、修改职工工资

修改函数流程图

4、程序代码

#include

#include

#include

structworker

{chardepa[30];

charname[30];

charID[10];

intsalary1,salary2,salary3,salary4;

};

intdq(structworkerwo[]);

voidshow();

voidbc(structworkerwo[]);

voidadd();

voidsee();

voidsearch();

voidghcz();

voidxmcz();

voidbmcz();

voiddel();

voidxmsc();

voidghsc();

voidstatistics();

voidstatistic();

voidgzdtj();

voidbmtj();

voidmodify();

voidghxg();

voidxmxg();

voidreserve();

voidback();

structworkerwo[100];//保存所有的职工信息

intNumber=0;//记录总的职工人数

voidmain()

{

intchoose=0;

while

(1)

{

show();

printf("\t\t====>请选择:

");

scanf("%d",&choose);

system("cls");

switch(choose)

{

case0:

exit(0);//退出

break;

case1:

add();

back();//添加职工信息

break;

case2:

see();

back();//查看职工信息

break;

case3:

search();

back();//查找职工信息

break;

case4:

del();

back();//删除职工信息

break;

case5:

statistics();

back();//个人工资统计

break;

case6:

statistic();

back();//统计职工工资

break;

case7:

modify();

back();//修改职工信息

break;

case8:

reserve();

back();//保存数据

break;

default:

break;

}

fflush(stdin);

system("cls");

}

}

intdq(structworkerwo[])

{

FILE*fp=NULL;

inti=0;

fp=fopen("C:

//worker.dat","rb");

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

i++;

fclose(fp);

returni;

}

voidshow()

{

printf("\n");

printf("\t****************职工工资管理系统****************\n\n");

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

printf("\t^^^^^^^^^^^^^^^[1]添加职工信息^^^^^^^^^^^^^^^^^\n");

printf("\t^^^^^^^^^^^^^^^[2]查看职工信息^^^^^^^^^^^^^^^^^\n");

printf("\t^^^^^^^^^^^^^^^[3]查找职工信息^^^^^^^^^^^^^^^^^\n");

printf("\t^^^^^^^^^^^^^^^[4]删除职工信息^^^^^^^^^^^^^^^^^\n");

printf("\t^^^^^^^^^^^^^^^[5]个人工资统计^^^^^^^^^^^^^^^^^\n");

printf("\t^^^^^^^^^^^^^^^[6]统计职工工资^^^^^^^^^^^^^^^^^^\n");

printf("\t^^^^^^^^^^^^^^^[7]修改职工信息^^^^^^^^^^^^^^^^^\n");

printf("\t^^^^^^^^^^^^^^^[8]保存数据^^^^^^^^^^^^^^^^^\n");

printf("\t^^^^^^^^^^^^^^^[0]退出系统^^^^^^^^^^^^^^^^^\n\n");

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

}

voidbc(structworker*wo)

{

FILE*fp=NULL;

fp=fopen("C:

//worker.dat","ab+");

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

fclose(fp);

}

//添加职工信息

voidadd()

{

intnumberTemp=0;

inti=0;

structworkertemp;

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

");

scanf("%d",&numberTemp);

for(i=0;i

{

printf("输入第%d个职工信息\n",i+1);

printf("姓名:

");

scanf("%s",temp.name);

printf("工号:

");

scanf("%s",temp.ID);

printf("所属部门:

");

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

printf("基本工资:

");

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

printf("奖励工资:

");

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

printf("补贴项目即金额:

");

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

printf("扣除项目即金额:

");

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

wo[Number++]=temp;//写入到数组

bc(&temp);//写入到文件

}

printf("添加成功\n");

}

//查看职工信息

voidsee()

{

inti=0;

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

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

while(i

{

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].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);

i++;

}

}

//查找职工信息

voidsearch()

{

intn=0;

printf("1按姓名查找\n");

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

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

scanf("%d",&n);

switch(n)

{

case1:

xmcz();

break;

case2:

ghcz();

break;

case3:

bmcz();

break;

default:

printf("输入错误!

\n");

break;

}

}

voidxmcz()//按姓名查找

{

charname[30];

inti=0;

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

");

scanf("%s",name);

system("cls");

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

for(i=0;i

{

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

{

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].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);

}

}

}

voidghcz()//按工号查找

{

charid[10];

inti=0;

printf("请输入要查找工号:

");

scanf("%s",id);

system("cls");

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

for(i=0;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[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);

}

}

}

voidbmcz()//按部门查找

{

chardepa[30];

inti=0;

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

");

scanf("%s",depa);

system("cls");

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

for(i=0;i

{

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

{

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].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);

}

}

}

//删除职工信息

voiddel()

{

intn=0;

printf("1按姓名删除\n");

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

scanf("%d",&n);

switch(n)

{

case1:

xmsc();

break;

case2:

ghsc();

break;

}

}

voidxmsc()//按姓名删除

{

FILE*fp=NULL;

charname[30];

inti=0;

intj=0;

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

");

scanf("%s",name);

for(i=0;i

{

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

{

for(j=i;j

{

wo[j]=wo[j+1];

}

Number--;

}

}

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

fp=fopen("C:

//worker.dat","wb");

for(i=0;i

{

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

}

fclose(fp);

printf("删除成功;\n");

}

voidghsc()//按工号删除

{

FILE*fp=NULL;

charid[60];

inti=0;

intj=0;

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

");

scanf("%s",id);

for(i=0;i

{

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

{

for(j=i;j

{

wo[j]=wo[j+1];

}

Number--;

}

}

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

fp=fopen("C:

//worker.dat","wb");

for(i=0;i

{

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

}

fclose(fp);

printf("删除成功;\n");

}

//个人工资统计

voidstatistics()

{

inti=0;

doublesum[100];

for(i=0;i

{

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

printf("%s的总工资为:

%f\n",wo[i].name,sum[i]);

}

}

voidstatistic()//统计职工工资

{

intn=0;

printf("1按工资段统计\n");

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

scanf("%d",&n);

switch(n)

{

case1:

gzdtj();

break;

case2:

bmtj();

break;

default:

printf("输入错误!

\n");

break;

}

}

voidgzdtj()//按工资段统计

{intsa1,sa2;

inti=0;

intn,m;

intsl[20]={0,0};

doublesum[100];

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

");

scanf("%d-%d",&sa1,&sa2);

system("cls");

for(i=0;i

{

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

}

for(i=0;i

{n=sum[i]/1000;

if(n>9)n=10;

switch(n)

{case0:

sl[0]++;break;

case1:

sl[1]++;break;

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]++;break;

case10:

sl[10]++;break;

}

}

m=sa1/1000;

switch(m)

{case0:

printf("工资在1000以下的人数为%d\n",sl[0]);break;

case1:

printf("工资在1000到2000之间的人数为%d\n",sl[1]);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到8000之间的人数为%d\n",sl[7]);break;

case8:

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

case9:

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

case10:

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

}

}

voidbmtj()//按部门统计

{

chardepa[30];

floatsum=0;

inti=0;

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

");

scanf("%s",depa);

system("cls");

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

for(i=0;i

{

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

{

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].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);

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

}

}

printf("该部门的总工资为:

%f\n",sum);

}

//修改职工信息

voidmodify()

{

intmode=0;

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

printf("1按姓名查找修改\n");

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

scanf("%d",&mode);

switch(mode)

{

case1:

xmxg();

break;

case2:

ghxg();

break;

default:

printf("输入错误!

\n");

break;

}

}

voidxmxg()//按姓名修改

{

FILE*fp=NULL;

charname[30];

inti=0;

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

");

scanf("%s",name);

for(i=0;i

{

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

else

break;

}

printf("\t姓名\t工号\t所属部门\t基本工资\t奖励工资\t补贴项目及金额\t扣款项目及金额\t总工资\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].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);

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

printf("姓名:

");

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

printf("工号:

");

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

printf("所属部门:

");

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

printf("基本工资:

");

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

printf("奖励工资:

");

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

printf("补贴项目即金额:

");

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

printf("扣款项目及金额:

");

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

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

fp=fopen("C:

//worker.dat","wb");

for(i=0;i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1