教学计划编制问题数据结构课程设计Word格式.docx

上传人:b****3 文档编号:14180284 上传时间:2022-10-19 格式:DOCX 页数:26 大小:213.18KB
下载 相关 举报
教学计划编制问题数据结构课程设计Word格式.docx_第1页
第1页 / 共26页
教学计划编制问题数据结构课程设计Word格式.docx_第2页
第2页 / 共26页
教学计划编制问题数据结构课程设计Word格式.docx_第3页
第3页 / 共26页
教学计划编制问题数据结构课程设计Word格式.docx_第4页
第4页 / 共26页
教学计划编制问题数据结构课程设计Word格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

教学计划编制问题数据结构课程设计Word格式.docx

《教学计划编制问题数据结构课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《教学计划编制问题数据结构课程设计Word格式.docx(26页珍藏版)》请在冰豆网上搜索。

教学计划编制问题数据结构课程设计Word格式.docx

1.1课题内容---------------------------------------4

1.2设计要求---------------------------------------4

二、课题需求分析--------------------------------------6

三、课题实现模块设计----------------------------------6

3.1程序模块设计-----------------------------------6

3.2函数的调用关系---------------------------------7

四、模块的功能实现------------------------------------7

4.1相关数据类型的定义------------------------------7

4.2主要函数的流程图-------------------------------8

五、程序调试----------------------------------------10

5.1测试数据------------------------------------10

5.2调试过程-------------------------------------10

六.程序设计总结-----------------------------------13

七、附录--------------------------------------------15

7.1致谢-----------------------------------------15

7.2参考书目---------------------------------------15

7.3源程序清单-------------------------------------15

一、课程内容与要求

1.1课题内容

[问题描述]

大学的每个专业都要制定教学计划。

假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等,每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。

每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。

每门课恰好占一个学期。

试在这样的前提下设计一个教学计划编制程序。

[基本要求]

(1)输入参数包括:

学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号。

(2)允许用户指定下列两种编排策略之一:

一是使学生在各学期中的学习负担尽量均匀;

二是使课程尽可能地集中在前几个学期中。

(3)若根据给定的条件问题无解,则报告适当的信息;

否则将教学计划输出到用户指定的文件中。

计划的表格格式自行设计。

1.2设计要求

(1)按照需求分析和内容要求实现每个模块的功能以及对输入输出的要求。

(2)概要设计

a、程序是由哪几个大模块构成,模块下又是由哪几个子程序组成,子程序与子程序、模块与模块之间的层次结构、调用关系以及功能的实现。

b、课题要求用的数据结构和数据,它们之间具有怎样的内部联系,数据该怎样存储,数据又该存在哪。

(3)具体设计

a、采用C语言书实现整个程序

b、利用有向图的一个拓扑序列及其应用问题的算法实现程序,图的邻接表来存储相关数据。

c、画出主函数的流程图和子程序间的调用关系图。

(4)测试分析

a、应采用课题内容要求的数据,并且输出结果能很好的满足要求

b、输入数据是应注意其输入的格式

c、输入的数据应包括正确的输入、输出数据和错误的输入、输出数据,以便对数据和模块的功能有很好的分析与调整。

d、遇到问题应及时作出修改和调整。

(5)后续工作

a、及时的总结设计中遇到的问题及解决的办法。

写下得到的经验教训和心得。

b、编制整个设计的目录,记录下大体流程。

正文后附带相关参考文件。

c、正文书写格式采用四号宋体字。

二、需求分析

根据问题描述及要求,可知设计中需求定义先修关系的AOV网图中的顶点及弧边的结构体,在运行结果中将图的信息显示出来,利用先修关系将课程排序,最后解决问题输出每学期的课程。

(1)采用第二种策略:

使课程尽可能地集中在前几学期中。

(2)根据教学计划中的课程及其关系和学分定义图的顶点和边的结构体。

(3)创建图CreateGraph():

结合先修关系的AOV图,采用邻接表存储。

(4)菜单Output():

显示代码所对应课程及课程的先修课程。

(5)拓扑排序TopogicalSort():

将课程排序后并决定出每学期所学课程。

(6)输出图G大的信息Display():

将图的顶点和弧边输出。

三、课题实现模块设计

3.1程序模块设计

LocateVex():

图的邻接表存储的基本操作

CreateGraph():

构造生成树

Display():

输出图的邻接矩阵

FindInDegree():

求顶点的入度

InitStack():

构造一个空栈

StackEmpty():

