职工工作量统计系统Word格式.docx

上传人:b****2 文档编号:377957 上传时间:2023-04-28 格式:DOCX 页数:25 大小:51.65KB
下载 相关 举报
职工工作量统计系统Word格式.docx_第1页
第1页 / 共25页
职工工作量统计系统Word格式.docx_第2页
第2页 / 共25页
职工工作量统计系统Word格式.docx_第3页
第3页 / 共25页
职工工作量统计系统Word格式.docx_第4页
第4页 / 共25页
职工工作量统计系统Word格式.docx_第5页
第5页 / 共25页
职工工作量统计系统Word格式.docx_第6页
第6页 / 共25页
职工工作量统计系统Word格式.docx_第7页
第7页 / 共25页
职工工作量统计系统Word格式.docx_第8页
第8页 / 共25页
职工工作量统计系统Word格式.docx_第9页
第9页 / 共25页
职工工作量统计系统Word格式.docx_第10页
第10页 / 共25页
职工工作量统计系统Word格式.docx_第11页
第11页 / 共25页
职工工作量统计系统Word格式.docx_第12页
第12页 / 共25页
职工工作量统计系统Word格式.docx_第13页
第13页 / 共25页
职工工作量统计系统Word格式.docx_第14页
第14页 / 共25页
职工工作量统计系统Word格式.docx_第15页
第15页 / 共25页
职工工作量统计系统Word格式.docx_第16页
第16页 / 共25页
职工工作量统计系统Word格式.docx_第17页
第17页 / 共25页
职工工作量统计系统Word格式.docx_第18页
第18页 / 共25页
职工工作量统计系统Word格式.docx_第19页
第19页 / 共25页
职工工作量统计系统Word格式.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

职工工作量统计系统Word格式.docx

《职工工作量统计系统Word格式.docx》由会员分享,可在线阅读,更多相关《职工工作量统计系统Word格式.docx(25页珍藏版)》请在冰点文库上搜索。

职工工作量统计系统Word格式.docx

1

下达任务书,说明设计要求;

收集资料

实验3#517

6.18

2

总体方案设计、详细设计

6.19

3

编写程序,调试分析

6.20

4

撰写报告并上交,答辩

6.21

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

