职工工作量统计系统报告_第1页
职工工作量统计系统报告_第2页
职工工作量统计系统报告_第3页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、JINGCHU UNIVERSITY OF TECHNOLOGY课程设计成果设计题目:职工工作量统计学院:计算机工程班级:11软件(本)三班姓名:王志成学号:设计地点:A5-101完成日期:2013年 01月12日指导老师评语:成绩(五级记分制): 教师签名:目录摘 要 第一章 项目概述 1.1问题描述 1.2 问题分析 第二章 项目设计.1.2.2.2.2.2.1 系统程序的功能示意图如下: 32.2 功能函数设计思想及说明 42.2.1 随机生成职工号函数 4.2.2.2 随机生成职工完成的产品数量 5.2.2.3 排序函数 6.2.2.4 查找函数 7.2.2.5 插入函数 72.2.6

2、 删除函数 92.2.7 按职工完成的产品数量排名次函数 92.2.8 输出最终结果函数9229 mai n(函数9.第三章 程序调试.1.1.3.1 调试程序遇到的问题及解决1.1.3.2 程序调试结果1.23.2.1 随机生成职工号和随机生成职工完成产品数量信息结果(如图1)1.23.2.2 欢迎界面(如图 2) 1.23.3.3 功能 1排序函数(出现错误的如图3,正确的如图 4) 1.3.3.3.4 排名次函数(如图 5) 1.4.3.3.5 输出职工工号和完成产品数量函数(如图5) 1.4.3.3.6 功能 1 排序函数(如图 6)1.4 3.3.7 功能 2查找函数(如图 7和图

3、8) 1.5 3.3.8 功能 3插入函数(如图 9、图 10 和图 11) 1.5 3.3.9 功能 4删除函数(如图 12) 1.6 3.3.10 功能 5输出函数(如图 15)1.8 第四章 设计总结与心得 1.8第五章 参考文献 1.9附录2.0摘要数据结构主要是一门研究非数值计算的程序设计问题中的计算机操作对象 以及它们之间的关系和操作等的学科。 数据结构在计算机科学与技术中是一门综 合性的专业基础课, 其研究不仅涉及到计算机硬件的研究范围, 而且和计算机软 件的研究有着更密切的关系。 不论是编译程序过程还是操作系统都涉及到数据元 素在存储器中的分配问题。 在计算机科学与技术中, 数

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

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

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

7、找、插入、删除等功能;每个职工都包含以上结构体中的数据, 因此, 该问题的设计思想是: 采用结构体数组来存储职工信息, 然后对各职工的信息进行排 序、查找、插入、删除等操作。第二章 项目设计系统在 win-TC 中运行, 由于 win-TC 不支持中文输出功能, 故采用纯英文进行设计编 写。这样能作出美观的界面,并且制作出详细的菜单。2.1系统程序的功能示意图如下:厂开始欢迎界面随机生成职工 号、职工完成工Ch=(15)先按工作量排序, 再输出排 序后的工号和完成的数量,最后输出最终要求的结果Ch=2先输出Ch=3先输岀Ch=工号和的先输出工号再工号和完成的完成数量,最后输岀查找的结果个信息,

8、最后输岀最终的结果和职工完成 的数量,再删除给定的职工信息最后输出最终要求的结果Ch=先排序排名次,最 后输出最终要求的输岀结果结束示意图1系统函数功能示意图2.2功能函数设计思想及说明随机生成职工号函数void SandNumber(SqList Pa,int n,int *p)先定义了全局数组 NUMMAX=0和指针*p,并且让指针指向该数组,用来保存职工 的工号信息,再使用系统函数 srand()、rand()生成n个员工的工号,工号为不为零的两位数, 且这n个员工的工号各不相同。在生成完后,再依次输出这n个员工的工号,其图示如下:示意图2,随机生成职工号函数示意图随机生成职工完成的产品

9、数量void SandQuantity(SqList Pa,int n,int *q)先定义了全局数组 QUMAX=0和指针*q,并且让指针指向该数组,用来保存职工完成产品的次数信息,再使用系统函数srand() rand()生成n个员工的数量信息Pai.quantity,其中该信息为各个员工(最多有 5个小于100)的信息Pai.ftotalj之和,在生成完后,再依 次输出这n个员工的数量信息,其图示如下:Paj.quantity ; i+;示意图3,随机生成职工数据信息函数示意图223排序函数int Paixu_quantity(SqList Pa,int n,int *q)使用冒泡法进行

10、排序,先定义一个结构体arr,两个变量i和j,其中j用来计算已经完成的职工个数,i表示尚未比较个数,从j=0开始,当j<n时,执行循环,从i=0开始,比较一次后,使i+,比较(n-j)次,当i>(n-j)时,第一轮比较结束,使j+,进入下一轮,当j>=n时,表示第n轮比较结束,此时排序完成。函数示意图(3)如下:示意图4,排序功能函数示意图224查找函数int Search_Number(SqList Pa,int n,int num),根据给定的职工号查找该职工的信息。从序号为0的结构体数组开始访问,如果该结构体数组中元素的工号项Pai.number与num不等,则使i自加

11、1,指向下一个结构体数组,访问该数组元素,直到该数组元素的 工号等于num时,输出该结构体数组元素的元素,并返回该数组元素的位置i,如果i>n时还未找到要查找的元素,则表示该元素不存在,输出"the employee hasn't been foun d!n ”并返回空。其示意图如下:示意图5,查找函数功能示意图225插入函数int In sert(SqList Pa,i nt n ,i nt num)要插入一个员工的信息,就得先得到员工的位置,先调用查找函数,将给定员工工号示意图 6,插入函数示意图2.2.6 删除函数int Delete(SqList Pa,int

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

13、er(SqList Pa,int n)功能:给各职工排名次和赋 count数据项的值。 要 给职工按完成的产品数量排名次, 则要求先对各职工的信息进行排完成产品数量排序, 即在 排名次函数中又调用了按职工完成产品数量排序函数进行排序。排序完成后,先对这n个员工按序号排名次,即 Pa0,Pai,Pan-1的名次依次为1, 2, 3,n;然后当j<n时(假 设i<=j ),判断Pai.quantity和Paj.quantity是否相等,如果相等,则将序号为j的名次变为与序号为 i 的员工名次相同, j+, 并且每增多一个名次相同的员工,则将其员工名次相同的 个数信息加1,即Pai.co

14、unt+ ;否则i的序号为j的下一个结构体元素j-1,再使i和j自加1, 即 i+,j+, 直到 i<n 时结束。2.2.8 输出最终结果函数void Print_All(SqList Pa,int n)功能: 输出所有员工的名次、完成数量、 同名次人数以及各自的工号。由于每个员工信息都包含 5 个数据元素, 而其中有三个 ( number、quantityftotal) 都已经由随机函数自动 生成。因此,在输出之前,必须要给各个员工的其它两个数据元素(order、count)赋值。为此,我在输出之前调用 Count_order(SqList Pa,int n) 函数,对未完成赋值的元素

15、赋值;然 后,当 i<n 时,从 0号结构体数组元素开始,先输出员工的名次、完成产品的数量、同名次 的人数,再判断序号为i的名次数据依次与其后的第 j个名次数据元素相比较,如果不相同,则直接输出 Pai.number;否则,输出 Pai.count个名次为 Pai.order的工号;再使 i=i+Pai.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)

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

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

