1、 数据结构(数据结构(C+)课程设计)课程设计 题题 目目: 教学计划编制问题 2013 年年 07 月月 04 日日 一、设计题目 大学的每个专业都要编制教学计划。假设任何专业都有固定的学习年限,每 学年含两学期,每学期的时间长度和学分上限都相等。每个专业开设的课程都是 确定的,而且课程的开设时间的安排必须满足先修关系。每个课程的先修关系都 是确定的,可以有任意多门,也可以没有。每一门课程恰好一个学期。试在这样 的情况下设置一个教学计划编制程序。 在大学的某个专业中选取几个课程作为顶点,通过各门课的先修关系来构建 个图,该图用邻接表来存储,邻接表的头结点存储每门课的信息。 本程序的目的是为用
2、户编排课程,根据用户输入的信息来编排出每学期要学 的课程。 二、需求分析 (一)运行环境(软、硬件环境) 设计环境和器材 硬件:计算机 软件:Microsoft Visula C+ 在本课程设计中,系统开发平台为 Windows XP 或 Win 7,程序运行环境为 Visual C+ 6.0,程序设计语言为 C+。Visual C+一般分为三个版本:学习版、 专业版和企业版,不同版本适合于不同类型的应用开发。实验中可以使用这三个 版本的任意一种,在本课程设计中,以 Visual C+ 6.0 为编程环境。 Visual C+以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级
3、 除错功能而著称。比如,它允许用户进行远程调试和单步执行等。还有允许用户 在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及 建置系统以预编译头文件、最小重建功能及累加链接著称。这些特征明显缩短程 式编辑、编译及链接的时间花费,在大型软件计划上尤其显著。 Visual C+ 6.0 秉承 Visual C+ 以前版本的优异特性,为用户提供了一套 良好的开发环境,主要包括文本编辑器、资源编辑器、工程创建工具和 Debugger 调试器等等。用户可以在集成开发环境中创建工程,打开工程,建立、打开和编 辑文本,编译、链接、运行和调试应用程序。 (二)输入的形式和输入值的范围 数据
4、输入的方式是键盘输入。输入的数据多是整型的或是浮点型的,还有一 些字符(以中文的形式)。输入的数值型的数据大都是小于 100 的数值。 (三)输出的形式描述 输出的是教学编制计划,就是形如: “第二学期学的课程有:普通物理 线性 代数 汇编语言”这样的形式。 (四)功能描述 输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占 3 位的字母数字串)、学分和直接先修课的课程号。 允许用户指定下列两种编排策略之一: 一是使学生在各学期中的学习负担尽 量均匀;二是使课程尽可能地集中在前几个学期中。 若根据给定的条件问题无解,则报告适当的信息;否则将教学计划输出到用 户指定的文件中。计划的
5、表格格式自行设计。 (五)测试数据 学期总数:6 学分上限:10 该专业共开设 12 门课,课程号从 0112,学分顺序为 2,3,4,2,2,4,4, 4,7,5,2,3。 三、概要设计 (一)抽象数据类型定义描述 (对各类的成员及成员函数进行抽象描述,参见书或 ppt 及实验) 抽象数据类型: 为实现上述功能需建立一个结点类,线性表类,图类。 ADT Graph 数据对象 V:V 是具有相同特性的数据元素的集合,称为顶点集. 数据关系 R: R=VR VR=(v,w)|v,wV,(v,w)表示 v 和 w 之间存在直接先修关系 基本操作 P: void creatpre(AlGraph *
6、CGraph); void findindegree(AlGraph *CGraph,int indegree); void layout1(AlGraph *CGraph,queue *q); void layout2(AlGraph *CGraph,queue *q); ADT Graph 队列的定义: ADT List 数据对象:D=ai|aiElemSet,i=1,2,n,n=0 数据关系:R1=ai-1 ai|ai-1,aiD,i=2,n 基本操作: void queue_init(queue *q); void queue_in(queue *q,int x); int queue_out(queue *q); int queue_empty(queue *q); ADT Stack (二)功能模块设计 主程序: void main() int choice; queue q; Queue.queue_init( AlGraph CGraph; CG