文档详情

数据结构课程设计之课程表实现.doc

发布:2017-02-13约1.74万字共35页下载文档
文本预览下载声明
软 件 学 院 课程设计报告书 课程名称 数据结构 设计题目 教学计划编制 专业班级 软件10-04班 学 号 1020010432 姓 名 张小龙 指导教师 刘玲玲 2012年月 1 设计时间 1 2 设计目的 1 3设计任务 1 4 设计内容 1 4.1需求分析 1 4.2总体设计 2 4.3详细设计 6 4.4测试与分析 13 4.4.1测试 13 4.4.2分析 18 4.5 附录 19 5 总结与展望 30 参考文献 32 成绩评定 32 1 设计时间 2 设计目的 1) (2) (3)提高C程序调试能力,加强实践能力 (4) (5)培养软件设计能力和开发能力 (6)加强个人程序设计能力 3设计任务 大学的每个专业都要制定教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。 4 设计内容 4.1需求分析 1、程序所能达到的功能 (1)数据结构使用有向图和栈。 (2)课程先修关系 (表4.1--01课程先修关系) (3)如果输入的先修课程号不在该专业开设的课程序列内,则作为错误处理。 2、输入的形式和输入值的范围 输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定3位的字母数字串)、学分和直接先修课的课程号。 3、输出的形式 每学期课程安排 4、测试数据: 学期总数6,一学期的学分上限,该专业共开课程数目1,按照输入课程名,课程号,课程学分。输出正确的课程编排结果。 4.2总体设计 1、说明本程序中用到的所有抽象数据类型的定义 ADT Graph{ 数据对象V:V是具有相同特性的数据元素的集合,称为顶点集. 数据关系R:?R={VR} VR={(v,w)|v,w∈V,(v,w)表示v和w之间存在直接先修关系} 基本操作P: void CreatGraph(ALGraph *G) 操作结果:创造图G void InitStack(SqSttack *S) 操作结果:构造一个空栈Svoid StackEmpty(SqStack *S) 初始条件:栈S已存在 操作结果:若栈S为空栈,则返回TRUE,否则FALSE void Push(SqStack *S,int e) 初始条件:栈S已存在 操作结果:插入元素e为新的栈顶元素 void Pop(SqStack *S,int *e) 初始条件:栈S已存在且非空 操作结果:删除S的栈顶元素,并用e返回其值 void FindInDegree(ALGraph G, int indegree[]) 初始条件:拓扑排序完成 操作结果:构造关键路径的先修关系网 void TopologicalSort_1(ALGraph G,int numterm,int uplcredit) 初始条件:图G已存在 操作结构:进行拓扑排序,并完成关系网的构造,使课程尽可能集中在前几个学期 void TopologicalSort_2(ALGraph G,int numterm,int uplcredit) 初始条件:图G已存在 操作结果:进行拓扑排序,并完成关系网的构造,使课程尽量均匀分布 }ADT Graph 2、说明主程序的流程 3、说明各程序模块之间的层次(调用)关系(图4.2-3) 4.3详细设计 1、实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法 1)采用邻接表存储结构,构造没有相关信息的图G,并储存键入的相关信息 void CreatGraph(ALGraph *G) { 通过循环语句完成对键入的课程名称,课程号,学分的存储,并课程先修关系建立邻接表 for (i = 1; i = G-arcnum; i++) /* 构造顶点向量 */ { printf(\n请输入存在先修关系的两个课程的序号:); scanf(n,m); while (课程号不在编入范围) {
显示全部
相似文档