c语言工资管理系统.doc_第1页
c语言工资管理系统.doc_第2页
c语言工资管理系统.doc_第3页
c语言工资管理系统.doc_第4页
c语言工资管理系统.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈 阳 航 空 工 业 学 院 课程设计学 号班 级 姓 名指导教师 年月日21 / 21沈阳航空工业学院课程设计任务书 一、课程设计题目:工资管理系统二、课程设计工作自三、课程设计内容用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六、源程序 18一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:输入职工数据函数(shuru),职工排序函数(sort_part),增加职工工资函数(add_paid),职工信息的查询函数(search_worker),以及主函数main().1、输入职工数据函数 实现的功能是按照工号对职工的数据输入并保存在paid.dat;2、职工排序函数 按照题目的具体要求实现的是按职工部门排序并算出平均工资。3、增加职工工资函数 允许职工按照根据工龄按比例进行工资调整。4、职工信息的查询函数 输出paid.dat文件中的职工的相关数据。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个职工记录都包含职工号.姓名.所属部门.工龄和工资,在程序当中,将职工记录类型定义为结构体类型,添加以及追加的职工信息直接写入D盘的paid.dat文件中,其他函数每次对职工记录的访问,其数据来源都是paid.dat文件,这样做不但可以保证职工数据的一致性,而且可以对职工数据进行永久保存,保证每次运行程序都可以采用原来的数据。二、程序流程图1 主函数 工资管理系统输入值n=1?真 假 输入值 n=2? 输 真 假 入 职 输入值n=3? 职 工 真 假 工 排 输入值n=4? 信 序 真 假 息 及 平 涨 查 均 工 询 工 资 职 退出 资 工 信息 2 录入职工信息函数定义指针fp 整型数据i 结构体变量pp 字符串数组number50判断文件Paid.txt是否存在是 否创建文件paid.txt While循环 输入各项数据 将数据写入文件关闭文件3涨工资函数 定义变量 打开文件No yesReturn 输入每年增加工资 假 While(!feof(fp) 真 调出文件中的工资数据Break 计算现在工资 输出职工信息 关闭文件4 排序函数 定义变量 no 打开文件 yes 继续 假 while(!fof) 真 return 跳出循环 工资累加 Return 求平均工资For循环 (t=0;tall-1;t+ k=0; kppk+1.work.part假 真 将部门替换 break 将相应职工信息替换过来 输出职工信息 关闭文件5 查询函数定义指针fp 整型数据j. 结构体变量pp 字符串数组number50判断文件Paid.txt是否存在是 否创建文件paid.txt While循环 输入各项数据 打印职工数据 关闭文件三、核心技术的实现说明及相应程序段本程序主要由四个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,输入数据函数、查询函数、涨工资函数和排序函数是程序中较为核心的部分,下面分别进行说明:1 录入职工信息,职工信息包括职工编号,姓名,部门,工资和工作年龄,本函数的功能是把职工信息写入到文件中。在程序中建立一个文件paid.txt.定义一个结构体变量。输入职工的基本信息把职工信息写入到文件中。之后再次输入下一个职工的编号,并且判断职工编号是否为 0 当不为零时,继续输入职工其它信息,并且把信息写入到文件中。直到输入的职工编号为零退出此函数void shuru()/ 定义文件类型指针 FILE *fp; int i; /定义结构体变量 pp struct Paid pp; char numer50; /打开文件 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,%st%st%st%dt%dn,pp.work_num,pp.work_name,pp.work_part,pp.work_paid,pp.work_age); printf(n退出请输入 en继续请按任意数字n);scanf(%s,pp.work_num); fclose(fp);2 排序函数的功能是对学生信息进行排序,打开文件paid.txt。定义结构体变量数组,把工人信息读取到结构体数组中,用冒泡法进行排序并且输出排序结果,此函数还有计算平均工资的功能。void sort_part() FILE *fp; int i,all,temp_i,k,t,sum=0; struct Paid pp10; char temp_ch55; if(fp=fopen(d:paid.txt,r+)=NULL) printf(n不能打开文件 paid.txt); return; i=0; / 判断文件是否结束 while(!feof(fp) fscanf(fp,%st%st%st%dt%dn,ppi.work_num ,ppi.work_name,ppi.work_part,&ppi.work_paid,&ppi.work_age); sum+=ppi.work_paid;i+; all=i; printf(n%d个员工的平均工资%lf,all, (float)sum/all); printf(n); fclose(fp); for(t=0;tall-1;t+) for(k=0;k0) strcpy(temp_ch,ppk.work_num ); strcpy(ppk.work_num,ppk+1.work_num); strcpy(ppk+1.work_num,temp_ch); strcpy(temp_ch,ppk.work_name); strcpy(ppk.work_name,ppk+1.work_name); strcpy(ppk+1.work_name,temp_ch); strcpy(temp_ch,ppk.work_part ); strcpy(ppk.work_part,ppk+1.work_part); strcpy(ppk+1.work_part,temp_ch); temp_i = ppk.work_paid; ppk.work_paid = ppk+1.work_paid; ppk+1.work_paid = temp_i;temp_i = ppk.work_age; ppk.work_age = ppk+1.work_age; ppk+1.work_age = temp_i; fp= fopen(d:paid.txt,w+); for(i=0;iall;i+) fprintf(fp,%st%st%st%dt%dn,ppi.work_num,ppi.work_name,ppi.work_part,ppi.work_paid,ppi.work_age); printf(%st%st%st%dt%dn,ppi.work_num,ppi.work_name,ppi.work_part,ppi.work_paid,ppi.work_age); fclose(fp);3 增加职工工资,自己设置一个职工工资的增加法则可,读取职工信息并且把职工的工资进行按工龄增加。最后把职工信息全部写入到文件中。关闭文件void add_paid() FILE *fp; int i,j,gongzi; struct Paid pp10; char number50; 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,%st%st%st%dt%dn,ppj.work_num ,ppj.work_name,ppj.work_part,&ppj.work_paid,&ppj.work_age); ppj.work_paid = ppj.work_paid + ppj.work_age * gongzi; j+; fclose(fp); if(fp=fopen(d:paid.txt,w+)=NULL) printf(n不能打开文件 paid.txt); return; for(i=0;ij;i+) fprintf(fp,%st%st%st%dt%dn,ppi.work_num,ppi.work_name,ppi.work_part,ppi.work_paid,ppi.work_age); printf(%st%st%st%dt%dn,ppi.work_num,ppi.work_name,ppi.work_part,ppi.work_paid,ppi.work_age); fclose(fp);4 职工信息的查询是通过打开文件paid.txt并且读取文件中的职工信息,并输出职工信息到屏幕上。当文件结束,关闭文件,退出函数void search_worker() FILE *fp; int j; struct Paid pp10; char number50; if(fp=fopen(d:paid.txt,r+)=NULL) printf(n不能打开文件 paid.txt); return; j=0; while(!feof(fp) fscanf(fp,%st%st%st%dt%dn,ppj.work_num ,ppj.work_name,ppj.work_part,&ppj.work_paid,&ppj.work_age);printf(%st%st%st%dt%dn,ppj.work_num ,ppj.work_name,ppj.work_part,ppj.work_paid,ppj.work_age); j+; if(0=j) printf(n数据库中没有员工信息); fclose(fp);四、个人总结计算机的应用已经越来越普及,进入普通百姓家庭。由于计算机的快速发展,计算机软件的发展也越来越快。在当前流行的计算机软件中,C 语言由于其功能强大,简单易懂,所以我对用C语言编程充满了爱好。当做完程序时对自己的小小成绩感到无比的骄傲和自豪。 通过一个学期的C语言学习,使我基本掌握了C语言的语法,掌握了面向过程编程的步骤。这次课程设计在课堂学习C语言的基础上有了很大的提高。使我更加熟练地掌握了C语言的调试、编写方法。总之我觉得很高兴能用所学解决实际问题。五、参考文献1C高级实用程序设计 作者:王士元,清华大学出版社,1996,2 谭浩强C程序设计北京:清华大学出版社,20053 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006六、源程序 /宏定义#include string.h#include stdio.h#include stdlib.h/ 定义结构体struct Paid char work_num50; char work_name50; char work_part50; int work_paid; int work_age;void shuru()/ 定义文件类型指针 FILE *fp; int i; /定义结构体变量 pp struct Paid pp; char numer50; /打开文件 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,%st%st%st%dt%dn,pp.work_num,pp.work_name,pp.work_part,pp.work_paid,pp.work_age); printf(n退出请输入 en继续请按任意数字n);scanf(%s,pp.work_num); fclose(fp);void sort_part() FILE *fp; int i,all,temp_i,k,t,sum=0; struct Paid pp10; char temp_ch55; if(fp=fopen(d:paid.txt,r+)=NULL) printf(n不能打开文件 paid.txt); return; i=0; / 判断文件是否结束 while(!feof(fp) fscanf(fp,%st%st%st%dt%dn,ppi.work_num ,ppi.work_name,ppi.work_part,&ppi.work_paid,&ppi.work_age); sum+=ppi.work_paid;i+; all=i; printf(n%d个员工的平均工资%lf,all, (float)sum/all); printf(n); fclose(fp); for(t=0;tall-1;t+) for(k=0;k0) strcpy(temp_ch,ppk.work_num ); strcpy(ppk.work_num,ppk+1.work_num); strcpy(ppk+1.work_num,temp_ch); strcpy(temp_ch,ppk.work_name); strcpy(ppk.work_name,ppk+1.work_name); strcpy(ppk+1.work_name,temp_ch); strcpy(temp_ch,ppk.work_part ); strcpy(ppk.work_part,ppk+1.work_part); strcpy(ppk+1.work_part,temp_ch); temp_i = ppk.work_paid;ppk.work_paid = ppk+1.work_paid; ppk+1.work_paid = temp_i; temp_i = ppk.work_age; ppk.work_age = ppk+1.work_age; ppk+1.work_age = temp_i; fp= fopen(d:paid.txt,w+); for(i=0;iall;i+) fprintf(fp,%st%st%st%dt%dn,ppi.work_num,ppi.work_name,ppi.work_part,ppi.work_paid,ppi.work_age); printf(%st%st%st%dt%dn,ppi.work_num,ppi.work_name,ppi.work_part,ppi.work_paid,ppi.work_age); fclose(fp);void add_paid() FILE *fp; int i,j,gongzi; struct Paid pp10; char number50; 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,%st%st%st%dt%dn,ppj.work_num ,ppj.work_name,ppj.work_part,&ppj.work_paid,&ppj.work_age); ppj.work_paid = ppj.work_paid + ppj.work_age * gongzi; j+; fclose(fp); if(fp=fopen(d:paid.txt,w+)=NULL) printf(n不能打开文件 paid.txt); return; for(i=0;ij;i+) fprintf(fp,%st%st%st%dt%dn,ppi.work_num,ppi.work_name,ppi.work_part,ppi.work_paid,ppi.work_age);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论