职工工资管理系统报告_第1页
职工工资管理系统报告_第2页
职工工资管理系统报告_第3页
职工工资管理系统报告_第4页
职工工资管理系统报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

PAGE信息技术与工程学院课程设计报告课程名称高级语言程序设计设计题目职工工资管理系统专业班级14级计本一班小组成员张亢元仝亚超王佩指导教师温娟娟成绩2015年06月17日目录TOC\o"1-2"\h\z\u1需求分析 11.1问题描述 11.2功能描述 12系统设计 12.1总体设计 12.2详细设计 23系统测试 43.1输入功能测试 43.2显示功能测试 53.3修改功能测试 63.4查找功能测试 73.5删除功能测试 83.6统计功能测试 93.7排序功能测试 103.8打印功能测试 114总结 125调试分析 12参考文献 12附录 13PAGEPAGE2系统主窗体系统主窗体系统主窗体输入职工确定?NY输入职工信息操作成功显示信息通过姓名查询存在?NY操作成功通过ID查询存在?N操作成功Y修改信息输入员工ID操作成功筛选信息输入筛选信息操作成功删除信息输入删除条件操作成功统计信息操作成功排序信息1、总工资从小到大2、总工资从小到大操作成功操作成功打印信息操作成功3系统测试3.1输入功能测试输入“1”显示“系统已有职工的工资记录,再次输入将覆盖原记录,要继续吗?(请输入'y'或'n'):”接着输入“y”显示输入员工人数输入员工信息如下:01张望1286794198109135203402李明118562813594114174003王小民895438986473129404张效章1350868210116150216205彭山74539884616810983.2显示功能测试3.3修改功能测试3.4查找功能测试3.5删除功能测试3.6统计功能测试3.7排序功能测试3.8打印功能测试4总结本次课程设计的名称是员工工资管理系统,由于我们组能力有限,加之近期课程任务比较紧迫,所以该系统还是有许多不完善的地方。系统完全实现的功能有输入记录、显示记录、修改记录、查找记录、删除记录、统计等。尽管还是有许多的不完善之处,总的来说还是收获很大的,因为通过这次的团队合作,我们组首先对c只是有了很深的了解,就是程序的分析和设计也有了很深的体会。我们将会在今后的学习和工作中发扬团队精神,而且会认真虚心的向有经验的人们学习交流。希望我们以后能再接再厉,做出更加优秀id程序。5调试分析在本次课程设计实践过程中出现了很多问题,这些问题对我来说一时间难以解决。在程序运行过程中出现的问题如下:在信息输入时,未能根据需求确定职工人数,导致以后的输出出现问题。解决方案:在设计子函数时运用了值传递来确定职工总人数在统计函数中不能正确输出百分比的值,输出的全是“0%”,原因是:忽略了整形变量与整形变量相除得到的结果是整形结果。解决方案:将变量转化为浮点型变量。修改职工信息时不能保存,原因:修改时保存的地址不是原来变量的地址,修改方案:将修改地址改回到原来的地址。此程序仍存在的问题:执行完每一个任务后,要按两次回车键才能继续循环。参考文献1《C语言课程设计案例精编》郭翠英

2《C程序设计教程》孙淑霞

