1、 教学单位教学单位计算机科学与技术计算机科学与技术 学生学号学生学号 数据结构数据结构 课程设计报告书课程设计报告书 题题 目目 教学计划安排系统教学计划安排系统 学生姓名学生姓名 专业名称专业名称 计算机科学与技术计算机科学与技术(软件工程软件工程) 指导教师指导教师 目录目录 一、一、 课程设计的目的课程设计的目的 4 二、二、 设计的内容与要求设计的内容与要求 4 三、三、 总体设计总体设计 错误!未定义书签。 四、四、 详细设计详细设计 . 5 五、五、 调试与测试调试与测试 15 六、六、 课程设计的总结课程设计的总结 17 一、一、 课程设计的目的课程设计的目的 1. 巩固和加深学
2、生对 C 语言课程的基本知识的理解和掌握 2. 掌握 C 语言编程和程序调试的基本技能 3. 利用 C 语言进行基本的软件设计 4. 掌握书写程序设计说明文档的能力 5. 提高运用 C 语言解决实际问题的能力 二设计的内容与要求二设计的内容与要求 要建立一个图, 因而要输入图的结点数和边数以及图的每一个结要建立一个图, 因而要输入图的结点数和边数以及图的每一个结 点的名称,要对所输入课程进行排课,因而要确定每一个结点的入度 是否为零,并且将入度为零的结点分别进栈再出栈,再进另一个栈, 最后出栈,最后实现对所输入的课程进行排课 三三总体设计总体设计 (1)该教学计划安排系统分为 6 个模块 1.
3、建立图 2.栈的初始化 3.出栈 4.进栈 5 求结点的入度 6 拓扑排序 (2)算法描述(此程序中所包含的函数) 1.主函数 main():调用 CreateALGraph(G)函数和 TopologicalSort(G)函 数。 2.CreateALGraph()函数:从键盘上输入所需要的值, 并对每一个结点的 *firstarc 赋值为 NULL。 3.InitStack()函数:将栈分配存储空间,并对 top 和 base 赋值。 4.Push()函数: 进满足条件的元素压入栈中,并改变 top 指针的值 5. Pop()函数:开始判断栈中的 top 和 base 指针是否相等,若相等
4、则返 回,否则进行出栈操作。 6.StackEmpty()函数:通过判断栈是否为空来返回相应的值。 7.FindInDegree()函数:通过循环求出每一个结点的入度 8.TopologicalSort()函数:通过拓扑排序将相应的课程给输出来 四详细设计四详细设计 数据的组织描述(比如主要的变量类型,结构体等等) ,模块 之间的参数设计(接口设计,模块的功能说明) ,系统控制流程图, 各个模块的流程图,采用的算法 typedef struct SElemType *base; /在栈构造之前和销毁之后,base 的值为 NULL SElemType *top; /栈顶指针 int stack
5、size; /当前已分配的存储空间,以元素为单位 SqStack; typedef struct ArcNode int adjvex;/该弧所指向的顶点的位置 struct ArcNode *nextarc;/指向第一条依附该顶点的弧的指针 ArcNode; typedef struct VNode char data10; ArcNode *firstarc; AdjListmax_vertex_num; typedef struct AdjList vertices; int vexnum,arcnum;/图的当前顶点数和弧数 ALGraph; 1.主函数模块 定 义 一 个 图 的 变
6、 量 , 调 用 CreateALGraph(G) 函 数 , 和 TopologicalSort(G)函数。 2.创建图的模块 从键盘上输入学期数,再输入课程数目(即结点数)和课程 之间的关系数(即边数) ,并把指向第一条依附该顶点的弧的指针赋 值为 NULL,同时把每一个结点所指向的其他结点形成一个链表。 为 NULL。 3 栈的初始化模块 使栈中 base 指针分配一定的存储空间, 并使栈中 top 指针指 向 base 指针。 4.栈的进栈模块 先开始判断这个栈是否为满,若满了,则重新分配一定的存 储空间,栈中的 top 指针重新赋值之后,再使该元素进栈,并使 top 指针指向下一位。 5.栈的出栈模块 判断栈的 top 指针和 base 指针是否相等, 若相等则为空, 否则 不为空。 6.栈空的模块 通过判断栈的 top 指针和 base指针是否相等,来返回相应的值 7.求结点的入度模块 对每一个结点已经形成了一个链表进行查找, 若发现有一个结点指向 另一个结点,就把另一个结点的入度