c语言工资管理系统Word格式文档下载.docx
《c语言工资管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c语言工资管理系统Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
2用户界面友好,功能明确,操作方便.能够加以其他功能和修饰.
3用户界面的菜单中包含"
职工信息录入"
"
排序及显示"
."
工资调整"
信息查询"
退出"
5项.所有职工数据的改变都应该在paid.dat文件中体现出来.
4代码应适当缩进,并给出必要的注释,以增强程序的可读
行.
课程设计讲明书:
课程终止后,上交课程设计讲明书(打印稿和电子稿),其内容如下:
1封面
2课程设计任务书
3名目
4需求分析(分析题目的要求)
5程序流程图(总体流程图和要紧功能模块流程图)
6核心技术的实现讲明及相应程序段
7个人总结
8参考资料
9源程序及适当的注释
指导教师:
学生签名:
名目
一、需求分析1
二、程序流程图2
三、核心技术的实现讲明及相应程序段5
四、个人总结16
五、参考文献17
一、需求分析通过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:
输入职工数据函数(shuru),职工排序函数(sort_part),增加职工工资函数(add_paid),职工信息的查询函数(search_worker),以及主函数main().
1、输入职工数据函数实现的功能是按照工号对职工的数据输入并储存在paid.dat;
2、职工排序函数按照题目的具体要求实现的是按职工部门排序并算出平均工资。
3、增加职工工资函数承诺职工按照按照工龄按比例进行工资调整。
4、职工信息的查询函数输出paid.dat文件中的职工的有关数据。
除上面介绍的功能之外,程序还具有退出功能,能够在程序的一次运行当中循环执行所有的功能,并按照需要终止程序的执行。
每一个职工记录都包含职工号•姓名•所属部门•工龄和工资,在程序当中,将职工记录类型定义为结构体类型,添加以及追加的职工信息直截了当写入D盘的paid.dat文件中,其他函数每次对职工记录的访咨询,其数据来源差不多上paid.dat
文件,如此做不但能够保证职工数据的一致性,而且能够对职工数据进行永久储存,保证每次运行程序都能够采纳原先的数据。
二、程序流程图
3涨工资函数
5查询函数
定义指针fp整型数据j.结构体变量pp字符串数组number[50]
判定文件Paid.txt是否存在
是否
创建文件paid.txt
While循环
输入各项数据
打印职工数据
三、核心技术的实现讲明及相应程序段
本程序要紧由四个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,输入数据函数、查询函数、涨工资函数和排序函数是程序中较为核心的部分,下面分别进行讲明:
1录入职工信息,职工信息包括职工编号,姓名,部门,工资和工作年龄,本函数的功能是把职工信息写入到文件中。
在程序中建立一个文件paid.txt•定义一个结构体变量。
输入职工的差不多信息把职工信息写入到文件中。
之后再次输入下一个职工的编号,同时判定职工编号是否为0当不为零时,连续输入职工其它信息,同时把信息写入到文件中。
直到输入的职工编号为零退出此函数
voidshuru()
{
//定义文件类型指针
FILE*fp;
inti;
//定义结构体变量pp
structPaidpp;
charnumer[50];
//打开文件if((fp=fopen("
d:
\\paid.txt"
a+"
))==NULL)
fp=fopen("
w+"
);
}
while(strcmp(pp.work_num,"
e"
)!
=0)
printf("
\n请输入职工编号:
"
scanf("
%s"
pp.work_num);
\n请输入职工姓名:
pp.work_name);
\n请输入职工部门:
pp.work_part);
\n请输入职工工资:
%d"
&
pp.work_paid);
\n请输入职工工龄:
pp.work_age);
//把职员信息写入到文件中
fprintf(fp,"
%s\t%s\t%s\t%d\t%d\n"
pp.work_num,pp.work_name,pp.work_part,pp.work_paid,pp.work_age);
\n退出请输入e\n连续请按任意数字\n"
pp.work_num);
fclose(fp);
2排序函数的功能是对学生信息进行排序,打开文件paid.txt。
定义结构体变量数组,把工人信息读取到结构体数组中,用冒泡法进行排序同时输出排序结果,此函数还有运算平均工资的功能。
voidsort_part()
inti,all,temp_i,k,t,sum=0;
structPaidpp[10];
chartemp_ch[55];
if((fp=fopen("
r+"
\n不能打开文件paid.txt"
return;
i=0;
//判定文件是否终止
while(!
feof(fp))
fscanf(fp,"
pp[i].work_num,pp[i].work_name,pp[i].work_part,&
pp[i].work_paid,&
pp[i].work_age);
sum+=pp[i].work_paid;
i++;
all=i;
\n%d个职员的平均工资%lf"
all,(float)sum/all);
printf("
\n"
for(t=0;
t<
all-1;
t++)
for(k=0;
k<
all-1-t;
k++)
if(strcmp(pp[k].work_part,pp[k+1].work_part)>
0)
strcpy(temp_ch,pp[k].work_num);
strcpy(pp[k].work_num,pp[k+1].work_num);
strcpy(pp[k+1].work_num,temp_ch);
strcpy(temp_ch,pp[k].work_name);
strcpy(pp[k].work_name,pp[k+1].work_name);
strcpy(pp[k+1].work_name,temp_ch);
strcpy(temp_ch,pp[k].work_part);
strcpy(pp[k].work_part,pp[k+1].work_part);
strcpy(pp[k+1].work_part,temp_ch);
temp_i=pp[k].work_paid;
pp[k].work_paid=pp[k+1].work_paid;
pp[k+1].work_paid=temp_i;
temp_i=pp[k].work_age;
pp[k].work_age=pp[k+1].work_age;
pp[k+1].work_age=temp_i;
fp=fopen("
for(i=0;
i<
all;
i++)
pp[i].work_num,pp[i].
work_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);
pp[i].work_num,pp[i].wor
k_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);
3增加职工工资,自己设置一个职工工资的增加法则可,
读取职工信息同时把职工的工资进行按工龄增加。
最后把职工信息全部写入到文件中。
关闭文件
voidadd_paid()
inti,j,gongzi;
charnumber[50];
\n请输入职工每年增加的工资:
gongzi);
j=0;
pp[j].work_num,pp[j].work_name,pp[j].work_part,&
pp[j].work_paid,&
pp[j].work_age);
pp[j].work_paid=pp[j].work_paid+pp[j].work_age
*gongzi;
j++;
j;
pp[i].work_num,pp
[i].work_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);
pp[i].work_num,pp[i].w
ork_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);
4职工信息的查询是通过打开文件paid.txt同时读取文件中的职工信息,并输出职工信息到屏幕上。
当文件终止,关闭文件,退出函数
voidsearch_worker()
intj;