手机版

职工工作量统计系统报告

发布时间:2024-11-02   来源:未知    
字号:

JINGCHU UNIVERSITY OF TECHNOLOGY

课程设计成果

设计题目: 学 院: 班 级: 姓 名: 学 号: 设计地点: 完成日期:

指导老师评语: _____________________________________________________________________

_____________________________________________________________________ 成绩(五级记分制): 教师签名:

目 录

摘 要........................................................................................................................................... 1 第一章 项目概述 ............................................................................................................................. 2

1.1问题描述 ............................................................................................................................. 2 1.2问题分析 ............................................................................................................................. 2 第二章 项目设计 ............................................................................................................................. 2

2.1 系统程序的功能示意图如下: ........................................................................................ 3 2.2 功能函数设计思想及说明 ................................................................................................ 4

2.2.1 随机生成职工号函数 ............................................................................................. 4 2.2.2 随机生成职工完成的产品数量 ............................................................................. 5 2.2.3 排序函数 ................................................................................................................. 6 2.2.4 查找函数 ................................................................................................................. 7 2.2.5 插入函数 ................................................................................................................. 7 2.2.6 删除函数 ............................................................................................................... 9 2.2.7 按职工完成的产品数量排名次函数 ..................................................................... 9 2.2.8 输出最终结果函数 ................................................................................................. 9 2.2.9 main()函数 ............................................................................................................... 9

第三章 程序调试 ........................................................................................................................... 11

3.1 调试程序遇到的问题及解决 .......................................................................................... 11 3.2 程序调试结果 .................................................................................................................. 12

3.2.1 随机生成职工号和随机生成职工完成产品数量信息结果(如图1) ............... 12 3.2.2 欢迎界面(如图2) ............................................................................................ 12 3.3.3 功能1排序函数(出现错误的如图3,正确的如图4) ................................. 13 3.3.4 排名次函数(如图5) .......................................................................................... 14 3.3.5 输出职工工号和完成产品数量函数(如图5) ................................................ 14 3.3.6 功能1排序函数(如图6) ................................................................................ 14 3.3.7 功能2查找函数(如图7和图8) .................................................................... 15 3.3.8 功能3插入函数(如图9、图10和图11) ..................................................... 15 3.3.9 功能4删除函数(如图12) .............................................................................. 16 3.3.10 功能5输出函数(如图15) ............................................................................ 18

第四章 设计总结与心得 ............................................................................................................... 18 第五章 参考文献 ........................................................................................................................... 19 附 录 ............................................................................................................................................ 20

摘 要

数据结构主要是一门研究非数值计算的程序设计问题中的计算机操作对象以及它们之间的关系和操作等的学科。数据结构在计算机科学与技术中是一门综合性的专业基础课,其研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有着更密切的关系。不论是编译程序过程还是操作系统都涉及到数据元素在存储器中的分配问题。在计算机科学与技术中,数据结构不仅是一般程序性的基础,而且也是其他系统程序和大型程序的重要基础。

在社会生产日益群体合作化,生产模式日益企业化的今天,企业的管理工作越来越受到企业经营者的重视,而在员工的流动、管理和工作报酬的分配中,职工的报酬是根据员工的工作量进行分配的。因此,职工的工作量,就成了企业经营者关注的信息。

然而,对于现在的企业来说,人员数量多,工作量又复杂,通过普通的人工方式已经难以满足现代化企业的核算要求。

怎样进行大量员工的工作量的管理工作呢?设计一个职工工作量统计系统,就能够满足大多数现代化企业的需求了。

课程设计的目的和意义是:通过课程设计的实践环节的教学,可以加深对课堂所学基础知识的掌握与理解,提高所学内容的综合运用能力;同时也可以通过查询相关资料,培养学生自学能力、接受新知识的能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生实际上机调试程序的能力。“理论与实践”相结合,使学生得到很好的锻炼,为以后学习、工作打下坚实的基础。 本次职工工作量统计系统是通过C语言来设计的,也是由本人独立完成的。

关键字: 数据结构、课程设计、职工工作量

1.1问题描述

第一章 项目概述

问题描述及分析: 采用随机函数产生职工的工号和他所完成产品个数的数据信息,对同一职工多次完成的产品个数进行累计,最后按以下格式输出;职工完成产品数量的名次、该名次每位职工完成的产品数量、职工人数和职工号要求: 1)输出统计结果,如下所示:

Order quantity count number

1 375 3 10 20 21 4 256 2 3 5 6 200 1 9 2)每一个函数要有必要的注释,在课程设计论文中有流程图。

1.2 问题分析

问题中包含有职工工号、职工多次完成的产品数量、职工完成的产品总数量、按完成产品数量个数的名次、职工相同名次的人数。因此,设置结构体为:

typedef struct {

int order; int count; int ftotal[5]; int quantity; int number; }SqList;