18、后输出要求的最终结果;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)

19、; /* 随机赋职工完成产品信息 */WelcomeScreen();printf("please choose(15):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 search

20、ed:");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,

21、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 调试程序遇到的问题及解决通过清屏函数放在

22、不同位置使得到不同的要求输出的内容, 而清除不需要的内容, 利于 比较功能函数运行前后的变化, 再使用输出语句输出需要知道的信息进行对比, 然后进行分 析。1)使用冒泡法排序测试排序函数时, 排序命令没有执行, 功能没有实现 (如图 3)。原因是: 在使用冒泡法排序中,在 if 条件后误加了一个” ;',导致排序时,移动命令没能执行。过去 一直以为功能没有实现, 是由于形参和实参之间的数据传递的问题, 但我将参数全部改为指 针之后, 发现仍然没有响应。 长时间的查找之后, 只能逐条指令进行分析, 最后欣慰地发现, 原来在 if 语句之后, 不应该有的” ;”,多了起来, 才恍然大悟地明

23、白并解决了问题 (如图 4)。2)最终结果输出函数输出时,名次相同的重复输出(如图10)。原因是:在输出时,只考虑使相同名次的人数自加 Pai.count+ ,却忘记了同时还要使表示输出结构体位置的i 也要同时变化为 i=i+Pai.count-1; 在对比不同数据输出情况之后,找到了错误,并改正之后,重 新运行后获得了成功(如图 7)。3)测试插入函数功能时,发现执行插入函数功能时,并没有插入成功,员工人数没有增加,但也没有提示插入错误 (如图10)。原因是:我在插入函数中虽然使 n=n+1;并返回了 n的值, 但没有将职工人数的返回值重新赋给n,使n的值并没有真正地改变,所以在输出时,少了

