教学计划编制系统课程设计文档

  • 格式:doc
  • 大小:137.00 KB
  • 文档页数:24

下载文档原格式

  / 24
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

教学计划编制问题

学生姓名:XX 指导老师:XXX

摘要本课程设计主要针对计算机系本科课程,根据课程之间的依赖关系,制定课程安排计划,并满足各学期课程数目大致相同。在课程设计中,系统开发平台为Windows XP,程序设计设计语言采用C++,程序运行平台为Windows XP,数据结构为邻接表。对于每个学期的课程数目采用了学分变量进行控制,以实现各学期课程数目大致相同。在程序设计中,采用了面向对象解决问题的方法。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在教学中解决教学计划编制问题。

关键词程序设计;数据结构;AOV网;邻接表;C++;课程计划

1 引言

计算机系的学生必须要完成教学计划中规定的一系列课程,有些课程之间存在相互之间的依赖关系。比如说:《C++程序设计基础》应在《数据结构》之前开设,《大学物理(下)》必须要在《大学物理(上)》学完之后才可以学习。在教学计划编制的过程中,有一个层次的关系。因此,有一个有效、便捷的教学计划编制系统是十分重要的。

1.1 课程设计目的

本课程设计主要是针对计算机系本科课程,根据课程之间的依赖关系,制定课程安排计划,并满足各学期课程数目大致相同。

教学计划编制系统是基于C++的软件系统,通过建立AOV网,按学期对课程序号、课程代号、课程名称以及课程学分进行相应输出,并且保证用户实现自由选择专业选修课功能。

1.2 课程设计内容

教学计划编制系统主要是处理课程之间的依赖关系。表1.1列出了若干门计算机系本科课程,其中有些课程不要求先修课程,例如,C1是独立于其他课程的基础课,而有些课程却需要有先修课程,比如,学完程序设计语言C++和离散数学后才能学习数据结构。具体情况如表1.1所示。

表1.1 课程以及课程之间的依赖关系

课程代号课程名称先修课程

C1 高等数学无

C2 计算机科学导论无

C3 离散数学C1

C4 程序设计语言C++ C1、C2

C5

数据结构 C3、C4 C6

计算机原理 C2、C4 C7 数据库原理 C4、C5、C6

先修课程规定了课程之间的依赖关系,这种关系可以用AOV 网来表示,其中顶点表示课程,弧表示依赖关系,如图1.1所示。

图1.1 表1.1对应的AOV 网 程序的主要功能是实现课程的排序,以满足同一学期所修的课程相互之间无依赖关系,并且已修完其所有先修课程。另外,设置学分变量,控制每个学期的课程量基本均匀。

2 概要设计

2.1 设计思路

数据结构课程主要讨论数据表示和数据处理的基本问题。数据要能被计算机处理,首先必须能够存储在计算机的内存中,这项任务称为数据表示,数据表示的核心任务是数据结构的设计;一个实际问题的求解必须满足各项处理要求,这项任务称为数据处理,数据处理的核心任务是算法设计。

本课程设计是基于C++程序设计语言实现的。C++语言的主要特点表现在两个方面,一是全面兼容C ,二是支持面向对象的方法。因此,C++既支持面向过程的程序设计,又支持面向对象的程序设计。

C++语言最有意义的方面是支持面向对象的特征,基于对象的程序是以类和对象为基础的,程序的操作是围绕对象进行的。在此基础上利用了继承机制和多态性,就成为面向对象的程序设计。

数据结构中的数据表示和数据处理问题都可以通过C++类中数据和对数据进行操作的函数来实现。

2.2 数据表示

教学计划编制问题中,操作对象是课程。课程之间的依赖关系用AOV 网表示, AOV 网的构

C1

C7

C6

C4

C5 C3

C2

造采用邻接表实现。因此,本程序设计定义了两个类:课程类和邻接表类。

课程类(Lesson)添加了5个私有成员变量用来定义课程的5个属性:课程代号、课程名称、课程序号、课程学分以及是否被选择过的课程标记。同时还定义了8个成员函数,已实现相关的操作功能。

邻接表类(ALGraph)定义了2个整型成员变量和1个结构体数组来存放顶点数、边数和顶点表。同时还定义了4个成员函数实现用来实现AOV网的构造、删除、排序以及相关输出功能。2.3 数据处理

数据处理必须借助函数来实现。本程序设计通过调用类的各种成员函数实现各种需要操作。

课程类(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(是否被选择过的课程标记),分别用来定