版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
年4月19日c语言工资管理系统资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。沈阳航空工业学院课程设计学号班级姓名指导教师年月日沈阳航空工业学院课程设计任务书一、课程设计题目:工资管理系统二、课程设计工作自三、课程设计内容用C语言编写软件完成以下任务:1输入工资数(职工数据要有职工号.姓名.所属部门.工龄和工资)保存在paid.dat文件中.2对现有的职工数据根据所属部门排序,并显示出企业的平均工资.3职工涨工资(根据工龄按比例进行工资调整).4查询职工的相关数据.四、课程设计要求:程序质量:1贯彻结构化程序设计思想.2用户界面友好,功能明确,操作方便.能够加以其它功能和修饰.3用户界面的菜单中包含"职工信息录入","排序及显示"."工资调整","信息查询"."退出"5项.所有职工数据的改变都应该在paid.dat文件中体现出来.4代码应适当缩进,并给出必要的注释,以增强程序的可读行.课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:1封面2课程设计任务书3目录4需求分析(分析题目的要求)5程序流程图(总体流程图和主要功能模块流程图)6核心技术的实现说明及相应程序段7个人总结8参考资料9源程序及适当的注释指导教师:_____学生签名:_____目录TOC\o"1-3"\h\z一、需求分析…………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=1?真假输入值n=2?输真假入职输入值n=3?职工真假工排输入值n=4?信序真假息及平涨查均工询工资职退出资工信息2录入职工信息函数定义指针fp整型数据i结构体变量pp字符串数组number[50]判断文件Paid.txt是否存在定义指针fp整型数据i结构体变量pp字符串数组number[50]判断文件Paid.txt是否存在是否创立文件paid.txtWhile循环输入各项数据将数据写入文件关闭文件3涨工资函数定义变量打开文件Noyes定义变量打开文件NoyesReturn输入每年增加工资假While(!feof(fp))真调出文件中的工资数据Break计算现在工资输出职工信息关闭文件4排序函数定义变量定义变量no打开文件yes继续假while(!fof)真return跳出循环工资累加Return求平均工资For循环(t=0;t<all-1;t++k=0;k<all-1-t;k++)pp[k].work..part>pp[k+1].work.part假真将部门替换break将相应职工信息替换过来输出职工信息关闭文件5查询函数定义指针fp整型数据j.结构体变量pp字符串数组number[50]判断文件定义指针fp整型数据j.结构体变量pp字符串数组number[50]判断文件Paid.txt是否存在是否创立文件paid.txtWhile循环输入各项数据打印职工数据关闭文件三、核心技术的实现说明及相应程序段本程序主要由四个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,输入数据函数、查询函数、涨工资函数和排序函数是程序中较为核心的部分,下面分别进行说明:1录入职工信息,职工信息包括职工编号,姓名,部门,工资和工作年龄,本函数的功能是把职工信息写入到文件中。在程序中建立一个文件paid.txt.定义一个结构体变量。输入职工的基本信息把职工信息写入到文件中。之后再次输入下一个职工的编号,而且判断职工编号是否为0当不为零时,继续输入职工其它信息,而且把信息写入到文件中。直到输入的职工编号为零退出此函数voidshuru(){//定义文件类型指针FILE*fp;inti;//定义结构体变量ppstructPaidpp;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<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("d:\\paid.txt","w+");for(i=0;i<all;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].work_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<j;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].work_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;}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);printf("%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);j++; }if(0==j)printf("\n数据库中没有员工信息");fclose(fp);四、个人总结计算机的应用已经越来越普及,进入普通百姓家庭。由于计算机的快速发展,计算机软件的发展也越来越快。在当前流行的计算机软件中,C语言由于其功能强大,简单易懂,因此我对用C语言编程充满了爱好。当做完程序时对自己的小小成绩感到无比的骄傲和自豪。经过一个学期的C语言学习,使我基本掌握了C语言的语法,掌握了面向过程编程的步骤。这次课程设计在课堂学习C语言的基础上有了很大的提高。使我更加熟练地掌握了C语言的调试、编写方法。总之我觉得很高兴能用所学解决实际问题。五、参考文献1《C高级实用程序设计》作者:王士元,清华大学出版社,1996,2谭浩强.C程序设计.北京:清华大学出版社,3刘成等.C语言程序设计实验指导与习题集.北京:中国铁道出版社,六、源程序//宏定义#include"string.h"#include"stdio.h"#include"stdlib.h"//定义结构体structPaid{charwork_num[50];charwork_name[50];charwork_part[50];intwork_paid;intwork_age;};voidshuru(){//定义文件类型指针FILE*fp;inti;//定义结构体变量ppstructPaidpp;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);}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<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("d:\\paid.txt","w+");for(i=0;i<all;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].work_name,pp[i].work_part,pp[i].work_paid,pp[i].work_age);}fclose(fp);}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<j;i++){fprintf(fp,"%s\t%s\t%s\t%d\t%d\n",pp[i].work_num,p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年吉林省白山市网格员招聘笔试参考题库及答案详解
- 2026年云南省临沧市事业编单位人员招聘考试参考题库及答案详解
- 2026年江西省宜春市社区工作者招聘笔试参考试题及答案详解
- 2026年哈尔滨市道外区社区工作者招聘笔试备考题库及答案详解
- 2026年上饶市信州区网格员招聘考试备考试题及答案详解
- 2026年城郊国道高速出入口 24 小时定点执勤辅警招聘考试题【含答案】
- 2026年河南省信阳市网格员招聘考试参考题库及答案详解
- 2026年自贡市贡井区事业编单位人员招聘笔试模拟试题及答案详解
- 2026年陕西省网格员招聘笔试参考试题及答案详解
- 2026年吉林省白山市事业编单位人员招聘考试参考试题及答案详解
- 乡土特色教育在劳动教育中的应用与实施路径
- TD-T 1048-2016耕作层土壤剥离利用技术规范
- 2023年湖北省襄阳市生物中考真题(解析版)
- DL-T1362-2014输变电工程项目质量管理规程
- 同济大学课件钢结构设计原理
- 食品行业的食品安全风险评估案例分析
- 沥青路面修补恢复施工方案
- 巡察组作风纪律情况评估表
- 《电能计量装置》课件
- 河北专接本化工原理汇编
- GB.T19418-2003钢的弧焊接头 缺陷质量分级指南
评论
0/150
提交评论