ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:408.82KB ,
资源ID:12482441      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12482441.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(职工工作量统计系统报告.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

职工工作量统计系统报告.docx

1、职工工作量统计系统报告 课程设计成果 设计题目:_职工工作量统计_ 学 院:_计算机工程_ 班 级: 11软件(本)三班 * * * * * 学 号: * 设计地点:_A5-101 _ 完成日期: 2013年 01 月 12 日 指导老师评语: _ 成绩(五级记分制): 教师签名: 摘 要 数据结构主要是一门研究非数值计算的程序设计问题中的计算机操作对象以及它们之间的关系和操作等的学科。数据结构在计算机科学与技术中是一门综合性的专业基础课,其研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有着更密切的关系。不论是编译程序过程还是操作系统都涉及到数据元素在存储器中的分配问题。在计算机科

2、学与技术中,数据结构不仅是一般程序性的基础,而且也是其他系统程序和大型程序的重要基础。在社会生产日益群体合作化,生产模式日益企业化的今天,企业的管理工作越来越受到企业经营者的重视,而在员工的流动、管理和工作报酬的分配中,职工的报酬是根据员工的工作量进行分配的。因此,职工的工作量,就成了企业经营者关注的信息。然而,对于现在的企业来说,人员数量多,工作量又复杂,通过普通的人工方式已经难以满足现代化企业的核算要求。怎样进行大量员工的工作量的管理工作呢?设计一个职工工作量统计系统,就能够满足大多数现代化企业的需求了。 课程设计的目的和意义是:通过课程设计的实践环节的教学,可以加深对课堂所学基础知识的掌

3、握与理解,提高所学内容的综合运用能力;同时也可以通过查询相关资料,培养学生自学能力、接受新知识的能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生实际上机调试程序的能力。“理论与实践”相结合,使学生得到很好的锻炼,为以后学习、工作打下坚实的基础。本次职工工作量统计系统是通过C语言来设计的,也是由本人独立完成的。 关键字: 数据结构、课程设计、职工工作量 第一章 项目概述1.1问题描述 问题描述及分析: 采用随机函数产生职工的工号和他所完成产品个数的数据信息,对同一职工多次完成的产品个数进行累计,最后按以下格式输出;职工完成产品数量的名次、该名次每位职工完成的产品数量、职工人数

4、和职工号要求:1)输出统计结果,如下所示: Order quantity count number 1 375 3 10 20 21 4 256 2 3 5 6 200 1 92)每一个函数要有必要的注释,在课程设计论文中有流程图。1.2 问题分析 问题中包含有职工工号、职工多次完成的产品数量、职工完成的产品总数量、按完成产品数量个数的名次、职工相同名次的人数。因此,设置结构体为:typedef struct int order; int count; int ftotal5; int quantity; int number; SqList;SqList PaMAX=0;职工的信息应包含排序

5、、查找、插入、删除等功能;每个职工都包含以上结构体中的数据,因此,该问题的设计思想是:采用结构体数组来存储职工信息,然后对各职工的信息进行排序、查找、插入、删除等操作。第二章 项目设计 系统在win-TC中运行,由于win-TC不支持中文输出功能,故采用纯英文进行设计编写。这样能作出美观的界面,并且制作出详细的菜单。2.1 系统程序的功能示意图如下: 示意图1,系统函数功能示意图2.2 功能函数设计思想及说明 2.2.1 随机生成职工号函数 void SandNumber(SqList Pa,int n,int *p) 先定义了全局数组NUMMAX=0和指针*p,并且让指针指向该数组,用来保存