SqList Pa[MAX]={0};

职工的信息应包含排序、查找、插入、删除等功能;每个职工都包含以上结构体中的数据,因此,该问题的设计思想是:采用结构体数组来存储职工信息,然后对各职工的信息进行排序、查找、插入、删除等操作。

第二章 项目设计

系统在win-TC中运行,由于win-TC不支持中文输出功能,故采用纯英文进行设计编写。这样能作出美观的界面,并且制作出详细的菜单。

2.1 系统程序的功能示意图如下:

2.2 功能函数设计思想及说明 2.2.1 随机生成职工号函数

void SandNumber(SqList Pa[],int n,int *p)

先定义了全局数组NUM[MAX]={0}和指针*p,并且让指针指向该数组,用来保存职工的工号信息,再使用系统函数srand()、rand()生成n个员工的工号,工号为不为零的两位数,且这n个员工的工号各不相同。在生成完后,再依次输出这n个员工的工号,其图示如下:

示意图2,随机生成职工号函数示意图

2.2.2 随机生成职工完成的产品数量

void SandQuantity(SqList Pa[],int n,int *q)

先定义了全局数组QU[MAX]={0}和指针*q,并且让指针指向该数组,用来保存职工完成产品的次数信息,再使用系统函数srand()、rand()生成n个员工的数量信息Pa[i].quantity,其中该信息为各个员工(最多有5个小于100)的信息Pa[i].ftotal[j]之和,在生成完后,再依次输出这n个员工的数量信息,其图示如下:

示意图3,随机生成职工数据信息函数示意图

int Paixu_quantity(SqList Pa[],int n,int *q)

使用冒泡法进行排序,先定义一个结构体arr,两个变量i和j,其中j用来计算已经完成的职工个数,i表示尚未比较个数,从j=0开始,当j<n时,执行循环,从i=0开始,比较一次后,使i++,比较(n-j)次,当i>(n-j)时,第一轮比较结束,使j++,进入下一轮, 当j>=n时,表示第n轮比较结束,此时排序完成。函数示意图(3)如下:

示意图4,排序功能函数示意图

int Search_Number(SqList Pa[],int n,int num),根据给定的职工号查找该职工的信息。 从序号为0的结构体数组开始访问,如果该结构体数组中元素的工号项Pa[i].number与num不等,则使i自加1,指向下一个结构体数组,访问该数组元素,直到该数组元素的工号等于num时,输出该结构体数组元素的元素,并返回该数组元素的位置i,如果i>n时还未找到要查找的元素,则表示该元素不存在,输出“the employee hasn't been found!!!\n”并返回空。其示意图如下:

2.2.5 插入函数

int Insert(SqList Pa[],int n,int num)

要插入一个员工的信息,就得先得到员工的位置,先调用查找函数,将给定员工工号所在的位置当作查找函数的返回值返回给s,s=Search_Number(Pa,n,num);得到要插入的位置,再将Pa[s]所在的结构体中的数据元素位置全部空出,即当i>=s时,将Pa[i]中的数据全部对

应地移到Pa[i+1]处,将数组的个数n加1,即n=n+1;再将数据插入到Pa[s]的位置。示意图如

2.2.6 删除函数

