欢迎来到天天文库
浏览记录
ID:11179638
大小:185.22 KB
页数:17页
时间:2018-07-10
《教务课程计划辅助制定》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据结构课程设计报告设计题目:教务课程计划的辅助制定班级学号姓名成绩2013-2014年第1学期一.实习目的为用户编排课程,根据用户输入的信息来编排出每学期要学的课程.二.问题描述(具体任务)[问题描述]扩展拓扑排序算法,进行课程学习计划的辅助制定。[设计要求]一个学生在一个学期可以同时学习多门课程,同一学期的各门课程之间不存在次序关系,制定课程计划使学生可以在最短时间内学完所有课程。三.需求分析1.程序的功能。大学的每个专业都要制订教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期
2、的时间长度和学分上限均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。本程序针对本科的学期内容,通过输入实际的课程及先后关系。结合每学期的学分及课程数,制定好学习计划。在输入相关数据后,程序会安排好每学期的课程。2.输入输出的要求。基本要求:a.输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的
3、课程号。b.允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。c.若根据给定的条件问题无解,则报告适当的信息;否则,将教学计划输出到用户指定的文件中。计划的表格格式自行设计。四.算法设计思想及流程图1.LocateVex():图的邻接表存储的基本操作。由初始条件:图G存在,u和G中顶点有相同特征转而进行判断,若G中存在顶点u,则返回该顶点在图中位置;否则返回-1。图LocateVex()图GreateGreaph()图Display()
4、2.CreateGraph():构造生成图。采用邻接表存储结构,构造没有相关信息的图G(用一个函数构造种图)。3.Display():输出图的邻接矩阵。采用循环设置输出图的邻接矩阵。4.FindInDegree():求顶点的入度。图FindInDegree()图InitStack()5.InitStack():构造一个空栈。6.ClearStack():清空栈。7.StackEmpty():判断栈是否为空。若栈S为空栈,则返回TRUE,否则返回FALSE。8.Pop():出栈。若栈不空,则删除S的
5、栈顶元素,用e返回其值,并返回OK;否则返回ERROR。9.Push():入栈。插入元素e为新的栈顶元素。10.TopologicalSort():输出G顶点的拓扑排序结果。有向图G采用邻接表存储结构。若G无回路,则输出G的顶点的一个拓扑序列并返回OK,否则返回ERROR。五.C语言源代码#include#include#include//malloc()等#include//INT_MAX等#include6、.h>//EOF(=^Z或F6),NULL#include//atoi()52#include//eof()#include//floor(),ceil(),abs()#include//exit()//函数结果状态代码#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1typedefintStatus;//Status是函数的类型,其值是函数结果7、状态代码,如OK等typedefintBoolean;//Boolean是布尔类型,其值是TRUE或FALSE#defineMAX_NAME20/*顶点字符串的最大长度*/#defineMAXCLASS100intZ=0;intX=0;intxqzs,q=1,xfsx;typedefintInfoType;typedefcharVertexType[MAX_NAME];/*字符串类型*//*图的邻接表存储表示*/#defineMAX_VERTEX_NUM100typedefenum{DG}Grap8、hKind;/*{有向图,有向网,无向图,无向网}*/typedefstructArcNode{intadjvex;/*该弧所指向的顶点的位置*/structArcNode*nextarc;/*指向下一条弧的指针*/InfoType*info;/*网的权值指针)*/}ArcNode;/*表结点*/typedefstruct{VertexTypedata;/*顶点信息*/ArcNode*firstarc;/*第一个表结点的地址,指向第一条依附该顶点的弧的指针*/}VNode,AdjL
6、.h>//EOF(=^Z或F6),NULL#include//atoi()52#include//eof()#include//floor(),ceil(),abs()#include//exit()//函数结果状态代码#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1typedefintStatus;//Status是函数的类型,其值是函数结果
7、状态代码,如OK等typedefintBoolean;//Boolean是布尔类型,其值是TRUE或FALSE#defineMAX_NAME20/*顶点字符串的最大长度*/#defineMAXCLASS100intZ=0;intX=0;intxqzs,q=1,xfsx;typedefintInfoType;typedefcharVertexType[MAX_NAME];/*字符串类型*//*图的邻接表存储表示*/#defineMAX_VERTEX_NUM100typedefenum{DG}Grap
8、hKind;/*{有向图,有向网,无向图,无向网}*/typedefstructArcNode{intadjvex;/*该弧所指向的顶点的位置*/structArcNode*nextarc;/*指向下一条弧的指针*/InfoType*info;/*网的权值指针)*/}ArcNode;/*表结点*/typedefstruct{VertexTypedata;/*顶点信息*/ArcNode*firstarc;/*第一个表结点的地址,指向第一条依附该顶点的弧的指针*/}VNode,AdjL
此文档下载收益归作者所有