职工工资管理系统C语言.docx
- 文档编号:11831591
- 上传时间:2023-04-03
- 格式:DOCX
- 页数:27
- 大小:193.01KB
职工工资管理系统C语言.docx
《职工工资管理系统C语言.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统C语言.docx(27页珍藏版)》请在冰豆网上搜索。
职工工资管理系统C语言
1、设计容
设计一个工资管理程序
存储的数据包括:
XX,职工号,所属部门,基本工资,奖励工资,补贴项目及金额和扣款项目及金额。
功能:
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();//按XX查找
voidbmcz();//按部门查找
voiddel();//删除职工信息
voidxmsc();//按XX删除
voidghsc();//按工号删除
voidstatistics();//个人工资统计
voidstatistic();//统计职工信息
voidgzdtj();//按工资段统计
voidbmtj();//按部门统计
voidmodify();//修改职工信息
voidghxg();//按工号修改
voidxmxg();//按XX修改
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("XX: "); 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("\tXX\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按XX查找\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()//按XX查找 { charname[30]; inti=0; printf("请输入要查找职工XX: "); scanf("%s",name); system("cls"); printf("\tXX\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("\tXX\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("\tXX\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按XX删除\n"); printf("2按工号删除\n"); scanf("%d",&n); switch(n) { case1: xmsc(); break; case2: ghsc(); break; } } voidxmsc()//按XX删除 { FILE*fp=NULL; charname[30]; inti=0; intj=0; printf("请输入要删除的职工XX: "); 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("\tXX\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按XX查找修改\n"); printf("2按工号查找修改\n"); scanf("%d",&mode); switch(mode) { case1: xmxg(); break; case2: ghxg(); break; default: printf("输入错误! \n"); break; } } voidxmxg()//按XX修改 { FILE*fp=NULL; charname[30]; inti=0; printf("请输入要修改的职工XX: "); scanf("%s",name); for(i=0;i { if(strcmp(name,wo[i].name)); else break; } printf("\tXX\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("XX: "); 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统 语言