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

下载本文档

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

文档简介

1、一、课程设计的内容职工工作量统计系统编写有一个程序,该程序输入职工工号和完成的产品数量,程序允许同一职工有多次输入,由程序对其完成的产品数量实现累计。程序按完成数量对他们排序,并确定他们的名次。按完成的产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们的工号(工号由小到大顺序输出) 。要求程序用有序链表存储数据信息。二、课程设计的要求与数据1、进一步掌握和利用C 语言进行程设计的能力;2、进一步理解和运用结构化程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S 图表示算法;6、掌握书写程序设计开发文档的能力。

2、三、课程设计应完成的工作1、编写完成相应题目的程序;2、编写课程设计报告,课程设计报告的内容应包括以下6 个部分:需求分析:包括设计题目、设计要求以及系统功能需求分析;总体设计:包括系统总体设计框架和系统功能模块图;详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考 ( 列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图 );5) 总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改进?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;附

3、录:主要源程序代码,含必要的注释。3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题。四、课程设计进程安排序号设计各阶段内容地点起止日期1下达任务书,说明设计要求;收集资料实验 3#5176.182总体方案设计、详细设计实验 3#5176.193编写程序,调试分析实验 3#5176.204撰写报告并上交,答辩实验 3#5176.21五、应收集的资料及主要参考文献 1谭浩强 .C 程序设计 (第三版 )M,北京:清华大学出版社,2005.9 2谭浩强 .C 程序设计题解与上机指导(第三版) M,北京:清华大学出版社,2005.7 3宋箭 .C语

4、言程序设计,上海,上海科学普及出版社,2005.6 4周启海 .C 语言程序设计教程,北京,机械工业出版社,2004.1发出任务书日期: 2007 年 6 月 18 日指导教师签名 :计划完成日期:2007 年 6 月 22 日基层教学单位责任人签章:主管院长签章 :1设计目的与要求 .页码2总体设计 .页码3详细设计 .页码3.1 功能模块设计 .页码3.2 数据结构设计 .页码4调试分析 .页码5总结 .页码6附录 .页码6答辩记录(正文处留出适当空白).页码7指导教师意见(正文处留出十行空白).页码1 . 目的与要求目的:将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构

5、、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。利用面向过程的编程思想以及C 的编程方法完成系统的设计;进一步培养学生综合应用C 的各种编程知识和技巧进行Windows应用程序编写的实际能力,包括:( 1)对C 基本语法的熟练掌握;( 2)训练学生对一个实际应用系统进行综合分析、设计、编程及调试等的能力;3)培养学生自主学习和独立创新的精神。要求:1)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。2)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。3)熟练掌握 C 语言的基本语法,灵活运用各种数据类型。4)进一步掌握

6、在集成环境下如何调试程序和修改程序。(单步调试,设置断点、观察表达式,分块调试)设计的具体内容:编写有一个程序,该程序输入职工工号和完成的产品数量,程序允许同一职工有多次输入,由程序对其完成的产品数量实现累计。程序按完成数量对他们排序,并确定他们的名次。按完成的产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们的工号(工号由小到大顺序输出 )。要求程序用有序链表存储数据信息。总体设计1准备 .1)要求对序链表的使用具有较熟练的能力。2)用到数组 、指针方面的重要知识。3)函数的循环连续使用。2概要设计 .1, 插入链表的节点先按照产品数量的多少排序(从多到少),如果产品的数量相等,就按

7、照员工编号来排序(从小到大)2,如果产品数量相等的,他们的序号是相同的_系统菜单/选择J1. 改变员工信息|2?删除员工编号3.退出系统4?查询输入员工编号读取员工编号输入员工编号实现产品数量累加调用删除函数输出员工工作量/系统菜单详细设计整个系统除了主函数外,另外还有多个函数,实现五大功能:输入功能、显示功能、排序功能、累加功能、插入功能、。各个函数的详细设计说明分别如下:1. 主函数 main()利用无限次循环for(;) 和 swithch() 实现各函数的调用,系统根据输入的数字选项来调用相应的函数。2?初始化函数STUDENT *in it()这是一个无参函数,里面只有一个语句,它的

