vb排课系统说明书.docx

上传人:b****6 文档编号:7513596 上传时间:2023-01-24 格式:DOCX 页数:32 大小:1.90MB
下载 相关 举报
vb排课系统说明书.docx_第1页
第1页 / 共32页
vb排课系统说明书.docx_第2页
第2页 / 共32页
vb排课系统说明书.docx_第3页
第3页 / 共32页
vb排课系统说明书.docx_第4页
第4页 / 共32页
vb排课系统说明书.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

vb排课系统说明书.docx

《vb排课系统说明书.docx》由会员分享,可在线阅读,更多相关《vb排课系统说明书.docx(32页珍藏版)》请在冰豆网上搜索。

vb排课系统说明书.docx

vb排课系统说明书

中北大学

课程设计说明书

软件工程大型实验

 

学生姓名:

袁亚琴

学号:

0806054104

学院:

电子与计算机科学技术学院

专业:

软件工程

题目:

大学排课系统

——排课算法子系统

成绩

 

指导教师:

宋礼鹏职称:

讲师

 

2010年12月31日

1.设计目的

制定一个学校的排课计划是一项非常耗时且相当辛苦的工作。

在一所高校一个课程表的制定是一个难题,因为在有关课程表的问题上有很多的限制条件得考虑,还有大量的数据空间被挖掘。

课程编排系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以自动排课系统应该能够为用户提供充足的信息和快捷的查询手段。

按照软件工程基本原理,运用UML中所学的知识,设计开发一个大学排课系统。

通过对排课系统的分析、设计与实现,将原理与应用相结合,让自己学会如何把书本上学到的知识用于解决实际问题,培养自己的动手能力;另一方面,使自己能深入理解和灵活掌握教学内容。

2.设计内容

本人在本次课程设计中完成的内容有:

(1)手动排课与自动排课功能的实现。

(2)班级、教师及教室课表查询功能的实现。

3.需求描述

图1大学排课系统用例图

表1自动排课用例描述

用例名称:

自动排课

用例概述:

根据课程时间、教师的基本信息、班级课程设置的信息、多媒体使用情况、座位数与上课班级人数协调情况合理的安排上课教室、时间及代课教师,使得资源充分利用而且不冲突

主要参与者:

校管理员

次要参与者:

院管理员

前置条件:

教师、班级和教室信息全部添加完

后置条件:

生成课表

基本事件流:

(1)收集教师、班级、教室的信息

(2)根据多媒体的需求、教室座位数等优先为上课班级总人数多的班级安排上课教室和时间

(3)根据教师的基本信息和代课意向,优先考虑安排教师的代课要求

(3)为已安排教室和时间的课程的代课教师安排其他教学任务的教室和时间。

(4)为已安排教室、时间及代课教师的课程的班级安排其他课程的教室、时间及代课教师

(5)合理调整教师每周授课的学时数

(6)重复以上操作,直到所有的课程安排完

表2课表查询用例描述

用例名称:

课表查询

用例概述:

教师、学生、院管理员、校管理员根据自己的需求对课表进行不同类型的查询

主要参与者:

教师、学生、院管理员、校管理员

基本事件流:

(1)用户启动课表查询用例

(2)学生选择学生课表查询用例,查询学生课表

(3)教师选择教师课表查询用例,查询教师课表

(4)院管理员和校管理员根据需求选择不同课表查询用例,查询课表

4.系统详细分析设计

4.1顺序图

图2手动排课顺序图

图3自动排课顺序图

图4班级课表查询顺序图

图5教师课表查询顺序图

图6教室课表查询顺序图

4.2活动图

图7大学排课系统活动图

4.3类图

图8大学排课系统类图

4.4部署图

图9大学排课系统部署图

4.5构件图

图10大学排课系统构件图

4.6数据库表

中文含义

字段名称

数据类型

长度

是否为空

备注

用户名

userName

Varchar

20

用户密码

password

Varchar

20

用户权限

purview

Varchar

20

表3用户登录信息表(Login)

表4班级信息表(class)

中文含义

字段名称

数据类型

长度

是否为空

备注

班级编号

classID

Varchar

20

主键

班级名称

classname

Varchar

20

班级人数

classnumber

Int

10

系编号

sysID

Varchar

20

外键

表5教师信息表(teacher)

中文含义

字段名称

数据类型

长度

是否为空

备注

教师编号

teacherID

Varchar

20

主键

教师姓名

teachername

Varchar

20

教师职称

degree

Varchar

20

系编号

sysID

Varchar

20

外键

表6教室信息表(classroom)