6、职工的工号信息,再使用系统函数srand()、rand()生成n个员工的工号,工号为不为零的两位数,且这n个员工的工号各不相同。在生成完后,再依次输出这n个员工的工号,其图示如下: 示意图2,随机生成职工号函数示意图2.2.2 随机生成职工完成的产品数量 void SandQuantity(SqList Pa,int n,int *q) 先定义了全局数组QUMAX=0和指针*q,并且让指针指向该数组,用来保存职工完成产品的次数信息,再使用系统函数srand()、rand()生成n个员工的数量信息Pai.quantity,其中该信息为各个员工(最多有5个小于100)的信息Pai.ftotalj之

7、和,在生成完后,再依次输出这n个员工的数量信息,其图示如下: 示意图3,随机生成职工数据信息函数示意图2.2.3 排序函数 int Paixu_quantity(SqList Pa,int n,int *q) 使用冒泡法进行排序,先定义一个结构体arr,两个变量i和j,其中j用来计算已经完成的职工个数,i表示尚未比较个数,从j=0开始,当j(n-j)时,第一轮比较结束,使j+,进入下一轮,当j=n时,表示第n轮比较结束,此时排序完成。函数示意图(3)如下: 示意图4,排序功能函数示意图2.2.4 查找函数 int Search_Number(SqList Pa,int n,int num),根

8、据给定的职工号查找该职工的信息。 从序号为0的结构体数组开始访问,如果该结构体数组中元素的工号项Pai.number与num不等,则使i自加1,指向下一个结构体数组,访问该数组元素,直到该数组元素的工号等于num时,输出该结构体数组元素的元素,并返回该数组元素的位置i,如果in时还未找到要查找的元素,则表示该元素不存在,输出“the employee hasnt been foundn”并返回空。其示意图如下: 示意图5,查找函数功能示意图2.2.5 插入函数 int Insert(SqList Pa,int n,int num) 要插入一个员工的信息,就得先得到员工的位置,先调用查找函数,将

