1、 课程设计课程设计报告书报告书 课程名称课程名称 数据结构数据结构 设计题目设计题目 教学计划编制教学计划编制 专业班级专业班级 软件软件 1010- -0 04 4 班班 2011 年年 1 月月 目目 录录 说明:按住 Ctrl 并单击可访问当前链接,页数为文件中所标页码。 1 1 设计时间设计时间 错误!未定义书签。 2 2 设计目的设计目的 错误!未定义书签。 3 3 设计任务设计任务 错误!未定义书签。 4 4 设计内容设计内容 错误!未定义书签。 4.14.1 需求分析需求分析 错误!未定义书签。 4.24.2 总体设计总体设计 错误!未定义书签。 4.34.3 详细设计详细设计
2、6 6 4.44.4 测试与分析测试与分析 错误!未定义书签。 4.4.14.4.1 测试测试 错误!未定义书签。 4.4.24.4.2 分析分析 错误!未定义书签。 4.5 4.5 附录附录 错误!未定义书签。 5 5 总结与展望总结与展望 2 26 6 参考文献参考文献 2 28 8 成绩评定成绩评定 2 28 8 1 1 设计时间设计时间 2012 年 1 月 3 日至 2012 年 1 月 5 日 2 设计目的设计目的 (1)加强学生分析问题能力和应用所学知识解决问题的能力; (2)使学生对所学内容更深入的了解和应用; (3)提高 C 程序调试能力,加强程序设计和实践能力; (4)加深
3、学生对数据结构和C 语言等相关课程的认识; (5)培养学生自主软件设计能力和开发能力; (6)加强个人程序设计能力和学生与学生之间的交流和研讨。 3 设计任务设计任务 大学的每个专业都要制定教学计划。假设任何专业都有固定的学习年限,每学年 含两学期, 每学期的时间长度和学分上限值均相等。 每个专业开设的课程都是确定的, 而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的, 可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个 教学计划编制程序。 任选软件专业几门课程作为顶点, 通过这几门课程的先修关系来构建一个有向图, 用邻接表来储存,通过栈和有向图
4、来完成课程教学计划安排。 4 设计内设计内容容 4.1 需求分析需求分析 1、程序所能达到的功能 (1)数据结构使用有向图和栈。 (2)课程先修关系(表 4.1-01) 2 课程名称 课程号学分 先修课的课程号 软件设计基础014? 无 离散数学023无 数据结构0351,2 思想道德修养042无 语言的设计与分析0523 毛泽东思想0624 马克思主义0726 操作系统0843,5 高等数学096无 线性代数10309 大学物理114无 数值分析1231,8 数字电子13411 概率论1439 (表4.1-01课程先修关系) (3)如果输入的先修课程号不在该专业开设的课程序列内,则作为错误处
5、理。 2、输入的形式和输入值的范围 输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占 3 位的 字母数字串) 、学分和直接先修课的课程号。 3、输出的形式 每学期课程安排 4、测试数据: 学期总数 6,一学期的学分上限 16,该专业共开课程数目 14,按照表 4.1-01 输 入课程名,课程号,课程学分。输出正确的课程编排结果。 4.2 总体设计总体设计 1、说明本程序中用到的所有抽象数据类型的定义 ADT Graph 数据对象 V:V 是具有相同特性的数据元素的集合,称为顶点集. 数据关系 R: R=VR VR=(v,w)|v,wV,(v,w)表示 v 和 w 之间存在直接先
6、修关系 3 基本操作 P: void CreatGraph(ALGraph *G) 操作结果:创造图 G void InitStack(SqSttack *S) 操作结果:构造一个空栈 S void 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) 初始条件:拓扑排序完成 操作结果:构造关键路径的先修