当前位置:文档之家› 排课管理系统

排课管理系统

毕业设计<<排课管理系统>>院系______专业______班级______姓名______日期年月日目录摘要IABSTRACT II第一章引言 1背景11开发教师管理系统的目的和原则 3开发环境介绍 3开发平台 4——ACCESS数据库管理系统7第二章系统设计 9系统分析9系统流程和操作方式设计11第三章系统界面设计12系统界面设计以及代码分析 12第四章数据库的设计30数据库设计 30数据库概念和发展30系统测试与评价38总结39致谢40参考文献41摘要20世纪以来,社会生产力迅速发展,科学技术突飞猛进,人们进行信息交流的深度与广度不断增加,信息量急剧增长,传统的信息处理与决策的手段已不能适应社会的需要,信息的重要性和信息处理问题的紧迫性空前提高了,面对着日益复杂和不断发展,变化的社会环境,特别是企业间日趋剧烈的竞争形势,一个人、一个企业要在现代社会中求生存,求发展,必须具备足够的信息和强有力的信息收集与处理手段。

对于一个学校来说,大量教师课程安排难于通过传统的方法进行管理;这就迫切需要利用计算机技术来帮助学校管理者来处理教师课程安排的日常管理,合理安排课程,防止课程冲突.排课管理系统可以很好的解决以上问题.排课管理系统是管理信息系统的一个典型用例.管理信息系统是一个集信息技术、经济管理理论、统计学与运筹学、数据库技术为一体的综合性系统,是一个资金技术密集型、劳动密集型、智力密集型的项目。

我国拥有广阔的市场和丰富的人才资源,有几十年的技术积累和经验积累,有一定的后发优势。

管理信息系统的创新工作既不能妄自菲薄,更不能夜郎自大。

要抓住当前网络经济兴起的有利时机,以实现我国信息技术和信息产业的跨越式发展,更好地发挥信息产业对国民经济增长的拉动作用。

开发学校排课管理系统的过程就是要实现数据处理方式由人工管理向计算机管理的转变,它在计算机技术和教师管理实践活动两者之间架设桥梁。

关键字:排课管理,管理信息系统,数据库,计算机管理第一章引言对于一个学校来说,大量教师课程安排难于通过传统的方法进行管理;这就迫切需要利用计算机技术来帮助学校管理者来处理教师课程安排的日常管理,合理安排课程,防止课程冲突.排课管理系统可以很好的解决以上问题.排课管理系统是管理信息系统的一个典型用例.背景如今随着教育事业的发展,学校对教师课程安排的复杂度的增加,一个单位,各个学科每天的课程安排以及教室资源的分配,排课工资等信息量将迅速的增加,传统的手工的处理方式已经跟不上信息爆炸般的扩增.所以开发一种可靠,高效的教师排课管理系统是很有必要的.开发排课管理系统的目的与原则排课管理系统的主要目的是服务与中小学,各高校的管理者,方便其管理本校排课信息的软件系统.其原则是做到,界面友好人性,操作简单,可靠.开发环境介绍本教师管理系统的开发平台为微软windows xp visual basic 以及微软的Access作为操作数据库.1.3.2数据库设计工具——ACCESS数据库管理系统MicrosoftAccess介绍:使用?Microsoft?Access,可以在单一的数据库文件中管理所有的信息。

在这个文件中,用户可以将自己的数据分别保存在各自独立的存储空间中,这些空间称作表;可以使用联机窗体来查看、添加及更新表中的数据;使用查询来查找并检索所要的数据;也可以使用报表以特定的版面布置来分析及打印数据。

如果要保存数据,请为每一种类型的信息创建一个表。

如果要从查询、窗体或报表中的多个表中将数据合并在一起,就要定义各个表之间的关系。

如果要搜索并检索符合指定条件的数据,包括来自多个表中的数据,就要创建查询。

查询的同时也可以更新或删除多条记录,并对数据执行内嵌或自定义的计算。

如果要简单地直接在某个表中查看、输入及更改数据,请创建一个窗体。

在打开一个窗体时,Microsoft?Access?将从一个或多个表中检索数据,并使用用户在“窗体向导”选择的版面布局或所创建的版面布局,将窗体显示在屏幕上。

