精品毕业论文--VB课程设计大学排课系统.doc_第1页
精品毕业论文--VB课程设计大学排课系统.doc_第2页
精品毕业论文--VB课程设计大学排课系统.doc_第3页
精品毕业论文--VB课程设计大学排课系统.doc_第4页
精品毕业论文--VB课程设计大学排课系统.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1. 设计目的排课管理是高校每个学期教学教务管理工作的一个主要内容,是整个综合教学教务管理系统中必不可少的部分。排课也是一项复杂而精细的工作,归纳起来主要有五方面相互作用、相互关联的因素,即课程、教师、时间、班级以及教室。教务处根据教学计划的要求、实际招生人数、教师资源情况、每学期要开设的课程、开课计划,公共课程(包括公共英语、马列课、公共体育、计算机基础、高等数学等)进行分组处理,自动排课,以班为单位形成课程表,以教室为单位形成教室使用表,供教师、教学楼管理员使用。2. 设计内容本次课程设计中完成排课算法和课表查询的实现,排课包括手动排课、自动排课和手动调整,查询包括班级课表、教室课表以及教师课表的查询,手动排课是管理员可以自己选择课程名称、教师名称、班级编号、教室编号和上课时间,然后将排课信息存到数据库表中,自动排课是自动调用任课表中的课程、教师和每周节数、班级信息表中的班级编号、教室信息表中的教室编号以及时间表中的上课时间,然后根据算法自动进行排课。查询可以根据班级编号、教室编号、教师姓名查出手动排课和自动排课后的班级课程表、教室课程表和教师课程表,自动排课后的课程表支持预览打印。打印是通过程序调用Excel表格,显示出课程表3. 需求描述排课系统课表查询排课管理信息编辑用户管理登录图1 系统功能结构图 图2 系统用例图3.1参与者 学生:查询学生课表,在查询课表时首先应该登录,所以课表查询用例要包含登陆用例。 教师:查询教师课表,在查询课表时首先也应该登录。院管理员:可以编辑信息,查询课表信息。校管理员:可以编辑信息,查询课表信息,可以进行排课以及调整课表3.2用例描述(1) 自动排课用例:自动排课简要说明:通过调用数据库表完成对课程的安排事件流:基本事件流前置条件:已成功登录系统,任课表里存在记录 后置条件:完成对课程的安排,并形成课表优先级:3 基本事件流:a) 院管理员发出自动排课请求b) 系统根据数据库存储的信息自动排课,并形成课表c) 系统提示自动排课成功(2) 手动排课用例:手动排课简要说明:通过手动选择相关信息完成对课程的安排事件流:基本事件流前置条件:已成功登录系统后置条件:完成对课程的安排,并形成课表优先级:3 基本事件流a) 院管理员选择相关信息对课程安排b) 系统完成对课程安排的存档并形成课表c) 系统提示手动添加成功(3) 班级课表查询用例:班级课表查询简要说明:通过输入班级编号查询该班级课表事件流:基本事件流前置条件:已成功登录系统,且数据库中存在该班级课表记录后置条件:查询并显示出该班级课表优先级:3 基本事件流a) 学生输入班级编号请求查询该班级课程表b) 系统完成对该班级课表的查询并显示出来(4) 教室课表查询用例:教室课表查询简要说明:通过输入教室编号查询该教室课表事件流:基本事件流前置条件:已成功登录系统,且数据库中存在该教室课表记录后置条件:查询并显示出该教室课表优先级:3 基本事件流a) 管理员输入教室编号请求查询该教室课程表b) 系统完成对该教室课表的查询并显示出来(5) 教师课表查询用例:教师课表查询简要说明:通过输入教师姓名查询该教师课表事件流:基本事件流前置条件:已成功登录系统,且数据库中存在该教师课表记录后置条件:查询并显示出该教师课表优先级:3 基本事件流c) 教师输入教师请求查询该教师课程表d) 系统完成对该教师课表的查询并显示出来(6) 登录用例:登录简要说明:通过输入验证用户名和密码登入系统事件流:基本事件流和扩展事件流前置条件:用户启动该系统后置条件:通过验证并进入系统优先级:5 基本事件流:a) 系统提示用户选择用户角色,输入登录信息b) 用户选择用户角色,输入用户名和密码c) 用户发出登录请求d) 系统验证登录信息e) 验证通过A01不存在这个用户A02登录信息填写不完整f) 系统跳至主界面 扩展事件流:A01不存在这个用户g) 系统提示不存在这个用户h) 系统提示请重新选择角色、输入登录信息i) 用户选择取消登录,则结束用例j) 否则,系统跳至基本事件流2k) 重复三次,则系统自动关闭 A02 登录信息填写不完整 l) 系统提示某个登录信息未输入 m) 用户输入该登录信息 n) 系统跳至基本事件流24.系统详细分析设计 4.1顺序图(1)图3 自动排课顺序图(2) 图4 手动排课顺序图 (3) 图5 查询课表顺序图4.2 活动图图6 活动图4.3类图图7 类图4.4部署图图8 部署图4.5构件图图9 构件图4.6 数据库表表1 用户表中文含义字段名称数据类型长度是否为空备注用户名UserName文本20Not Null密码PassWord文本20Not Null用户权限Purview文本20Not Null表2 学院信息表中文含义字段名称数据类型长度是否为空备注学院名称CollegeName文本20Not Null学院编号CollegeID数字6Not Null表3 系信息表中文含义字段名称数据类型长度是否为空备注系编号SystemID数字6Not Null主键系名称Systemname文本20Not Null所属学院CollegeID数字6Not Null外键表4 班级信息表中文含义字段名称数据类型长度是否为空备注班级名称ClassName文本20Not Null班级编号ClassIDr文本20Not Null主键学生人数StudentNumber数字6Not Null所属系SystemID数字6Not Null表5 教师信息表中文含义字段名称数据类型长度是否为空备注教师编号TeacherID数字6Not Null主键教师姓名TeacherName文本20Not Null所带课程CourseName文本20Not Null外键联系电话TelNumber数字20Not Null表6 教室信息表中文含义字段名称数据类型长度是否为空备注教室编号ClassroomID数字6Not Null主键教室容量TotalNumber数字4Not Null教室类型ClassroomType文本20Not Null表7 时间表中文含义字段名称数据类型长度是否为空备注上课时间ClassTime文本20Not Null表8 课程信息表中文含义字段名称数据类型长度是否为空备注课程名称CourseName文本20Not Null主键课程课时CourseTime数字6Not Null任课教师TeacherName文本20Not Null表9 任课表中文含义字段名称数据类型长度是否为空备注课程名称CourseName文本20Not Null教师编号TeacherID数字20Not Null教师姓名TeacherName文本20Not Null班级编号ClassID数字20Not Null每周节数WeekNumber数字4Not Null表10 排课表中文含义字段名称数据类型长度是否为空备注课程名称CourseName文本20Not Null教师姓名TeacherName文本20Not Null上课教室ClassroomID数字20Not Null班级编号ClassID数字20Not Null5.系统实现5.1开发工具及系统运行环境 开发工具:Microsoft Visual Basic6.0、Microsoft Access2003 运行环境:Windows7、WindowsXP5.2 排课、查询子系统实现(1) 手动排课图10 手动排课该界面通过下拉列表选择课程名称、任课教师、教室编号、班级编号和上课时间,点击确定即会添加至数据库表中,右面的表格也会刷新显示出最新的课程安排。核心代码如下Private Sub Form_Load()Dim connstr As StringDim sql As StringDim sql1 As StringDim sql2 As StringDim rst As New ADODB.RecordsetDim rst1 As New ADODB.RecordsetDim rst2 As New ADODB.Recordsetconstr = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UsersfengsiyiDesktop课程设计大学排课系统database排课系统.mdb;Persist Security Info=False 定义数据库连接sql = SELECT * FROM 任课表sql1 = SELECT * FROM 教室信息表sql2 = SELECT * FROM 班级信息表conn.Open constrAdodc1.CommandType = adCmdTextAdodc1.RecordSource = SELECT * FROM 排课表rst.Open sql, constr, adOpenKeyset, adLockOptimisticrst1.Open sql1, constr, adOpenKeyset, adLockOptimisticrst2.Open sql2, constr, adOpenKeyset, adLockOptimisticCombo2.ClearCombo3.ClearDo While Not rst.EOFCombo2.AddItem (Trim(rst.Fields!CourseName)Combo3.AddItem (Trim(rst.Fields!TeacherName)rst.MoveNextLooprst.CloseCombo4.ClearDo While Not rst1.EOFCombo4.AddItem (Trim(rst1.Fields!ClassroomID)rst1.MoveNextLooprst1.CloseCombo5.ClearDo While Not rst2.EOFCombo5.AddItem (Trim(rst2.Fields!ClassID)rst2.MoveNextLooprst2.CloseEnd SubPrivate Sub Command1_Click() 确定If Adodc1.Recordset.Fields!ClassTime = Combo1.Text Then If Adodc1.Recordset.Fields!ClassroomID = Combo4.Text Then MsgBox 该时段该教室已有课,请重新选择, vbInformation, 提示 Else If Adodc1.Recordset.Fields!ClassID = Combo5.Text And Adodc1.Recordset.Fields!ClassroomID = Combo4.Text Then MsgBox 该班级该时段该教室已有课,请重新选择, vbInformation, 提示ElseSet rs = New ADODB.Recordsetsql = insert into 排课表 (CourseName,TeacherName,ClassroomID,ClassID,ClassTime) values ( + Combo2.Text + , + Combo3.Text + , + Combo4.Text + , + Combo5.Text + , + Combo1.Text + )Set rs = conn.Execute(sql)MsgBox 添加信息成功, 48, 提示Combo1.Text = Combo2.Text = Combo3.Text = Combo4.Text = Combo5.Text = Combo1.SetFocusAdodc1.RefreshEnd IfEnd IfEnd IfEnd Sub(2) 自动排课图11 自动排课图12 自动排课该界面通过点击清空按钮即可清空自动排课表中数据,点击开始即可开始自动排课,完成后提示自动排课已完成。核心思想:先在任课表里绑定教师、课程和班级,然后根据课程的每周节数循环,在教室表和时间表里分别取出教室和时间去匹配,如果不冲突则将其记录,进行下一节的教室、时间匹配,如果冲突了则搜索下一条教室和时间的记录再去匹配,直到分配完成。核心代码如下:Private Sub Form_Load()Dim connstr As Stringconstr = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UsersfengsiyiDesktop课程设计大学排课系统database排课系统.mdb;Persist Security Info=False定义数据库连接conn.Open constrEnd SubPrivate Sub Command1_Click() 开始Dim sql, sqll, sqlll As StringDim rt As New ADODB.RecordsetDim rm As New ADODB.RecordsetDim rn As New ADODB.RecordsetDim rp As New ADODB.RecordsetDim rq As New ADODB.RecordsetDim i As IntegerSet rs = New ADODB.Recordsetsql = select * from 任课表 Set rs = conn.Execute(sql)ProgressBar1.Max = 100Do While ProgressBar1.Value ProgressBar1.MaxDo Until rs.EOF = True i = rs(WeekNumber) Do Until i = 0 sqll = select * from 时间表 Set rt = conn.Execute(sqll) Do Until rt.EOF = True Set rp = New ADODB.Recordset coom = select * from 自动排课表 where ClassID= + rs(ClassID) + and ClassTime= + rt(ClassTime) + Set rp = conn.Execute(coom) cool = select * from 自动排课表 where ClassTime= + rt(ClassTime) + and TeacherName= + rs(TeacherName) + Set rq = conn.Execute(cool) If rp.EOF = True And rq.EOF = True Then sqlll = select * from 教室信息表 Set rm = conn.Execute(sqlll) Do Until rm.EOF = True coon = select * from 自动排课表 where ClassTime= + rt(ClassTime) + and ClassroomID= + rm(ClassroomID) + Set rn = conn.Execute(coon) If rn.EOF = True Then sql = insert into 自动排课表 (ClassTime,CourseName,TeacherName,ClassroomID,ClassID) values ( + rt(ClassTime) + , + rs(CourseName) + , + rs(TeacherName) + , + rm(ClassroomID) + , + rs(ClassID) + ) Set rq = conn.Execute(sql) Exit Do Else rm.MoveNext End If Loop Exit Do Else rt.MoveNext End If Loop i = i - 1 Looprs.MoveNextLoopProgressBar1.Value = ProgressBar1.Value + 1DoEventsLoop MsgBox 自动排课已完成, vbInformation, 提示End Sub(3) 手动调整图13 手动调整该界面通过输入教师姓名可以查得该教师一周所上的课程,可以输入相关信息调整该教师的上课时间和上课教室核心代码如下:Private Sub Form_Load()Dim connstr As Stringconstr = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UsersfengsiyiDesktop课程设计大学排课系统database排课系统.mdb;Persist Security Info=False定义数据库连接conn.Open constrAdodc1.CommandType = adCmdTextAdodc1.RecordSource = SELECT * FROM 自动排课表End SubPrivate Sub Command1_Click() 调整教室Dim rt As New ADODB.RecordsetIf (Text1.Text = Or Text2.Text = Or Text3.Text = Or Text4.Text = Or Text5.Text = ) ThenMsgBox (请输入完整信息)ElseSet rs = New ADODB.Recordsetsql = select * from 自动排课表Set rs = conn.Execute(sql) If rs(ClassroomID) = Text4.Text Then MsgBox (该时间段该教室已被占用,请重新选择) Text4.Text = Text5.Text = ElseSet rs = New ADODB.Recordsetsql = update 自动排课表 set ClassroomID= + Text4.Text + where CourseName= + Text1.Text + and TeacherName= + Text2.Text + and ClassTime= + Text5.Text + Set rs = conn.Execute(sql) MsgBox (教室调整成功) Adodc1.Refresh Text1.Text = Text2.Text = Text3.Text = Text4.Text = Text5.Text = End If End IfEnd SubPrivate Sub Command2_Click()Adodc1.RecordSource = select * from 自动排课表 where TeacherName = & Text2.Text & Adodc1.RefreshSet DataGrid1.DataSource = Adodc1DataGrid1.ReBindEnd SubPrivate Sub Command3_Click() 调整时间Dim rt As New ADODB.RecordsetIf (Text1.Text = Or Text2.Text = Or Text3.Text = Or Text4.Text = Or Text5.Text = ) ThenMsgBox (请输入完整信息)ElseSet rs = New ADODB.Recordsetsql = select * from 自动排课表Set rs = conn.Execute(sql) If rs(ClassTime) = Text5.Text Then MsgBox (该教室该时间段已被占用,请重新选择) Text4.Text = Text5.Text = Else Set rs = New ADODB.Recordset sql = update 自动排课表 set ClassTime= + Text5.Text + where CourseName= + Text1.Text + and TeacherName= + Text2.Text + and ClassroomID= + Text4.Text + Set rs = conn.Execute(sql) MsgBox (时间调整成功) Adodc1.Refresh Text1.Text = Text2.Text = Text3.Text = Text4.Text = Text5.Text = End IfEnd IfEnd Sub(4) 班级课表查询图14 班级课表查询图15 班级课表查询图16 班级课表打印预览图17 教师课表打印预览图18 教室课表打印预览该界面通过输入班级编号,点击查询(手动)即可查询出手动排课后的课表,点击查询(自动)即可查询出自动排课后的课表,点击打印,系统即会调用Excel表格,显示出自动排课后的课程表核心代码如下:Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetPrivate Sub Command1_Click() 打印Text1.SetFocusDim sql As StringIf Text1.Text = ThenMsgBox 请输入要查询的班级编号!Exit SubEnd IfSet rs = New ADODB.Recordsetsql = select * from 自动排课表 where ClassID like % + Text1.Text + %Set rs = conn.Execute(sql)If rs.EOF = True ThenMsgBox 该班级课表不存在!Text1.Text = Text1.SetFocusExit SubEnd IfSet xlApp = New Excel.ApplicationSet xlBook = xlApp.Workbooks.Open(App.Path & 课程表)xlApp.Visible = TrueSet xlSheet = xlBook.Worksheets(班级课程表)xlSheet.ActivateDo Until rs.EOF = True If rs(ClassTime) = 周一第一大节 Then xlSheet.Cells(9, 3) = rs(CourseName) xlSheet.Cells(11, 3) = rs(TeacherName) xlSheet.Cells(12, 3) = rs(ClassroomID) ElseIf rs(ClassTime) = 周一第二大节 Then xlSheet.Cells(13, 3) = rs(CourseName) xlSheet.Cells(15, 3) = rs(TeacherName) xlSheet.Cells(16, 3) = rs(ClassroomID) ElseIf rs(ClassTime) = 周一第三大节 Then xlSheet.Cells(17, 3) = rs(CourseName) xlSheet.Cells(19, 3) = rs(TeacherName) xlSheet.Cells(20, 3) = rs(ClassroomID) ElseIf rs(ClassTime) = 周一第四大节 Then xlSheet.Cells(21, 3) = rs(CourseName) xlSheet.Cells(23, 3) = rs(TeacherName) xlSheet.Cells(24, 3) = rs(ClassroomID) ElseIf rs(ClassTime) = 周一第五大节 Then xlSheet.Cells(25, 3) = rs(CourseName) xlSheet.Cells(27, 3) = rs(TeacherName) xlSheet.Cells(28, 3) = rs(ClassroomID) ElseIf rs(ClassTime) = 周二第一大节 Then xlSheet.Cells(9, 4) = rs(CourseName) xlSheet.Cells(11, 4) = rs(TeacherName) xlSheet.Cells(12, 4) = rs(ClassroomID) ElseIf rs(ClassTime) = 周二第二大节 Then xlSheet.Cells(13, 4) = rs(CourseName) xlSheet.Cells(15, 4) = rs(TeacherName) xlSheet.Cells(16, 4) = rs(ClassroomID) ElseIf rs(ClassTime) = 周二第三大节 Then xlSheet.Cells(17, 4) = rs(CourseName) xlSheet.Cells(19, 4) = rs(TeacherName) xlSheet.Cells(20, 4) = rs(ClassroomID) ElseIf rs(ClassTime) = 周二第四大节 Then xlSheet.Cells(21, 4) = rs(CourseName) xlSheet.Cells(23, 4) = rs(TeacherName) xlSheet.Cells(24, 4) = rs(ClassroomID) ElseIf rs(ClassTime) = 周二第五大节 Then xlSheet.Cells(25, 4) = rs(CourseName) xlSheet.Cells(27, 4) = rs(TeacherName) xlSheet.Cells(28, 4) = rs(ClassroomID) ElseIf rs(ClassTime) = 周三第一大节 Then xlSheet.Cells(9, 5) = rs(CourseName) xlSheet.Cells(11, 5) = rs(TeacherName) xlSheet.Cells(12, 5) = rs(ClassroomID) ElseIf rs(ClassTime) = 周三第二大节 Then xlSheet.Cells(13, 5) = rs(CourseName) xlSheet.Cells(15, 5) = rs(TeacherName) xlSheet.Cells(16, 5) = rs(ClassroomID) ElseIf rs(ClassTime) = 周三第三大节 Then xlSheet.Cells(17, 5) = rs(CourseName) xlSheet.Cells(19, 5) = rs(TeacherName) xlSheet.Cells(20, 5) = rs(ClassroomID) ElseIf rs(ClassTime) = 周三第四大节 Then xlSheet.Cells(21, 5) = rs(CourseName) xlSheet.Cells(23, 5) = rs(TeacherName) xlSheet.Cells(24, 5) = rs(ClassroomID) ElseIf rs(ClassTime) = 周三第五大节 Then xlSheet.Cells(25, 5) = rs(CourseName) xlSheet.Cells(27, 5) = rs(TeacherName) xlSheet.Cells(28, 5) = rs(ClassroomID) ElseIf rs(ClassTime) = 周四第一大节 Then xlSheet.Cells(9, 6) = rs(CourseName) xlSheet.Cells(11, 6) = rs(TeacherName) xlSheet.Cells(12, 6) = rs(ClassroomID) ElseIf rs(ClassTime) = 周四第二大节 Then xlSheet.Cells(13, 6) = rs(CourseName) xlSheet.Cells(15, 6) = rs(TeacherName) xlSheet.Cells(16, 6) = rs(ClassroomID) ElseIf rs(ClassTime) = 周四第三大节 Then xlSheet.Cells(17, 6) = rs(CourseName) xlSheet.Cells(19, 6) = rs(TeacherName) xlSheet.Cells(20, 6) = rs(ClassroomID) ElseIf rs(ClassTime) = 周四第四大节 Then xlSheet.Cells(21, 6) = rs(CourseName) xlSheet.Cells(23, 6) = rs(TeacherName) xlSheet.Cells(24, 6) = rs(ClassroomID) ElseIf rs(ClassTime) = 周四第五大节 Then xlSheet.Cells(25, 6) = rs(CourseName) xlSheet.Cells(27, 6) = rs(TeacherName) xlSheet.Cells(28, 6) = rs(ClassroomID) ElseIf rs(ClassTime) = 周五第一大节 Then xlSheet.Cells(9, 7) = rs(CourseName) xlSheet.Cells(11, 7) = rs(TeacherName) xlSheet.Cells(12, 7) = rs(ClassroomID) ElseIf rs(ClassTime) = 周五第二大节 Then xlSheet.Cells(13, 7) = rs(CourseName) xlSheet.Cells(15, 7) = rs(TeacherName) xlSheet.Cells(16, 7) = rs(ClassroomID) ElseIf rs(ClassTime) = 周五第三大节 Then xlSheet.Cells(17, 7) = rs(CourseName) xlSheet.Cells(19, 7) = rs(TeacherName) xlSheet.Cells(20, 7) = rs(ClassroomID) ElseIf rs(ClassTime) = 周五第四大节 Then xlSheet.Cells(21, 7) = rs(CourseName) xlSheet.Cells(23, 7) = rs(TeacherName) xlSheet.Cells(24, 7) = rs(ClassroomID) ElseIf rs(ClassTime) = 周五第五大节 Then xlSheet.Cells(25, 7) = rs(CourseName) xlSheet.Cells(27, 7) = rs(TeacherName) xlSheet.Cells(28, 7) = rs(ClassroomID) End Ifrs.MoveNextLoopEnd SubPrivate Sub Command3_Click() 查询(自动)Adodc1.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UsersfengsiyiDesktop课程设计大学排课系统database排课系统.mdb;Persist Security Info=FalseAdodc1.RecordSource = select * from 自动排课表 where ClassID like % + Text1.Text + %Adodc1.RefreshSet DataGrid1.DataSource = Adodc1DataGrid1.ReBindEnd SubPrivate Sub Command4_Click() 查询(手动)Adodc1.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UsersfengsiyiDesktop课程设计大学排课系统database排课系统.mdb;Persist Security Info=FalseAdodc1.RecordSource = select * from 排课表 where ClassID like % + Text1.Text + %Adodc1.RefreshSet DataGrid1.DataSource = Adodc1DataGrid1.ReBindEnd SubPrivate Sub Form_Load()Dim constr As Stringcon

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论