9、给定员工工号所在的位置当作查找函数的返回值返回给s,s=Search_Number(Pa,n,num);得到要插入的位置,再将Pas所在的结构体中的数据元素位置全部空出,即当i=s时,将Pai中的数据全部对应地移到Pai+1处,将数组的个数n加1,即n=n+1;再将数据插入到Pas的位置。示意图如下: 示意图6,插入函数示意图2.2.6删除函数 int Delete(SqList Pa,int n,int *q,int num 要删除一个员工信息,得先知道员工的位置,先调用查找函数根据所给的员工的工号查找到该员工所在的位置,并将其返回值赋给s,即s=Search_Number(Pa,n,num

10、);得到要删除的位置。如果s=NULL或in时,则输出”Delete is wrongn”;否则,如果当Pai=Pas时,先将Pai位置的数据信息保存在结构体str中,再将Pai+1位置的数据信息前移到Pai位置中,循环直到in时,将结构体的个数减1,最后输出被删除的信息,程序执行结束。2.2.7 按职工完成的产品数量排名次函数 void Count_order(SqList Pa,int n) 功能:给各职工排名次和赋count数据项的值。 要给职工按完成的产品数量排名次,则要求先对各职工的信息进行排完成产品数量排序,即在排名次函数中又调用了按职工完成产品数量排序函数进行排序。排序完成后,先

11、对这n个员工按序号排名次,即Pa0,Pai, Pan-1的名次依次为1,2,3,n;然后当jn时(假设i=j),判断Pai.quantity和Paj.quantity是否相等,如果相等,则将序号为j的名次变为与序号为i的员工名次相同,j+,并且每增多一个名次相同的员工,则将其员工名次相同的个数信息加1,即Pai.count+;否则i的序号为j的下一个结构体元素j-1,再使i和j自加1,即i+,j+,直到in时结束。2.2.8 输出最终结果函数 void Print_All(SqList Pa,int n) 功能:输出所有员工的名次、完成数量、同名次人数以及各自的工号。 由于每个员工信息都包含5

12、个数据元素,而其中有三个(number、quantityftotal)都已经由随机函数自动生成。 因此,在输出之前,必须要给各个员工的其它两个数据元素(order、count)赋值。为此,我在输出之前调用Count_order(SqList Pa,int n) 函数,对未完成赋值的元素赋值;然后,当i=n时,输出完毕,程序结束。(注:由于void Print_All(SqList Pa,int n)函数中调用了Count_order(SqList Pa,int n) 函数,而Count_order(SqList Pa,int n) 函数中又调用了int Paixu_quantity(SqLis

13、t Pa,int n,int *q)排序函数,故此程序中实际上包含有三个函数的嵌套调用。)2.2.9 main()函数 先输出输入职工人数信息,再调用随机函数随机生成职工号和职工数量信息,再初始化未生成的数据信息,接着输出欢迎界面及功能菜单,并提示选择功能,功能分为五个,分别是排序、查找、插入、删除和最终结果,使用Switch(choose)分支,由于问题要求输出最终结果,因此,在每个分支中,都有调用最终结果输出函数,输出最终所有职工的名次、职工完成的数量、相同名次的人数和他们对应的工号。其中:1号菜单的功能是:先输出排序前的工号和完成的产品数量,再进行排序,再输出排序后的职工工号和完成的产品

14、数量信息,最后输出所有的职工的最终要求的结果,由于该项菜单中先调用并执行排序函数功能,再调用排名次函数,最后执行最终结果的输出,而排名次函数中又调用了排序函数,排序函数中有排序后的信息输出,故1号功能会产生两次排序后的信息输出;2号菜单的功能是:先输出职工的全部工号和全部完成的产品数量信息,再根据输入的工号信息查找该职工信息,最后输出要求的最终结果;3号菜单的功能是:先输出职工的全部工号和全部完成的产品数量信息,再根据输出的职工工号,在该位置中插入一个职工信息,然后再进行排序,最后输出要求的最终结果;4号菜单的功能是:先输出职工的各部工号和全部完成的产品数量信息,再根据输出的职工工号,将该职工

15、的信息删除,最后输出要求的最终结果;5号菜单的功能是:输出问题要求的职工信息;void main() int i,j,n,choose; int num; printf(please input the quantity of the employee:n); scanf(%d,&n); ChushiHua(Pa,n,q); SandNumber(Pa,n,p); /*随机赋职工工号*/ SandQuantity(Pa,n,q); /*随机赋职工完成产品信息*/ WelcomeScreen(); printf(please choose(15):n); scanf(%d,&choose); s

16、witch(choose) case 1:Paixu_quantity(Pa,n,q); /*降序排序后输出工号和其完成产品的总数量*/ Print_NumQU(Pa,n); Print_All(Pa,n); break; case 2:Print_NumQU(Pa,n); printf(Please input the number located to be searched:); scanf(%d,&num); Search_Number(Pa,n,num); Print_All(Pa,n); /*根据给定的工号查找该职工信息*/ break; case 3:Print_NumQU(Pa

17、,n); printf(Please input the number located to be searched:); scanf(%d,&num); n=Insert(Pa,n,num); /*在给定的职工工号位置插入一个职工信息*/ Paixu_quantity(Pa,n,q); Print_All(Pa,n); break; case 4:Print_NumQU(Pa,n); printf(Please input the number located to be deleted:); scanf(%d,&num); n=Delete(Pa,n,q,num); /*将给定的职工工号将

18、其信息删除*/ Print_All(Pa,n); break; case 5:Print_All(Pa,n); break; default:break; getch(); 第三章 程序调试3.1 调试程序遇到的问题及解决 通过清屏函数放在不同位置使得到不同的要求输出的内容,而清除不需要的内容,利于比较功能函数运行前后的变化,再使用输出语句输出需要知道的信息进行对比,然后进行分析。 1)使用冒泡法排序测试排序函数时,排序命令没有执行,功能没有实现(如图3)。原因是:在使用冒泡法排序中,在if条件后误加了一个”;,导致排序时,移动命令没能执行。过去一直以为功能没有实现,是由于形参和实参之间的数据