如果要分析数据或将数据以特定的方式打印出来,请创建一个报表。

例如,可以打印一份将数据分组并计算数据总和的报表,也可以打印另一份带有各种数据格式的打印邮件标签的报表。

第二章系统设计系统分析本排课管理系统主要由以下几大模块构成.一.教职员入库信息.二.排课管理三.教职员带课查询四.本学期课程设置五.打印课程表六.打印教师代课表系统流程和操作方式设计第三章系统界面设计系统界面设计1.登陆界面代码分析:Option ExplicitPublic LoginSucceeded As BooleanPrivate Sub cmdCancel_Click()'set the global var to false'to denote a failed loginLoginSucceeded = FalseUnload fmStartEnd SubPrivate Sub cmdOK_Click()'check for correct passwordIf txtPassword = "password" Then'place code to here to pass the'success to the calling sub'setting a global var is the easiestLoginSucceeded = TrueElseMsgBox "Invalid Password, try again!", , "Login"SendKeys "{Home}+{End}"End IfEnd SubPrivate Sub Form_Load()Load fmStartEnd Sub2.教职员入库信息界面:代码分析:Dim con AsDim rs AsDim qrs AsDim slSql As StringDim i, j As IntegerDim strBak(2) As StringDim sqlStr As StringPrivate Sub Command1_Click(Index As Integer) On Error GoTo Err:Dim cn As IntegerFor cn = 0 To 2Text1(cn).Text = ""Next cnIf > 0 ThenSelect Case IndexCase 0:Case 1:Command1(2).Enabled = TrueCommand1(3).Enabled = TrueCase 2:Command1(0).Enabled = TrueCase 3:End SelectdisplayInfoEnd IfGoTo ok:Err:Call dataOverok:End SubPrivate Sub dataOver()If ThenCommand1(0).Enabled = FalseCommand1(1).Enabled = FalseCommand1(2).Enabled = TrueCommand1(3).Enabled = TrueElseIf ThenCommand1(0).Enabled = TrueCommand1(2).Enabled = FalseCommand1(3).Enabled = FalseElseMsgBox "Database Error", vbExclamation + vbOKOnly, "Error unknown"End IfEnd IfEnd SubPrivate Sub Command2_Click(Index As Integer)On Error GoTo errDealIf Index = 0 Or Index = 2 ThenCanSave (True)ElseCanSave (False)End IfSelect Case IndexCase 0:Call toNullCase 1:j = MsgBox("你确定要删除本记录吗", vbYesNo + vbQuestion, "删除")If j = vbYes ThenCall toNullEnd IfCase 2:Case 3:If Len(LTrim$(RTrim$(Text1(0).Text))) > 0 Then'For i = 0 To 2If Len(LTrim$(RTrim$(Text1(i).Text))) > 0 Then(i) = Text1(i).TextEnd IfNext iElseMsgBox "姓名不得为空", vbOKOnly + vbExclamation, "Error" End IfCase 4:For i = 0 To 2Text1(i).Text = strBak(i)Next iCall Command2_Click(3)End SelectExit SuberrDeal:MsgBox "database Error", vbExclamation + vbOKOnly, "error" 'okEnd:End SubPrivate Sub CanSave(ok As Boolean)= Not ok= okFor i = 0 To 4If i < 3 ThenCommand2(i).Enabled = Not okElseCommand2(i).Enabled = okEnd IfNext iEnd SubPrivate Sub Form_Load()Dim cnt As IntegerSet con = NewSet rs = NewSet qrs = New"select * from teacher", con, adOpenStatic, adLockOptimistic If > 0 ThendisplayInfoCanSave (False)Else'new dataCanSave (True)Call Command2_Click(0)End IfEnd SubPrivate Sub displayInfo()i = j = 0For i = 0 To 2'Text1(i).Text = ""If Len(i)) > 0 ThenText1(i).Text = (i)strBak(i) = Text1(i).TextEnd IfNext iEnd SubPrivate Sub toNull()For i = 0 To 2Text1(i).Text = ""strBak(i) = ""Next iEnd SubPrivate Sub Form_Unload(Cancel As Integer)On Error GoTo KKSet rs = NothingSet qrs = notingSet con = NothingKK:End SubPrivate Sub queryComm_Click()slSql = "select * from Teacher where cTrname = '" + Text1(3).Text + "'"slSql, con, adOpenStaticIf Not Theni = j = 0For i = 0 To 2'Text1(i).Text = ""If Len(i)) > 0 ThenText1(i).Text = (i)strBak(i) = Text1(i).Text End IfNext iEnd IfEnd Sub3. 排课管理界面代码分析:Option ExplicitDim conn AsDim rsTr AsDim rsSj AsDim i, j, sjCnt As IntegerDim ClassCode As StringDim TrChanged, ClassChanged As Boolean Dim strSql As StringDim rsTrAry AsDim rsClassAry AsDim StrTr(9) As StringDim strSj(49) As StringDim minht, maxHt As IntegerPrivate Sub EnableSave(ok As Boolean) Dim k As IntegerFor k = 0 To 3If k < 2 Thencb(k).Enabled = Not okElsecb(k).Enabled = okEnd IfNext k= Not ok= ok= okEnd SubPrivate Sub cb_Click(Index As Integer)= 11On Error GoTo errDealSelect Case IndexCase 0:ClassCode = Trim(Combo1(0).Text) & "." & Trim(Combo1(1).Text)If Len(Trim(Combo1(0).Text)) > 0 And Len(ClassCode) > 1 ThenCall displayInfocb(1).Enabled = TrueEnd IfCase 1:cb_Click (0)EnableSave (True)cb(1).Enabled = FalseCase 2:If TrChanged ThenstrSql = "delete * from trclass where cclasscode='" & ClassCode & "'" strSqlDim strTrName As StringFor i = 0 To sjCnt - 1strTrName = Trim(Combo2(i).Text)If Len(strTrName) > 0 ThenstrSql = "insert into trclass values('" & ClassCode & "' ," + "'" + Trim(Label2(i).Caption) + "' ," + "'" + Trim(Combo2(i).Text) + "' )"' = strSqlstrSqlEnd IfNext iTrChanged = Falsecb(1).Enabled = FalseEnd IfIf ClassChanged Then"delete * from classarray where cclasscode='" & ClassCode & "'"Dim X, Y As IntegerFor i = 0 To 49Y = i Mod 5 + 1X = Int(i / 5) + 1If Len(Trim(Combo3(i).Text)) > 0 ThenstrSql = "insert into classarray values('" & ClassCode & "' ," & Y & "," & X & ", '" & Trim(Combo3(i).Text) & "')"' = strSqlstrSqlEnd IfNext iClassChanged = FalseEnd IfEnableSave (False)Case 3:For i = 0 To sjCnt - 1Combo2(i).Text = Combo2(i).TagNext iFor i = 0 To 49Combo3(i).Text = Combo3(i).TagNext iEnableSave (False)cb(1).Enabled = FalseEnd SelectGoTo okerrDeal:MsgBox "Error Unknown"ok:= 0End SubPrivate Sub displayInfo()For j = 0 To sjCnt - 1strSql = "select cteacher from trclass where cclasscode='" & ClassCode & "' and csubject='" & Trim(Label2(j).Caption) & "'"' = strSql' = strSqlSet rsTrAry = (strSql)'Dim tpRs As'Set tpRs = ("select cteacher from trclass where cclasscode='" & ClassCode & "' and csubject='" & Trim(Label2(j).Caption) & "'")' = "####" & strSql & "####"'While Not' = + (0)''Wend'这里用另一种方法创建 recordset'rsTrAry.If Not Then'Combo2(j).Text = (0) 'rsTrAry!cteacherCombo2(j).Tag = (0) ' rsTrAry!cteacher'EnableSave (False)Else' MsgBox "nodata", vbOKOnlyCombo2(j).Text = ""Combo2(j).Tag = ""'EnableSave (True)'''''''''''''''''''''''''''这里语句可能出错End IfNext jFor i = 0 To 49Dim X, Y As IntegerX = Int(i / 5 + 1)Y = i Mod 5 + 1strSql = "select csjname from classarray where cclasscode='" & ClassCode & "' and itimew=" & Y & " and itimen=" & X' = strSql' strSql, conn, adOpenStatic, adLockOptimisticSet rsClassAry = (strSql)If Not ThenCombo3(i).Text = (0)Combo3(i).Tag = (0)'EnableSave (False)ElseCombo3(i).Text = ""Combo3(i).Tag = ""'EnableSave (True)End IfNext iEnd SubPrivate Function Trim(str As String) As StringTrim = LTrim$(RTrim$(str))End FunctionPrivate Sub Combo2_Change(Index As Integer)TrChanged = TrueEnd SubPrivate Sub Combo3_Change(Index As Integer)ClassChanged = TrueEnd SubPrivate Sub Command1_Click()= TrueEnd SubPrivate Sub Form_Load()= 11Set conn = NewSet rsTr = NewSet rsSj = NewSet rsTrAry = NewSet rsClassAry = New"select * from teacher", conn, adOpenStatic, adLockOptimistic "select * from subject", conn, adOpenStatic, adLockOptimistic minht = 4090maxHt = 9000sjCnt =Call comboInitEnableSave (False)cb(1).Enabled = False' = "<<"= minht= 0End SubPrivate Sub comboInit()Dim trCnt As IntegertrCnt =Combo1(0).Text = ""Combo1(1).Text = ""For i = 1 To 12Combo1(0).AddItem (i)Next iFor i = 1 To 20Combo1(1).AddItem (i)Next iFor i = 0 To 9Combo2(i).Text = ""If i < sjCnt ThenLabel2(i).Caption = rsSj!csjnameElseLabel2(i).Visible = FalseCombo2(i).Visible = FalseEnd IfLabel3(i).Caption = i + 1Next iFor i = 0 To sjCnt - 1If i > 0 ThenFor j = 0 To trCnt - 1'the last modified here.................... Combo2(i).List(j) = Combo2(0).List(j) Next jElseWhile NotCombo2(i).AddItem (0))WendEnd IfNext iFor i = 0 To 49Combo3(i).Text = ""For j = 0 To sjCnt - 1Combo3(i).AddItem (Label2(j).Caption)Next jNext iEnd SubPrivate Sub Form_Resize()= - - 520End SubPrivate Sub Form_Unload(Cancel As Integer)On Error GoTo Err:Set rsTr = NothingSet rsSj = NothingSet rsTrAry = NothingSet rsClassAry = NothingSet conn = NothingErr:End SubPrivate Sub Timer1_Timer()If = ">>" ThenIf < maxHt Then= + 150Else= False= "<<"= "收起课程表!"= maxHt= False= RGB(255, 255, 255)= RGB(0, 100, 200)End IfElseIf > minht Then= - 150Else= False= ">>"= "课程表在这里!"= minht= TrueEnd IfEnd IfEnd SubPrivate Sub Timer2_Timer()Static r, g, b As Integer'r = 100'g = 50'b = 20= RGB(r, g, b)= RGB(255 - r, 255 - g, 255 - b) r = r + 15g = g + 39b = b + 87If r > 255 Thenr = 0End IfIf g > 255 Theng = 0End IfIf b > 255 Thenb = 0End IfEnd Sub4. 教职员带课查询界面设计:代码分析:Option ExplicitDim conn AsDim rs AsDim rsTr AsDim i, j, value, idx As Integer Dim strName, strSql As String Private Type DataGetclass As StringSjname As StringTw As IntegerTn As IntegerEnd TypePrivate Sub Command1_Click() On Error GoTo bnEnd= 11Dim sSql As StringDim dgUse As DataGet'Select Case Index'Case 0:Call ClearCombostrName = LTrim$(RTrim$)If Len(strName) > 0 ThensSql = strSql & "'" & strName & "'"Set rs = (sSql)If Not ThenWhile Not= (0)= (1)= (2)= (3)idx = - 1) * 5 + - 1Combo3(idx).Visible = TrueCombo3(idx).AddItem & "班")Combo3(idx).AddItemCombo3(idx).Text = Combo3(idx).List(value)WendElseMsgBox "没有得到相关数据,请检查", vbOKOnly + vbInformation, "数据捕捉"End IfDim lcnt As IntegerFor lcnt = 0 To 49If Combo3(lcnt).ListCount > 2 ThenCombo3(lcnt).BackColor = RGB(200, 255, 255)Combo3(lcnt).AddItem ("注意有重课")End IfNext lcntElseMsgBox "请输入或选择一教职员姓名", vbInformation + vbOKOnly, "查询输入"End If'End SelectbnEnd:= 0End SubPrivate Sub ClearCombo()For i = 0 To 49Combo3(i).BackColor = RGB(255, 255, 255)Combo3(i).Text = ""Combo3(i).Visible = FalseCombo3(i).ClearNext iEnd SubPrivate Sub Form_Load()= 11On Error GoTo KKaSet conn = NewSet rsTr = ("select ctrname from teacher")For i = 0 To 9Label3(i).Caption = i + 1Next iWhile Not(0))WendCall ClearCombostrSql = "select ,,," + _" from teacher,trclass,classarray " + _"where = and =" + _" and = and ="'select ,,,'From teacher, trclass, classarray'Where = And ='and ='and ='陈''strSql = "select ,,," + _" from teacher join trclass on = join classarray" + _" on = where ="value = 0GoTo okKKa:MsgBox "Error Unknown"ok:= 0End SubPrivate Sub Form_Unload(Cancel As Integer) On Error GoTo KK:Set rs = NothingSet rsTr = NothingSet conn = NothingKK:End SubPrivate Sub Opn_Click(Index As Integer) value = IndexCall Command1_ClickEnd Sub5. 本学期课程设置界面设计:代码分析:Option ExplicitDim con AsDim rs AsDim str(9) As String'Dim strSql As StringPrivate Sub cn_Click(Index As Integer)'On Error GoTo ex:Dim lcnt As IntegerDim strTxt As StringSelect Case IndexCase 0:CanSave (True)Case 1:("delete * from subject")For lcnt = 0 To 9strTxt = Trim$(LTrim$(Txt(lcnt).Text)) If Len(strTxt) > 0 Thenrs!csjname = strTxtEnd IfNext lcntCanSave (False)Case 2:For lcnt = 0 To 9Txt(lcnt) = str(lcnt)Next lcntCanSave (False)End SelectExit Subex:MsgBox "database error", vbOKOnly + vbExclamation, "error" End SubPrivate Sub Form_Load()'strSql = "insert into subject values( '"Set con = NewSet rs = NewCall clearTxtCanSave (False)"select * from subject", con, adOpenStatic, adLockOptimistic Call displayInfoPrivate Sub CanSave(bSave As Boolean) = bSavecn(1).Enabled = bSavecn(2).Enabled = bSavecn(0).Enabled = Not bSaveEnd SubPrivate Sub displayInfo()Dim lcnt As Integerlcnt = 0While (Not And lcnt < 10)Txt(lcnt).Text = rs!csjnamestr(lcnt) = Txt(lcnt).Textlcnt = lcnt + 1WendEnd SubPrivate Sub clearTxt()Dim lcnt As IntegerFor lcnt = 0 To 9Txt(lcnt).Text = ""End SubPrivate Sub Form_Unload(Cancel As Integer)Set rs = NothingSet con = NothingEnd Sub6. 打印课程表界面设计:代码设计:临时课表Dim ctCon AsDim ctrs As'classArray表Dim cacon AsDim cars AsDim sqlStr As StringDim ClassCode As StringDim wStr(5) As StringPrivate Sub clearStr()For i = 1 To 5wStr(i) = " "Next iEnd SubPrivate Sub Update_ct()'删除所有以前的记录("delete * from tempCT")'更新表sqlStr = "select * from classArray where cclasscode='" & ClassCode & "'" & " order by iTimeN"sqlStrsqlStr, cacon, adOpenStatic, adLockOptimisticDim i As Integeri = 1clearStrWhile (NotWhile cars!iTimeN <> i'添加一条课程记录strSql = "insert into tempCT values(" & i & " ," + "'" + wStr(1) + "' ," + "'" + wStr(2) + "' ," + "'" + wStr(3) + "' ," + "'" + wStr(4) + "' ," + "'" + wStr(5) + "' )"strSqlclearStri = i + 1WendwStr(cars!iTimeW) = cars!csjnameWend'添加一条课程记录strSql = "insert into tempCT values(" & i & " ," + "'" + wStr(1) + "' ," + "'" + wStr(2) + "' ," + "'" + wStr(3) + "' ," + "'" + wStr(4) + "' ," + "'" + wStr(5) + "' )"strSqlclearStrWhile i < 10'添加一条课程记录strSql = "insert into tempCT values(" & i & " ," + "'" + wStr(1) + "' ," + "'" + wStr(2) + "' ," + "'" + wStr(3) + "' ," + "'" + wStr(4) + "' ," + "'" + wStr(5) + "' )"strSqli = i + 1WendEnd SubPrivate Sub Command1_Click()ClassCode = Trim & "." & TrimCall Update_ctUnload MeEnd SubPrivate Sub Form_Load()For i = 1 To 12(i)Next iFor i = 1 To 20(i)Next iSet cacon = NewSet cars = NewSet ctCon = NewSet ctrs = NewEnd SubPrivate Sub Form_Unload(Cancel As Integer)Set cars = NothingSet cacon = NothingSet ctrs = NothingSet ctCon = NothingEnd Sub7. 打印教师代课表界面设计:代码设计:'临时教师代课表Dim ttCon AsDim ttrs As'trClass表Dim trcon AsDim trrs AsDim sqlStr As StringDim trname As StringDim wStr(5) As StringDim clStr(5) As StringPrivate Sub clearStr()For i = 1 To 5wStr(i) = " "clStr(i) = " "Next iEnd SubPrivate Sub Update_tt()"delete * from tempTT"strSql = "select ,,," + _" from teacher,trclass,classarray " + _"where = and =" + _" and = and =" + "'" + trname + "'" _+ " order by iTimeN"strSqlstrSql, trcon, adOpenStatic, adLockOptimisticDim i As Integeri = 1clearStrWhile NotWhile trrs!iTimeN <> istrSql = "insert into tempTT values(" & i & " ," + "'" + wStr(1) + "' ," + "'" + wStr(2) + "' ," + "'" + wStr(3) + "' ," + "'" + wStr(4) + "' ," + "'" + wStr(5) + _"' ,'" + clStr(1) + "' ," + "'" + clStr(2) + "' ," + "'" + clStr(3) + "' ," + "'" + clStr(4) + "' ," + "'" + clStr(5) + "' )"strSqlclearStri = i + 1WendwStr(trrs!iTimeW) = trrs!csubjectclStr(trrs!iTimeW) = trrs!cClassCodeWendstrSql = "insert into tempTT values(" & i & " ," + "'" + wStr(1) + "' ," + "'" + wStr(2) + "' ," + "'" + wStr(3) + "' ," + "'" + wStr(4) + "' ," + "'" + wStr(5) + _"' ,'" + clStr(1) + "' ," + "'" + clStr(2) + "' ," + "'" + clStr(3) + "' ," + "'" + clStr(4) + "' ," + "'" + clStr(5) + "' )"strSqlclearStrWhile i < 10i = i + 1strSql = "insert into tempTT values(" & i & " ," + "'" + wStr(1) + "' ," + "'" + wStr(2) + "' ," + "'" + wStr(3) + "' ," + "'" + wStr(4) + "' ," + "'" + wStr(5) + _"' ,'" + clStr(1) + "' ," + "'" + clStr(2) + "' ," + "'" + clStr(3) + "' ," + "'" + clStr(4) + "' ," + "'" + clStr(5) + "' )"strSqlWendEnd SubPrivate Sub Command1_Click()trname = TrimCall Update_ttUnload MeEnd SubPrivate Sub Form_Load()Set ttCon = NewSet ttrs = NewSet trcon = NewSet trrs = NewEnd SubPrivate Sub Form_Unload(Cancel As Integer)'Set ttrs = NothingSet ttCon = NothingSet trrs = NothingSet trcon = NothingEnd Sub第四章数据库的设计数据库设计信息表表:表:4.班级表:数据库概念和发展关系数据库是目前各类数据库中最重要、最流行的数据库,他应用数学方法来处理数据库数据,是目前使用最广泛的数据库系统。

相关主题