8、作用是使链表初始化,使 head 的值为 NULL 。比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!3. 输入记录函数STUDENT *create()这是一个无参函数,用来执行职工工作量的输入,当职工为 0 时停止输入,函数结束后,带回一个指向链表头的指针head 。算法:先声明一个首节点 head ,并将 head- next 设为 NULL 。每输入一个数据就声明一个 新节点p,把 p-next 设为 NULL ,并且链接到之前列表的尾端。N-S 流程_head=NULLfor( ; )指针 pl 指向新开辟的单元指针 pl 是否为空一 i是-

9、否输入工号 p1-num输出 内存p1-num是否为 0一溢出一一 否停止输入返回11菜单输入工作量p1-productscount=atoi(temp); p1-next=NULL;4. 插入函数TS *lnsertIntoLink(empnumber,productscount)这是一个有参函数,形参有两个,一个是“链表头的指针”,一个是“待插入指针”,插入后会重新进行排序,并返回。算法:先将职工工作量进行排序,再插入一个新的结点。先用指针变量p2 指向待插入的结点, p3 指向第一个结点。如果 p2-p1p1 ,则待插入的结点不应插在 p3 所指的结点之 前。此时将 p3 后移,并使 p

10、2 指向刚才 pl 所指的结点。重复以上的步骤,直到 p2-p1=p3-p1 为止。这时将p0 指向的结点插到pl 所指结点之前。如果插入位置为第一个结点之前,贝 U将p2 赋给 head , 将 p3 赋给 p2-next 。如果要插到表尾之后,应将p2 赋给 p3-next ,NULL 赋给p2-next 。最后再调用排序的函数,重新排序 ?N-S 流程图如下 :P1=head, p2=new原来的链表是空表一一 是一否将 p0 所指 的当 p2-p1p1,以及 p1 所指向的不是表尾结结点作为 唯占一结点八、p2 指向 p1 位置 p1 向后移一个结点L-p1=p3-p1是?否指向头结点

11、p2-n ext=p1 p1-next=NULL (插到表尾head=p2 p2 -np1- n ext=p2之后)ext=p1 (插到表头p2-n ext=p1之前)(插到表中间 )n=n+1;(结点加 1) head=sort ( hear );(重新排序)调试分析(1) 刚开始没有那个初始化函数,程序运行后,没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!加入初始化函数后,这种现象也随之消失。(2) 刚开始执行输入函数,输入多个职工的工作量,输完后执行,职工的工作量是按工号的反顺序显示的,试着在其中增加一些语句,希望能把工号按正常顺序显示in put employee nu

12、mber and the counts of productsexit: Double times 0 !112the head is n ull,so,the lin klist head in serted success!retur n the head of the lin klist!in put employee nu mber and the counts of productsexit: Double times ENTER216the head is NOT n ull,so,the lin klist head in serted success!retur n the h

13、ead of the lin klist!in put employee nu mber and the counts of productsexit: Double times ENTER311the end of linklist inserted success! return the head of the linklist!input employee number and the counts of products exit: Double times ENTER00Pleas Make you choiceChange Employee InformationDelet Emp

14、loyee NumberPrint the linklist0.Exityour choice:3output the result:orderporductscountempnumber11621165212121243113496Pleas Make you choiceChange Employee InformationDelet Employee NumberPrint the linklist0.Exit your choice:1Please Input you Employee Number And Products Count you are to change!the em

15、ployee Number :5Searching for the number,Please wait .Find it!print the nod of temp: temp.empnumber= 5print the nod of temp: ductscount= 16print the nod of temp: temp.empnumber= 5print the nod of temp: ductscount= 16print the nod of temp: t2.empnumber= 5 printthe nod of temp: d

