职工工资管理系统 薛小可.docx
- 文档编号:23066359
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:25
- 大小:241.32KB
职工工资管理系统 薛小可.docx
《职工工资管理系统 薛小可.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统 薛小可.docx(25页珍藏版)》请在冰豆网上搜索。
职工工资管理系统薛小可
┊┊
课程设计
服务课程名称:
C语言
系:
能源与动力工程
专业:
热能与动力工程
班级:
集控本112
学号:
01姓名:
薛小可
指导教师:
许薇薇、范彬
课程设计周次:
15周
起始日期:
2012.6.4至2012.6.8
目录
C语言课程设计成绩评定表1
C语言课程设计任务书2
程序设计思路3
程序基本框架结构图4
系统运行界面截图5
源代码清单7
课程设计总结17
┊┊
C语言课程设计成绩评定表
班级
集控本112
学号
01
姓名
薛小可
项目组
第五组
项目组长
李振华
项目组组员
于丙洋李振国安宁薛小可
本人工作简介:
在这一周的课设实训中,我主要负责的是职工工资管理系统程序中的排序部分,结合平时所学的C语言知识和老师、同学、教材的帮助,比较圆满的完成了自己的任务。
通过这一周的努力设计,使我对C语言有了更深刻的认识。
组长评语:
该组员积极参加分配任务,遵守老师的要求,态度认真,爱思考,能独立完成分配的所属任务,并且与其他组员多次进行共同调试,最终使程序运行起来。
成绩评定标准
A
B
C
D
E
理论基础
很好
好
比较好
一般
不好
报告完成情况
很好
好
比较好
一般
不好
纪律表现
很好
好
比较好
一般
不好
程序创意
很好
好
比较好
一般
不好
所选模块完成情况
很好
好
一般
较差
不好
所选算法难易程度
复杂
比较复杂
一般
简单
很简单
程序可操作性
很好
好
一般
较差
不好
答辩表现
很好
好
一般
较差
不好
最后成绩
优秀
A>=5
B<=3
C<=0
D=0
E=0
良好
A>=3
B<=4
C<=1
D=0
E=0
中等
A>=1
B>=2
C>=4
D<=1
E=0
及格
A=0
B=0
C<=4
D>=4
不及格
A=0
B=0
C=0
D<=4
E>=4
负责指导教师:
(签名)
指导教师:
(签名)
集控本112C语言课程设计任务书
一、设计目的
通过本次课程设计使学生进一步加深对C语言课程内容的理解,初步掌握一般应用程序的开发方法和步骤,进一步了解与掌握C语言的编程方法和技巧,提高学生用C语言解决实际问题的能力。
二、设计要求
1、认真查阅参考书、资料2、遵守课程设计时间安排
3、按时上机,认真调试程序4、认真完成课程设计报告
三、课设报告装订内容及顺序
1、课程设计封皮2、目录
3、课程设计成绩评定表4、课程设计任务书
5、程序基本框架图6、程序设计说明书
7、源代码清单8、课设总结与心得
四、设计题目
《职工工资管理系统》
五、时间安排(一周:
从6月4日到6月8日)
1、查阅资料及程序设计(1天)2、程序编制及调试(3天)
3、成绩评定(0.5天)3、打印报告(0.5天)
六、参考文献
1、《C语言程序设计》李淑华/李贞编大连理工大学出版社
2、《C语言程序设计》孙连科/姚大鹏编辽海出版社
3、《C++时尚编程百例》网冠科技编.机械工业出版社
4、《TURBOC实用大全》徐金梧等编.机械工业出版社
程序设计思路
在这次课设中,我的任务是编写职工工资管理系统的排序职工工资信息这块。
我的思路是:
首先,添加#include“stdio.h”等头文件使其正常运行。
定义结构体变量structpeople,里面用数组存放职工的各种信息。
如charnum[20],charname[9],floatjbgz,floatgwgz,floatgxkkhj,floatsfgz。
接着定义一个排序函数,定义文件指针structpeople*p_people指向之前定义的结构体变量,即structpeople*p_people=STU。
还定义了实型的总数inttotal=0,inti,int用于标记有要排序的职工在文件中的位置。
然后编写排序的职工姓名,工号.这里用了if语句while循环以及打开文件的fopen函数和在磁盘文件中读取块数据的fread函数。
然后将结构体STU送给ppeople,用输出函数输出“请输入排序职工的方法”.
最后用fclose函数关闭文件,显示排序成功的信息。
在这个程序中运用了文件指针,结构体变量,for循环,while循环if语句,其中文件这块涉及很多,包含了fread函数,fopen函数,fclose函数,fwrite函数等等。
整个程序除了主函数外,再加菜单函数int(),显示函数void(),查询函数void,排序函数,修改函数。
既而实现了录入、显示、追加、查询、修改、排序几大功能。
程序基本框架结构图
系统运行界面截图
源代码清单
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
structpeople
{charnum[20];
charname[9];
floatjbgz;
floatgwgz;
floatgxkkhj;
floatsfgz;
}STU[100];
/*********************************************************************/
voidinput()/*录入职工工资信息*/
{
inti,n;
structpeopleSTU;
FILE*fp;
system("cls");
if((fp=fopen("e:
\\file1","wb"))==NULL)
{printf("error!
\n");exit(0);}
printf("\n\t请输入职工人数:
");
scanf("%d",&n);
printf("\n\t请按下面提示输入职工数据\n");
for(i=0;i {printf("\n\t第%d个职工号: ",i+1); scanf("%s",STU.num); printf("\t姓名: "); scanf("%s",STU.name); printf("\t基本工资(大于0): "); scanf("%f",&STU.jbgz); if(STU.jbgz<0) {printf("\t输入有误! 请重新输入: "); scanf("%f",&STU.jbgz); } printf("\t岗位工资(大于0): "); scanf("%f",&STU.gwgz); if(STU.gwgz<0) {printf("输入有误! 请重新输入: "); scanf("%f",&STU.gwgz);} printf("\t各项扣款合计(大于0): "); scanf("%f",&STU.gxkkhj); if(STU.gxkkhj<0) {printf("\t输入有误! 请重新输入: "); scanf("%f",&STU.gxkkhj); } printf("\t实发工资: "); STU.sfgz=STU.gwgz+STU.jbgz-STU.gxkkhj; printf("%f",STU.sfgz); fwrite(&STU,sizeof(STU),1,fp); } fclose(fp); } /**********************************************************************/ voidshowall()/*职工工资显示*/ {structpeopleSTU; FILE*fp; system("cls"); if((fp=fopen("e: \\file1","rb"))==NULL) {printf("文件有错误不能打开! "); exit(0); } printf("\n\t编号\t姓名\t基本工资\t岗位工资\t各项扣款合计\t实发工资\n"); while(fread(&STU,sizeof(STU),1,fp)) printf("\n\t%s\t%s\t%f\t%f\t%f\t%f\t\n",STU.num,STU.name,STU.jbgz,STU.gwgz,STU.gxkkhj,STU.sfgz); fclose(fp); system("pause"); } /**********************************************************************/ voidappend()/*追加职工信息*/ {inti,n; structpeopleSTU; FILE*fp; system("cls"); if((fp=fopen("e: \\file1","ab"))==NULL) {printf("error! \n");exit(0);} printf("\n\n\t请输入追加的职工人数: "); scanf("%d",&n); printf("\n\t请按下面提示输入职工数据\n"); for(i=0;i {printf("\n\t第%d个职工号: ",i+1); scanf("%s",STU.num); printf("\t姓名: "); scanf("%s",STU.name); printf("\t基本工资(大于0): "); scanf("%f",&STU.jbgz); if(STU.jbgz<0) {printf("\t输入有误! 请重新输入: "); scanf("%f",&STU.jbgz); } printf("\t岗位工资(大于0): "); scanf("%f",&STU.gwgz); if(STU.gwgz<0) {printf("\t输入有误! 请重新输入: "); scanf("%f",&STU.gwgz);} printf("\t各项扣款合计(大于0): "); scanf("%f",&STU.gxkkhj); if(STU.gxkkhj<0) {printf("\t输入有误! 请重新输入: "); scanf("%f",&STU.gxkkhj); } printf("\t实发工资: "); STU.sfgz=STU.gwgz+STU.jbgz-STU.gxkkhj; printf("%f",STU.sfgz); fwrite(&STU,sizeof(STU),1,fp); } fclose(fp); } /*********************************************************************/ voidsearchbyhao()/*职工工资查询*/ {FILE*fp; structpeopleSTU; chars[20]; intb=0; system("cls"); if((fp=fopen("e: \\file1","rb"))==NULL) {printf("文件有错误,不能打开! "); exit(0);} printf("\n请输入要查询的工号: "); scanf("%s",s); while(fread(&STU,sizeof(STU),1,fp)) if(strcmp(STU.num,s)==0) {b=1; break; } if(b==0) {printf("\n不存在工号为%s的职工",s); system("pause"); } fclose(fp); if(b==1) {printf("\n========================="); printf("\n查询成功\n"); printf("要查询的职工信息为: "); printf("\n\t编号\t姓名\t基本工资\t岗位工资\t各项扣款合计\t实发工资\n"); printf("\n\t%s\t%s\t%f\t%f\t%f\t%f\t\n",STU.num,STU.name,STU.jbgz,STU.gwgz,STU.gxkkhj,STU.sfgz); rewind(fp); system("pause"); } } voidsearchbyname() {FILE*fp; charb[9]; inti=0; structpeopleSTU; system("cls"); if((fp=fopen("e: \\file1","rb"))==NULL) {printf("error! \n");exit(0);} printf("\n请输入要查询到职工姓名: "); scanf("%s",b); while(fread(&STU,sizeof(STU),1,fp)) if(strcmp(STU.name,b)==0) {i=1; break; } fclose(fp); if(i==0) {printf("\n不存在职工姓名为%s的职工",b); system("pause"); } if(i==1) {printf("\n========================="); printf("\n查询成功\n"); printf("要查询的职工信息为: "); printf("\n\t编号\t姓名\t基本工资\t岗位工资\t各项扣款合计\t实发工资\n"); printf("\n\t%s\t%s\t%f\t%f\t%f\t%f\t\n",STU.num,STU.name,STU.jbgz,STU.gwgz,STU.gxkkhj,STU.sfgz); rewind(fp); system("pause"); } } voidsearch() { system("cls"); printf("\t**********欢迎使用职工工资查询系统**********\t\n"); printf("\t\t1.按职工号查询\n\n\t\t2.按职工姓名查询\n\n\t\t0.退出程序\n\n"); printf("请选择"); inti; scanf("%d",&i); while(i<0||i>3) {printf("输入有误,请从新输入! \n"); printf("请选择"); scanf("%d",&i); } switch(i) {case1: searchbyhao();break; case2: searchbyname();break; case0: exit(0); } } /*********************************************************************/ voidxiugai()/*修改职工工资信息*/ { structpeople*p_people=STU; structpeoplepeople_edit;/*记录修改后的信息*/ FILE*fp; inttotal=0; inti; intlocate;/*用于标记有要修改的职工在文件中的位置*/ intflag=0;/*标记职工信息中是否存在要修改信息的职工,0表示不存在,1表示存在*/ charname_edit[8];/*要修改信息的职工的姓名*/ system("cls"); if((fp=fopen("e: \\file1","rb+"))==NULL) {printf("error! \n");exit(0);} while(fread(p_people,sizeof(structpeople),1,fp)) {p_people++; total++; } p_people=STU; printf("\n请输入要修改信息的职工的姓名: "); scanf("%s",name_edit); for(i=0;i {if(strcmp(p_people->name,name_edit)==0) {locate=i; flag=1; break; } elsep_people++; } if(flag==0) {printf("\n信息表中不存在该姓名的职工! \n"); system("pause"); } if(flag==1) {printf("\n======================="); printf("\n请输入职工号: ",p_people->num); scanf("%s",people_edit.num); printf("\n请输入职工的姓名: ",p_people->name); scanf("%s",people_edit.name); printf("\n请输入职工的基本工资: ",p_people->jbgz); scanf("%f",&people_edit.jbgz); printf("\n请输入职工的岗位工资: ",p_people->gwgz); scanf("%f",&people_edit.gwgz); printf("\n请输入职工的各项扣款合计: ",p_people->gxkkhj); scanf("%f",&people_edit.gxkkhj); printf("\n请输入职工的实发工资: ",p_people->sfgz); scanf("%f",&people_edit.sfgz); fseek(fp,locate*sizeof(structpeople),SEEK_SET);/*将文件指针定位到文件中原信息的位置*/ fwrite(&people_edit,sizeof(structpeople),1,fp); fclose(fp); printf("/n成功修改该职工信息! ! \n"); rewind(fp); system("pause"); } } /*********************************************************************/ voidsortbysfgz()/*职工工资排序*/ {structpeopleSTU[100],t; FILE*fp; inttotal=0; inti,j; system("cls"); if((fp=fopen("e: \\file1","rb"))==NULL) {printf("文件有错误不能打开! "); exit(0); } while(fread(&STU[total],sizeof(structpeople),1,fp)! =0) total++; for(i=0;i for(j=total-1;j>i;j--) if(STU[j].sfgz {t=STU[j];STU[j]=STU[j-1];STU[j-1]=t;} printf("\n\n\nt按实际工资排序的结果如下;\n"); printf("\n\t职工号\t姓名\t基本工资\t岗位工资\t各项扣款合计\t实发工资\n\n"); for(i=0;i printf("\n\t%s\t%s\t%f\t%f\t%f\t%f\t",STU[i].num,STU[i].name,STU[i].jbgz,STU[i].gwgz,STU[i].gxkkhj,STU[i].sfgz); system("pause"); } voidsortbynum() {structpeopleSTU[100]; structpeoplet; FILE*fp; inttotal=0; inti,j; system("cls"); if((fp=fopen("e: \\file1","rb"))==NULL) {printf("文件有错误不能打开! "); exit(0); } while(fread(&STU[total],sizeof(structpeople),1,fp)! =0) total++; for(i=0;i for(j=total-1;j>i;j--) if(strcmp(STU[j].num,STU[j-1].num)>0) {t=STU[j];STU[j]=STU[j-1];STU[j-1]=t;} printf("\n\n\n\t按职工号排序的结果如下;\n"); printf("\n\t职工号\t姓名\t基本工资\t岗位工资\t各项扣款合计\t实发工资\n\n"); for(i=0;i printf("\n\t%s\t%s\t%f\t%f\t%f\t%f\t",STU[i].num,STU[i].name,STU[i].jbgz,STU[i].gwgz,STU[i].gxkkhj,STU[i].sfgz); printf("\n\tpressanykeytocontinue..."); system("pause"); } voidsort() { system("cls"); printf("\t**********欢迎使用职工工资排序系统**********\t\n"); printf("\n\t\t1.按职工号排序\n\n\t\t2.按职工实际工资排序\n\n\t\t0.退出程序\n\n"); printf("请选择"); inti; scanf("%d",&i); while(i<0||i>2) {printf("输入有误,请从新输入! \n"); printf("请选择"); scanf("%d",&i); } switch(i) {case1: sortbysfgz();break; case2: sortbynum();break; case0: exit(0); } } /**************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资管理系统 薛小可 职工工资 管理 系统 小可