判断是否为空栈

Pop():

出栈

Push():

入栈

ClearStack():

清空栈

Judge():

判断课程号对应的课程序号

TopologicalSort():

输出G顶点的拓扑排序结果

Output():

图形输出函数

3.2函数的调用关系

四、模块的功能实现

4.1相关数据类型的定义

a、程序的实现采用了C语言定义相关的数据类型。

其中包括字符常量,整型,字符型,字符串型,typedef定义的类型,结构体型,单链表节点类型,结构体数组。

b、储存的数据为结构体类型数组,以及结构体单链表结点类型,

例如:

typedefstruct、ArcNodetypedefstruct。

4.2主要函数的流程图

Printf(“请输入教学计划的课程数:

”)

Scanf(“%d”,&

(*G).vexnum)

Printf(“先修关系的边数:

(G).arcnum)

Printf(“输入%d课程号...”,

(*G).vexnum,MAX_NAME)

i++

i<

(*G).vexnum

Scanf(“%s”,(*G).vertices(i).data)

(*G).vertices[i].firstarc=null

i++

Printf(“输入每条弧....”)

k++

k<

(*G).arcnum

Scanf(“%s%s”,...)

i=LocateVex(*G,va)

j=LocateVex(*G,vb)

P=(ArcNode*)malloc(size...)

p-->

adjvex=j

P-->

info=null

·

++k

Return0

五、程序调试

5.1测试数据:

准备典型的测试数据和测试方案,包括输入及输出结果。

数据如下:

学期总数:

6;

学分上限:

10;

该专业共开设课数:

12

课程号:

从C01到C12;

学分顺序:

2,3,4,3,2,3,4,4,7,5,2,3。

先修顺序:

(其中C1~C12分别代表:

程序设计基础、离散数学、数据结构、汇编语言、语言的设计和分析、计算机原理、编译原理、操作系统、高等数学、线性代数、普通物理、数值分析)

5.2调试过程

依照提示依次输入:

学期总数、每学期的学分上限、教学计划的课程数、按拓扑排序所形成的课程纤秀关系的边数、输入课程的课程号、输入课程的学分值、输入每条弧的弧尾和弧头

输出的结果如图:

六、程序设计总结

在几天的共同努力中,我们这组在周老师的指导下终于完成了关于教学计划编制问题的课程设计。

其中用到了大二学到的数据结构和大一学到的C。

因为是前面学的知识,遗忘了不少,但通过这次的课程设计,让我们进一步学习了解了数据结构和C语言,并将我们当初零散的知识点串联起来,可谓是收获颇多。

在课程设计中遇到不少问题,最关键的便是课程的安排。

每门课程在时间安排上既要满足先修课的关系,又有学分的限制,虽然学过了很多排序的方法,却没办法把学过的知识转换过来。

通过在网上查询资料,参考别人的相关设计,然后又翻阅相关教材,最后在老师的指导下,根据每门课程的先修课以及学分的多少,编写了一个拓扑排序,终于确定了每学期该上什么课。

其实对于拓扑排序我们是学过的,可是却没办法把学过的东西运用其中,当然并不只是拓扑排序,很多东西都学过,看上去很简单,但却没办法与实际联系起来,或许是因为遗忘,或许是对理论掌握的不熟练,所以关键的时候不记得了,但从中可知实践与理论结合之重要。

毕竟纸上得来终觉浅,在今后的学习中要注重把理论和实际联系起来。

通过这次课程设计我们认识到以下几点,首先是合作的重要性。

一开始我们是各自分工,然后各做各的,但当我们开始工作的时候发现行不通了。

专门有人负责需求分析,然后写代码的又是另外一个人,可写代码的时候一样需要知道需求分析,而且一段长长的代码光靠一个人是不行的,于是我们集体分析需求,然后整合出了程序的框架,分析该用到哪些子程序及其各自的功能,最后留一个人填代码就行。

当然不能忘了,指导老师也是我们的成员。

只有把握团队的力量才能事半功倍!

其次便是学习。

一切的知识来源于书本,只有掌握了一定的理论基础才能厚积薄,才能把理论跟实际联系起来。

一开始由于课程设计相关知识都是前一个学年学习的,大部分都忘记了(这只能说明我们当初学的就不太好!

),只能重翻书本再次学习,而这浪费了我们不少时间。

不得不感叹:

如果当初认真学,现在恐怕我们已经开始写需求分析了。

可世上没有如果,但是有以后。

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

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1