19、传递的问题,但我将参数全部改为指针之后,发现仍然没有响应。长时间的查找之后,只能逐条指令进行分析,最后欣慰地发现,原来在if语句之后,不应该有的”;”,多了起来,才恍然大悟地明白并解决了问题(如图4)。2)最终结果输出函数输出时,名次相同的重复输出(如图10)。原因是:在输出时,只考虑使相同名次的人数自加Pai.count+,却忘记了同时还要使表示输出结构体位置的i也要同时变化为i=i+Pai.count-1;在对比不同数据输出情况之后,找到了错误,并改正之后,重新运行后获得了成功(如图7)。3)测试插入函数功能时,发现执行插入函数功能时,并没有插入成功,员工人数没有增加,但也没有提示插入错误

20、(如图10)。原因是:我在插入函数中虽然使n=n+1;并返回了n的值,但没有将职工人数的返回值重新赋给n,使n的值并没有真正地改变,所以在输出时,少了一个员工的信息。在比较多次的运行输出的情况与输出自动生成的数据之后,发现插入的位置的数据有新插入的数据生成,但最后一个数据丢失,最后找到了错误的原因。改正并运行之后,插入功能运行获得了成功(如图11)。4)测试删除函数时,当未查找到员工号时,输出结果(如图12)。经查找后,原因是在输出时员工的人数通过删除操作带回的返回值重新赋值,而当未删除的位置不存在时,删除函数中没有返回值,导致输出是系统随机的值。当删除位置不存在时,修改为带回n的原值,运行成

21、功(如图13)。3.2 程序调试结果3.2.1 随机生成职工号和随机生成职工完成产品数量信息结果(如图1) 图1,输出随机生成的职工号和职工完成产品数量3.2.2 欢迎界面(如图2) 图2,欢迎界面和菜单3.3.3 功能1排序函数(出现错误的如图3,正确的如图4) 图3, 排序功能未实现 图4,排序功能实现3.3.4 排名次函数(如图5) 图5,排名次函数3.3.5 输出职工工号和完成产品数量函数(如图5) 图5中有输出3.3.6 功能1排序函数(如图6) 图6,排序函数3.3.7 功能2查找函数(如图7和图8) 图7,未找到时的查找界面图 图8,查找到所给职工的界面图3.3.8 功能3插入函

22、数(如图9、图10和图11) 图9,插入位置错的界面 图10,插入出错的界面 图11插入正确的界面3.3.9 功能4删除函数(如图12) 图12,删除位置不存在时细节出错,删除后输出结果 图13,修改后,删除结果 图14,当给定职工号存在时,删除结果3.3.10 功能5输出函数(如图15) 图15,最终结果输出函数第四章 设计总结与心得两个星期的课程设计实践时间很快过去了,我的课程设计也终于结束了。回忆起这两个星期的生活,还真是百感交集却难言。准确地说我是在老师宣布可以准备做课程设计时,就已经做准备了。不过,当时我以为是让自己挑选其中的一个去做。而我是去分析了第一个。到真正开始时,我才不得不重

23、新来分析新课题职工工作量统计系统。刚开始时,由于连随机函数是什么?我都还没听说过,刚开始还以为是随意写一个生成职工工号和完成产品数量的信息。知道随机函数是一个系统函数是在一次无意中听到同学提起,我才到网上查找,才明白的。在知道随机函数是一个系统函数后,由于对什么是随机函数一无所知,仅仅查资料就花了我近两天时间,不过还是似懂非懂,只能通过模仿来调试,渐渐地才会使用它。在编写函数的过程中,由于时间比较紧,我没有提前设计算法,而是直接上机编写、调试。这暴露了许多的问题:其一,是积累的知识太少,好多知识在运用的时候却印象不深,只能停下来去查资料;其二,是对所学知识掌握不牢,编写程序的过程中,由于没有把

