某企业职工工资管理系统.docx
- 文档编号:13700089
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:13
- 大小:229.03KB
某企业职工工资管理系统.docx
《某企业职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《某企业职工工资管理系统.docx(13页珍藏版)》请在冰点文库上搜索。
某企业职工工资管理系统
沈阳航空工业学院
课程设计
学号
班级
姓名
指导教师
2009年6月5日
课程设计任务书
一、课程设计题目:
某企业职工工资管理系统
二、课程设计工作自2009年6月1日起至2007年6月5日止
三、课程设计内容:
用C语言编写软件完成以下任务:
1录入职工信息;
2对职工按工资排序并显示;
3能够增加新职工数据并按工资高低排序。
四、课程设计要求:
程序质量:
●贯彻结构化程序设计思想。
●用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
●用户界面中的菜单至少应包括“职工信息录入”、“按工资排序”、“插入新职工并按工资高低排序”、“退出”4项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
●封面
●课程设计任务书
●目录
●需求分析(分析题目的要求)
●程序流程图(总体流程图和主要功能模块流程图)
●核心技术的实现说明及相应程序段
●个人总结
●参考资料
●源程序及适当的注释
指导教师:
学生签名:
五、成绩:
六、教师评语:
一、程序设计题目
某企业职工工资管理,具体要求如下:
1、录入职工信息
2、对职工按工资排序并显示
3、能够增加新职工数据并按工资高低排序
4、退出
注:
每个员工数据至少应该包括工号、姓名、工资,员工数据要保存在worker.dat文件中。
二、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个函数,他们的功能分别是:
录入职工信息函数(shuru),工资排序并显示函数(sore),增加新职工数据函数(add),主函数(main)。
1、录入职工信息函数主要实现程序最初运行时员工数据的录入;
2、工资排序并显示函数实现的功能是按照工资由多到少对员工的数据进行排序,把排序后的文件保存到sore.dat文件中,并打印目前所有的有效员工记录信息;
3、增加新职工数据函数按插入新职工并按工资高低排序;
4、主函数实现的是程序界面的设计和各功能函数的调用;
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个员工记录都包含工号、姓名、工资,在程序当中,将员工记录类型定义为结构体类型,添加以及追加的员工信息直接写入worker.dat文件中,其他函数每次对员工记录的访问,其数据来源都是worker.dat文件,这样做不但可以保证员工数据的一致性,而且可以对员工数据进行永久保存,保证每次运行程序都可以采用原来的数据。
三、程序流程图
1、程序总体结构图
图1程序总体结构图
2、具体功能框图
(1)录入职工信息函数shuru
图2录入职工信息函数
(2)工资排序并显示函数sore
图3工资排序并显示函数
(3)增加新职工数据函数(add)
图4增加新职工数据函数
四、核心技术的实现方法、程序段及注释
本程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,工资排序并显示函数和增加新职工数据函数是程序中较为核心的部分,下面分别进行说明。
1、工资排序并显示函数
工资排序使用冒泡法,将结构体中的数据按照工资由多到少的顺序排序,把排序后的结果保存打印到屏幕上,并将结果保存到sore.dat文件中。
具体的程序段如下:
voidsore(intn)
{
inti,j=1;
structworkertemp;
FILE*fp1;
for(i=0;i for(j=0;j { if(wor[j].gongzi {strcpy(temp.num,wor[j].num); strcpy(temp.name,wor[j].name); temp.gongzi=wor[j].gongzi; strcpy(wor[j].num,wor[j+1].num); strcpy(wor[j].name,wor[j+1].name); wor[j].gongzi=wor[j+1].gongzi; strcpy(wor[j+1].num,temp.num); strcpy(wor[j+1].name,temp.name); wor[j+1].gongzi=temp.gongzi; } } if((fp1=fopen("sore.dat","wb"))==NULL) { printf("打开文件失败! "); exit(0); } printf("序号工号姓名工资\n"); for(i=0;i { fwrite(&wor[i],sizeof(structworker),1,fp1); if(wor[i].gongzi==wor[i+1].gongzi) printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi); else printf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi); } fclose(fp1); } 2、增加新职工数据函数 该函数的核心内容是增加新的员工信息,保存到结构体中,并调用sore()函数将增加后的员工信息重新进行排序。 最后把增加后的总人数返回给主函数。 具体程序段如下: intadd(intn) { inti,j; FILE*fp; if((fp=fopen("worker.dat","rb+"))! =NULL) { printf("请输入要追加的员工数量,按回车键确认: "); scanf("%d",&j); for(i=1;i<=j;i++) { printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认: \n",i); scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi); fwrite(&wor[n+i-1],sizeof(structworker),1,fp); } } sore(n+j); return(n+j); } 五、个人总结 通过这几天的课程设计,我对vc++6.0软件有了新的认识,对c语言的应用也有了一定能力,培养了我对c语言学习的兴趣,通过这次课程设计我学到了以前没有掌握的很多知识,同时,我对学过的知识又进一步熟练掌握了。 在课设的过程中我和同学探讨了一些相关的问题,有些问题也得到了老师的耐心讲解。 我真心的感谢老师的辛勤教育,也促进了我和同学之间的友谊。 我想这次课程设计对我未来的学习一定会有很大的帮助。 六、参考文献 1谭浩强.《C程序设计》.北京: 清华大学出版社,2005 2邱虹坤、王亚杰等.《C语言程序设计实验指导与习题集》.北京: 中国铁道出版社,2006 七、源程序 #include #include #defineN5 structworker { charnum[20]; charname[10]; floatgongzi; }wor[N]; intshuru() { inti,n; FILE*fp; if((fp=fopen("worker.dat","wb"))==NULL) { printf("文件打开失败"); exit(0); } printf("请输入要录入的员工数量,按回车键确认: "); scanf("%d",&n); for(i=1;i<=n;i++) { printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认: \n",i); scanf("%s%s%f",&wor[i-1].num,&wor[i-1].name,&wor[i-1].gongzi); if((fwrite(&wor[i-1],sizeof(structworker),1,fp))! =1) printf("文件保存失败! \n"); } fclose(fp); return(n); } voidsore(intn) { inti,j=1; structworkertemp; FILE*fp1; for(i=0;i for(j=0;j { if(wor[j].gongzi {strcpy(temp.num,wor[j].num); strcpy(temp.name,wor[j].name); temp.gongzi=wor[j].gongzi; strcpy(wor[j].num,wor[j+1].num); strcpy(wor[j].name,wor[j+1].name); wor[j].gongzi=wor[j+1].gongzi; strcpy(wor[j+1].num,temp.num); strcpy(wor[j+1].name,temp.name); wor[j+1].gongzi=temp.gongzi; } } if((fp1=fopen("sore.dat","wb"))==NULL) { printf("打开文件失败! "); exit(0); } printf("序号工号姓名工资\n"); for(i=0;i { fwrite(&wor[i],sizeof(structworker),1,fp1); if(wor[i].gongzi==wor[i+1].gongzi) printf("%3d%5s%5s%8.2f\n",j,wor[i].num,wor[i].name,wor[i].gongzi); else printf("%3d%5s%5s%8.2f\n",j++,wor[i].num,wor[i].name,wor[i].gongzi); } fclose(fp1); } intadd(intn) { inti,j; FILE*fp; if((fp=fopen("worker.dat","rb+"))! =NULL) { printf("请输入要追加的员工数量,按回车键确认: "); scanf("%d",&j); for(i=1;i<=j;i++) { printf("\n请输入第%d个员工的工号、姓名、工资,并按回车键确认: \n",i); scanf("%s%s%f",&wor[n+i-1].num,&wor[n+i-1].name,&wor[n+i-1].gongzi); fwrite(&wor[n+i-1],sizeof(structworker),1,fp); } } sore(n+j); return(n+j); } main() { inti,n=0; printf("*******************************************************************************\n"); printf("*******************************************************************************\n"); printf("*****************************欢迎使用员工工资管理系统**************************\n"); printf("*******************************************************************************\n"); printf("*********************************按r输入员工信息*******************************\n"); printf("*********************************按s根据工资排序*******************************\n"); printf("********************************按a增加新员工数据******************************\n"); printf("***********************************按q退出程序*********************************\n"); printf("*******************************************************************************\n"); while (1) switch(getch()) { case'r': n=shuru();break; case's': sore(n);break; case'a': n=add(n);break; case'q': printf("*******退出程序谢谢使用*******\n"); exit(0); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 企业职工 工资管理 系统