24、一个员工的信息。 在比较多次的运行输出的情况与输出自动生成的数据之后, 发现插入的位 置的数据有新插入的数据生成, 但最后一个数据丢失, 最后找到了错误的原因。 改正并运行之后,插入功能运行获得了成功(如图 11)。Input Che quaotPf the enplo ee =Pa CA 1 = numbRi* =4RPa Cl J.nunber" 1Pa. L 2 J _ irtLLvnbfM* =!i4Pa L3 J .niumbtfr -50Pa14 J Hnunborthe FallJfCotallO56T he 2 七h quairki; ity of 1t ho e n

25、plojsG is EQ好曰eaR hkhllh Lt 11 TFa2 J.flwCaltB)- 21Pal2 Kftotalll 89PaE2 l.ftotallZJ= 55Pat2 .Ftotalt3J= 293th niirferititv of tlw ennInurr is 194The4tii qiiMn 七工七 ¥ of thee nip丄ci «jee=1 X4)测试删除函数时,当未查找到员工号时,输出结果(如图12)。经查找后,原因是在输出时员工的人数通过删除操作带回的返回值重新赋值,而当未删除的位置不存在时,删除函数中没有返回值,导致输出是系统随机的值。

26、当删除位置不存在时,修改为带回n的原值,运行成功(如图13)。3.2程序调试结果随机生成职工号和随机生成职工完成产品数量信息结 果(如图1)Pa 14 J tctallQ 55The 5tIh niiantity of t:he emplouee is 55图1,输出随机生成的职工号和职工完成产品数量322欢迎界面(如图 2)图2,欢迎界面和菜单功能1排序函数(出现错误的如图3,正确的如图4)HTG:辽语言回田lUcf Ol-GPa Ixujp "thequant: it;y Is :Immhc r-llRfl42頸 entity:0350193125AfterPaixui, the

27、quant itsi is:01?3350125IBR42huantit:&193350125PaixutliBquantityi is:03501?3125Oi'de±'quantitycountnumber1011923501603193iB4412512图3,排序功能未实现I sa G: C%言"lAqSL exeBef orePaixuvtine quavi七ilzy is:In umbA t*;112719141Mquant ity*1 29409?4&RaJ terPaixu, tlie quant ity £s :1

28、974G40291 r*州417112Hquantitv:?46402?AfterFalxUrChe quantity is:97464029ui'det'quant it9countnum her1971912461Al340171429112图4排序功能实现334排名次函数(如图 5)3 inisert before the located4. de lets tlie Information having gluuen5 . Output utat it Lcatl inf oiiiiatr xon-H-MMMXHMMiK6.Exit the system4WMM-K M

29、-please choose2 munber?1G729394quant ity:12213bbH1VLAfterraixu »thuyu«nt it2/1 is >19113B122&8Order :-11919413E?2122丄标93图5,排名次函数输出职工工号和完成产品数量函数(如图 5)图5中有输出336功能1排序函数(如图6)is:13198Fixu,the275263131AFher275 Oi'der :12631131198110ivier1count1eluant ltu2750numhe r34453b321425135ULian

30、tlt v -275263丄3丄牝4B7839.exe40图6,排序函数功能2查找函数(如图7和图8)图7,未找到时的查找界面图图8,查找到所给职工的界面图338功能3插入函数(如图 9、图10和图11)图9,插入位置错的界面please1c boosed):numbers35916S71ity:23&623?161IPleaseinputthe numberlocatedto be£eapclied:65Itlhe enplo ueeinfornfttioni$ =12391Iple aseinputthe=5:2lifter Faixnthe quantity-is:23

