最新C语言职工工资管理系统.doc
Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC语言职工工资管理系统昆明理工大学昆明理工大学 程序设计基础课程综合设计实践教学课题报告课程名称: c语言程序设计 课题名称: 职工工资管理程序设计 组 长: 学号 1姓名李双江组 员: 学号 6姓名王洪雨学 院: 电力工程学院 专业班级: 水文与水资源工程 指导教师: 张启富 昆明理工大学计算中心2006 年 6 月 12 日昆明理工大学计算中心程序设计基础课程综合设计实践教学课题考核表课题名称:职工工资管理程序设计 学院:电力工程学院 专业班级:水文051 学号姓名小组编号题号承担及完成的内容成绩备注小组自评教师评定1李双江1. 选项菜单集成各功能函数模块2 . 职工工资进行排序并存入文件80926王洪雨1 录入职工工资信息2. 将排序后的文件输出并显示在屏幕上7575设计说明与功能描述(基本思路及关键语句说明)该程序首先是对程序中要产生的一些函数的定义,再在主函数中对它们进行调用。从而形成一套有条理的程序设计,并且能够很好的达到程序设计的目的。程序中,我们运用了语句,极其指针、文件等,方便的执行了对数据的操作。职工信息管理系统提供以下几个功能:1录入职工基本信息:录入要管理统计的职工信息。2汇总职工信息:计算职工的总工资。3排序并将数据存入文件:按总工资降序排列并将数据存入D盘空间。4输出数据表:将录入的职工数据输出。 组长签名: 200 6 年 6 月 12 日教师评语:按要求完成综合设计课题,符合教学要求,应用能力与实践能力有明显提高 教师签名:张启富 2006 年 6 月 16 日 第一部分 系统概述一、程序功能: 随着社会的发展,中小型企业在我国得到迅速发展,工资管理系统对企业的资金管理,起着越来越重要的作用。本程序就是为了更好更快的管理职建立的工工资而。它从标准输入设备(键盘)上输入一批职工工资信息,计算总工资,并按工资降序排序,最后输出到文件中,并将其显示到显示器上。二、程序算法:从主菜单中选择相对应的数字,使程序进入不同的程序模块,用switch实现其功能,程序共分为五个模块,分别为:主函数、Input( )函数(输入函数)、Paixu_fout(rs)函数(计算职工工资信息并输入文件)、Output(rs)输出函数(从文件中读入信息并将其输出到显示器)。各函数主要算法见个流程图第二部分 数据结构设计三、定义结构体: 定义一个包括职工信息极其工资基本信息,包括基本工资、奖金及其津贴,以及总工资的结构体。如下面所所示:structXSchar gh10;char name10;int salary;intreward;intjintie;intsum;cjRS,jd;四、数组设计: 程序中定义是两个字符型数组结构和一个结构体数组: 字符数组gh10在结构体中用于保存职工工号,name10用于保存职工姓名,结构体数组cjRS保存学生的所有信息。五、函数定义: 程序中定义了3个功能函数,它们是输入职工信息输入函数Input();排序并将职工信息输入文件函数Paixu_fout(rs);输出学生信息函数Output(int rs)。最后是主函数main()来调用以上3个函数。主函数流程图程序结束输入数据排序并存档输出数据退出系统出错判断客户选择主函数入口第三部分 使用程序说明八、调试:错误:原因:main()函数当中循环次数多了一个getchar(),导致必须输入两次数字才可以返回case 1:rs=Input();js(rs);break;case 2:Paixu_fout(rs);printf("t排序后的职工信息已存入D盘中的tlj.txt中n"); getchar();printf("t按任意键返回!n");getchar();break;for(i=0;i<rs-1;i+)fprintf(stdout,"%-10s%-10st%4dtt%4dt%4dt%-5dt%4.1fn",cji.xh,cji.name,cji.zd,cji.js,cji.xx,cji.sum,cji.ave);修改:case 1:rs=Input();js(rs);break;case 2:Paixu_fout(rs);printf("t排序后的职工信息已存入D盘中的tlj.txt中n"); printf("t按任意键返回!n");getchar();break;九、程序测试:1、 进入信息管理界面: 2、输入职工基本工资信息 3、利用文件将数据保存入盘内4、输出职工数据5、输入错误,直接返回选择菜单:6、退出系统第四部分、总结和体会组长: 李双江 一个学期的学习,让我见识到了苦,还有些许的甜。在懵懂之中,我慢慢的摸索,慢慢的实践,我不怕失败,勇往直前。正是有了这样的初生牛犊的精神,让我感到了 很多乐趣。 开始的时候,真的是什么的不懂,看着天书一般的程序,头皮都发麻。有时候,看着别人顺利的读出程序,写出自己的小设计,那种羡慕和失落,那种无奈叫人无法承受。不甘的学习,不停的努力,我不想放弃! 慢慢的,我能读程序了,渐渐的,我也不再恐惧和失落了。天书一般的程序,也渐渐的向我展示出它的内蕴。老师不怕我底子薄,不怕麻烦,将每一道题都讲的仔仔细细,我照着老师的话去做,不断地去学习,多花时间去看。很多的概念性问题,我都一一克服了,于是,在上机考试中,我顺利的答出了题目。 可是,在这次的程序设计中,我又感觉到那种失败的感觉。刚开始我并不是写的这个题目。我和组员一起,写了一个运动会成绩管理,好长好长的时间,我都泡在里面,我不断的发现着错误,不断的进步。可是到最后,我的程序还是没能运行,手忙脚乱的做了个小程序,就想您上面所见的,功能很不齐全,远没有我原先预想的那样很失落,不过最后我终于认识到一点:结果很重要,但是过程更需重视,我成长了,我也就获得了。 我希望,在下学期的等考中,我的成长可以得到体现,我的付出不会落空! 组员:王洪雨: 这次编程作业虽然对我们来说比较困难,但是值得高兴的,我们努力了,并基本完成了任务。这次做C语言程序让我感触颇深。是首先是由于对基础知识掌握不扎实,以至于刚开始拿着不知道从何下手,这就让我明白了学习的重要性。其次让我明白的是合作的重要性,我们小组只有两个人,设计时的分工就极其重要了,虽然这次我们没有做好这次题目,但是,不管是在知识的汲取上,还是我们在合作和团队意识上都有了很大的收获。为了做好这次作业,我们查阅了大量关于C语言编程的书籍,并接受了很多同学建议,以求做到精益求精。付出总有回报,即使它不能在现在,也将在不远的将来!第五部分、程序源代码:#include "stdio.h"#define RS 100/定义宏RSstructXSchar gh10;/定义结构体char name10;int salary;intreward;intjintie;intsum;cjRS,jd;/cj用来保存职工工资的基本信息,jd用来检验输入成绩的范围和做交换中间变量/输入图书馆人员的基本信息Input()int i=0;printf("t入职工工资信息:(若要结束输入over)n");while(1)/循环次数未知,用while来控制printf("t第%d位职工的编号:",i+1);/输入职工的编号gets(jd.gh);if(strcmp(jd.gh,"over")=0) return(i+1);break;/检验输入值是否为over,若是返回rs=i+1;printf("t工号为%s职工的姓名:",jd.gh);/用jd来暂时保存人员信息gets(jd.name);if(strcmp(jd.name,"END")=0) return(i+1);break;/检验输入值是否为over,若是返回rs=i+1;printf("t%s职工基本工资:",jd.name);while(1) scanf("%d",&jd.salary);/输入职工的基本工资 if(jd.salary>=0)break;/检验输入值合法性 else printf("t输入错误,请重试:"); printf("t%s职工的奖金:",jd.name);/输入职工的奖金while(1)scanf("%d",&jd.reward); if(jd.reward>=0)break;/检验输入值合法性 else printf("t输入错误,请重试:");printf("t%s职工的津贴:",jd.name);/职工的津贴while(1) scanf("%d",&jd.jintie); if(jd.jintie>=0)break;/检验输入值合法性 else printf("t输入错误,请重输:");cji=jd;i+;getchar();/计算职工工资基本信息函数js(int rs) int i;FILE *pk;if(pk=fopen("D:tj.txt","w")=NULL)/打开文件printf("文件打开失败!");exit(0);for(i=0;i<rs-1;i+)/计算总和 cji.sum=cji.salary+cji.reward+cji.jintie;fprintf(pk,"%-10s%-10s%4d%4d%4d%4dtn",cji.gh,cji.name,cji.salary,cji.reward,cji.jintie,cji.sum);fclose(pk);/排序并将人员信息输入文件Paixu_fout(int rs)FILE *pk;int i,j;if(pk=fopen("G:tlj.txt","w")=NULL)printf("文件打开失败!");exit(0);for(i=0;i<rs;i+)for(j=0;j<rs-i;j+)if(cjj.sum<=cjj+1.sum)jd=cjj+1;cjj+1=cjj;cjj=jd;fprintf(pk,"%-10s%-20s%4d%4d%4d%4dn",cji.gh,cji.name,cji.salary,cji.reward,cji.jintie,cji.sum);fclose(pk);Output(int rs)int i;FILE *pk;if(pk=fopen("D:tlj.txt","r")=NULL)printf("文件打开失败!");exit(0);printf("ntt职工工资排名如下:nn"); printf("t编号 t 姓名t 基本工资 t 奖金 津贴 总和 n");for(i=0;i<rs;i+)fscanf(pk,"%-10s%-20s%4c%4d%4d%4dt%4dn",cji.gh,cji.name,&cji.salary,&cji.reward,&cji.jintie,&cji.sum);fprintf(stdout,"%-10s%-8st%-10d%-10d%-10d%-10dtn",cji.gh,cji.name,cji.salary,cji.reward,cji.jintie,cji.sum);fclose(pk);main() int rs,c,t=1;while(t) printf("t*本系统为职工工资管理系统* n"); printf("t*欢迎使用本系统* n"); printf("tt 1.录入员工及工资信息 n");printf("tt 2.职工工资进行排序并存入文件 n");printf("tt 3.将排序后的文件输出并显示在屏幕上 n");printf("tt 4.退出程序。 n");printf("t* n"); printf("tt请选择对应编号(1,2,3, 4)");scanf("%d",&c);getchar();if(c<1|4<c)printf("t输入错误!请重输:n");continue;switch(c)case 1:rs=Input();js(rs);break;case 2:Paixu_fout(rs);printf("t排序后的职工信息已存入D盘中的tlj.txt中n"); getchar();printf("t按任意键返回!n");getchar();break;case 3:Output(rs);printf("t按任意键返回!n");break;case 4:t=0;printf("t*!谢谢使用!*n");printf("ttt按任意键返回!n");break; -