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

下载本文档

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

文档简介

1、信息技术与工程学院 课 程 设 计 报 告课程名称 高级语言程序设计 设计题目 职工工资管理系统 专业班级 14级计本一班 小组成员 张亢元 仝亚超 王佩 指导教师 温娟娟 成绩 2015年 06月 17 日 目 录1 需求分析11.1 问题描述11.2 功能描述12 系统设计22.1 总体设计22.2 详细设计33 系统测试53.1 输入功能测试53.2 显示功能测试63.3 修改功能测试73.4 查找功能测试83.5 删除功能测试93.6 统计功能测试103.7 排序功能测试113.8 打印功能测试124 总结135 调试分析13参考文献13附录141 需求分析1.1 问题描述设计一个职工

2、工资管理系统,实现功能如下: (1)输入记录:将每一个职工的姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个结构体。(2)显示记录:根据职工姓名或者ID号显示一个或几个职工的各项工资。(3)修改记录:对任何一个结构体中的成员按照要求进行修改,并显示修改前后结构体中的所有成员信息。(4)查找记录:查找满足条件的职工信息,要求显示所有的职工成员信息。 (5)删除记录:删除满足条件的职工信息。 (6)统计: a.计算各项工资的总工资及平均工资。 b.统计符合指定条件(如职工工资前三项之和在3000元以上、30002000元、20001000元以内)的职工人数及占总职工人数的

3、百分比。 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 xi

4、ugai(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)/打印

5、,将所有职工的信息输出2.2 详细设计根据题目需要,定义员工的信息结构体。员工信息结构体包括学生的姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金。查询员工信息功能:可以通过ID号和姓名查询。通过姓名查询的话是用strcmp函数比较姓名是否相等。编辑员工信息功能:首先判断是否有该员工的信息,如果有的话再进行编辑,否则的话退出。删除员工功能:通过ID号找到员工,进行删除。系统主窗体系统主窗体输入职工确定?NY输入职工信息操作成功显示信息1、 通过姓名查询存在?NY操作成功2、 通过ID查询存在?N操作成功Y修改信息输入员工ID操作成功筛选信息输入筛选信息操作成功删除信息输入删除条件操

6、作成功统计信息操作成功排序信息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

7、 68 1098 ¼3.2 显示功能测试3.3 修改功能测试3.4 查找功能测试3.5 删除功能测试3.6 统计功能测试3.7 排序功能测试3.8 打印功能测试4 总结本次课程设计的名称是员工工资管理系统,由于我们组能力有限,加之近期课程任务比较紧迫,所以该系统还是有许多不完善的地方。系统完全实现的功能有输入记录、显示记录、修改记录、查找记录、删除记录、统计等。尽管还是有许多的不完善之处,总的来说还是收获很大的,因为通过这次的团队合作,我们组首先对c只是有了很深的了解,就是程序的分析和设计也有了很深的体会。我们将会在今后的学习和工作中发扬团队精神,而且会认真虚心的向有经验的人们学习交

8、流。希望我们以后能再接再厉,做出更加优秀id程序。5 调试分析在本次课程设计实践过程中出现了很多问题,这些问题对我来说一时间难以解决。在程序运行过程中出现的问题如下:1、 在信息输入时,未能根据需求确定职工人数,导致以后的输出出现问题。解决方案:在设计子函数时运用了值传递来确定职工总人数2、 在统计函数中不能正确输出百分比的值,输出的全是“0%”,原因是:忽略了整形变量与整形变量相除得到的结果是整形结果。解决方案:将变量转化为浮点型变量。3、 修改职工信息时不能保存,原因:修改时保存的地址不是原来变量的地址,修改方案:将修改地址改回到原来的地址。4、 此程序仍存在的问题:执行完每一个任务后,要

9、按两次回车键才能继续循环。参考文献1C语言课程设计案例精编郭翠英 2C程序设计教程孙淑霞 代世雄著3C程序设计语言北京:机械工业出版社.杨涛4C语言程序设计教程M.第3版.高等教育出版社,2006谭浩强,张基温.附录#include<stdio.h>#include<string.h>#define N 100struct workerint ID;char name20;float base; /base 基本工资float rate; /rate 职务工资float subsidy; /subsidy 岗位津贴float medicare; /m