16、uctscount= 16 beforDelete the temp node .output the result:order porductscount empnumber11621165212121243113496delets employee Number :5after delete the temp node .output the result:orderporductscountempnumber1162212121243113496Would you like to input more products count? if not,please type 0your In

17、put: 16Would you like to input more products count? if not,please type 0your Input: 14Would you like to input more products count? if not,please type 0your Input: 20Would you like to input more products count? if not,please type 0your Input: 0the head is NOT null,so,the linklist head inserted succes

18、s! returnthe head of the linklist!output the result:orderporductscountempnumber16652162131243123411659Pleas Make you choice1. Change Employee InformationDelet Employee NumberPrint the linklist0.Exityour choice:2input the Employee Number you wanna delete:3 delets employee Number :3Pleas Make you choi

19、ceChange Employee InformationDelet Employee NumberPrint the linklist0.Exityour choice:3output the result:orderporductscountempnumber1665216231213124496Pleas Make you choice 1.Change Employee InformationDelet Employee NumberPrint the linklist0.Exit your choice:0总结经过几天的C 语言课程设计,感觉自己收获不少!首先是:链表本来上课是没有上

20、的,但这个课程设计里面主要都是用链表,因为要达到这样的功能, 使用链表相当方便,但不容易理解,所以在这方面我很了很多的时间看课本和参考课外书,使 C 语言的知识强化了不少。其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:返回值函数和不值函数两者在主函数中的调用是不同的, 更重要的是,这次课程设计虽然花了我不少时间,但正是返回这些时间,让我见识到了C 语言 的重要性。由于这是第一次进行设计,写文档,难免会写得不好!6.附录代码设计.#include #include #include #include #include typedef struct STRUCT/*定义结构体*

21、/int empnumber;/*员工编号*/int productscount;/* 产品数量*/struct STRUCT *next;/*指向下一个节点的指针*/TS;/*结构体的别名*/main()TS *CreateLink(TS*); /*TS *InsertIntoLink(); /*TS *DeletFromLink(); /*声明创建链表的函数声明插入链表的函数声明删除函数*/*/*/TS *Search();void print();/*声明打印链表的函数*/TS *head;TS *temp;TS *t2;char s100;int empnumber=0;int pro

