《教学计划编制问题》数据结构课程设计说明书Word文件下载.doc
- 文档编号:13014546
- 上传时间:2022-10-02
- 格式:DOC
- 页数:32
- 大小:307.50KB
《教学计划编制问题》数据结构课程设计说明书Word文件下载.doc
《《教学计划编制问题》数据结构课程设计说明书Word文件下载.doc》由会员分享,可在线阅读,更多相关《《教学计划编制问题》数据结构课程设计说明书Word文件下载.doc(32页珍藏版)》请在冰豆网上搜索。
评阅教师:
_____________________________________
目 录
设计总说明ﻩ1
第1章绪论ﻩ2
第2章教学计划编制问题陈述及需求分析 3
2。
1教学计划编制问题陈述 3
2。
2功能需求分析ﻩ3
第3章系统设计ﻩ4
3。
1总体设计ﻩ4
3。
2主要模块简介ﻩ6
第4章 详细设计 7
4.1数据结构ﻩ7
4.3 设计说明 9
4。
4算法说明ﻩ9
第5章编码与调试 13
5。
1教学计划编制问题实例ﻩ13
5.2程序运行结果 15
第6章总结 19
参考文献 20
附录源程序ﻩ21
I
教学计划编制问题
设计总说明
根据任务要求及对实际情况的了解,可知设计中需要定义先修关系的AOV网图中的顶点及弧边的结构体,采用邻接表存储结构,利用栈作辅助结构,在运行结果中将图的信息显示出来,利用先修关系将课程排序,最后解决问题-—输出每学期的课程。
整个系统从符合操作简便、界面简洁、灵活、实用、安全的要求出发,完成教学计划编制问题的全过程,包括创建三个数据结构(邻接表存储结构、栈、拓扑排序)、数据的处理与计算、数据的分析、结果的输出。
本课程主要介绍了本课题的开发背景,所要完成的功能和开发的过程。
重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法.
关键词:
教学计划编制问题;
数据结构;
邻接表存储结构;
栈;
拓扑排序
ﻬ 第1章绪论
数据结构是研究数据元素之间的逻辑关系的一门课程,以及数据元素及其关系在计算机中的存储表示和对这些数据所施加的运算。
该课程设计的目的是通过课程设计的综合训练培养分析和编程等实际动手能力,系统掌握数据结构这门课程的主要内容。
本次课程设计的内容是教学计划编制问题,邻接表是图的一种链式存储结构。
在邻接表中,对图中每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点的边。
栈是一种限定性的线性表,它只允许在表尾插入元素或删除元素,所以栈具有后进先出的特性.拓扑排序是由某个集合上的一个偏序得到该集合上的一个全序.而教学计划编制问题就是对排序问题的应用,通过这个设计事例,我们有理由相信至此以后,我们对邻接表、栈和拓扑排序的理解将会是更上一层楼。
通过该课程设计,能运用所学知识,能上机解决一些实际问题,了解并初步掌握设计、实现较大程序的完整过程,包括系统分析、编码设计以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。
第2章教学计划编制问题陈述及需求分析
1 教学计划编制问题陈述
大学中每个专业都有固定的教学计划,任何专业的学习年限是固定的,每年两个学期,每个专业开设的课程是确定的,而课程之间的开设时间是必须满足先修关系的。
每们课可以有多门先修课,也可以没有。
以本科四年为准,要求设计一个教学计划。
输入学期总数,一学期的学分上限,每门课的课程号、学分和直接先修课的课程号。
一是使学生在各学期中的学习负担尽量均匀;
二是使课程尽可能地集中在前几个学期中。
输出教学计划到用户指定的文件中,计划表格格式自行设计,若无结果可报告适当的信息.
2.2功能需求分析
本系统主要实现对大学中每个专业的教学计划进行设计,需要实现以下几个方面的功能:
(1)创建存储结构:
创建邻接表。
(2)数据的输入:
学期总数,课程数,一学期的学分上限,每门课的课程号(固定占2位的数字串)、学分和直接先修课的课程号.
(3)数据的处理:
对输入的数据进行计算。
(4)结果的输出:
输出各门课程所对应的学分,以及每学期各门课程的安排。
第3章系统设计
3.1总体设计
允许用户指定下列两种编排策略之一:
采用第二种策略,使课程尽可能地集中在前几个学期中,根据教学计划中的课程及其关系和学分定义图的顶点和边的结构体,创建图,结合先修关系的AOV网,采用邻接链表存储和使用前插法,通过菜单显示代号所对应课程及课程的先修课程,运用拓扑排序将课程排序后并决定出每学期所学课程,最后输出图G的信息,将图的顶点和弧边输出.具体流程图如图3。
1所示。
开始
管理员:
输入用户名和密码
菜单OUTPUT():
显示课程代码、课程名称及先修课程
前插法
创建图CreateGraph():
结合先修关系的AOV网,采用邻接表存储
输出图G的信息Display():
输出图的顶点和弧边
使课程尽可能地集中在前几个学期中
拓扑排序TopoSort():
将课程排序后,编制出每学期所学的课程
结束
图3.1系统功能结构图
ﻬ首先,初始化栈,构造一个空栈S,判定这个栈是否为空栈,如果是,则进行下一步操作,否则,返回错误;
接下来对各个顶点求入度,将入度为零的顶点存入数组,当所有入度为零的顶点都存入数组后,执行完毕。
具体流程图如图3.2所示。
初始化栈InitStack(S)
对各顶点求入度,并存入数组InDegree[i]中(i=0…n)
依次将入度为0的顶点存入栈中
栈是否为空?
Y
N
推出栈顶的一个元素(入度为零的顶点号)至i,输出i,计数器加1(Count++)
对以i号顶点为尾弧的每个邻接点的入度减1,并将入度减1后为零的顶点号压入栈中,输出i,计数器加1(Count++)
n个顶点全输出
N
Return
ERROR
Y
OK
图3.2拓扑排序流程图
2主要模块简介
1、管理员
要进入管理员界面,首先需要输入用户名和密码。
输入正确的用户名和密码后,即可进入管理员界面;
若输入错误,则提示输入正确的用户名或密码.
2、主函数
本程序主要调用两个模块:
主程序模块—-——〉拓扑排序模块,调用关系简单,通过主函数主要调用TopoSort()输出G顶点的拓扑排序,
Display()输出图的邻接矩阵,
CreateGraph()
生成图,用来实现对教学计划的编制。
3、拓扑排序
利用课程之间的先修关系,运用拓扑排序进行学期课程安排(4个学期),每学期都有学分上限,而每学期应学课程的学分应在学分上限内,超过学分上限后,将移到下一学期课程安排中。
在满足课程先修关系和各学期课程安排的情况下,如果某门课程的学分超过该学期的学分上限,则系统返回值为Error,提示错误,需要进行修改,必须保证该学期的各课程学分不会超过学分上限,这时系统返回值为OK。
第28页共29页
第4章详细设计
4.1数据结构
1、图的数据结构
typedefstructArcNode //表结点
{
int adjvex;
//该弧所指向的顶点的位置,弧的节点结构
structArcNode*nextarc;
//指向下一条弧的指针
}ArcNode;
//链表结点
typedefstructVNode //头结点
VertexTypedata;
//顶点信息
ﻩintgrades;
//存储学分信息
ArcNode *firstarc;
//指向第一条依附该顶点的弧的指针
}VNode,AdjList[MAX_VERTEX_NUM];
typedefstruct //图的数据结构
{
ﻩAdjListvertices;
//vertices存储课程名
ﻩintvexnum,arcnum;
//图的当前顶点数和弧数
}ALGraph;
2、栈的数据结构
typedefstructSqStack
ﻩSElemType *base;
SElemType*top;
ﻩintstacksize;
//分配的存储空间
}SqStack;
4.2抽象数据类型的定义
1、图的抽象数据类型定义
ADTGraph{
数据对象V:
V是具有相同特性的数据元素的集合,称为顶点集。
数据关系 R:
R={VR}
VR={<
v,w>|v,wV且P(v,w),〈v,w〉表示从v到w的弧,
谓词P(v,w)定义了弧〈v,w>的意义或信息}
基本操作P:
CreateGraph(&
G,V,VR);
初始条件:
V是图的顶点集,VR是图中弧的集合.
操作结果:
按V和VR的定义构造图G。
LocateVex(G,u)
初始条件:
图G存在,u和G中顶点有相同特征.
操作结果:
若G中存在顶点u,则返回该顶点在图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学计划编制问题 教学计划 编制 问题 数据结构 课程设计 说明书