10、edicare 医疗保险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(st

11、ruct 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 workN,*p=work;int a=N,select;/*printf("请输入员工人数:");scanf("%d",&a);

12、*/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");prin

13、tf("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(get

14、char()='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'):");

15、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;

16、i<a;i+)scanf("%d,%s",&worki.ID,);scanf("%f,%f,%f,%f,%f",&worki.base,&worki.rate,&worki.subsidy,&worki.medicare,&worki.fund);return a;/显示,按要求显示需要显示的职工信息void xianshi(struct worker work,int a)int i,select,t;char * next,r20;printf("n 1. 按姓名查找

17、n");printf("n 2. 按查找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,)=0)printf("%4d %s %4f %4f %4f %4f %4fn&qu

18、ot;,worki.ID,,worki.base,worki.rate,worki.subsidy,worki.medicare,worki.fund);break;case 2:printf("请输入要查询的ID:n");scanf("%d",&t);printf("ID号 姓 名 基本工资 职务工资 岗位津贴 医疗保险 公积金n");for(i=0;i<a;i+)if(t=worki.ID)printf("%4d %s %4f %4f %4f %4f %4fn",worki.I

19、D,,worki.base,worki.rate,worki.subsidy,worki.medicare,worki.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

20、=0;i<a;i+)printf("%4d %s %4f %4f %4f %4f %4fn",worki.ID,,worki.base,worki.rate,worki.subsidy,worki.medicare,worki.fund);for(i=0;i<a;i+)if(ID=worki.ID)t=i;printf("请输入该职工的信息:");printf("输入格式为:nID号,姓名n基本工资,职务工资,岗位津贴,医疗保险,公积金n");scanf("%d,%s",&w

21、orkt.ID,);scanf("%f,%f,%f,%f,%f",&workt.base,&workt.rate,&workt.subsidy,&workt.medicare,&workt.fund);printf("修改后职工的信息:n");printf("ID号 姓 名 基本工资 职务工资 岗位津贴 医疗保险 公积金n");for(i=0;i<a;i+)printf("%4d %s %4f %4f %4f %4f %4fn",worki.ID,w

22、,worki.base,worki.rate,worki.subsidy,worki.medicare,worki.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+)worki.total=worki.b

23、ase+worki.rate+worki.subsidy+worki.medicare+worki.fund;if(worki.total>n)printf("%4d %s %4f %4f %4f %4f %4fn",worki.ID,,worki.base,worki.rate,worki.subsidy,worki.medicare,worki.fund);/删除函数,删除满足条件的员工信息int dele(struct worker work,int a)int i,n;printf("请输入筛选条件总工资小于多少");s

24、canf("%d",&n);for(i=0;i<a;i+)worki.total=worki.base+worki.rate+worki.subsidy+worki.medicare+worki.fund;if(worki.total<n)printf("ID号 姓 名 基本工资 职务工资 岗位津贴 医疗保险 公积金n");printf("%4d %s %4f %4f %4f %4f %4fn",worki.ID,,worki.base,worki.rate,worki.subsidy,work

25、i.medicare,worki.fund);printf("您确定要删除该职工信息吗?(请输入'y'或'n'):");getchar();if(getchar()='y')|(getchar()='Y')worki=worki+1;i-;a-;elsebreak;return a;/统计函数,统计员工的信息void tongji(struct worker work,int a)int i,b=0,c=0,d=0;float add5;for(i=0;i<a;i+)addi=worki.base+wor

26、ki.rate+worki.subsidy;if(addi>3000)b+;if(addi<3000&&addi>2000)c+;if(addi<2000&&addi>1000)d+;b=b*100/a;c=c*100/a;d=d*100/a;printf("前三项工资之和在3000元以上的占%d%n",b);printf("前三项工资之和在30002000的占%d%n",c);printf("前三项工资之和在20001000的占%d%n",d);/排序函数,按照要求将员工

27、信息排序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+)worki.total=worki.base+worki.rate+worki.subsidy+worki.medicare+worki.fund;*/for(j=0;j<a;j+)for(i=0;i<a-j;i+)if(worki.total>worki+1.total)temp=worki;worki=worki+1;worki+1=temp;printf("ID号 姓 名 基本工资 职务工资 岗位津贴 医疗保险 公积金n");for(i=0;i<a;i+)printf("%4d %s %4f %4f %4f %4f %4fn&

温馨提示

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

评论

0/150

提交评论