教学计划编制系统课程设计文档Word格式文档下载.doc

上传人:b****3 文档编号:15185524 上传时间:2022-10-28 格式:DOC 页数:35 大小:340KB
下载 相关 举报
教学计划编制系统课程设计文档Word格式文档下载.doc_第1页
第1页 / 共35页
教学计划编制系统课程设计文档Word格式文档下载.doc_第2页
第2页 / 共35页
教学计划编制系统课程设计文档Word格式文档下载.doc_第3页
第3页 / 共35页
教学计划编制系统课程设计文档Word格式文档下载.doc_第4页
第4页 / 共35页
教学计划编制系统课程设计文档Word格式文档下载.doc_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

教学计划编制系统课程设计文档Word格式文档下载.doc

《教学计划编制系统课程设计文档Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《教学计划编制系统课程设计文档Word格式文档下载.doc(35页珍藏版)》请在冰豆网上搜索。

教学计划编制系统课程设计文档Word格式文档下载.doc

比如说:

《C++程序设计基础》应在《数据结构》之前开设,《大学物理(下)》必须要在《大学物理(上)》学完之后才可以学习。

在教学计划编制的过程中,有一个层次的关系。

因此,有一个有效、便捷的教学计划编制系统是十分重要的。

1.1课程设计目的

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

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

1.2课程设计内容

教学计划编制系统主要是处理课程之间的依赖关系。

表1.1列出了若干门计算机系本科课程,其中有些课程不要求先修课程,例如,C1是独立于其他课程的基础课,而有些课程却需要有先修课程,比如,学完程序设计语言C++和离散数学后才能学习数据结构。

具体情况如表1.1所示。

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

课程代号

课程名称

先修课程

C1

高等数学

C2

计算机科学导论

C3

离散数学

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网的构造采用邻接表实现。

因此,本程序设计定义了两个类:

课程类和邻接表类。

课程类(Lesson)添加了5个私有成员变量用来定义课程的5个属性:

课程代号、课程名称、课程序号、课程学分以及是否被选择过的课程标记。

同时还定义了8个成员函数,已实现相关的操作功能。

邻接表类(ALGraph)定义了2个整型成员变量和1个结构体数组来存放顶点数、边数和顶点表。

同时还定义了4个成员函数实现用来实现AOV网的构造、删除、排序以及相关输出功能。

2.3数据处理

数据处理必须借助函数来实现。

本程序设计通过调用类的各种成员函数实现各种需要操作。

课程类(Lesson)的成员函数如表2.1所示。

表2.1Lesson类的成员函数

函数名称

功能声明

voidSetLes()

对课程各种属性进行赋值

stringGetNum()

获得课程代号

stringGetName()

获得课程名称

floatGetLesScore()

获得课程学分

intGetLesNo()

获得课程序号

boolGetSelect()

获得是否选择过的标志变量

voidSetSelect()

设置选择控制标志变量,以避免重复选课

voidSetName()

单独定义设置课程名称的函数,以方便一些操作

邻接表类(ALGraph)的成员函数如表2.2所示。

表2.2ALGraph类的成员函数

ALGraph()

构造函数

~ALGraph()

析构函数

voidTopSort()

实现AOV网中顶点的排序并进行相应的输出

voidBalanScore()

平衡每次输出的顶点的数目

3详细设计

3.1课程类的定义

课程类(Lesson)添加了5个私有成员变量:

LesNum (课程代号)、LesName(课程名称)、LesScore(课程学分)、LesNo(课程序号)以及Select(是否被选择过的课程标记),分别用来定义课程的5个属性;

同时还定义了8个成员函数:

SetLes(对课程各种属性进行赋值)、GetNum(获得课程代号)、GetName(获得课程名称)、GetLesScore(获得课程学分)、GetLesNo(获得课程序号)、GetSelect(获得是否选择过的标志变量)、SetSelect(设置选择控制标志变量)和SetName(单独定义设置课程名称),用来实现相关的操作功能。

计算机系一共有65门课程,其中相互之间存在依赖关系的课程有56门,另外9门为独立课程,不存在依赖关系。

LessonB[65]定义课程类的对象数组,可以通过调用课程类的各种成员函数对65门课程的课程序号、课程代号、课程名称以及课程学分等等进行操作。

