c语言工资管理系统.docx

上传人:b****5 文档编号:3117543 上传时间:2022-11-17 格式:DOCX 页数:15 大小:42.57KB
下载 相关 举报
c语言工资管理系统.docx_第1页
第1页 / 共15页
c语言工资管理系统.docx_第2页
第2页 / 共15页
c语言工资管理系统.docx_第3页
第3页 / 共15页
c语言工资管理系统.docx_第4页
第4页 / 共15页
c语言工资管理系统.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

c语言工资管理系统.docx

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

c语言工资管理系统.docx

c语言工资管理系统

课程设计

学号班级姓名指导教师

年月日

c语言工资管理系统

 

沈阳航空工业学院

课程设计任务书

一、课程设计题目:

工资治理系统

二、课程设计工作自

三、课程设计内容

用C语言编写软件完成以下任务:

1输入工资数(职工数据要有职工号.姓名.所属部门.工龄和工资)储存在paid.dat文件中.

2对现有的职工数据按照所属部门排序,并显示出企业的平

均工资.

3职工涨工资(按照工龄按比例进行工资调整).

4查询职工的有关数据.

四、课程设计要求:

程序质量:

1贯彻结构化程序设计思想.

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("d:

\\paid.txt","w+");

}

while(strcmp(pp.work_num,"e")!

=0)

{

printf("\n请输入职工编号:

");

scanf("%s",pp.work_num);

printf("\n请输入职工姓名:

");

scanf("%s",pp.work_name);

printf("\n请输入职工部门:

");

scanf("%s",pp.work_part);

printf("\n请输入职工工资:

");

scanf("%d",&pp.work_paid);

printf("\n请输入职工工龄:

");

scanf("%d",&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);

printf("\n退出请输入e\n连续请按任意数字\n");

scanf("%s",pp.work_num);

fclose(fp);

}

2排序函数的功能是对学生信息进行排序,打开文件paid.txt。

定义结构体变量数组,把工人信息读取到结构体数组中,用冒泡法进行排序同时输出排序结果,此函数还有运算平均工资的功能。

voidsort_part()

{

FILE*fp;

inti,all,temp_i,k,t,sum=0;

structPaidpp[10];

chartemp_ch[55];

if((fp=fopen("d:

\\paid.txt","r+"))==NULL)

{

printf("\n不能打开文件paid.txt");

return;

}

i=0;

//判定文件是否终止

while(!

feof(fp))

{

fscanf(fp,"%s\t%s\t%s\t%d\t%d\n",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;

printf("\n%d个职员的平均工资%lf",all,(float)sum/all);printf("\n");

fclose(fp);

for(t=0;t

for(k=0;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("d:

\\paid.txt","w+");

for(i=0;i

{

fprintf(fp,"%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,pp[i].

work_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);

printf("%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,pp[i].wor

k_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);

}

fclose(fp);

}

3增加职工工资,自己设置一个职工工资的增加法则可,

读取职工信息同时把职工的工资进行按工龄增加。

最后把职工信息全部写入到文件中。

关闭文件

voidadd_paid()

{

FILE*fp;

inti,j,gongzi;

structPaidpp[10];

charnumber[50];

printf("\n请输入职工每年增加的工资:

");

scanf("%d",&gongzi);

if((fp=fopen("d:

\\paid.txt","r+"))==NULL)

{

printf("\n不能打开文件paid.txt");

return;

}

i=0;

j=0;

while(!

feof(fp))

{

fscanf(fp,"%s\t%s\t%s\t%d\t%d\n",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++;

}

fclose(fp);

if((fp=fopen("d:

\\paid.txt","w+"))==NULL)

{

printf("\n不能打开文件paid.txt");

return;

}

for(i=0;i

{

fprintf(fp,"%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,pp

[i].work_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);

printf("%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,pp[i].w

ork_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);

}

fclose(fp);

}

4职工信息的查询是通过打开文件paid.txt同时读取文件中的职工信息,并输出职工信息到屏幕上。

当文件终止,关闭文件,退出函数

voidsearch_worker()

{

FILE*fp;

intj;

structPaidpp[10];

charnumber[50];

if((fp=fopen("d:

\\paid.txt","r+"))==NULL)

{

printf("\n不能打开文件paid.txt");

return;

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

当前位置:首页 > 法律文书 > 判决书

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

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