代世雄著3《C程序设计语言》.北京:机械工业出版社.杨涛4《C语言程序设计教程[M]》.第3版.高等教育出版社,2006谭浩强,张基温.附录#include<stdio.h>#include<string.h>#defineN100structworker{ intID; charname[20]; floatbase;//base基本工资 floatrate;//rate职务工资 floatsubsidy;//subsidy岗位津贴 floatmedicare;//medicare医疗保险 floatfund;//fund公积金 floattotal;//tootal总工资};intmain(){ intinput(structworkerwork[],inta);//输入函数,输入职工的信息 voidxianshi(structworkerwork[],inta);//显示,按要求显示需要显示的职工信息 voidxiugai(structworkerwork[],inta);//修改函数,修改需要修改的职工信息 voidsearch(structworkerwork[],inta);//查找函数,查找符合条件的员工,并输出其信息 intdele(structworkerwork[],inta);//删除函数,删除满足条件的员工信息 voidtongji(structworkerwork[],inta);//统计函数,统计员工的信息 voidpaixu(structworkerwork[],inta);//排序函数,按照要求将员工信息排序 voiddayin(structworkerwork[],inta);//打印,将所有职工的信息输出 structworkerwork[N],*p=work; inta=N,select; /*printf("请输入员工人数:"); scanf("%d",&a);*/ printf("您是首次登陆本系统,请先输入员工信息:\n"); a=input(p,a); do {//打印菜单选项 printf("\n**************职工工资管理系统**************\n"); printf("\n1.输入职工信息\n"); printf("\n2.通过姓名显示职工信息\n"); printf("\n3.修改职工信息\n"); printf("\n4.查找信息\n"); printf("\n5.删除信息\n"); printf("\n6.统计信息\n"); printf("\n7.按总工资排序\n"); printf("\n8.打印全部职工信息\n"); printf("\n0.退出系统\n"); printf("\n********************************************\n"); printf("请输入您选择的操作:"); scanf("%d",&select); switch(select) { case1: printf("系统已有职工的工资记录,再次输入将覆盖原记录,要继续吗?(请输入'y'或'n'):"); getchar(); if((getchar()=='y')||(getchar()=='Y')) a=input(p,a); break; case2: xianshi(p,a); break; case3: xiugai(p,a); break; case4: search(p,a); break; case5: a=dele(p,a); break; case6: tongji(p,a); break; case7: paixu(p,a); break; case8: dayin(p,a); break; case0: printf("要继续操作吗?(请输入'y'或'n'):"); } getchar(); if((getchar()=='y')||(getchar()=='Y')) break; } while(1); printf("职工工资管理系统本次运行结束!\n"); return0;}//输入函数,输入职工的信息intinput(structworkerwork[],inta){ inti; printf("请输入员工人数:\n"); scanf("%d",&a); printf("输入格式为:\nID号,姓名\n基本工资,职务工资,岗位津贴,医疗保险,公积金\n"); for(i=0;i<a;i++) { scanf("%d,%s",&work[i].ID,work[i].name); scanf("%f,%f,%f,%f,%f",&work[i].base,&work[i].rate,&work[i].subsidy,&work[i].medicare,&work[i].fund); } returna;}//显示,按要求显示需要显示的职工信息voidxianshi(structworkerwork[],inta){ inti,select,t; char*next,r[20]; printf("\n1.按姓名查找\n"); printf("\n2.按ID查找\n"); scanf("%d",&select); switch(select) { case1: printf("请输入要显示的姓名:\n"); scanf("%s",r); next=r; printf("ID号姓名基本工资职务工资岗位津贴医疗保险公积金\n"); for(i=0;i<a;i++) if(strcmp(next,work[i].name)==0) printf("%4d%s%4f%4f%4f%4f%4f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); break; case2: printf("请输入要查询的ID:\n"); scanf("%d",&t); printf("ID号姓名基本工资职务工资岗位津贴医疗保险公积金\n"); for(i=0;i<a;i++) if(t==work[i].ID) printf("%4d%s%4f%4f%4f%4f%4f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); break; }}//修改函数,修改需要修改的职工信息voidxiugai(structworkerwork[],inta){ inti,ID,t; printf("请输入要修改员工的ID:\n"); scanf("%d",&ID); printf("修改前职工的信息:\n"); printf("ID号姓名基本工资职务工资岗位津贴医疗保险公积金\n"); for(i=0;i<a;i++) printf("%4d%s%4f%4f%4f%4f%4f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); for(i=0;i<a;i++) if(ID==work[i].ID) t=i; printf("请输入该职工的信息:"); printf("输入格式为:\nID号,姓名\n基本工资,职务工资,岗位津贴,医疗保险,公积金\n"); scanf("%d,%s",&work[t].ID,work[t].name); scanf("%f,%f,%f,%f,%f",&work[t].base,&work[t].rate,&work[t].subsidy,&work[t].medicare,&work[t].fund); printf("修改后职工的信息:\n"); printf("ID号姓名基本工资职务工资岗位津贴医疗保险公积金\n"); for(i=0;i<a;i++) printf("%4d%s%4f%4f%4f%4f%4f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund);}//查找函数,查找符合条件的员工,并输出其信息voidsearch(structworkerwork[],inta){ inti; floatn; printf("请输入筛选条件总工资大于多少"); scanf("%f",&n); printf("ID号姓名基本工资职务工资岗位津贴医疗保险公积金\n"); for(i=0;i<a;i++) { work[i].total=work[i].base+work[i].rate+work[i].subsidy+work[i].medicare+work[i].fund; if(work[i].total>n) printf("%4d%s%4f%4f%4f%4f%4f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); }}//删除函数,删除满足条件的员工信息intdele(structworkerwork[],inta){ inti,n; printf("请输入筛选条件总工资小于多少"); scanf("%d",&n); for(i=0;i<a;i++) { work[i].total=work[i].base+work[i].rate+work[i].subsidy+work[i].medicare+work[i].fund; if(work[i].total<n) { printf("ID号姓名基本工资职务工资岗位津贴医疗保险公积金\n"); printf("%4d%s%4f%4f%4f%4f%4f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fund); printf("您确定要删除该职工信息吗?(请输入'y'或'n'):"); getchar(); if((getchar()=='y')||(getchar()=='Y')) { work[i]=work[i+1]; i--; a--; } else break; } } returna;}//统计函数,统计员工的信息voidtongji(structworkerwork[],inta){ inti,b=0,c=0,d=0; floatadd[5]; for(i=0;i<a;i++) { add[i]=work[i].base+work[i].rate+work[i].subsidy; if(add[i]>3000) b++; if(add[i]<3000&&add[i]>2000) c++; if(add[i]<2000&&add[i]>1000) d++; } b=b*100/a; c=c*100/a; d=d*100/a; printf("前三项工资之和在3000元以上的占%d%%\n",b); printf("前三项工资之和在3000~2000的占%d%%\n",c); printf("前三项工资之和在2000~1000的占%d%%\n",d);}//排序函数,按照要求将员工信息排序voidpaixu(structworkerwork[],inta){ inti,j,select; structworkertemp; printf("\n1.按从小到大排\n"); printf("\n2.按从大到小排\n"); scanf("%d",&select); switch(select) { case1: /*for(i=0;i<a;i++) work[i].total=work[i].base+work[i].rate+work[i].subsidy+work[i].medicare+work[i].fund;*/ for(j=0;j<a;j++) for(i=0;i<a-j;i++) if(work[i].total>work[i+1].total) { temp=work[i]; work[i]=work[i+1]; work[i+1]=temp; } printf("ID号姓名基本工资职务工资岗位津贴医疗保险公积金\n"); for(i=0;i<a;i++) printf("%4d%s%4f%4f%4f%4f%4f\n",work[i].ID,work[i].name,work[i].base,work[i].rate,work[i].subsidy,work[i].medicare,work[i].fu

温馨提示

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

评论

0/150

提交评论