职工工作量统计系统方案

职工工作量统计系统方案
职工工作量统计系统方案

一、课程设计的容

职工工作量统计系统

编写有一个程序,该程序输入职工工号和完成的产品数量,程序允许同一职工有多次输入,由程序对其完成的产品数量实现累计。程序按完成数量对他们排序,并确定他们的名次。按完成的产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们的工号(工号由小到大顺序输出)。要求程序用有序链表存储数据信息。

二、课程设计的要求与数据

1、进一步掌握和利用C语言进行程设计的能力;

2、进一步理解和运用结构化程序设计的思想和方法;

3、初步掌握开发一个小型实用系统的基本方法;

4、学会调试一个较长程序的基本方法;

5、学会利用流程图或N-S图表示算法;

6、掌握书写程序设计开发文档的能力。

三、课程设计应完成的工作

1、编写完成相应题目的程序;

2、编写课程设计报告,课程设计报告的容应包括以下6个部分:

1) 需求分析:包括设计题目、设计要求以及系统功能需求分析;

2) 总体设计:包括系统总体设计框架和系统功能模块图;

3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;

4) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存

在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当

的包含结果截图);

5) 总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改

进?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议

等容;

6) 附录:主要源程序代码,含必要的注释。

3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解

决问题、运行程序和回答教师提出的问题。

四、课程设计进程安排

五、应收集的资料及主要参考文献

[1] 谭浩强.C程序设计(第三版)[M],北京:清华大学,2005.9

[2] 谭浩强. C程序设计题解与上机指导(第三版)[M],北京:清华大学,2005.7

[3] 宋箭. C语言程序设计,上海,上海科学普及,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 .目的与要求

目的:

将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。利用面向过程的编程思想以及C的编程方法完成系统的设计;进一步培养学生综合应用C的各种编程知识和技巧进行Windows 应用程序编写的实际能力,包括:(1)对C基本语法的熟练掌握;(2)训练学生对一个实际应用系统进行综合分析、设计、编程及调试等的能力;(3)培养学生自主学习和独立创新的精神。

要求:

1)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。

2)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。

3)熟练掌握C语言的基本语法,灵活运用各种数据类型。

4)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)

和修改程序。

设计的具体容:

编写有一个程序,该程序输入职工工号和完成的产品数量,程序允许同一职工有多次输入,由程序对其完成的产品数量实现累计。程序按完成数量对他们排序,并确定他们的名次。按完成的产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们的工号(工号由小到大顺序输出)。要求程序用有序链表存储数据信息。

2 总体设计

1》准备.

1)要求对序链表的使用具有较熟练的能力。

2)用到数组、指针方面的重要知识。3)函数的循环连续使用。

2》概要设计.

1,插入链表的节点先按照产品数量的多少排序(从多到少),如果产品的数量相等,就按照员工编号来排序(从小到大)

2,如果产品数量相等的,他们的序号是相同的

↙选择↓↘↖↘

↓↓↓

3 详细设计

整个系统除了主函数外,另外还有多个函数,实现五大功能:输入功能、显示功能、排序功能、累加功能、插入功能、。各个函数的详细设计说明分别如下:

1.主函数 main()

利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。

2.初始化函数 STUDENT *init()

这是一个无参函数,里面只有一个语句,它的作用是使链表初始化,使head的值为NULL。比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示

一些乱码!

3.输入记录函数 STUDENT *create()

这是一个无参函数,用来执行职工工作量的输入,当职工为0时停止输入,函数结束后,带回一个指向链表头的指针head。

算法:先声明一个首节点head,并将head->next设为NULL。每输入一个数据就声明一个新节点p,把p->next设为NULL,并且到之前列表的尾端。

N-S

4.

这是一个有参函数,形参有两个,一个是“链表头的指针”,一个是“待插入指针”,插入后会重新进行排序,并返回。

算法:先将职工工作量进行排序,再插入一个新的结点。先用指针变量p2指向待插入的结点,p3指向第一个结点。如果p2->p1p1,则待插入的结点不应插在p3所指的结点之前。此时将p3后移,并使p2指向刚才p1所指的结点。重复以上的步骤,直到p2->p1>=p3->p1为止。这时将p0指向的结点插到p1所指结点之前。如果插入位置为第一个结点之前,则将p2赋给head,将p3赋给p2->next。如果要插到表尾之后,应将p2赋给p3->next,NULL 赋给p2->next。最后再调用排序的函数,重新排序.

N-S流程图如下:

4 调试分析

(1)刚开始没有那个初始化函数,程序运行后,没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!加入初始化函数后,这种现象也随之消失。

(2)刚开始执行输入函数,输入多个职工的工作量,输完后执行,职工的工作量是按工号的反顺序显示的,试着在其中增加一些语句,希望能把工号按正常顺序显示.

input employee number and the counts of products

exit: Double times 0 !

1

12

the head is null,so,the linklist head inserted success!

return the head of the linklist!

input employee number and the counts of products

exit: Double times ENTER

2

16

the head is NOT null,so,the linklist head inserted success!

return the head of the linklist!

input employee number and the counts of products

exit: Double times ENTER

3

11

the end of linklist inserted success!

相关主题
相关文档
最新文档