int Delete(SqList Pa[],int n,int *q,int num 要删除一个员工信息,得先知道员工的位置,先调用查找函数根据所给的员工的工号查找到该员工所在的位置,并将其返回值赋给s,即s=Search_Number(Pa,n,num);得到要删除的位置。如果s=NULL或i>n时,则输出”Delete is wrong!!!\n”;否则,如果当Pa[i]==Pa[s]时,先将Pa[i]位置的数据信息保存在结构体str中,再将Pa[i+1]位置的数据信息前移到Pa[i]位置中,循环直到i>n时,将结构体的个数减1,最后输出被删除的信息,程序执行结束。

2.2.7 按职工完成的产品数量排名次函数

void Count_order(SqList Pa[],int n) 功能:给各职工排名次和赋count数据项的值。 要给职工按完成的产品数量排名次,则要求先对各职工的信息进行排完成产品数量排序,即在排名次函数中又调用了按职工完成产品数量排序函数进行排序。排序完成后,先对这n个员工按序号排名次,即Pa[0],Pa[i], Pa[n-1]的名次依次为1,2,3 ,n;然后当j<n时(假设i<=j),判断Pa[i].quantity和Pa[j].quantity是否相等,如果相等,则将序号为j的名次变为与序号为i的员工名次相同,j++,并且每增多一个名次相同的员工,则将其员工名次相同的个数信息加1,即Pa[i].count++;否则i的序号为j的下一个结构体元素j-1,再使i和j自加1,即i++,j++,直到i<n时结束。

2.2.8 输出最终结果函数

void Print_All(SqList Pa[],int n)

功能:输出所有员工的名次、完成数量、同名次人数以及各自的工号。 由于每个员工信息都包含5个数据元素,而其中有三个(number、quantity\ftotal)都已经由随机函数自动生成。 因此,在输出之前,必须要给各个员工的其它两个数据元素(order、count)赋值。为此,我在输出之前调用Count_order(SqList Pa[],int n) 函数,对未完成赋值的元素赋值;然后,当i<n时,从0号结构体数组元素开始,先输出员工的名次、完成产品的数量、同名次的人数,再判断序号为i的名次数据依次与其后的第j个名次数据元素相比较,如果不相同,则直接输出Pa[i].number;否则,输出Pa[i].count个名次为Pa[i].order的工号;再使i=i+Pa[i].count-1;j=i+1;直到i>=n时,输出完毕,程序结束。(注:由于void Print_All(SqList Pa[],int n)函数中调用了Count_order(SqList Pa[],int n) 函数,而Count_order(SqList Pa[],int n) 函数中又调用了int Paixu_quantity(SqList Pa[],int n,int *q)排序函数,故此程序中实际上包含有三个函数的嵌套调用。)

2.2.9 main()函数

先输出输入职工人数信息,再调用随机函数随机生成职工号和职工数量信息,再初始化未生成的数据信息,接着输出欢迎界面及功能菜单,并提示选择功能,功能分为五个,分别是排序、查找、插入、删除和最终结果,使用Switch(choose)分支,由于问题要求输出最终结果,因此,在每个分支中,都有调用最终结果输出函数,输出最终所有职工的名次、职工

完成的数量、相同名次的人数和他们对应的工号。其中:

1号菜单的功能是:先输出排序前的工号和完成的产品数量,再进行排序,再输出排序后的职工工号和完成的产品数量信息,最后输出所有的职工的最终要求的结果,由于该项菜单中先调用并执行排序函数功能,再调用排名次函数,最后执行最终结果的输出,而排名次函数中又调用了排序函数,排序函数中有排序后的信息输出,故1号功能会产生两次排序后的信息输出;

2号菜单的功能是:先输出职工的全部工号和全部完成的产品数量信息,再根据输入的工号信息查找该职工信息,最后输出要求的最终结果;

3号菜单的功能是:先输出职工的全部工号和全部完成的产品数量信息,再根据输出的职工工号,在该位置中插入一个职工信息,然后再进行排序,最后输出要求的最终结果;

4号菜单的功能是:先输出职工的各部工号和全部完成的产品数量信息,再根据输出的职工工号,将该职工的信息删除,最后输出要求的最终结果; 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(1~5):\n"); scanf("%d",&choose); switch(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,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); /*将给定的职工工号将其信息删除*/ Print_All(Pa,n); break;

case 5:Print_All(Pa,n); break; default:break; } getch(); }

第三章 程序调试

3.1 调试程序遇到的问题及解决

通过清屏函数放在不同位置使得到不同的要求输出的内容,而清除不需要的内容,利于比较功能函数运行前后的变化,再使用输出语句输出需要知道的信息进行对比,然后进行分析。

1)使用冒泡法排序测试排序函数时,排序命令没有执行,功能没有实现(如图3)。原因是:在使用冒泡法排序中,在if条件后误加了一个”;’,导致排序时,移动命令没能执行。过去一直以为功能没有实现,是由于形参和实参之间的数据传递的问题,但我将参数全部改为指针之后,发现仍然没有响应。长时间的查找之后,只能逐条指令进行分析,最后欣慰地发现,原来在if语句之后,不应该有的”;”,多了起来,才恍然大悟地明白并解决了问题(如图4)。 2)最终结果输出函数输出时,名次相同的重复输出(如图10)。原因是:在输出时,只考虑使相同名次的人数自加Pa[i].count++,却忘记了同时还要使表示输出结构体位置的i也要同时变化为i=i+Pa[i].count-1;在对比不同数据输出情况之后,找到了错误,并改正之后,重新运行后获得了成功(如图7)。

3)测试插入函数功能时,发现执行插入函数功能时,并没有插入成功,员工人数没有增加,但也没有提示插入错误(如图10)。原因是:我在插入函数中虽然使n=n+1;并返回了n的值,但没有将职工人数的返回值重新赋给n,使n的值并没有真正地改变,所以在输出时,少了一个员工的信息。在比较多次的运行输出的情况与输出自动生成的数据之后,发现插入的位置的数据有新插入的数据生成,但最后一个数据丢失,最后找到了错误的原因。改正并运行之后,插入功能运行获得了成功(如图11)。

4)测试删除函数时,当未查找到员工号时,输出结果(如图12)。经查找后,原因是在输出时员工的人数通过删除操作带回的返回值重新赋值,而当未删除的位置不存在时,删除函数中没有返回值,导致输出是系统随机的值。当删除位置不存在时,修改为带回n的原值,运行成功(如图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,排序函数

职工工作量统计系统报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)