员工工资管理Word格式文档下载.docx
《员工工资管理Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《员工工资管理Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
![员工工资管理Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-12/7/95b7123e-4ccb-4828-953f-a79ea16338f8/95b7123e-4ccb-4828-953f-a79ea16338f81.gif)
可以加以其它功能或修饰。
●用户界面中的菜单至少应包括“职工信息录入”、“按工资排序”、“插入新职工并按工资高低排序”、“退出”4项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
●封面
●课程设计任务书
●目录
●需求分析(分析题目的要求)
●程序流程图(总体流程图和主要功能模块流程图)
●核心技术的实现说明及相应程序段
●个人总结
●参考资料
●源程序及适当的注释
指导教师:
____________________
员工签名:
目录
一、程序设计题目1
二、需求分析1
三、程序流程图3
四、核心技术的实现方法、程序段及注释7
五、个人总结10
六、参考文献10
七、源程序11
一、程序设计题目
某企业职工工资管理,具体要求如下:
1、录入职工信息
2、对职工按工资排序并显示
3、能够增加新职工数据并按工资高低排序
4、退出
注:
每个员工数据至少应该包括工号、姓名、工资,员工数据要保存在worker.dat文件中。
二、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个函数,他们的功能分别是:
录入职工信息函数(shuru),工资排序并显示函数(sore),增加新职工数据函数(add),主函数(main)。
1、录入职工信息函数主要实现程序最初运行时员工数据的录入;
2、工资排序并显示函数实现的功能是按照工资由多到少对员工的数据进行排序,把排序后的文件保存到sore.dat文件中,并打印目前所有的有效员工记录信息;
3、增加新职工数据函数按插入新职工并按工资高低排序;
4、主函数实现的是程序界面的设计和各功能函数的调用;
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个员工记录都包含工号、姓名、工资,在程序当中,将员工记录类型定义为结构体类型,添加以及追加的员工信息直接写入worker.dat文件中,其他函数每次对员工记录的访问,其数据来源都是worker.dat文件,这样做不但可以保证员工数据的一致性,而且可以对员工数据进行永久保存,保证每次运行程序都可以采用原来的数据。
三、程序流程图
1、程序总体结构图
图1程序总体结构图
2、具体功能框图
(1)录入职工信息函数shuru
图2录入职工信息函数
(2)工资排序并显示函数sore
图3工资排序并显示函数
(3)增加新职工数据函数(add)
图4增加新职工数据函数
四、核心技术的实现方法、程序段及注释
本程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,工资排序并显示函数和增加新职工数据函数是程序中较为核心的部分,下面分别进行说明。
1、工资排序并显示函数
工资排序使用冒泡法,将结构体中的数据按照工资由多到少的顺序排序,把排序后的结果保存打印到屏幕上,并将结果保存到sore.dat文件中。
具体的程序段如下:
voidsore(intn)
{
inti,j=1;
structworkertemp;
FILE*fp1;
for(i=0;
i<
n-1;
i++)
for(j=0;
j<
n-1-i;
j++)
{
if(wor[j].gongzi<
wor[j+1].gongzi)
{strcpy(temp.num,wor[j].num);
strcpy(temp.name,wor[j].name);
temp.gongzi=wor[j].gongzi;
strcpy(wor[j].num,wor[j+1].num);
strcpy(wor[j].name,wor[j+1].name);
wor[j].gongzi=wor[j+1].gongzi;
strcpy(wor[j+1].num,temp.num);
strcpy(wor[j+1].name,temp.name);
wor[j+1].gongzi=temp.gongzi;
}
}
if((fp1=fopen("
sore.dat"
"
wb"
))==NULL)
printf("
打开文件失败!
"
);
exit(0);
printf("
序号工号姓名工资\n"
for(i=0;
n;
fwrite(&
wor[i],sizeof(structworker),1,fp1);
if(wor[i].gongzi==wor[i+1].gongzi)
%3d%5s%5s%8.2f\n"
j,wor[i].num,wor[i].name,wor[i].gongzi);
else
j++,wor[i].num,wor[i].name,wor[i].gongzi);
fclose(fp1);
2、增加新职工数据函数
该函数的核心内容是增加新的员工信息,保存到结构体中,并调用sore()函数将增加后的员工信息重新进行排序。
最后把增加后的总人数返回给主函数。
具体程序段如下:
intadd(intn)
{
inti,j;
FILE*fp;
if((fp=fopen("
worker.dat"
rb+"
))!
=NULL)
请输入要追加的员工数量,按回车键确认:
scanf("
%d"
&
j);
for(i=1;
=j;
\n请输入第%d个员工的工号、姓名、工资,并按回车键确认:
\n"
i);
%s%s%f"
wor[n+i-1].num,&
wor[n+i-1].name,&
wor[n+i-1].gongzi);
wor[n+i-1],sizeof(structworker),1,fp);
sore(n+j);
return(n+j);
五、个人总结
通过这几天的实习,我对vc++6.0软件有了新的认识,对c语言的应用也有了一定能力,通过这次课程设计我学到了以前没有掌握的很多知识,同时,我对学过的知识又进一步熟练掌握了。
我想这次课程设计对我未来的学习一定会有很大的帮助。
六、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
七、源程序
#include<
stdio.h>
string.h>
#defineN5
structworker
charnum[20];
charname[10];
floatgongzi;
}wor[N];
intshuru()
inti,n;
文件打开失败"
请输入要录入的员工数量,按回车键确认:
n);
=n;
printf("
scanf("
wor[i-1].num,&
wor[i-1].name,&
wor[i-1].gongzi);
if((fwrite(&
wor[i-1],sizeof(structworker),1,fp))!
=1)
printf("
文件保存失败!
fclose(fp);
return(n);
main()
inti,n=0;
*******************************************************************************\n"
*****************************欢迎使用员工工资管理系统**************************\n"
*********************************按r输入员工信息*******************************\n"
*********************************按s根据工资排序*******************************\n"
********************************按a增加新员工数据******************************\n"
***********************************按q退出程序*********************************\n"
while
(1)
switch(getch())
case'
r'
:
n=shuru();
break;
s'
sore(n);
a'
n=add(n);
q'
*****************************4406105班李翔版权所有*****************************\n"
exit(0);