版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育培训中心课程认证审核流程指南
- 工程材料合法可靠使用声明书8篇
- 团队管理与激励策略工具
- 2026年职业教育实训基地建设现状与共享机制研究
- 2026年客服部年度服务提升与满意度调研方案
- 特殊过程的控制步骤与优化策略
- 父母拆迁房产归属协议书
- 浙江省杭州市萧山区党湾镇初级中学八年级数学下册-第五章-5.4中心对称2-浙教版市公开课获奖课件省名
- 路由追踪主要协议书是什么
- 酒店订房协议书价
- 2026年宁波卫生职业技术学院单招职业技能考试题库及答案详解(有一套)
- 2026年安徽卫生健康职业学院单招职业适应性考试题库及答案详解(网校专用)
- 2026中国航天三江集团限公司本部招聘2人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年徽商职业学院单招职业适应性测试题库与答案详解
- 2025 美国电影衍生品市场的开发策略课件
- 2026年安徽工商职业学院单招职业技能测试题库及答案详解(全优)
- 2026年南京科技职业学院单招职业适应性考试题库及1套完整答案详解
- 2026年六安职业技术学院单招职业适应性测试题库完整参考答案详解
- 2025年西藏区法院员额法官遴选笔试真题及答案解析
- 2026中国远洋海运集团全球物流基础设施投资、建设、运营人才招聘16人笔试备考试题及答案解析
- 2026年宁夏公务员考试《行测》试题及答案
评论
0/150
提交评论