vb排课系统说明书.docx
《vb排课系统说明书.docx》由会员分享,可在线阅读,更多相关《vb排课系统说明书.docx(32页珍藏版)》请在冰豆网上搜索。
![vb排课系统说明书.docx](https://file1.bdocx.com/fileroot1/2023-1/24/760b737f-faff-430f-8d2c-859cd3633329/760b737f-faff-430f-8d2c-859cd36333291.gif)
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的坐标与数据库里的排课信息相对应,就可以得到满意的结果。
通过本次的课程设计,自己了解了开发软件的一个过程,各阶段的不同工作,编写的不同文档。
软件开发是一个工作量较强大的工程,需要我们团结努力,分工合作。