教学计划编制问题数据结构课程设计.doc
- 文档编号:153016
- 上传时间:2022-10-04
- 格式:DOC
- 页数:24
- 大小:349.18KB
教学计划编制问题数据结构课程设计.doc
《教学计划编制问题数据结构课程设计.doc》由会员分享,可在线阅读,更多相关《教学计划编制问题数据结构课程设计.doc(24页珍藏版)》请在冰豆网上搜索。
信息科学与工程学院《高级语言程序设计》课程设计
吉首大学
信息科学与工程学院
数据结构课程设计
课程设计名称:
教学计划编制问题
专业班级:
10级计科二班
学生姓名:
熊海燕朱敏刘思
学号:
20104042026/28/22
指导教师:
周铁老师
课程序设计时间:
2012.11.24-2012.12.05
前言
《数据结构》是一门综合性较强的计算机软件、程序设计理论和技术相结合的重要基础课程。
它主要讨论抽象数据关系和算法在计算机中的表示与实现,涉及到的数据在计算机中的表示、组织和处理,以及相应结构上的算法设计和算法性能上的分析技术。
它所包含的知识与提倡的技术方法,无论对大家进一步学习计算机领域里的其他课程,还是对今后从事理论研究、应用开发及技术管理工作都起着重要的作用。
如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。
通过学习《数据结构》这门理论性强、思维抽象、难度较大的课程后,大家就更深入透彻地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养了基本的、良好的程序设计技能,大家就能编制高效可靠的程序,更重要的也培养大家解决实际问题的能力,提高分析设计能力和编程能力,为大家后续课程的学习及实践也打下了良好的基础。
因此,学校开设了《数据结构(C语言版)》,通过学习数据结构,大家对编程有了更多的了解,为了让大家将自己所学的知识应用到实际当中,学校开设了数据结构课程设计,通过这次课程设计大家可以更好地将C语言应用到实际当中,而且可以更好的掌握算法与数据结构,将数据结构和C语言有效的结合起来,使大家的编程能力得到更大的提高。
关键字:
C语言数据结构
目录
前言-------------------------------------------2
一、课题内容和设计要求--------------------------------4
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函数的调用关系
Voidmain()
TopologicalSort()
Display()
CreatGraph()
Output()
四、模块的功能实现
4.1相关数据类型的定义
a、程序的实现采用了C语言定义相关的数据类型。
其中包括字符常量,整型,字符型,字符串型,typedef定义的类型,结构体型,单链表节点类型,结构体数组。
b、储存的数据为结构体类型数组,以及结构体单链表结点类型,
例如:
typedefstruct、ArcNodetypedefstruct。
4.2主要函数的流程图
Begin
CreateGraph()
Printf(“请输入教学计划的课程数:
”)
Scanf(“%d”,&(*G).vexnum)
Printf(“先修关系的边数:
”)
Scanf(“%d”,&(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
End
五、程序调试
5.1测试数据:
准备典型的测试数据和测试方案,包括输入及输出结果。
数据如下:
学期总数:
6;
学分上限:
10;
该专业共开设课数:
12
课程号:
从C01到C12;
学分顺序:
2,3,4,3,2,3,4,4,7,5,2,3。
先修顺序:
1
9
4
2
122
10
11
3
6
5
7
8
8
(其中C1~C12分别代表:
程序设计基础、离散数学、数据结构、汇编语言、语言的设计和分析、计算机原理、编译原理、操作系统、高等数学、线性代数、普通物理、数值分析)
5.2调试过程
依照提示依次输入:
学期总数、每学期的学分上限、教学计划的课程数、按拓扑排序所形成的课程纤秀关系的边数、输入课程的课程号、输入课程的学分值、输入每条弧的弧尾和弧头
输出的结果如图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学计划 编制 问题 数据结构 课程设计