职工工资管理系统报告.doc
《职工工资管理系统报告.doc》由会员分享,可在线阅读,更多相关《职工工资管理系统报告.doc(20页珍藏版)》请在咨信网上搜索。
信息技术与工程学院 课 程 设 计 报 告 课程名称 高级语言程序设计 设计题目 职工工资管理系统 专业班级 14级计本一班 小组成员 张亢元 仝亚超 王佩 指导教师 温娟娟 成绩 2015年 06月 17 日 目 录 1 需求分析 1 1。1 问题描述 1 1.2 功能描述 1 2 系统设计 2 2。1 总体设计 2 2。2 详细设计 3 3 系统测试 5 3.1 输入功能测试 5 3。2 显示功能测试 6 3。3 修改功能测试 7 3.4 查找功能测试 8 3.5 删除功能测试 9 3.6 统计功能测试 10 3。7 排序功能测试 11 3.8 打印功能测试 12 4 总结 13 5 调试分析 13 参考文献 13 附录 14 1 需求分析 1.1 问题描述 设计一个职工工资管理系统,实现功能如下: (1)输入记录:将每一个职工的姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个结构体. (2)显示记录:根据职工姓名或者ID号显示一个或几个职工的各项工资。 (3)修改记录:对任何一个结构体中的成员按照要求进行修改,并显示修改前后结构体中的所有成员信息。 (4)查找记录:查找满足条件的职工信息,要求显示所有的职工成员信息。 (5)删除记录:删除满足条件的职工信息. (6)统计: a。计算各项工资的总工资及平均工资. b。统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元以内)的职工人数及占总职工人数的百分比. c。按职工总工资进行排序,可从小到大,也可从大到小。 d。按字符表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。 1.2 功能描述 职工工资管理:通过1-5可以选择对员工工资信息的编辑:添加 查找 删除等. 员工工资输出:通过6—8可以将员工工资按不同顺序输出。 2 系统设计 2.1 总体设计 struct worker 定义了一个结构体类型的员工信息。 int input(struct worker work[],int a) //输入函数,输入职工的信息 void xianshi(struct worker work[],int a) //显示,按要求显示需要显示的职工信息 void xiugai(struct worker work[],int a) //修改函数,修改需要修改的职工信息 void search(struct worker work[],int a) //查找函数,查找符合条件的员工,并输出其信息 void dele(struct worker work[],int a) //删除函数,删除满足条件的员工信息 void tongji(struct worker work[],int a) //统计函数,统计员工的信息 void paixu(struct worker work[],int a) //排序函数,按照要求将员工信息排序 void dayin(struct worker work[],int a) //打印,将所有职工的信息输出 2.2 详细设计 根据题目需要,定义员工的信息结构体。 员工信息结构体包括学生的姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金。 查询员工信息功能:可以通过ID号和姓名查询。通过姓名查询的话是用strcmp函数比较姓名是否相等。 编辑员工信息功能:首先判断是否有该员工的信息,如果有的话再进行编辑,否则的话退出。 删除员工功能:通过ID号找到员工,进行删除。 系统主窗体 系统主窗体 输入职工 确定? N Y 输入职工信息 操作成功 显示信息 1、 通过姓名查询 存在? N Y 操作成功 2、 通过ID查询 存在? N 操作成功 Y 修改信息 输入员工ID 操作成功 筛选信息 输入筛选信息 操作成功 删除信息 输入删除条件 操作成功 统计信息 操作成功 排序信息 1、总工资从小到大 2、总工资从小到大 操作成功 操作成功 打印信息 操作成功 3 系统测试 3。1 输入功能测试 输入“1”显示“系统已有职工的工资记录,再次输入将覆盖原记录,要继续吗?(请输入'y'或'n'):” 接着输入“y"显示 输入员工人数 输入员工信息如下: 01 张望 1286 794 198 109 135 2034 02 李明 1185 628 135 94 114 1740 03 王小民 895 438 98 64 73 1294 04 张效章 1350 868 210 116 150 2162 05 彭山 745 398 84 61 68 1098 ¼ 3.2 显示功能测试 3.3 修改功能测试 3。4 查找功能测试 3。5 删除功能测试 3.6 统计功能测试 3。7 排序功能测试 3.8 打印功能测试 4 总结 本次课程设计的名称是员工工资管理系统,由于我们组能力有限,加之近期课程任务比较紧迫,所以该系统还是有许多不完善的地方。系统完全实现的功能有输入记录、显示记录、修改记录、查找记录、删除记录、统计等。 尽管还是有许多的不完善之处,总的来说还是收获很大的,因为通过这次的团队合作,我们组首先对c只是有了很深的了解,就是程序的分析和设计也有了很深的体会。我们将会在今后的学习和工作中发扬团队精神,而且会认真虚心的向有经验的人们学习交流。希望我们以后能再接再厉,做出更加优秀id程序。 5 调试分析 在本次课程设计实践过程中出现了很多问题,这些问题对我来说一时间难以解决。在程序运行过程中出现的问题如下: 1、 在信息输入时,未能根据需求确定职工人数,导致以后的输出出现问题.解决方案:在设计子函数时运用了值传递来确定职工总人数 2、 在统计函数中不能正确输出百分比的值,输出的全是“0%",原因是:忽略了整形变量与整形变量相除得到的结果是整形结果。解决方案:将变量转化为浮点型变量。 3、 修改职工信息时不能保存,原因:修改时保存的地址不是原来变量的地址,修改方案:将修改地址改回到原来的地址。 4、 此程序仍存在的问题:执行完每一个任务后,要按两次回车键才能继续循环。 参考文献 1《C语言课程设计案例精编》郭翠英 2《C程序设计教程》孙淑霞 代世雄著 3《C程序设计语言》.北京:机械工业出版社.杨涛 4《C语言程序设计教程[M]》.第3版。高等教育出版社,2006谭浩强,张基温。 附录 #include<stdio.h> #include<string.h> #define N 100 struct worker { int ID; char name[20]; float base; //base 基本工资 float rate; //rate 职务工资 float subsidy; //subsidy 岗位津贴 float medicare; //medicare 医疗保险 float fund; //fund 公积金 float total; //tootal 总工资 }; int main() { int input(struct worker work[],int a);//输入函数,输入职工的信息 void xianshi(struct worker work[],int a);//显示,按要求显示需要显示的职工信息 void xiugai(struct worker work[],int a);//修改函数,修改需要修改的职工信息 void search(struct worker work[],int a);//查找函数,查找符合条件的员工,并输出其信息 int dele(struct worker work[],int a);//删除函数,删除满足条件的员工信息 void tongji(struct worker work[],int a);//统计函数,统计员工的信息 void paixu(struct worker work[],int a);//排序函数,按照要求将员工信息排序 void dayin(struct worker work[],int a);//打印,将所有职工的信息输出 struct worker work[N],*p=work; int a=N,select; /*printf(”请输入员工人数:”); scanf(”%d”,&a);*/ printf("您是首次登陆本系统,请先输入员工信息:\n”); a=input(p,a); do { //打印菜单选项 printf(”\n **************职工工资管理系统**************\n”); printf(”\n 1。 输入职工信息\n”); printf(”\n 2。 通过姓名显示职工信息\n”); printf(”\n 3. 修改职工信息\n"); printf("\n 4. 查找信息\n"); printf("\n 5. 删除信息\n"); printf("\n 6. 统计信息\n"); printf("\n 7。 按总工资排序\n"); printf("\n 8。 打印全部职工信息\n"); printf("\n 0. 退出系统\n"); printf(”\n ********************************************\n"); printf("请输入您选择的操作:”); scanf("%d",&select); switch(select) { case 1: printf(”系统已有职工的工资记录,再次输入将覆盖原记录,要继续吗?(请输入'y'或’n’):"); getchar(); if((getchar()==’y’)||(getchar()==’Y')) a=input(p,a); break; case 2: xianshi(p,a); break; case 3: xiugai(p,a); break; case 4: search(p,a); break; case 5: a=dele(p,a); break; case 6: tongji(p,a); break; case 7: paixu(p,a); break; case 8: dayin(p,a); break; case 0: printf(”要继续操作吗?(请输入’y'或’n’):”); } getchar(); if((getchar()=='y’)||(getchar()==’Y')) break; } while(1); printf(”职工工资管理系统本次运行结束!\n”); return 0; } //输入函数,输入职工的信息 int input(struct worker work[],int a) { int i; 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); } return a; } //显示,按要求显示需要显示的职工信息 void xianshi(struct worker work[],int a) { int i,select,t; char * next,r[20]; printf(”\n 1. 按姓名查找\n”); printf(”\n 2。 按ID查找\n”); scanf(”%d",&select); switch(select) { case 1: 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; case 2: 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; } } //修改函数,修改需要修改的职工信息 void xiugai(struct worker work[],int a) { int i,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); } //查找函数,查找符合条件的员工,并输出其信息 void search(struct worker work[],int a) { int i; float n; 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); } } //删除函数,删除满足条件的员工信息 int dele(struct worker work[],int a) { int i,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; } } return a; } //统计函数,统计员工的信息 void tongji(struct worker work[],int a) { int i,b=0,c=0,d=0; float add[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); } //排序函数,按照要求将员工信息排序 void paixu(struct worker work[],int a) { int i,j,select; struct worker temp; printf(”\n 1。 按从小到大排\n"); printf("\n 2。 按从大到小排\n”); scanf(”%d”,&select); switch(select) { case 1: /*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]。fund); break; case 2: for(i=a-1;i>=0;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); break; } } //打印,将所有职工的信息输出 void dayin(struct worker work[],int a) { int i; float ave[6]={0,0,0,0,0,0}; 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; printf(”%4d %s\t%8。1f %8。1f %8。1f %8。1f %8。1f %8.1f\n”,work[i].ID,work[i].name,work[i]。base,work[i]。rate,work[i]。subsidy,work[i].medicare,work[i]。fund,work[i]。total); } for(i=0;i<a;i++) { ave[0]=work[i]。base+ave[0]; ave[1]=work[i]。rate+ave[1]; ave[2]=work[i].subsidy+ave[2]; ave[3]=work[i]。medicare+ave[3]; ave[4]=work[i].fund+ave[4]; ave[5]=work[i]。total+ave[5]; } for(i=0;i〈6;i++) ave[i]=ave[i]/a; printf(” 各项平均工资 %8.1f %8.1f %8。1f %8.1f %8.1f %8。1f”,ave[0],ave[1],ave[2],ave[3],ave[4],ave[5]); } 19- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文