3.2邻接表类的定义

邻接表是一种顺序存储与链接存储相结合的存储方法。

在邻接表中存在两种结点结构:

顶点表结点和边表结点,如图3.1所示。

adjlistnext

Indegreevertexfirstedge

顶点表结点边表结点

图3.1邻接表表示的结点结构

采用C++中的结构类型描述上述结点,用C++中的类实现基于邻接表存储结构下图的各种数据类型和操作功能。

由于采用了C++的模板机制,邻接表中的数据元素可以是任意的。

在本次课程设计中,邻接表中的数据元素初始化为课程类对象。

3.3重要函数的实现

(1)邻接表构造函数ALGraph

邻接表构造函数ALGraph(Ta[],intn,inte,intedge[][73]),初始化一个有n个顶点、e条边和73个依赖关系的AOV网。

当定义一个邻接表类的对象时,调用该构造函数,通过实参与形参相结合,实现课程信息的存储,建立AOV网,实现课程及课程之间的关系。

流程图如图3.2所示。

初始化顶点表

初始化边表,并在相应的边表中插入结点

结束

运行

图3.2邻接表ALGraph的构造函数

(2)邻接表成员函数TopSort

邻接表成员函数TopSort(TOutLes[10][100],TB[65])按批次扫描AOV网,每次扫描后都将得到的入度为0的顶点依次存入数组的每行,同时对存入顶点的后继顶点进行入度减1操作。

不同批次扫描得到的顶点存在数组的不同列。

在此函数中通过用户的输入,还实现了专业课选择操作,并且实现了相关的输出功能。

邻接表成员函数TopSort流程图如图3.3所示。

所有顶点是否处理完?

将入度为0的顶点入

栈是否为空?

用数组OutLes保存每次入栈的入度为0的顶点;

并进行相应的调整。

将当前结点的后继结点减1

输出课程名称

对每个学期的课程量进行控制

图3.3邻接表类成员函数TopSort

(3)邻接表类成员函数BalanScore

邻接表类成员函数BalanScore(TOutLes[10][100],intcount,ints,floatscore,TB[65])主要通过设置学分变量对每个学期的课程量进行控制,以实现不同学期的课程数目大致相等。

对于某个学期课程学分未达到最少修读学分的问题,主要通过插入独立课程补足学分解决,同时在插入的同时设置学分上限,以免超过学分修读范围。

最后将课程信息按不同学期依次进行输出。

邻接表类成员函数BalanScore流程图如图3.4所示。

学分是否>

21?

显示可以进行选择的课程信息

进行选择

学分是否在21~29

总学分>

29

本次选择无效,重新选择

输出课程信息

图3.4邻接表类成员函数BalanScore

4运行环境与测试结果

4.1运行环境

在本课程设计中,系统开发平台为WindowsXP,程序运行环境为VisualC++6.0,程序设计语言为C++。

VisualC++一般分为三个版本:

学习版、专业版和企业版,不同版本适合于不同类型的应用开发。

实验中可以使用这三个版本的任意一种,在本课程设计中,以VisualC++6.0为编程环境。

VisualC++以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。

比如,它允许用户进行远程调试和单步执行等。

还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。

其编译及建置系统以预编译头文件、最小重建功能及累加链接著称。

这些特征明显缩短程式编辑、编译及链接的时间花费,在大型软件计划上尤其显著。

VisualC++6.0秉承VisualC++以前版本的优异特性,为用户提供了一套良好的开发环境,主要包括文本编辑器、资源编辑器、工程创建工具和Debugger调试器等等。

用户可以在集成开发环境中创建工程,打开工程,建立、打开和编辑文本,编译、链接、运行和调试应用程序。

4.2测试结果

(1)对所有课程输出情况的测试

在主函数运行初,先利用课程类定义了对象数组,通过对象数组调用了各种成员函数,实现对计算机系本科课程信息的总体输出。

同时,使用制表符和设置宽度函数,调整输出结果,使查看更清楚。

计算机系本科课程信息部分输出如图4.1所示。

图4.1部分本科课程输出

(2)对利用学分均匀每学期课程量的测试

输出数组OutLes[10][100]第一行元素保存的课程名称,即第一学期课程名称,独立课

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1