24、握,不敢冒然写下去,也只能去查资料确认;其三,实践得太少,很容易发现的错误,却在实践中,花费了大量的时间去查找,其中这点,让我印象尤其深刻,在编写排序函数后进行调试时,发现排序功能没有达到目的,而在我惯性思维中,它可能是因为参数传递出错,因此,盲目地将传递的数组参数改为指针,花费了时间不说,竟然还是没有达到目的。从七号晚上开始查找,直到九号晚上十点多才在无意中发现if条件语句后,多加了一个“;”,这个发现真是让我又气又恨。要是在平时,可能这对于任意一个学习软件的学生都知道它有错,而我却忽略了。这个教训是深刻的,它使我明白,认真和仔细对于一个人,去做一件事来说,是多么地重要而自己是多么地粗心。其

25、次,对于知识的理解,我发现自己始终停留在一知半解甚至是表面上懂,却一无所知的境地。在函数编写完成后,表面上看似没有问题了,不过一调试才发现,问题好多就都出来了。 同时,我也深刻地体会到:科学是严密的,不容有半点地大意,一个人对工作的态度往往决定了其工作的成败。 准确地说,这是我的第一次课程设计实践。从这次课程设计中,我真正地体验到了课程设计的过程,也真正地体验到了程序设计的乐趣。在近半个月的程序设计和调试过程中,获得的知识是很多的。 通过此次课程设计,使我巩固了所学的有关课程设计的知识,学会真正地去分析问题,思考问题,并且学会怎样去思考解决问题。在设计的过程中,我曾遇到过许多的问题,但经过反复

26、地思考之后,终于找出了原因并使问题得以解决。这同时也暴露出了自己知识的溃乏、经验的不足。实践出真知,这一次,真正地有了深刻的体会:不断实践,不断发现自己的不足,不断地改正,不断地领悟,不断地总结,是获取真知的必然选择。 本次课程设计即将结束了,由于我们小组事先的设计分工没有做好,我只能独立地完成本次设计任务,这也使我学会了独立思考。错过了交流思想的机会,这是个遗憾。不过同时,我也明白了,做课程设计之前的准备工作是多么地重要,而我此次正是像经历了一场“无头仗”。总之,此次课程设计实践让我收获很多。完成此次课程设计后,让我产生了很强的成就感,充满了快乐感,同时也让我对程序设计产生了喜爱。第五章 参

27、考文献1李素若.数据结构.北京:化学工业出版社,2009.2 朱蓉,数据结构实验指导书3严蔚敏 吴伟民,.数据结构(C语言版),1999,清华大学出版社;附 录程序代码: #include#include #include /*使用当前时钟做种子*/ #define MAX 100typedef struct int order; int count; int ftotal5; int quantity; int number; SqList,*Sq;SqList PaMAX=0;int NUMMAX=0,QUMAX=0; /*NUM数组用来保存随机生成的职工号,QU用来保存职工完成总数量的次

28、数*/int *p=NUM,*q=QU;void SandNumber(SqList Pa,int n,int *p) /*随机产生职工的工号并输出其工号信息*/ int i,j,m; srand(unsigned)time(NULL); /*设置随机数种子*/ for(i=0;i0) /*如果产生的工号相同,则重新生成新的随机数直到不同为止作为职工号*/ for(j=0;ji;j+) if(*(p+i)=*(p+j) m=rand()%100; while(m=0) m=rand()%100; *(p+i)=m; for(i=0;in;i+) Pai.number=*(p+i); printf(Pa%d.number=%2dn,i,Pai.number); printf(n); void SandQuantity(SqList Pa,int n,int *q) /*随机生成职工各次完成的工作量,并累计各职 工的总完成产品数量*/ int i,j,k; srand(unsigned)time(NULL); /*设置随机数种子*/ for(i=0;in;i+) *(q+i)=rand()%10

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1