31、t172172Ul7800i*derauftntitvcountnunber123613&2172275752172175754161171578191681917S172图10,插入出错的界面图11插入正确的界面339功能4删除函数(如图12)S图12,删除位置不存在时细节出错,删除后输出结果图13,修改后,删除结果图14,当给定职工号存在时,删除结果3310功能5输出函数(如图15)| cT Gr: 语言r 9刃 exe曰回田.de lethe infcviTiSLitidn Output statistica1 iroformation.£xit the spstenH

32、HMMM耳H耳見pltjaiitj5After .Piixu,the juanitity309l&lOrilerqtuant leycountnurnJber130?1602194144316617441611拋£1S2图15,最终结果输出函数第四章设计总结与心得两个星期的课程设计实践时间很快过去了,我的课程设计也终于结束了。 回忆起这两个星期的生活,还真是百感交集却难言。准确地说我是在老师宣布可以准备做课程设计时,就已经做准备了。 不过,当时我以为是让自己挑选其中的一个去做。 而我是去分析了第一个。到真正开始时,我才不得不重新 来分析新课题 职工工作量统计系统。刚开始时,由

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

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

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

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

37、计产生了喜爱。第五章 参考文献1 李素若 .数据结构 .北京:化学工业出版社, 2009.2 朱蓉,数据结构实验指导书3 严蔚敏 吴伟民,数据结构(C语言版),1999,清华大学出版社;附录程序代码:#include<stdio.h>#include <stdlib.h>#include <time.h> /* 使用当前时钟做种子 */#define MAX 100typedef structint order;int count;int ftotal5;int quantity; int number;SqList,*Sq;SqList PaMAX=0;/

