- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课设_教学计划编制问题
数据结构课程设计
教学计划编制问题
班级学号2143201学生姓名周子健提交日期2016年1月19日成 绩
计算机与通信工程学院
设计要求:针对计算机系本科课程,根据课程之间的依赖关系(如离散数学应在数据结构之前开设)制定课程安排计划,并满足各学期课程数目大致相同。
1.1 课程设计目的
本课程设计主要是针对计算机系本科课程,根据课程之间的依赖关系,制定课程安排计划,并满足各学期课程数目大致相同。
教学计划编制系统是基于C++的软件系统,通过建立AOV网,按学期对课程序号、课程代号、课程名称以及课程学分进行相应输出,并且保证用户实现自由选择专业选修课功能。
1.2 课程设计内容
教学计划编制系统主要是处理课程之间的依赖关系。表1.1列出了若干门计算机系本科课程,其中有些课程不要求先修课程,例如,C1是独立于其他课程的基础课,而有些课程却需要有先修课程,比如,学完程序设计语言C++和离散数学后才能学习数据结构。具体情况如表1.1所示。
表1.1 课程以及课程之间的依赖关系
课程代号课程名称先修课程C1高等数学无C2计算机科学导论无C3离散数学C1C4程序设计语言C++C1、C2C5数据结构C3、C4C6计算机原理C2、C4C7数据库原理C4、C5、C6
先修课程规定了课程之间的依赖关系,这种关系可以用AOV网来表示,其中顶点表示课程,弧表示依赖关系,如图1.1所示。
C1
C7
C6
C4
C5
C3
C2
图1.1 表1.1对应的AOV网
程序的主要功能是实现课程的排序,以满足同一学期所修的课程相互之间无依赖关系,并且已修完其所有先修课程。另外,设置学分变量,控制每个学期的课程量基本均匀。
2 概要设计
2.1 数据表示
教学计划编制问题中,操作对象是课程。课程之间的依赖关系用AOV网表示, AOV网的构造采用邻接表实现。因此,本程序设计定义了两个类:课程类和邻接表类。
课程类(Lesson)添加了5个私有成员变量用来定义课程的5个属性:???程代号、课程名称、课程序号、课程学分以及是否被选择过的课程标记。同时还定义了8个成员函数,已实现相关的操作功能。
邻接表类(ALGraph)定义了2个整型成员变量和1个结构体数组来存放顶点数、边数和顶点表。同时还定义了4个成员函数实现用来实现AOV网的构造、删除、排序以及相关输出功能。
2.2 数据处理
数据处理必须借助函数来实现。本程序设计通过调用类的各种成员函数实现各种需要操作。
课程类(Lesson)的成员函数如表2.1所示。
表2.1 Lesson类的成员函数
函数名称功能声明void SetLes()对课程各种属性进行赋值string GetNum()获得课程代号string GetName()获得课程名称float GetLesScore()获得课程学分int GetLesNo()获得课程序号bool GetSelect()获得是否选择过的标志变量void SetSelect()设置选择控制标志变量,以避免重复选课void SetName()单独定义设置课程名称的函数,以方便一些操作邻接表类(ALGraph)的成员函数如表2.2所示。
表2.2 ALGraph类的成员函数
函数名称功能声明ALGraph()构造函数~ALGraph()析构函数void TopSort()实现AOV网中顶点的排序并进行相应的输出void BalanScore()平衡每次输出的顶点的数目
3 详细设计
3.1 课程类的定义
课程类(Lesson)添加了5个私有成员变量:LesNum (课程代号)、LesName(课程名称)、LesScore(课程学分)、LesNo(课程序号)以及Select(是否被选择过的课程标记),分别用来定义课程的5个属性;同时还定义了8个成员函数:SetLes(对课程各种属性进行赋值)、GetNum(获得课程代号)、GetName(获得课程名称)、GetLesScore(获得课程学分)、GetLesNo(获得课程序号)、GetSelect(获得是否选择过的标志变量)、SetSelect(设置选择控制标志变量)和SetName(单独定义设置课程名称),用来实现相关的操作功能。
计算机系一共有65门课程,其中相互之间存在依赖关系的课程有56门,另外9门为独立课程,不存在依赖关系。Lesson B[65]定义课程类的对象数组,可以通过调用课程类的各种成员函数对65门课程的课程序号、课程代号、课程名称以及课程学分等等进行操作。
3.2 邻接表类的定义
邻接表是一种顺序存储与链接存储相
文档评论(0)