22、ductscount=0;int n;head=NULL;head=CreateLink(head); /*先创建空链表*/temp=(TS*)malloc(sizeof(TS);t2=(TS*)malloc(sizeof(TS);while(1)/*一个可控制的循环*/LOOP: printf(ntPleas Make you choicen);/* 系统菜单*/printf(1.Change Employee Informationn);/* 改变员工信息printf(2.Delet Employee Numbern);/* 删除员工编号printf(3.Print the linklis

23、tn);printf(0.Exitn);/* 退出系统*/printf(your choice:);gets(s);if(strcmp(s,1)!=0&strcmp(s,2)!=0&strcmp(s,3)!=0)return;/*/*/如果不是1 或者2选项,就退出系统*/if(strcmp(s,1)=0) /*选择选项1,进行改变员工信息操作*/printf(nPlease Input you Employee Number And Products Count you are to change!nthe employee Number :);gets(s);empnumber=atoi(

24、s); /*输入员工编号*/ printf(nSearching for the number,Please wait.n);temp=Search(head,empnumber);printf(nprint the nod of temp: temp.empnumber= %d,temp-empnumber); printf(nprintthe nod of temp: ductscount= %d,temp-productscount);/* */if(temp=NULL)goto LOOP;else t2-empnumber=temp-empnumber; t2-prod

25、uctscount=temp-productscount;/* memcpy(t2,temp,sizeof(TS);*/ printf(nprint the nod of temp: temp.empnumber= %d,temp-empnumber); printf(nprint the nod of temp: ductscount= %d,temp-productscount);printf(nprint the nod of temp: t2.empnumber= %d,t2-empnumber);printf(nprint the nod of temp: t2.pr

26、oductscount= %d,t2-productscount);/*/t2-next=NULL; printf(nbefor Delete the temp noden);print(head);head=DeletFromLink(head,t2-empnumber); printf(nafter delete the temp node.n);print(head);productscount+=t2-productscount; while(1) /*改循环实现产品数量累加计算*/ printf(Would you like to input more products count?

27、 if not,please type 0nyour Input: );gets(s); if(strcmp(s,0)!=0) productscount+=atoi(s);/*累加操作*/else break; /*停止累加*/ t2-productscount=productscount;head=InsertIntoLink(head,t2-empnumber,t2-productscount);/*把员工编号和产品数量插入到链表中*/print(head); /*打印改链表*/else if(strcmp(s,2)=0)printf(input the Employee Number

28、you wanna delete:); /*选择选项2,进行了删除员工信息操作*/gets(s);empnumber=atoi(s); /*读取员工编号*/*Search(head,empnumber); */ head=DeletFromLink(head,empnumber); /*调用删除函数 */else print(head);TS *CreateLink(TS *head) /*创建链表函数*/char temp100;TS *p1;p1=(TS*)malloc(sizeof(TS); /*为一个链表节点分配存储空间*/printf( input employee number a

29、nd the counts of productsn); printf(exit: Double times 0 !n);/*两次输入0,表示退出*/gets(temp);p1-empnumber=atoi(temp); /*输入员工编号*/gets(temp); p1-productscount=atoi(temp);/*输入产品数量*/ p1-next=NULL; /*链表节点的尾指针赋值为NULL*/while(p1-empnumber0)/*当输入的员工编号不为0*/*if(head=NULL)head=p1;第一次插入,插在表头*/head=InsertIntoLink(head,p

30、1-empnumber,p1-productscount);/*调用插入函数,进行节点插入 */p1=(TS*)malloc(sizeof(TS); /*为 p1 节点分配存储空间*/printf( input employee number and the counts of productsn); printf(exit: Double timesENTERn);gets(temp);p1-empnumber=atoi(temp); /*为 p1 的成员变量empnumber赋值 */ gets(temp);p1-productscount=atoi(temp); /*为 p1 的成员变量

31、赋值*/ p1-next=NULL;return head; /*返回首指针*/TS *InsertIntoLink(TS* head,int empnumber,int productscount) /*插入函数,有序插入*/TS *p1,*p2,*p3;p1=(TS*)malloc(sizeof(TS); /*新建一个节点*/ p1-empnumber=empnumber;/* 为节点赋值*/p1-productscount=productscount;p2=head; /*p2指向首节点*/if(head=NULL) /*首节点为空*/ head=p1;p1-next=NULL;/*新节

32、点插入在表头*/ printf(the head is null,so,the linklist headinserted success!n);else /* 首节点不为空*/while(productscountproductscount&p2-next!=NULL)/* 插入产品数量少于当前节点的产品数量*/p3=p2;p2=p2-next; /*指针下移,继续搜索*/ if(productscount=p2-productscount)if(productscount=p2-productscount)while(productscount=p2-productscount&empnu

33、mberp2-empnumber&p2-next!=NULL)/*员工编号从小到大排序,如果要插入的员工编号比当前节点大,就继续往下搜索*/p3=p2;p2=p2-next;if(head=p2) /*插在表头*/head=p1;p1-next=p2;printf(the head is NOT null,so,the linklist head inserted success!n);else /* 插在表中间*/p3-next=p1;p1-next=p2;printf(the midle of linklist inserted success!n);else /* 插在表尾*/p2-next=p1;p1-next=NULL;printf(the end of linklist inserted success!n);printf(return the head of the linklist!n);return(head);void print(TS *

温馨提示

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

评论

0/150

提交评论