中文含义

字段名称

数据类型

长度

是否为空

备注

教室编号

classroomID

Varchar

20

主键

教室容量

classroomnumber

Int

50

教室类型

classroomtype

Varchar

20

表7院系信息表(sys)

中文含义

字段名称

数据类型

长度

是否为空

备注

系编号

sysID

Varchar

20

主键

系名称

sysname

Varchar

20

所属学院

collegeID

Varchar

20

外键

表8学院信息表(college)

中文含义

字段名称

数据类型

长度

是否为空

备注

学院编号

collegeID

Varchar

20

主键

学院名称

collegename

Varchar

20

 

表9课程信息表(course)

中文含义

字段名称

数据类型

长度

是否为空

备注

课程编号

courseID

Varchar

20

主键

课程名称

coursename

Varchar

20

学时数

coursenumber

Varchar

20

表10教学计划表(arrange)

中文含义

字段名称

数据类型

长度

是否为空

备注

课程名

coursename

Varchar

20

教师编号

teacherID

Varchar

20

教师姓名

teachername

Varchar

20

教室类型

classroomtype

varchar

20

班级编号

classID

Varchar

100

表11时间表(classtimeb)

中文含义

字段名称

数据类型

长度

是否为空

备注

上课时间

classtime

varchar

20

主键

表12手动排课表(design)

中文含义

字段名称

数据类型

长度

是否为空

备注

课程名

Coursename

Varchar

20

教师编号

TeacherID

Varchar

20

教师姓名

Teachername

Varchar

20

上课时间

Classtime

Varchar

20

教室编号

ClassroomID

Varchar

20

班级编号

ClassID

Varchar

100

 

表13自动排课表(designs)

中文含义

字段名称

数据类型

长度

是否为空

备注

课程名

Coursename

Varchar

20

主键

教师编号

TeacherID

Varchar

20

主键

教师姓名

Teachername

Varchar

20

上课时间

Classtime

Varchar

20

主键

教室编号

ClassroomID

Varchar

20

主键

班级编号

ClassID

Varchar

100

主键

5.系统实现

5.1开发工具及系统运行环境

开发工具:

MircosoftVisualBasic6.0,MircosoftAccess2003

运行环境:

windowsXP

5.2排课和课表查询子系统实现

(1)界面效果

图11手动排课成功界面

校管理员进入手动排课界面,按照教学计划表,录入排课信息,若班级、教师、教室和时间之间都不发生冲突,提示“录入信息成功”。

图12提示班级和时间冲突界面

图13提示教室和时间冲突界面

图14提示教师和时间冲突界面

图15自动排课界面

校管理员进入自动排课界面,点击“开始”按钮,即可完成自动排课,提示“排课完成!

”信息。

图16自动排课提示清空信息的界面

校管理员进入自动排课界面,点击“清空”按钮,可将数据库里的排课信息清空,出现提示“清空完成!

”的消息框。

图17手动调整界面

校管理员进入手动调整界面,根据老师提出的代课意向,可以手动修改自动排课的信息,点击“确认”按钮后,出现提示“手动调整信息成功”的消息框。

图18班级课表查询界面

校管理员、院管理员和学生登录后进入班级课表查询界面,通过输入确定的班级编号,来搜索某一具体班级的课程表。

若你忘记班级的编号,可以通过界面上的班级信息表查询班级编号。

当确定好你所要查询的班级后,点击“课表显示”按钮,就可以查询该班的课程表了。

图19提示班级课表不存在的界面

校管理员、院管理员和学生登录后进入班级课表查询界面,通过输入确定的班级编号,来搜索某一具体班级的课程表。

若班级编号输入错误,就会提示“该班级课表不存在!

图20班级课程表界面

(5)教师课表查询

图21教师课表查询界面

校管理员、院管理员和教师登录后进入教师课表查询界面,通过输入确定的教师编号,来搜索某一具体教师的课程表。

若你忘记教师的编号,可以通过界面上的教师信息表查询教师编号。

当确定好你所要查询的教师后,点击“课表显示”按钮,就可以查询该教师的课程表了。

图22教师课表不存在的界面

校管理员、院管理员和教师登录后进入教师课表查询界面,通过输入确定的教师编号,来搜索某一具体教师的课程表。

若教师编号输入错误,就会提示“该教师课表不存在!

图23教师课程表界面

图24教室课表查询界面

校管理员、院管理员登录后进入教室课表查询界面,通过输入确定的教室编号,来搜索某一具体教室的课程表。

若你忘记教室的编号,可以通过界面上的教室信息表查询教室编号。