38、*NUM 数组用来保存随机生成的职工号, QU 用来保int NUMMAX=0,QUMAX=0; 存职工完成总数量的次数 */int *p=NUM,*q=QU;void SandNumber(SqList Pa,int n,int *p)/* 随机产生职工的工号并输出其工号信息 */int i,j,m;srand(unsigned)time(NULL); /* 设置随机数种子 */ for(i=0;i<n;i+) m=rand()%100; /* 产生工号互不相同的不为 0 的两位数工号 */ while(m=0)m=rand()%100; *(p+i)=m;if(i>0) /*

39、如果产生的工号相同, 则重新生成新的随机数直到不同为止作为职工号 */ for(j=0;j<i;j+) if(*(p+i)=*(p+j) m=rand()%100; while(m=0) m=rand()%100; *(p+i)=m;for(i=0;i<n;i+)Pai.number=*(p+i); printf("Pa%d.number=%2dn",i,Pai.number);printf("n");void SandQuantity(SqList Pa,int n,int *q) /* 随机生成职工各次完成的工作量,并累计各职工的总完成产

40、品数量 */int i,j,k; srand(unsigned)time(NULL); /* 设置随机数种子 */for(i=0;i<n;i+)*(q+i)=rand()%10;if(*(q+i)>5) /* 各职工完成的总次数不大于 5*/ *(q+i)=rand()%10; for(j=0;j<n;j+) for(i=0;i<*(q+j);i+)Paj.ftotali=rand()%100;printf("the Pa%d.ftotal%d=%3dn",j,i,Paj.ftotali);Paj.quantity+=Paj.ftotali; /*

41、累计各职工多次完成的产品数量 */ printf("The %dth quantity of the employee is %dn",(j+1),Paj.quantity); printf("n");printf("n");int Search_Number(SqList Pa,int n,int num) /* 根据给定的职工号进行查找函数 */int i=0;while(i<n)if(Pai.number!=num)i+;elseprintf("the employee information to search

42、 is:n"); printf("%dt%dt%dt%dt",Pai.order,Pai.quantity,Pai.count,Pai.number); printf("n");return(i);printf("the employee hasn't been found!n"); /*i 大于 n 时表示给定的职工信息不存在 */ return(NULL);int Delete(SqList Pa,int n,int *q,int num) /* 将给定工号为 num 的职工信息删除,原始值在QU 中不改变 */

43、int i=0,j,k;SqList str;int s;s=Search_Number(Pa,n,num);while(s!=NULL&&i<n)if(Pai.number!=Pas.number)i+;else str.order=Pai.order; str.number=Pai.number; for(j=0;j<*(q+i);j+) str.ftotalj=Pai.ftotalj;str.quantity=Pai.quantity;str.count=Pai.count;for(k=s;k<n;k+)Pak.order=Pak+1.order; /*

44、 将要删除的数据后的数据全部前移 */ Pak.number=Pak+1.number;for(j=0;j<*(q+i);j+)Paj.ftotalj=Pak.ftotalj;Pak.quantity=Pak+1.quantity;Pak.count=Pak+1.count;n-=1;printf("the information deletecd is :n");printf("%dt%dt%dt%dn",str.order,str.quantity,str.count,str.number); for(i=0;i<*(q+s);i+)pr

45、intf("%dt",str.ftotali);printf("n");return(n);printf("Delete is wrong!n");Return(n);printf("n");int Insert(SqList Pa,int n,int num) /* 在工号为 num 的位置插入一个员工信息 */int i,j,s,total,k;s=Search_Number(Pa,n,num);srand(unsigned)time(NULL);if(s<0|s=NULL)printf("in

46、sert wrong!n");return(n);elsefor(i=n-1;i>=s;i-)/* 先将第 s 个结构体位置腾出 */Pai+1.order=Pai.order;Pai+1.number=Pai.number;for(j=0;j<*(q+s);j+)Pai+1.ftotalj=Pai.ftotalj;Pai+1.quantity=Pai.quantity;Pai+1.count=Pai.count;printf("please input the total(i<=5):");scanf("%d",&t

47、otal);if(total>5)printf("input wrong!n");printf("please input the total(i<=5):");scanf("%d",&total);Pas.quantity=0;Pas.order=1;Pas.count=0;for(i=0;i<total;i+)Pas.ftotali=rand()%100;Pas.quantity+=Pas.ftotali;k=rand()%100;for(i=0;i<n;i+)while(k=Pai.number)

48、k=rand()%100;Pas.number=k;n=n+1;return(n);/* 按完成的产品数量排序 */int Paixu_quantity(SqList Pa,int n,int *q)int i,j,k;SqList arr;int str;for(j=0;j<n;j+) for(i=0;i<n-j;i+)if(Pai.quantity<Pai+1.quantity) str=*(q+i); *(q+i)=*(q+i+1); *(q+i+1)=str;arr.quantity=Pai.quantity; Pai.quantity=Pai+1.quantity;

49、 Pai+1.quantity=arr.quantity;arr.order=Pai.order;Pai.order=Pai+1.order;Pai+1.order=arr.order;arr.count=Pai.count;Pai.count=Pai+1.count;Pai+1.count=arr.count;for(k=0;k<*(q+j);k+) str=*(q+i);*(q+i)=*(q+i+1); *(q+i+1)=str;arr.ftotalk=Pai.ftotalk;Pai.ftotalk=Pai+1.ftotalk; Pai+1.ftotalk=arr.ftotalk;

50、arr.number=Pai.number;Pai.number=Pai+1.number;Pai+1.number=arr.number; printf("n");printf("After Paixu,the quantity is:n"); for(k=0;k<n;k+)printf("%4dt",Pak.quantity);printf("n");void Count_order(SqList Pa,int n) /* 按职工完成的总数量统计名次 */int i,j,k;Paixu_quantity(

51、Pa,n,q); /* 先按完成的产品总数量排序 */1 初始为它for(i=0,j=1;i<n;i+) /* 先将各员工的名次按从大到小顺序各自加 们各自的名次 */Pai.order=i+1;Pai.count=1;for(i=0,j=1;i<n;i+)while(j<n&&Paj.quantity=Pai.quantity)Paj.order=Pai.order;Pai.count+;j+;i=j-1;j+;void Print_NumQU(SqList Pa,int n) /* 输出职工工号和完成的总数量 */int i;printf("number:n");for(i=0;i<n;i+)printf("%-dt",Pai.number);printf("n");printf("quantity:n ");for(i=0;i<n;i+)printf("%-4dt",Pai.quantity);printf("n");void Printf_break() /* 回车清屏

温馨提示

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

评论

0/150

提交评论