学院教务排课管理系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学院教务排课管理系统设计 软件工程综合实践报告
( 2009 -- 2010 年度
第 1 学期)
专业 计算机科学与技术(软件开发) 学生姓名 龚青 班级 M 计算机061 学号 0651410102 指导教师 孔令东 吴国民 完成日期
2009年9月 24日
博雅学院
目录
1 可行性研究1
1.1系统目标及任务1
1.2开发工具的选择和介绍1 1.3对现有的排课系统的分析3 1.4 系统的逻辑模型3
1.5 系统的可行性6
1.6成本效益分析6
2 需求分析6
2.1硬件要求6
2.2软件要求6
2.3系统的功能要求7
2.4系统的性能要求7
3 概要设计7
3.1 模块设计7
3.2 功能分解7
3.3 数据库设计8
4 详细设计10
4.1用户界面设计10
4.2课程表的生成11
5测试12
5.1 排课系统功能测试12
5.2排课系统课表合理性测试12
5.3该系统的不足和改进方案12
6 小结13
参考文献14
附录15
附录1 源程序清单15
1 可行性研究
1.1系统目标及任务
本软件主要是适用于高等学校教务部门的办公软件,运用此软件,可以免去工作人员繁忙而枯燥的手工排课过程,直接通过计算机进行排课。
我的任务是完成排课系统的界面设计以及排课后报表的生成。
1.2开发工具的选择和介绍
针对目前世界上流行的大量软件和开发工具,经过认真分析其优缺点,结合排课系统的需要和目前的硬件环境,我们选用微软WINDOWS平台下的Visual Basic 6.0(简写为VB6.0)作为软件开发工具和SQL Server 2000数据库进行连接。
作为数据库系统的开发,Visual Basic是一个非常理想选择。
Visual Basic是一种可视化的、面对对象和条用事件驱动方式的结构化高级程序设计,可用于开发Windows环境下的应用程序。
它简单易学、效率高,且功能强大,可以与Windows的专业开发工具SDK相媲美,而且程序开发人员不必具有C/C++编程基础。
在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows 内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据访问(ODBC)等技术,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。
总的来说,Visual Basic具有以下特点:
1、可视化编程
用传统程序设计语言设计程序时,都是通过编写程序代码来设计用户界面,在设计过程中看不到界面的实际显示效果,必须编译后运行程序才能观察。
如果对界面的效果不满意,还要回到程序中修改。
有时候,这种编程-编译-修改的操作可能要反复多次,大大影响了软件开发效率。
Visual Basic提供了可视化设计工具,把Windows界面设计的复杂性“封装”起来,开发人员不必为界面设计而编写大量程序代码。
只需要按设计要求的屏幕布局,用系统提供的工具,在屏幕上画出各种“部件”,即图形对象,并设置这些图形对象的属性。
Visual Basic自动产生界面设计代码,程序设计人员只需要编写实现程序功能的那部分代码,从而可以大大提高程序设计的效率。
2、面向对象的程序设计
4.0版以后的Visual Basic支持面向对象的程序设计,但它与一般的面向对象的程序设计语言(C++)不完全相同。
在一般的面向对象程序设计语言中,对象由程序代码和数据组成,是抽象的概念;而Visual Basic则是应用面向对象的程序设计方法(OOP),把程序和数据封装起来作为一个对象,并为每个对象赋予应有的属性,使对象成为实在的东西。
在设计对象时,不必编写建立和描述每个对象的程序代码,而是用工具画在界面上,Visual Basic 自动生成对象的程序代码并封装起来。
每个对象以图形方式显示在界面上,都是可视的。
3、结构化程序设计语言
Visual Basic是在BASIC语言的基础上发展起来的,具有高级程序设计语言的语句结构,接近于自然语言和人类的逻辑思维方式。
Visual Basic语句简单易懂,其编辑器支持彩色代码,可自动进行语法错误检查,同时具有功能强大且使用灵活的调试器和编译器。
Visual Basic是解释型语言,在输入代码的同时,解释系统将高级语言分解翻译成计算机可以识别的机器指令,并判断每个语句的语法错误。
在设计Visual Basic程序的过程中,随时可以运行程序,而在整个程序设计好之后,可以编译生成可执行文件(.EXE),脱离Visual Basic环境,直接在Windows环境下运行。
4、事件驱动编程机制
Visual Basic通过事件来执行对象的操作。
一个对象可能会产生多个事件,每个事件都可以通过一段程序来响应。
例如,命令按钮是一个对象,当用户单击该按钮时,将产生一个“单击”(CLICK)事件,而在产生该事件时将执行一段程序,用来实现指定的操作。
在用Visual Basic设计大型应用软件时,不必建立具有明显开始和结束的程序,而是编写若干个微小的子程序,即过程。
这些过程分别面向不同的对象,由用户操作引发某个事件来驱动完成某种特定的功能,或者由事件驱动程序调用通用过程来执行指定的操作,这样可以方便编程人
员,提高效率。
5、访问数据库
Visual Basic具有强大的数据库管理功能,利用数据控件和数据库管理窗口,可以直接建立或处理SQL Server 2000数据库,并提供了强大的数据存储功能。
Visual Basic提供开放式数据连接,即ODBC功能,可通过直接访问或建立连接的方式使用并操作后台大型网络数据库,如SQL Server,Oracle等。
在应用程序中,可以使用结构化查询语言SQL数据标准,直接访问服务器上的数据库。
6、对象的链接与嵌入(OLE)
对象的链接与嵌入(OLE)将每个应用程序都看作是一个对象(object),将不同的对象链接(link)起来,再嵌入(embed)某个应用程序中,从而可以得到具有声音、影像、图像、动画、文字等各种信息的集合式的文件。
OLE技术是Microsoft公司对象技术的战略,它把多个应用程序合为一体,将每个应用程序看作是一个对象进行链接和嵌入,是一种应用程序一体化的技术。
利用OLE技术,可以方便地建立复合式文档(compound document),这种文档由来自多个不同应用程序的对象组成,文档中的每个对象都与原来的应用程序相联系,并可执行与原来应用程序完全相同的操作。
7、动态链接库(DLL)
Visual Basic是一种高级程序设计语言,不具备低级语言的功能,对访问机器硬件的操作不太容易实现。
但它可以通过动态链接库技术将C/C++或汇编语言编写的程序加入到Visual Basic应用程序中,可以像调用内部函数一样调用其他语言编写的函数。
此外,通过动态链接库,还可以调用Windows应用程序接口(API)函数,实现SDK所具有的功能。
1.3对现有的排课系统的分析
随着我国市场经济的快速发展和信息化水平的不断提高,如何利用先进的管理手段,提高教育单位教学排课管理的水平,是当今社会所面临的一个课题。
提高教育管理水平,必须全方位地提高教育管理意识。
只有高标准、高质量的管理才能满足教育事业的发展需求。
面对信息时代的挑战,利用高科技手段来提高教学排课管理无疑是一条行之有效的途径。
在某种意义上,信息与科技在教学管理与现代化建设中显现出越来越重要的地位。
教学排课管理方面的信息化与科学化,已成为现代化生活水平步入高台阶的重要标志。
有关排课管理系统的软件市面上有不少,教学管理人员也试用过一些,但总觉得不是很好用,不能完全满足我们的要求,所以都放弃用这些软件了,改为每
VB+SQL Server智能排课系统
次输入数据后,用手工更改数据库存量和安排课程,另外课表也无法用限制条件自动生成.以及直接导出到EXCLE表中,所以,迫切希望有一套完全适合排课管理应用的软件,以减轻管理人员的工作负担。
另一方面由于这类软件大多数是单机版的,现在也有不少是网络板的,但大部份都是在本地网络上运行的。
因此系统的开发方向应当是面向网络版的排课管理系统开发。
这点在今后的学习中将不断完善。
1.4 系统的逻辑模型
1.4.1 系统结构图
图1-1 系统结构图
1.4.2 系统流程图
为了实现管理信息系统的计算机化,仅仅用文字来描述信息的流动和存储还远远不够,还要进一步调查分析舍去物质流,抽象出信息流,绘制出数据流程图,并对各种数据的属性和各项处理功能进行详细分析。
系统分析的主要成果是系统的逻辑模型。
图1-2 程序流程图
1.4.3 数据字典
名字:班级编号
描述:唯一地标识班级库表中一个特定班级的关键域
定义:班级编号=10{char}
位置:编辑班级信息,课程信息,教学计划,班级课程表
名字:教室编号
描述:唯一地标识教室库表中一个特定教室的关键域
定义:教室编号=10{char}
位置:编辑教室信息,教室课程表
名字:教师编号
描述:唯一地标识教师库表中一个特定教师的关键域
定义:教师编号=10{char}
位置:编辑教师信息,教学计划,教师课程表
名字:学院编号
描述:唯一地标识学院库表中一个特定学院的关键域
定义:学院编号=10{char}
位置:编辑教师信息
名字:班级课程表
描述:每学期一个确定班级的上课情况信息表
定义:班级课程表=班级名称+课程名称+上课地点
位置:输出到打印机
名字:课程编号
描述:唯一地标识课程库表中一门特定课程的关键域
定义:课程编号=10{char}
位置:编辑课程信息,教学计划
名字:教室课程表
描述:每学期一个确定教室的上课时间安排情况信息表
定义:教室课程表=教室名称+班级名称
位置:输出到打印机
名称:教师课程表
描述:每学期每个教师的上课情况信息表
定义:教师课程表=教师姓名+课程名称+班级名称+教室名称
位置:输出到打印机
1.5 系统的可行性
1.5.1经济可行性分析
本系统开发简单但要耗去一定的时间,所用的开发工具和软件都差不多是免费的。
本系统在以后的使用中对于教育办公自动化管理,节省教育人力、物力资源等都有很大的帮助。
由此可见,开发此系统在经济上是完全可行的。
1.5.2操作可行性分析
如今的计算机已经走进千家万户,硬件成本的下降,导致计算机购买成本的降低.我的这套系统是利用自己的计算机加微软的集成开发环境Microsoft Visual Basic6.0作为软件的开发平台和SQL Server 2000数据库连接。
使开发出来的系统有直观的用户界面、有良好的安全性设置、有详细的操作说明书,这样更使各类用户很快地掌握系统的使用方法和操作,因此在操作上是可行的。
1.5.3 技术可行性分析
从目前IT业界比较流行的数据库开发、管理软件来看,对于比较简单的中小型数据库,VB 和SQL Server 2000的结合无疑是在实际应用中较为成功的一种解决方案。
为用户提供了业界软件开发一直坚持的操作简单的用户界面、完善强大的数据库操作功能和简洁明了的数据库接口。
所以技术实行起来相对会容易。
1.6成本效益分析
本系统的开发平台和开发工具都是免费提供的,所以不存在经济成本问题。
由于本软件还处于开发初期,所开发出的软件需要不断的修改和维护,就效益而言,它取代了传统的手工排课方式,节省了人力和时间。
如果要创造更高的效益需要对系统进行更多的优化。
2 需求分析
2.1硬件要求
1 486/DX66Mhz以上CPU
2 内存16M以上(使用Windows NT需要32M以上内存)
3 硬盘容量1GB以上(典型安装需要128MB硬盘空间,完全安装须要147MB硬盘空间,外加Microsoft开发者文档67MB硬盘空间)
4 VGA以上分辨率的显示器.
5 一个CD-ROM驱动器
6 鼠标、打印机
2.2软件要求
1 操作系统应使用Microsoft Windows95及以上版本或者更高版本。
2 安装有Visual Basic语言及SQL Server2000数据库。
2.3系统的功能要求
利用计算机实现计算机自动排课管理势在必行。
对于教育单位来说,利用计算机支持其高效率完成排课管理的日常事务,是适应现代教学制度要求、推动教学管理走向科学化、规范化的必要条件;而排课管理是一项琐碎、复杂而又十分细致的工作,课表信息录入,教师授课安排,限制条件输入,课表的自动生成等管理,一般不允许出错,如果实行手工操作,须手工填制大量的表格,这就会耗费教育工作人员大量的时间和精力,计算机进行排课工作的管理,不仅能够保证各项信息准确无误、快速输出,同时计算机具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高排课管理的效率,也是教育的科学化、正规化管理,与世界接轨的重要条件。
2.4系统的性能要求
本系统在性能上应达到如下要求:
系统软件运行应该速度快、稳定、可靠,具有很高的健壮性和容错、纠错能力;
系统软件操作上应简单、方便,界面简洁明了、美观;
系统软件应能具有较高的安全性,对内对外都有严格的身份认证和数据保密的措施;
系统软件在结构上应具有很好的可扩展性,便于将来的功能扩展和维护;
数据计算准确无误,精确度符合业务的需要。
3 概要设计
3.1模块设计
模块是软件结构的基础,软件结构的好坏完全由模块的属性体现出来,把软件模块化的目的是为了降低软件复杂性,使软件设计,测试,调试,维护等工作变得简易,但随着模块数目的增加,通过接口连接这些模块的工作量也随之增加。
从这些特性可得出如图的一条总的成本(或工作量)曲线,在考虑模块化时,应尽量使模块数接近于图中的M,它使得研制成本最小,而且应尽量避免不足的模块化或超量。
基于上述原因,在进行总体规划的初步设想中,以高校各种资源和资源的分配为依据,综合多种相关因素,将该系统划分成以下六个子功能模块:基本信息管理子系统、用户管理子系统、数据管理子系统、教学计划管理子系统、排课管理子系统、课表查询子系统。
在数据库设计上,遵循“功能分离,数据共享”的原则,将数据库分成基础数据库及目标数据库两大部分,其中,基础数据库又可分为初始设置信息库、基本信息库、用户信息库三个功能子库。
目标库主要存放系统运行过程中的动态数据,目标方案等。
3.2 功能分解
基本信息管理子系统功能:班级信息,教室信息和教室信息的添加、保存、编辑和删除:
1、用户管理子系统功能:用户密码的设置和修改,用户权限的设置,用户重新登陆;
2、数据管理子系统功能:包括对教室、教师、班级、教学计划和课表数据的保存、查询、更新、删除;
3、教学计划管理子系统功能:某一确定的学期的教学工作计划,对于班级而言,每门课程的学时、开始周、结束周以及每门课程的任课教师,该子系统对教学计划进行管理和完善;
4、排课管理子系统功能:包括自动排课,手动排课两个部分;
5、课表查询子系统功能:对于具体的班级、教师、教室进行课表查询,打印;
3.3 数据库设计
排课管理系统是一项复杂的系统工程,其间需要大量的数据来支撑,从某种程度上来讲,排课管理系统的设计过程,其实也就是一个规范和完整的数据库设计过程。
经过多年的发展,关系型数据库系统(RDBMS)是最成熟的一种数据库管理模式,也是当前最流行的数据库管理系统。
故在此也采用该模式(在加一些关系数据库的介绍)。
3.3.1定义属性表
1.bClass表
图3-1
图3-2教室表
3.bCourse表
图3-3课程表
4.bTeacher表
图3-4教师表
5.bTeachPlan
图3-5教师计划表
6.bTempTable
图3-6临时表
4 详细设计
4.1用户界面设计
随着视窗操作系统的全面推广和流行,如今GUI已经成为业界用户接口的一个标准。
在本系统的设计过程中,也按照GUI的设计原则来设计用户接口,给用户提供一个友好的人机交互界面。
具体来说,将按照以下几点原则来设计。
4.1.1简单易用和个性化需求
无论什么系统,面向什么使用者,都应该以简单易用而不显枯燥为标准。
本系统使用图形化的用户界面,整个界面功能键的设定和窗体布局,完全具有独特统一的风格。
4.1.2对数据的查询
查询是信息系统中不可缺少的功能。
本系统设计的是一种可对任意指定的表、按所有字段进行的查询。
查询的结果,在本系统中用数据窗口对象显示输出。
对于查询的结果,用户也可以根据自己的需求,选择显示的字段和设计自己的视图。
当然,系统下一步应该提供的功能就是根据查询结果,生成各式各类的报表。
4.1.3系统菜单功能
在实际的系统设计中,菜单可分为两种类型,即下拉式菜单和弹出式菜单,下拉式菜单系统中,一般有一个主菜单,其中包括若干个选择项.主菜单单的每一项又可下拉出下一级子菜单.这样用一个
个的窗口的形式弹出在屏幕上,它是通过菜单编辑器建立,其步骤如下:
1)选取要建立菜单的窗体
2)从“工具”菜单中,选取“菜单编辑器”建立如下图所示的系统主菜单:
基本信息输入
基本信息输入菜单是让录入员输入和修改课程信息、班级信息、教师信息、教室信息基本数据,数据管理包括课程、班级、教师、教室、课表数据的查询,打印。
班级信息中包括班级编号、班级名称、班级人数以及添加、保存、查询、编辑、删除等功能。
如下为班级信息的界面:
图4-1班级信息界面
教师信息中包括教师编号、教师姓名、职称以及添加、保存、查询。
图4-2 教师信息界面
4.2课程表的生成
4.2.1 班级课程表查询打印设计
经过信息录入和复杂的排课过程,终于到了生成课程表的输出后期阶段,显示出完整的课程表是我们的最终目的。
本系统是直接将课程表到入EXCEL表格中,使表格的形式更加美观,所用工具用户非常熟悉。
如下是班级课表查询界面:
通过输入确定的班级编号,来搜索某一具体班级的课程表。
若你忘记班级的编号,可以通过界面上的班级编号与班级名称对照表查询班级编号。
当确定好你所要查询的班级后,点击“查询课程表”按钮,就可以查询该班的课程表了。
图5-4 班级课程表界面
5 测试
5.1 排课系统功能测试
本软件的主要功能是能够查询到教师、教室、班级的相关信息,从而了解到各个部分不用的资源以及现状。
利用自动排课来完成本系统的核心内容,进行计算机的自动排课,接下来发生冲突的部分,运用手工排课来调整局部的资源冲突问题。
最后,是按照各部分的不同需求,分别按班级、教师、教师来打印出他们满意的课程表,以方便不同群体的工作和学习。
通过对该系统的运行,均能完成预期的功能,对于功能的测试基本成功。
5.2排课系统课表合理性测试
对于课程表的设计,本软件是将课程导入到Microsoft Office 提供的EXCEL中。
因为EXECL 已经为我们提供了标准的Windows 特有的界面和相关功能,所以应该充分利用现有的、最有效的资源。
导入到EXCEL中是生成报表的一种方法。
可根据用户的不同需求来打印出不同的班级,不同的教室和具体的某一位教师的上课时间安排,地点安排,以及具体上课的课程名称。
通过对该软件的运行,可以方便轻松地打印出具体班级、教师、教室的一学期的课程安排情况。
5.3该系统的不足和改进方案
该系统的不足之处在于,由于数据信息的缺乏,不能对输入的任意一学期的课程进行现场排课,只能进行的是指定某一确定学期,通过该学期的教学计划来进行排课。
对于一些高校有多个校区,本系统还不能对所有的校区进行资源和数据上的分离来进行完美的毫无冲突的排课,这是需要改进的地方之一。
还有,本系统个别地方缺乏人性化的设计,例如,对于高年龄的老教师来说,尽量不要安排他们去高层进行授课,授课的地点不能有太大的跨越。
改进的方案其实是多种多样的,对于一些人性化的设计,我们可以通过手工排课来调整。
对于跨校区的排课,是我们以后修改和维护本系统的一个方向,通过尝试别的排课算法来实现,或者通过后续的维护来实现。
6 小结
为了设计出学院排课系统,阅读了大量的资料,更总结了很多前人的经验。
排课管理功能是排课系统设计的重点和难点,它不仅要考虑到教室冲突问题和教师冲突问题,还要考虑到分段课、单双周课时的资源利用问题;另外由于高校的教学特点,还要处理合班课、分班课、体育课与选修课等特殊课程。
针对这些问题,在此专门对数据库设计作了一些探索,并于架构的选择和模块的划分上经过精心调整,在菜单的设计上也体现了人性化的操作。
该设计贴近用户需求,功能完整,架构合理,并用大量的框图模型体现了系统的规划。
界面的设计也更是煞废苦心,努力实现风格统一,方便用户的做法。
由于该课程设计开发周期短,还有许多悬而未决的问题诸如接口设计、出错处理、类的确定等等。
软件工程的文档开发是一个不断改进和修正的阶段,在今后提出问题和解决问题的过程中,期
待能做的更好。
[1]张海藩《软件工程导论》清华大学出版社2001.05
[2]郭琦《Visual Basic 数据库系统开发技术》第一版.人民邮电出版社2002.05
[3]刘韬《Visual Basic6.0 数据库系统开发实例导航》第一版.人民邮电出版社2002.06
[4]马力《Visual Basic 6.0 简明教程》第一版.机械工业出版社2003.09
[5] [美] Steven Jordan 牛力等编著《Visual Basic 6 编程宝典》电子工业出版社2005.01
附录1 源程序清单
VB+SQL Server智能排课系统
Private Sub Command1_Click()
Dim strCourseID As String
Dim strClassRoomID As String
Dim i As Integer, j As Integer
If Combo1.Text = "" Then
MsgBox "请输入要查询的班级编号!"
Exit Sub
End If
strSQL = "SELECT * FROM bTempTableA where classid= " & Combo1.Text & " order by ttime"
strtempsql = "SELECT courseID,courseName FROM bCourse"
strclassroomsql = "SELECT ClassRoomID,ClassRoomName FROM bclassroom"
ConenctToDatabase
rst.Open strSQL, db, adOpenKeyset, adLockOptimistic
temp.Open strtempsql, db, adOpenKeyset, adLockReadOnly
classtemp.Open strclassroomsql, db, adOpenKeyset, adLockReadOnly
If rst.RecordCount() <> 0 Then
i = rst.RecordCount()
Else
MsgBox "无此信息,请重新输入!"
rst.Close
temp.Close
classtemp.Close
Exit Sub
End If
Set xlapp = New Excel.Application
Set xlbook = xlapp.Workbooks.Open(App.Path & "\课程表模板.xlt")
xlapp.Visible = True
Set xlsheet = xlbook.Worksheets("班级课程表")
xlsheet.Activate
xlsheet.Cells(5, 1) = Combo1.Text & "级"
xlsheet.Cells(5, 6) = Date
While i <> 0
strCourseID = rst.Fields("courseID")
temp.Filter = "courseID = '" & strCourseID & "'"
strClassRoomID = rst.Fields("classroomID")
classtemp.Filter = "classroomID = '" & strClassRoomID & "'"
Select Case rst.Fields("Ttime")
Case Is = 1
xlsheet.Cells(9, 3) = temp.Fields("coursename")
xlsheet.Cells(11, 3) = classtemp.Fields("classroomName")
Case Is = 2
xlsheet.Cells(13, 3) = temp.Fields("coursename")
xlsheet.Cells(15, 3) = classtemp.Fields("classroomName")
Case Is = 3
xlsheet.Cells(17, 3) = temp.Fields("coursename")
xlsheet.Cells(19, 3) = classtemp.Fields("classroomName")
Case Is = 4
xlsheet.Cells(21, 3) = temp.Fields("coursename")
xlsheet.Cells(23, 3) = classtemp.Fields("classroomName")
Case Is = 5。