当确定好你所要查询的教室后,点击“课表显示”按钮,就可以查询该教室的课程表了。

图25教室课表不存在的界面

校管理员、院管理员登录后进入教室课表查询界面,通过输入确定的教室编号,来搜索某一具体教室的课程表。

若教室编号输入错误,就会提示“该教室课表不存在!

图26教室课程表界面

(2)核心算法

PrivateSubCommand2_Click()

Dimsql,sqll,sqlll,sqlr,cookAsString

DimrtAsNewADODB.Recordset

DimrmAsNewADODB.Recordset

DimrnAsNewADODB.Recordset

DimrpAsNewADODB.Recordset

DimrqAsNewADODB.Recordset

DimrdAsNewADODB.Recordset

Dimi,jAsInteger

i=1

DoUntili=5'优先级别高的优先安排

cook=i

Setrs=NewADODB.Recordset

sql="select*fromarrangewhere[pre]='"+cook+"'"

Setrs=conn.Execute(sql)

ProgressBar1.Visible=True

ProgressBar1.Max=100

DoUntilProgressBar1.Value=100

DoUntilrs.EOF=True

j=rs("weeknumber")

DoUntilj=0

sqll="select*fromclasstimeb"

Setrt=conn.Execute(sqll)

DoUntilrt.EOF=True

Setrp=NewADODB.Recordset

coom="select*fromdesignswhere[classID]='"+rs("classID")+"'and[classtime]='"+rt("classtime")+"'"

Setrp=conn.Execute(coom)

cool="select*fromdesignswhere[classtime]='"+rt("classtime")+"'and[teacherID]='"+rs("teacherID")+"'"

Setrq=conn.Execute(cool)

Ifrp.EOF=TrueAndrq.EOF=TrueThen'班级、教师是否空闲

sqlll="select*fromclassroom"

Setrm=conn.Execute(sqlll)

DoUntilrm.EOF=True

coon="select*fromdesignswhere[classtime]='"+rt("classtime")+"'and[classroomID]='"+rm("classroomID")+"'"

Setrn=conn.Execute(coon)

Ifrn.EOF=TrueThen'教室是否空闲

Sql="insertintodesigns([classtime],[coursename],[teacherID],[teachername],[classroomID],[classID])values('"+rt("classtime")+"','"+rs("coursename")+"','"+rs("teacherID")+"','"+rs("teachername")+"','"+rm("classroomID")+"','"+rs("classID")+"')"

Setrq=conn.Execute(sql)

ExitDo

Else

rm.MoveNext

EndIf

Loop

ExitDo

Else

rt.MoveNext

EndIf

Loop

j=j-1

Loop

rs.MoveNext

Loop

ExitDo

ProgressBar1.Value=ProgressBar1.Value+1

Loop

i=i+1

Loop

ProgressBar1.Visible=False

MsgBox"排课完成!

"

EndSub

PrivateSubCommand3_Click()

DimsqlAsString

sql="delete*fromdesigns"

Setrs=conn.Execute(sql)

MsgBox"清空完成!

"

EndSub

PrivateSubCommand4_Click()

UnloadMe

conn.Close

EndSub

PrivateSubForm_Load()

DimstrAsString

str="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+App.Path+"\shujuku.mdb;PersistSecurityInfo=False"

'定义据库连接

conn.Openstr

EndSub

6.系统测试

6.1测试方法

白盒测试、黑盒测试

6.2测试环境

WindowsXP

6.3测试用例及测试结果

(1)手动排课

白盒测试

图27手动排课流程图

条件覆盖

上课时间=周一第一大节,课程名=高等数学,教师编号=0701,教师姓名=李四,上课班级=09060541,09060542,上课教室=11109,则执行路径:

abc

上课时间=周一第三大节,课程名=操作系统,教师编号=0701,教师姓名=李四,上课班级=08060341,08060342,上课教室=11306,则执行路径:

abd

黑盒测试

表14手动排课测试用例表

测试编号

001

优先级

测试项描述

手动排课

预置条件

校管理员进入手动排课界面

用例编号

测试输入

预期结果

001

上课时间=周一第一大节

课程名=高等数学

教师编号=0701

教师姓名=李四

上课班级=09060541,09060542

上课教室=11109

录入排课表中,更新数据库

002

上课时间=周一第三大节

课程名=高等数学

教师编号=0701

教师姓名=李四

上课班级=09060541,09060542

上课教室=11109

提示该时间段该教室已被占用,请重新选择教室或时间!

003

上课时间=周一第三大节

课程名=操作系统

教师编号=0701

