职工工作量统计系统Word格式.docx
- 文档编号:377957
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:25
- 大小:51.65KB
职工工作量统计系统Word格式.docx
《职工工作量统计系统Word格式.docx》由会员分享,可在线阅读,更多相关《职工工作量统计系统Word格式.docx(25页珍藏版)》请在冰点文库上搜索。
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);
/*输入员工编号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工 工作量 统计 系统