资源描述
毕业设计
<<排课管理系统>>
院系______
专业______
班级______
姓名______
日期 年 月 日
目 录
摘 要 I
ABSTRACT II
第一章 引言 1
1.1 背景 1
1.1.1老师管理系统 1
1.2开发老师管理系统目标和标准 3
1.3开发环境介绍 3
1.3.1 开发平台 4
1.3.2数据库设计工具——ACCESS数据库管理系统 7
第二章 系统设计 9
2.1 系统分析 9
2.2 系统步骤和操作方法设计 11
第三章 系统界面设计 12
3.1系统界面设计和代码分析 12
第四章 数据库设计 30
4.1数据库设计 30
4.2 数据库概念和发展 30
4.3系统测试和评价 38
总 结 39
致 谢 40
参考文件 41
摘 要
20世纪以来,社会生产力快速发展,科学技术突飞猛进,大家进行信息交流深度和广度不停增加,信息量急剧增加,传统信息处理和决议手段已不能适应社会需要,信息关键性和信息处理问题紧迫性空前提升了,面对着日益复杂和不停发展,改变社会环境,尤其是企业间日趋猛烈竞争形势,一个人、一个企业要在现代社会中求生存,求发展,必需含有足够信息和强有力信息搜集和处理手段。
对于一个学校来说,大量老师课程安排难于经过传统方法进行管理;这就迫切需要利用计算机技术来帮助学校管理者来处理老师课程安排日常管理,合理安排课程,预防课程冲突.排课管理系统能够很好处理以上问题.排课管理系统是管理信息系统一个经典用例.
管理信息系统是一个集信息技术、经济管理理论、统计学和运筹学、数据库技术为一体综合性系统,是一个资金技术密集型、劳动密集型、智力密集型项目。中国拥有宽广市场和丰富人才资源,有几十年技术积累和经验积累,有一定后发优势。管理信息系统创新工作既不能妄自菲薄,更不能夜郎自大。要抓住目前网络经济兴起有利时机,以实现中国信息技术和信息产业跨越式发展,愈加好地发挥信息产业对国民经济增加拉动作用。
开发学校排课管理系统过程就是要实现数据处理方法由人工管理向计算机管理转变,它在计算机技术和老师管理实践活动二者之间架设桥梁。
关键字:排课管理,管理信息系统,数据库,计算机管理
第一章 引言
对于一个学校来说,大量老师课程安排难于经过传统方法进行管理;这就迫切需要利用计算机技术来帮助学校管理者来处理老师课程安排日常管理,合理安排课程,预防课程冲突.排课管理系统能够很好处理以上问题.排课管理系统是管理信息系统一个经典用例.
1.1背景
1.1.1排课管理系统
现在伴随教育事业发展,学校对老师课程安排复杂度增加,一个单位,各个学科天天课程安排和教室资源分配,排课工资等信息量将快速增加,传统手工处理方法已经跟不上信息爆炸般扩增.所以开发一个可靠,高效老师排课管理系统是很有必需.
1.2 开发排课管理系统目标和标准
排课管理系统关键目标是服务和中小学,各高校管理者,方便其管理本校排课信息软件系统.其标准是做到,界面友好人性,操作简单,可靠.
1.3开发环境介绍
1.3.1开发平台
本老师管理系统开发平台为微软windows xp visual basic 6.0 和微软Access作为操作数据库.
1.3.2 数据库设计工具——ACCESS数据库管理系统
Microsoft Access介绍:
使用 Microsoft Access,能够在单一数据库文件中管理全部信息。在这个文件中,用户能够将自己数据分别保留在各自独立存放空间中,这些空间称作表;能够使用联机窗体来查看、添加及更新表中数据;使用查询来查找并检索所要数据;也能够使用报表以特定版面部署来分析及打印数据。
假如要保留数据,请为每一个类型信息创建一个表。假如要从查询、窗体或报表中多个表中将数据合并在一起,就要定义各个表之间关系。
假如要搜索并检索符合指定条件数据,包含来自多个表中数据,就要创建查询。查询同时也能够更新或删除多条统计,并对数据实施内嵌或自定义计算。
假如要简单地直接在某个表中查看、输入及更改数据,请创建一个窗体。在打开一个窗体时,Microsoft Access 将从一个或多个表中检索数据,并使用用户在“窗体向导”选择版面布局或所创建版面布局,将窗体显示在屏幕上。
假如要分析数据或将数据以特定方法打印出来,请创建一个报表。比如,能够打印一份将数据分组并计算数据总和报表,也能够打印另一份带有多种数据格式打印邮件标签报表。
第二章 系统设计
2.1系统分析
本排课管理系统关键由以下几大模块组成.
一. 教职员入库信息.
二. 排课管理
三. 教职员带课查询
四. 本学期课程设置
五. 打印课程表
六. 打印老师代课表
2.2 系统步骤和操作方法设计
系统登陆
主界面
教职职员入库信息
排课管理
教职职员带课查询
本学期课程安排
打印课程表
打印老师带课表
第三章 系统界面设计
3.1系统界面设计
1.登陆界面
代码分析:
Option Explicit
Public LoginSucceeded As Boolean
Private Sub cmdCancel_Click()
'set the global var to false
'to denote a failed login
LoginSucceeded = False
Unload fmStart
End Sub
Private Sub cmdOK_Click()
'check for correct password
If txtPassword = "password" Then
'place code to here to pass the
'success to the calling sub
'setting a global var is the easiest
LoginSucceeded = True
Me.Hide
fmStart.Show
Else
MsgBox "Invalid Password, try again!", , "Login"
txtPassword.SetFocus
SendKeys "{Home}+{End}"
End If
End Sub
Private Sub Form_Load()
Load fmStart
fmStart.Hide
End Sub
2. 教职员入库信息界面:
代码分析:
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Dim qrs As ADODB.Recordset
Dim slSql As String
Dim i, j As Integer
Dim strBak(2) As String
Dim sqlStr As String
Private Sub Command1_Click(Index As Integer)
On Error GoTo Err:
Dim cn As Integer
For cn = 0 To 2
Text1(cn).Text = ""
Next cn
If rs.RecordCount > 0 Then
Select Case Index
Case 0:
rs.MoveFirst
Case 1:
rs.MovePrevious
Command1(2).Enabled = True
Command1(3).Enabled = True
Case 2:
rs.MoveNext
Command1(0).Enabled = True
Command1(1).Enabled = True
Case 3:
rs.MoveLast
End Select
displayInfo
End If
GoTo ok:
Err:
Call dataOver
ok:
End Sub
Private Sub dataOver()
If rs.BOF Then
Command1(0).Enabled = False
Command1(1).Enabled = False
Command1(2).Enabled = True
Command1(3).Enabled = True
rs.MoveFirst
Else
If rs.EOF Then
rs.MoveLast
Command1(0).Enabled = True
Command1(1).Enabled = True
Command1(2).Enabled = False
Command1(3).Enabled = False
Else
MsgBox "Database Error", vbExclamation + vbOKOnly, "Error unknown"
End If
End If
End Sub
Private Sub Command2_Click(Index As Integer)
On Error GoTo errDeal
If Index = 0 Or Index = 2 Then
CanSave (True)
Else
CanSave (False)
End If
Select Case Index
Case 0:
rs.AddNew
Call toNull
Case 1:
j = MsgBox("你确定要删除本统计吗?", vbYesNo + vbQuestion, "删除")
If j = vbYes Then
rs.Delete
Call toNull
End If
Case 2:
rs.Delete
rs.AddNew
Case 3:
If Len(LTrim$(RTrim$(Text1(0).Text))) > 0 Then
'rs.AddNew
For i = 0 To 2
If Len(LTrim$(RTrim$(Text1(i).Text))) > 0 Then
rs.Fields(i) = Text1(i).Text
End If
Next i
rs.Update
Else
MsgBox "姓名不得为空", vbOKOnly + vbExclamation, "Error"
End If
Case 4:
For i = 0 To 2
Text1(i).Text = strBak(i)
Next i
Call Command2_Click(3)
End Select
Exit Sub
errDeal:
MsgBox "database Error", vbExclamation + vbOKOnly, "error"
'okEnd:
End Sub
Private Sub CanSave(ok As Boolean)
Frame1.Enabled = Not ok
Frame3.Enabled = ok
For i = 0 To 4
If i < 3 Then
Command2(i).Enabled = Not ok
Else
Command2(i).Enabled = ok
End If
Next i
End Sub
Private Sub Form_Load()
Dim cnt As Integer
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset
Set qrs = New ADODB.Recordset
'"Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\WINDOWS\Desktop\dataUse.mdb"
con.Open "provider=Microsoft.Jet.OLEDB.4.0; data source= " & App.Path & "\dataUse.mdb"
rs.Open "select * from teacher", con, adOpenStatic, adLockOptimistic
If rs.RecordCount > 0 Then
rs.MoveFirst
displayInfo
CanSave (False)
Else
'new data
CanSave (True)
Call Command2_Click(0)
End If
End Sub
Private Sub displayInfo()
i = j = 0
For i = 0 To 2
'Text1(i).Text = ""
If Len(rs.Fields(i)) > 0 Then
Text1(i).Text = rs.Fields(i)
strBak(i) = Text1(i).Text
End If
Next i
End Sub
Private Sub toNull()
For i = 0 To 2
Text1(i).Text = ""
strBak(i) = ""
Next i
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error GoTo KK
rs.Close
Set rs = Nothing
qrs.Close
Set qrs = noting
con.Close
Set con = Nothing
KK:
End Sub
Private Sub queryComm_Click()
slSql = "select * from Teacher where cTrname = '" + Text1(3).Text + "'"
qrs.Open slSql, con, adOpenStatic
If Not qrs.EOF Then
qrs.MoveFirst
i = j = 0
For i = 0 To 2
'Text1(i).Text = ""
If Len(qrs.Fields(i)) > 0 Then
Text1(i).Text = qrs.Fields(i)
strBak(i) = Text1(i).Text
End If
Next i
End If
qrs.Close
End Sub
3. 排课管理界面
代码分析:
Option Explicit
Dim conn As ADODB.Connection
Dim rsTr As ADODB.Recordset
Dim rsSj As ADODB.Recordset
Dim i, j, sjCnt As Integer
Dim ClassCode As String
Dim TrChanged, ClassChanged As Boolean
Dim strSql As String
Dim rsTrAry As ADODB.Recordset
Dim rsClassAry As ADODB.Recordset
Dim StrTr(9) As String
Dim strSj(49) As String
Dim minht, maxHt As Integer
Private Sub EnableSave(ok As Boolean)
Dim k As Integer
For k = 0 To 3
If k < 2 Then
cb(k).Enabled = Not ok
Else
cb(k).Enabled = ok
End If
Next k
Frame7.Enabled = Not ok
Frame2.Enabled = ok
Frame3.Enabled = ok
End Sub
Private Sub cb_Click(Index As Integer)
Me.MousePointer = 11
On Error GoTo errDeal
Select Case Index
Case 0:
ClassCode = Trim(Combo1(0).Text) & "." & Trim(Combo1(1).Text)
If Len(Trim(Combo1(0).Text)) > 0 And Len(ClassCode) > 1 Then
Call displayInfo
cb(1).Enabled = True
End If
Case 1:
cb_Click (0)
EnableSave (True)
cb(1).Enabled = False
Case 2:
If TrChanged Then
strSql = "delete * from trclass where cclasscode='" & ClassCode & "'"
conn.Execute strSql
Dim strTrName As String
For i = 0 To sjCnt - 1
strTrName = Trim(Combo2(i).Text)
If Len(strTrName) > 0 Then
strSql = "insert into trclass values('" & ClassCode & "' ," + "'" + Trim(Label2(i).Caption) + "' ," + "'" + Trim(Combo2(i).Text) + "' )"
'me.caption = strSql
conn.Execute strSql
End If
Next i
TrChanged = False
rsTrAry.Requery
cb(1).Enabled = False
End If
If ClassChanged Then
conn.Execute "delete * from classarray where cclasscode='" & ClassCode & "'"
Dim X, Y As Integer
For i = 0 To 49
Y = i Mod 5 + 1
X = Int(i / 5) + 1
If Len(Trim(Combo3(i).Text)) > 0 Then
strSql = "insert into classarray values('" & ClassCode & "' ," & Y & "," & X & ", '" & Trim(Combo3(i).Text) & "')"
'me.caption = strSql
conn.Execute strSql
End If
Next i
ClassChanged = False
rsClassAry.Requery
End If
EnableSave (False)
Case 3:
For i = 0 To sjCnt - 1
Combo2(i).Text = Combo2(i).Tag
Next i
For i = 0 To 49
Combo3(i).Text = Combo3(i).Tag
Next i
EnableSave (False)
cb(1).Enabled = False
End Select
GoTo ok
errDeal:
MsgBox "Error Unknown"
ok:
Me.MousePointer = 0
End Sub
Private Sub displayInfo()
For j = 0 To sjCnt - 1
strSql = "select cteacher from trclass where cclasscode='" & ClassCode & "' and csubject='" & Trim(Label2(j).Caption) & "'"
'Text1.Text = strSql
'me.caption = strSql
Set rsTrAry = conn.Execute(strSql)
'Dim tpRs As ADODB.Recordset
'Set tpRs = conn.Execute("select cteacher from trclass where cclasscode='" & ClassCode & "' and csubject='" & Trim(Label2(j).Caption) & "'")
'Text1.Text = "####" & strSql & "####"
'While Not tpRs.EOF
' Text1.Text = Text1.Text + tpRs.Fields(0)
' tpRs.MoveNext
'Wend
'这里用另一个方法创建 recordset
'rsTrAry.
If Not rsTrAry.EOF Then
'rsTrAry.MoveFirst
Combo2(j).Text = rsTrAry.Fields(0) 'rsTrAry!cteacher
Combo2(j).Tag = rsTrAry.Fields(0) ' rsTrAry!cteacher
'EnableSave (False)
Else
' MsgBox "nodata", vbOKOnly
Combo2(j).Text = ""
Combo2(j).Tag = ""
'EnableSave (True)
'''''''''''''''''''''''''''这里语句可能犯错
End If
Next j
For i = 0 To 49
Dim X, Y As Integer
X = Int(i / 5 + 1)
Y = i Mod 5 + 1
strSql = "select csjname from classarray where cclasscode='" & ClassCode & "' and itimew=" & Y & " and itimen=" & X
'me.caption = strSql
' rsClassAry.Open strSql, conn, adOpenStatic, adLockOptimistic
Set rsClassAry = conn.Execute(strSql)
If Not rsClassAry.EOF Then
Combo3(i).Text = rsClassAry.Fields(0)
Combo3(i).Tag = rsClassAry.Fields(0)
'EnableSave (False)
Else
Combo3(i).Text = ""
Combo3(i).Tag = ""
'EnableSave (True)
End If
Next i
End Sub
Private Function Trim(str As String) As String
Trim = LTrim$(RTrim$(str))
End Function
Private Sub Combo2_Change(Index As Integer)
TrChanged = True
End Sub
Private Sub Combo3_Change(Index As Integer)
ClassChanged = True
End Sub
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Form_Load()
Me.MousePointer = 11
Set conn = New ADODB.Connection
Set rsTr = New ADODB.Recordset
Set rsSj = New ADODB.Recordset
Set rsTrAry = New ADODB.Recordset
Set rsClassAry = New ADODB.Recordset
'"Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\WINDOWS\Desktop\dataUse.mdb"
conn.Open "provider=Microsoft.Jet.OLEDB.4.0; data source= " & App.Path & "\dataUse.mdb"
rsTr.Open "select * from teacher", conn, adOpenStatic, adLockOptimistic
rsSj.Open "select * from subject", conn, adOpenStatic, adLockOptimistic
minht = 4090
maxHt = 9000
sjCnt = rsSj.RecordCount
Call comboInit
EnableSave (False)
cb(1).Enabled = False
'Command1.Tag = "<<"
Me.Height = minht
Me.MousePointer = 0
End Sub
Private Sub comboInit()
rsSj.MoveFirst
Dim trCnt As Integer
trCnt = rsTr.RecordCount
rsTr.MoveFirst
Combo1(0).Text = ""
Combo1(1).Text = ""
For i = 1 To 12
Combo1(0).AddItem (i)
Next i
For i = 1 To 20
Combo1(1).AddItem (i)
Next i
For i = 0 To 9
Combo2(i).Text = ""
If i < sjCnt Then
Label2(i).Caption = rsSj!csjname
rsSj.MoveNext
Else
Label2(i).Visible = False
Combo2(i).Visible = False
End If
Label3(i).Caption = i + 1
Next i
For i = 0 To sjCnt - 1
If i > 0 Then
For j = 0 To trCnt - 1
'the last modified here....................
Combo2(i).List(j) = Combo2(0).List(j)
Next j
Else
rsTr.MoveFirst
While Not rsTr.EOF
Combo2(i).AddItem (rsTr.Fields(0))
rsTr.MoveNext
Wend
End If
Next i
For i = 0 To 49
Combo3(i).Text = ""
For j = 0 To sjCnt - 1
Combo3(i).AddItem (Label2(j).Caption)
Next j
Next i
End Sub
Private Sub Form_Resize()
Frame3.Top = Me.Height - Frame3.Height - 520
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error GoTo Err:
rsTr.Close
rsSj.Close
rsTrAry.Close
rsClassAry.Close
Set rsTr = Nothing
Set rsSj = Nothing
Set rsTrAry = Nothing
Set rsClassAry = Nothing
conn.Close
Set conn = Nothing
Err:
End Sub
Private Sub Timer1_Timer()
If Command1.Caption = ">>" Then
If Me.Height < maxHt Then
Me.Height = Me.Height + 150
Else
Timer1.Enabled = False
Command1.Caption = "<<"
Command1.ToolTipText = "收起课程表!"
Me.Height = maxHt
Timer2.Enabled = False
Command1.BackColor = RGB(255, 255, 255)
Shape2.BackColor = RGB(0, 100, 200)
End If
Else
If Me.Height > minht Then
Me.Height = Me.Height - 150
Else
Timer1.Enabled = False
Command1.Caption = ">>"
Command1.ToolTipText = "课程表在这里!"
Me.Height = minht
Timer2.Enabled = True
End If
End If
展开阅读全文