[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,如果产品数量相等的,他们的序号是相同的

系统菜单

↙选择↓↘↖↘

1.改变员工信息

2.删除员工编号

3.退出系统

4.查询

↓↓↓

输入员工编号

读取员工编号

↓↓↓

实现产品数量累加

调用删除函数

输出员工工作量

↘↓↙

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流程图如下:

head=NULL

for(;

指针p1指向新开辟的单元

指针p1是否为空

是否

输入工号p1->

num

输出p1->

num是否为0

内存是否

溢出

停止输入工作量

输入

返回

菜单p1->

productscount=atoi(temp);

p1->

next=NULL;

4.插入函数TS*InsertIntoLink(empnumber,productscount)

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

先将职工工作量进行排序,再插入一个新的结点。

先用指针变量p2指向待插入的结点,p3指向第一个结点。

如果p2->

p1<

p3->

p1,则待插入的结点不应插在p3所指的结点之前。

此时将p3后移,并使p2指向刚才p1所指的结点。

重复以上的步骤,直到p2->

p1>

=p3->

p1为止。

这时将p0指向的结点插到p1所指结点之前。

如果插入位置为第一个结点之前,则将p2赋给head,将p3赋给p2->

next。

如果要插到表尾之后,应将p2赋给p3->

next,NULL赋给p2->

最后再调用排序的函数,重新排序.

P1=head,p2=new

原来的链表是空表

是否

将p0所指当p2->

p1,以及p1所指向的不是表尾结

的结点作为点

唯一结点p2指向p1位置p1向后移一个结点

p2->

p1

是否

p1指向头结点p2->

next=p1

是否p1->

next=NULL

head=p2p1->

next=p2(插到表尾之后)

p2->

next=p1p2->

(插到表头之前)(插到表中间)

n=n+1;

(结点加1)

head=sort(hear);

(重新排序)

4调试分析

(1)刚开始没有那个初始化函数,程序运行后,没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!

加入初始化函数后,这种现象也随之消失。

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

inputemployeenumberandthecountsofproducts

exit:

Doubletimes0!

12

theheadisnull,so,thelinklistheadinsertedsuccess!

returntheheadofthelinklist!

inputemployeenumberandthecountsofproducts

DoubletimesENTER

16

theheadisNOTnull,so,thelinklistheadinsertedsuccess!

11

theendoflinklistinsertedsuccess!

PleasMakeyouchoice

1.ChangeEmployeeInformation

2.DeletEmployeeNumber

3.Printthelinklist

0.Exit

yourchoice:

outputtheresult:

orderporductscountempnumber

1162

1165

2121

2124

3113

496

PleaseInputyouEmployeeNumberAndProductsCountyouaretochange!

theemployeeNumber:

5

Searchingforthenumber,Pleasewait.....

Findit!

printthenodoftemp:

temp.empnumber=5

temp.productscount=16

t2.empnumber=5

t2.productscount=16

beforDeletethetempnode....

deletsemployeeNumber:

afterdeletethetempnode....

Wouldyouliketoinputmoreproductscount?

ifnot,pleasetype0

yourInput:

16

14

20

0

1665

2162

3121

3124

4113

596

inputtheEmployeeNumberyouwannadelete:

5总结

经过几天的C语言课程设计,感觉自己收获不少!

首先是:

链表本来上课是没有上的,但这个课程设计里面主要都是用链表,因为要达到这样的功能,使用链表相当方便,但不容易理解,所以在这方面我很了很多的时间看课本和参考课外书,使C语言的知识强化了不少。

其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:

返回值函数和不返回值函数两者在主函数中的调用是不同的…………

更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。

由于这是第一次进行设计,写文档,难免会写得不好!

6.附录

代码设计.

#include<

stdio.h>

stdlib.h>

string.h>

malloc.h>

typedefstructSTRUCT/*定义结构体*/

{

intempnumber;

/*员工编号*/

intproductscount;

/*产品数量*/

structSTRUCT*next;

/*指向下一个节点的指针*/

}TS;

/*结构体的别名*/

main()

TS*CreateLink(TS*);

/*声明创建链表的函数*/

TS*InsertIntoLink();

/*声明插入链表的函数*/

TS*DeletFromLink();

/*声明删除函数*/

TS*Search();

voidprint();

/*声明打印链表的函数*/

TS*head;

TS*temp;

TS*t2;

chars[100];

intempnumber=0;

intproductscount=0;

intn;

head=NULL;

head=CreateLink(head);

/*先创建空链表*/

temp=(TS*)malloc(sizeof(TS));

t2=(TS*)malloc(sizeof(TS));

while

(1)/*一个可控制的循环*/

{

LOOP:

printf("

\n\tPleasMakeyouchoice\n"

);

/*系统菜单*/

1.ChangeEmployeeInformation\n"

/*改变员工信息*/

2.DeletEmployeeNumber\n"

/*删除员工编号*/

3.Printthelinklist\n"

0.Exit\n"

/*退出系统*/

"

gets(s);

if(strcmp(s,"

1"

)!

=0&

&

strcmp(s,"

2"

3"

=0)return;

/*如果不是1或者2选项,就退出系统*/

)==0)/*选择选项1,进行改变员工信息操作*/

\nPleaseInputyouEmployeeNumberAndProductsCountyouaretochange!

\ntheemployeeNumber:

empnumber=atoi(s);

/*输入员工编号*/

\nSearchingforthenumber,Pleasewait.....\n"

temp=Search(head,empnumber);

\nprintthenodoftemp:

temp.empnumber=%d"

temp->

empnumber);

temp.productscount=%d"

productscount);

/**/

if(temp==NULL)gotoLOOP;

else{

t2->

empnumber=temp->

empnumber;

productscount=temp->

productscount;

/*memcpy(t2,temp,sizeof(TS));

*/

t2.empnumber=%d"

t2->

t2.productscount=%d"

/**/

\nbeforDeletethetempnode....\n"

print(head);

head=DeletFromLink(head,t2->

\nafterdeletethetempnode....\n"

productscount+=t2->

while

(1)/*改循环实现产品数量累加计算*/

ifnot,pleasetype0\nyourInput:

"

0"

=0)

productscount+=atoi(s);

/*累加操作*/

elsebreak;

/*停止累加*/

}

productscount=productscount;

head=InsertIntoLink(head,t2->

empnumber,t2->

/*把员工编号和产品数量插入到链表中*/

/*打印改链表*/

elseif(strcmp(s,"

)==0)

/*选择选项2,进行了删除员工信息操作*/

/*读取员工编号*/

/*Search(head,empnumber);

*/

head=DeletFromLink(head,empnumber);

/*调用删除函数*/

elseprint(head);

}

TS*CreateLink(TS*head)/*创建链表函数*/

chartemp[100];

TS*p1;

p1=(TS*)malloc(sizeof(TS));

/*为一个链表节点分配存储空间*/

inputemployeenumberandthecountsofproducts\n"

\n"

/*两次输入0,表示退出*/

gets(temp);

empnumber=atoi(temp);

/*输入员工编号

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2