教师姓名=李四

上课班级=08060341,08060342

上课教室=11306

提示该时间段该班级已安排课程,请重新选择时间!

004

上课时间=周一第三大节

课程名=操作系统

教师编号=0601

教师姓名=李顺增

上课班级=08060341,08060342

上课教室=11306

提示该时间段该教师已安排课程,请重新选择时间!

(2)班级课表查询

白盒测试

图28班级课表查询流程图

条件覆盖

班级编号=08060541,则执行路径:

abc

班级编号=123,则执行路径:

abd

黑盒测试

表15班级课表查询测试用例表

测试编号

002

优先级

测试项描述

班级课表查询

预置条件

校管理员或院管理员或学生进入班级课表查询界面

用例编号

测试输入

预期结果

001

班级编号=08060541

显示该班级课表

002

班级编号=123

提示该班级课表不存在!

003

提示请输入要查询课表的班级编号!

(2)教师课表查询

白盒测试

图29教师课表查询流程图

条件覆盖

教师编号=0601,则执行路径:

abc

教师编号=123,则执行路径:

abd

黑盒测试

表16教师课表查询测试用例表

测试编号

003

优先级

测试项描述

教师课表查询

预置条件

校管理员或院管理员或教师进入教师课表查询界面

用例编号

测试输入

预期结果

001

教师编号=0601

显示该教师课表

002

教师编号=123

提示该教师课表不存在!

003

提示请输入要查询课表的教师编号!

(3)教室课表查询

白盒测试

图30教室课表查询流程图

条件覆盖

教室编号=11109,则执行路径:

abc

教师编号=123,则执行路径:

abd

黑盒测试

表17教室课表查询测试用例表

测试编号

004

优先级

测试项描述

教室课表查询

预置条件

校管理员或院管理员进入教室课表查询界面

用例编号

测试输入

预期结果

001

教室编号=11109

显示该教室课表

002

教室编号=123

提示该教室课表不存在!

003

提示请输入要查询课表的教室编号!

7.个人体会

四周的课程设计结束了,在这段时间里我们碰到了各种各样的问题,通过查找资料学习,我们解决了很多问题。

通过这次的课程设计,我们学到了很多知识,动手能力也提高了很多。

课程设计让我们把平日里上课学到的东西应用到了实际的软件开发中,也让我们认识到理论和实践的联系。

设计完整个系统,自己收获很多。

在本次课程设计中,我们小组使用的开发工具是MircosoftVisualBasic6.0和MircosoftAccess2003,MircosoftVisualBasic6.0实现的是窗体形式的界面,很明了。

在MircosoftVisualBasic6.0里可以使用各种控件(如:

label,textbox,combol等)设计自己想要得到的界面,再通过编写相应的代码实现所需的功能。

MircosoftVisualBasic6.0界面设计比较简单,最主要的是与数据库的链接,这部分容易出现很多问题,某个界面如果需要连接数据库,可以利用adodc控件,通过MircosoftJet4.0OLEDBProvide字符串连接库,测试成功。

然后在代码的form_load()里将数据库的路径赋给一个变量,通过该变量控制数据库的打开和关闭。

在连接数据库这块,会遇到如下一些问题:

一个界面操作完退出时,必须关闭数据库,即执行close语句,否则在打开另一个界面时会出现“对象打开时不允许操作”的错误;在界面里添加或修改数据库表里的信息时,所输入的内容类型必须与数据库里设置的类型一致,否则会出现“类型不匹配”的错误;vb代码中sql语句的格式必须正确,否则会出现“至少一个参数未定义”的错误等等。

虽然问题很多,但只要我们谨慎认真的去做,去检查,这些都可以被解决。

我们的排课系统做完了,系统实现了一些功能。

如登录功能、添加删除和查询功能、手动排课功能、自动排课功能以及课表查询功能。

但自动和手动排课方面存在很大问题。

排课系统的核心是自动排课算法,我们小组的算法思想是采用贪心法,但实际操作没有很好的实现,只是实现了一些硬约束条件,软约束条件没有实现。

不过通过对自动排课的研究,熟悉了贪心算法的知识。

对排课的整个过程思想有了一定的把握。

课表查询模块是通过与一个excel表连接实现的。

Excel的坐标与数据库里的排课信息相对应,就可以得到满意的结果。

通过本次的课程设计,自己了解了开发软件的一个过程,各阶段的不同工作,编写的不同文档。

软件开发是一个工作量较强大的工程,需要我们团结努力,分工合作。

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

当前位置:首页 > 求职职场 > 简历

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

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