当前位置:文档之家› 智能排课系统vb代码

智能排课系统vb代码

Vb核心代码设计一:输入界面与代码(以班级表为例)DimConnAsNewADODB.Connection'连接变量DimSqlStringAsString'查询字符串DimConnstringAsString'连接字符串DimRS1AsNewADODB.Recordset'记录集变量Dimbm'定义一个变量用来存放添加记录时原来记录的位置DimtjAsBooleanPrivateSubCommand10_Click()Form4.HideForm3.ShowEndSubPrivateSubCommand1_Click()'移到首记录RS1.MoveFirstCommand1.Enabled=FalseCommand2.Enabled=FalseCommand3.Enabled=TrueCommand4.Enabled=TrueCallDispValue'显示当前记录的值EndSubPrivateSubCommand2_Click()'前移RS1.MovePreviousIfRS1.BOFThenRS1.MoveFirstCommand1.Enabled=FalseCommand2.Enabled=FalseEndIfCommand3.Enabled=TrueCommand4.Enabled=TrueCallDispValue'显示当前记录的值EndSubPrivateSubCommand3_Click()'后移RS1.MoveNextIfRS1.EOFThenRS1.MoveLastCommand3.Enabled=FalseCommand4.Enabled=FalseEndIfCommand1.Enabled=TrueCommand2.Enabled=TrueCallDispValue'显示当前记录的值EndSubPrivateSubCommand4_Click()'移到末记录RS1.MoveLastCommand3.Enabled=FalseCommand4.Enabled=FalseCommand1.Enabled=TrueCommand2.Enabled=TrueCallDispValue'显示当前记录的值EndSubPrivateSubCommand5_Click()'删除记录If(MsgBox("真的要删除该记录吗?",vbQuestion+vbYesNo,"删除提示")=vbYes)Then RS1.Delete'删除RS1.MoveNextIfRS1.EOFThen'如果删除的是末记录RS1.MoveLastEndIfEndIfCallDispValue'显示当前记录的值EndSubPrivateSubCommand6_Click()'添加记录bm=RS1.Bookmark'用书签记下当前记录位置RS1.AddNew'调用AddNew方法增加新记录CallEditStatus'置按钮和文本框状态CallEmptyText'清空文本框tj=True'是添加新记录EndSubPrivateSubCommand7_Click()'修改记录CallEditStatus'置按钮和文本框状态tj=False'不是添加记录,是修改记录EndSubPrivateSubCommand8_Click()'确定操作CallSetValue'给各字段赋值RS1.Update'调用Update方法保存CallOkStatus'置按钮和文本框状态MsgBox("保存成功")'给出保存成功提示EndSubPrivateSubCommand9_Click()'取消操作If(MsgBox("真的要取消修改吗?",vbQuestion+vbYesNo))=vbYesThenRS1.CancelUpdateIftjThen'如果是增加新记录RS1.Bookmark=bm'把记录指针移动到原来的位置EndIfCallDispValue'显示当前记录的值CallOkStatus'置按钮和文本框状态EndIfEndSubPrivateSubForm_Load()Connstring="Driver={SQLServer};Server=PC2012110412ewr.;Database=GXPK;"_ &"uid=sa;pwd=t123"'SQLServer普通安全模式建立到Pubs数据库的连接的连接字符串'设置连接字符串WithConn.ConnectionString=Connstring'给ConnectionString属性赋值.ConnectionTimeout=10.Open'给连接的ConnectionString属性赋值,然后使用求带参数的Open方法打开连接EndWithMsgBox("连接成功")RS1.CursorType=adOpenDynamicRS1.CursorLocation=adUseClient'游标服务的位置、默认值adUseServer。

游标用于:控制记录定位、控制其他用户对数据库所作的更改的可视性、控制数据可更新性RS1.LockType=adLockOptimisticRS1.Open"班级信息表",Conn,3,3IfRS1.EOFAndRS1.BOFThen'如果表为空MsgBox"表为空,请添加记录"ElseCallDispValue'显示当前记录的值EndIfCallTextDisable'使文本框不可用Command8.Enabled=FalseCommand9.Enabled=FalseEndSubPrivateSubDispValue()Text1.Text=RS1.Fields("班级编号")IfIsNull(Trim(RS1.Fields("班级名称")))Then'解决课程名字段值为空移指针出错(无效使用NULL)的问题,其他字段类推。

Text2.Text=""ElseText2.Text=RS1.Fields("班级名称")EndIfText5.Text=RS1.Fields("所属系")Text7.Text=RS1.Fields("学生人数")EndSubPrivateSubSetValue()RS1.Fields("班级编号")=Text1.TextRS1.Fields("班级名称")=Text2.TextRS1.Fields("所属系称")=Text5.TextRS1.Fields("学生人数")=Text7.TextEndSubPrivateSubTextEnable()'使所有的文本框可用Text1.Enabled=TrueText2.Enabled=TrueText5.Enabled=TrueText7.Enabled=TrueEndSubPrivateSubTextDisable()'使所有的文本框不可用Text1.Enabled=FalseText2.Enabled=FalseText5.Enabled=FalseText7.Enabled=FalseEndSubPrivateSubEditStatus()'设置在编辑或添加记录时的各控件状态Command1.Enabled=FalseCommand2.Enabled=FalseCommand3.Enabled=FalseCommand4.Enabled=FalseCommand5.Enabled=FalseCommand6.Enabled=FalseCommand7.Enabled=FalseCommand8.Enabled=TrueCommand9.Enabled=TrueCallTextEnableEndSubPrivateSubEmptyText()'清空文本框Text1.Text=""Text2.Text=""Text5.Text=""Text7.Text=""EndSubPrivateSubOkStatus()'设置不在编辑或添加记录时的各控件状态Command1.Enabled=TrueCommand2.Enabled=TrueCommand3.Enabled=TrueCommand4.Enabled=TrueCommand5.Enabled=TrueCommand6.Enabled=TrueCommand7.Enabled=TrueCommand8.Enabled=FalseCommand9.Enabled=FalseCallTextDisableEndSub2、查看课表窗口及代码(以教室课表为例)DimConnAsNewADODB.Connection'连接变量DimSqlStringAsString'查询字符串DimConnstringAsString'连接字符串DimRS1AsNewADODB.Recordset'记录集变量mandPrivateSubCommand1_Click()Connstring="Driver={SQLServer};Server=PC2012110412ewr.;Database=GXPK;"_ &"uid=sa;pwd=t123"'SQLServer普通安全模式建立到Pubs数据库的连接的连接字符串'设置连接字符串WithConn.ConnectionString=Connstring'给ConnectionString属性赋值.ConnectionTimeout=10.Open'给连接的ConnectionString属性赋值,然后使用求带参数的Open方法打开连接EndWithMsgBox("连接成功")Command1.Enabled=False'连接按钮不可用Command2.Enabled=True'显示数据可用EndSubPrivateSubCommand2_Click()SetCmd.ActiveConnection=Conn'设置Command对象的ActiveConnection为某个打开的连接SqlString="Select课程名称,教师姓名,上课教室,班级编号,上课时间from排课表Where上课教室like'"&Text1.Text&"'"'形成查询字符串1mandText=SqlString'设置Command对象执行的命令字符串mandType=adCmdText'设置命令类型,表示CommandText中为一命令文本,童P188SetRS1=Cmd.Execute'执行命令得到一个结果记录集CallShowData(RS1,MSFlexGrid1)'调用过程显示记录集中的数据Command1.Visible=TrueEndSubPrivateSubShowData(RsAsADODB.Recordset,DgridAsMSFlexGrid)'该过程用来在Dgrid网格中显示记录集RS中的内容DimRowNumAsIntegerRowNum=1'代表MsFlexGrid控件的行数Dgrid.Rows=RowNum'设置MsFlexGrid控件的行数Dgrid.Cols=Rs.Fields.Count'设置MsFlexGrid控件的列数Forj=0ToRs.Fields.Count-1'遍列所有列Dgrid.TextMatrix(0,j)=Rs.Fields(j).Name'把列名显示在设置MsFlexGrid控件的首行NextjDoWhileNotRs.EOF'如果不是记录集的结尾RowNum=RowNum+1'行数加1Dgrid.Rows=RowNum'设置MsFlexGrid控件的行数Forj=0ToRs.Fields.Count-1'遍列所有列IfNotIsNull(Rs.Fields(j).Value)Then'如果列中的数据不为空,切记不能用如if Var1=Null来判断变量Var1的值是否为NullDgrid.TextMatrix(RowNum-1,j)=Rs.Fields(j).Value'把列的数据显示在MsFlexGrid的相应网格中EndIfNextjRs.MoveNext'记录指针下移LoopCommand2.Enabled=FalseEndSubPrivateSubCommand3_Click()Form14.HideForm3.ShowEndSubPrivateSubCommand4_Click()RS1.Close'关闭记录集Conn.Close'关闭连接Text1.Text=""Command1.Enabled=True'连接按钮不可用Command2.Enabled=True'显示数据可用EndSubPrivateSubCommand5_Click()DataReport1.ShowvbModal,MeEndSub3、查看初始化窗口及代码OptionExplicitDimSQLAsStringDimConnAsNewADODB.Connection'连接变量DimSqlStringAsString'查询字符串DimConnstringAsStringDimmsgAsString'连接字符串PrivateSubCmdSave_Click()'进行初始化操作DimCounnterAsIntegerConnstring="Driver={SQLServer};Server=PC2012110412ewr.;Database=GXPK;"_&"uid=sa;pwd=t123"'SQLServer普通安全模式建立到Pubs数据库的连接的连接字符串'设置连接字符串WithConn.ConnectionString=Connstring'给ConnectionString属性赋值.ConnectionTimeout=10.Open'给连接的ConnectionString属性赋值,然后使用求带参数的Open 方法打开连接EndWithMsgBox("连接成功")ProgressBar1.Visible=TrueProgressBar1.Max=200ProgressBar1.Value=ProgressBar1.Minmsg=MsgBox("您确实要初始化这些数据吗?",vbYesNo)Ifmsg=vbNoThenExitSubForCounnter=ProgressBar1.MinToProgressBar1.MaxProgressBar1.Value=CounnterIfCheck1.Value=1Then'如果班级信息表被选中'删除全部提醒信息数据SQL="deletefrom班级信息表"Conn.ExecuteSQLEndIfIfCheck2.Value=1Then'如果课程信息表被选中'删除全部通讯日志数据SQL="deletefrom课程信息表"Conn.ExecuteSQLEndIfIfCheck3.Value=1Then'如果班级课程信息表被选中'删除全部群组信息数据SQL="deletefrom任课表"Conn.ExecuteSQLEndIfIfCheck4.Value=1Then'如果教师信息表被选中'删除全部联系人信息数据SQL="deletefrom教师信息表"Conn.ExecuteSQLEndIfIfCheck6.Value=1Then'如果排课信息表被选中'删除全部联系人信息数据SQL="deletefrom排课表"Conn.ExecuteSQLEndIfNextCounnterProgressBar1.Visible=FalseProgressBar1.Value=ProgressBar1.MinEndSubPrivateSubCmdExit_Click()'退出操作Form15.HideForm3.ShowEndSubPrivateSubForm_Unload(CancelAsInteger)'退出操作Form15.HideForm3.ShowEndSub4、查看自动排课窗口及代码DimConnAsNewADODB.Connection'连接变量DimSqlStringAsString'查询字符串DimConnstringAsStringDimdlaytimeAsIntegerPrivateSubCommand2_Click()DimSQLAsStringDimscAsADODB.RecordsetSetsc=NewADODB.RecordsetSQL="deletel排课表"EndSubPrivateSubCommand3_Click()Form9.HideForm3.ShowEndSubPrivateSubForm_Load()constr="Driver={SQLServer};Server=PC2012110412ewr.;Database=GXPK;"_ &"uid=sa;pwd=t123"'SQLServer普通安全模式建立到Pubs数据库的连接的连接字符串'定义数据库连接WithConn.ConnectionString=constr'给ConnectionString属性赋值.ConnectionTimeout=10.Open'给连接的ConnectionString属性赋值,然后使用求带参数的Open方法打开连接EndWithMsgBox("连接成功")ProgressBar1.Visible=TrueProgressBar1.Max=200ProgressBar1.Value=ProgressBar1.MinEndSubPrivateSubCommand1_Click()'开始DimSQL,sqll,sqlllAsStringDimrtAsNewADODB.RecordsetDimrmAsNewADODB.RecordsetDimrnAsNewADODB.RecordsetDimrpAsNewADODB.RecordsetDimrqAsNewADODB.RecordsetDimiAsIntegerSetRs=NewADODB.RecordsetSQL="select*from任课表"SetRs=Conn.Execute(SQL)ProgressBar1.Max=100DoWhileProgressBar1.Value<ProgressBar1.MaxDoUntilRs.EOF=Truei=Rs("每周节数")DoUntili=0sqll="select*from时间表"Setrt=Conn.Execute(sqll)DoUntilrt.EOF=TrueSetrp=NewADODB.Recordsetcoom="select*from排课表where[班级编号]='"+Rs("班级编号")+"'and[上课时间]='"+rt("上课时间")+"'"Setrp=Conn.Execute(coom)cool="select*from排课表where[上课时间]='"+rt("上课时间")+"'and[教师姓名]='"+Rs("教师姓名")+"'"Setrq=Conn.Execute(cool)Ifrp.EOF=TrueAndrq.EOF=TrueThensqlll="select*from教室信息表"Setrm=Conn.Execute(sqlll)DoUntilrm.EOF=Truecoon="select*from排课表where[上课时间]='"+rt("上课时间")+"'and[上课教室]='"+rm("教室名称")+"'"Setrn=Conn.Execute(coon)Ifrn.EOF=TrueThenSQL="insertinto排课表([课程名称],[教师姓名],[上课教室],[班级编号],[上课时间])values('"+Rs("课程名称")+"','"+Rs("教师姓名")+"','"+rm("教室名称")+"','"+ Rs("班级编号")+"','"+rt("上课时间")+"')"Setrq=Conn.Execute(SQL)ExitDoElserm.MoveNextEndIfLoopExitDoElsert.MoveNextEndIfLoopi=i-1LoopRs.MoveNextLoopProgressBar1.Value=ProgressBar1.Value+1DoEventsLoopMsgBox"自动排课已完成",vbInformation,"提示"EndSubPrivateSubTimer1_Timer()Ifdlaytime>=100Then'Timer1.Enabled=FalseLoadfrmLoginfrmLogin.ShowElsedlaytime=dlaytime+1P1.Value=dlaytimeEndIfEndSub5、查看手动调课窗口及代码DimConnAsNewADODB.Connection'连接变量DimSqlStringAsString'查询字符串DimConnstringAsStringPrivateSubCommand2_Click()Form11.HideForm3.ShowEndSubPrivateSubCommand5_Click()DimConnAsNewADODB.Connection'连接变量DimSqlStringAsString'查询字符串DimConnstringAsString'连接字符串DimRS1AsNewADODB.Recordset'记录集变量mandConnstring="Driver={SQLServer};Server=PC2012110412ewr.;Database=GXPK;"_ &"uid=sa;pwd=t123"'SQLServer普通安全模式建立到Pubs数据库的连接的连接字符串'设置连接字符串WithConn.ConnectionString=Connstring'给ConnectionString属性赋值.ConnectionTimeout=10.Open'给连接的ConnectionString属性赋值,然后使用求带参数的Open方法打开连接EndWithSetCmd.ActiveConnection=Conn'设置Command对象的ActiveConnection为某个打开SqlString="Select课程名称,教师姓名,上课教室,班级编号,上课时间from排课表"'形成查询字符串1mandText=SqlString'设置Command对象执行的命令字符串mandType=adCmdText'设置命令类型,表示CommandText中为一命令文本,童P188SetRS1=Cmd.Execute'执行命令得到一个结果记录集CallShowData(RS1,MSFlexGrid1)'调用过程显示记录集中的数据EndSubPrivateSubForm_Load()constr="Driver={SQLServer};Server=PC2012110412ewr.;Database=GXPK;"_ &"uid=sa;pwd=t123"'SQLServer普通安全模式建立到Pubs数据库的连接的连接字符串'定义数据库连接WithConn.ConnectionString=constr'给ConnectionString属性赋值.ConnectionTimeout=10.Open'给连接的ConnectionString属性赋值,然后使用求带参数的Open方法打开连接EndWithMsgBox("连接成功")EndSubPrivateSubCommand1_Click()'调整教室DimrtAsNewADODB.RecordsetIf(Text1.Text=""OrText2.Text=""OrText3.Text=""OrText4.Text=""OrText5.Text="") ThenMsgBox("请输入完整信息")ElseSetRs=NewADODB.RecordsetSQL="select*from排课表"SetRs=Conn.Execute(SQL)IfRs("上课教室")=Text4.TextThenMsgBox("该时间段该教室已被占用,请重新选择")Text4.Text=""Text5.Text=""ElseSetRs=NewADODB.RecordsetSQL="update排课表set[上课教室]='"+Text4.Text+"'where[课程名称]='"+Text1.Text+ "'and[教师姓名]='"+Text2.Text+"'and[上课时间]='"+Text5.Text+"'"SetRs=Conn.Execute(SQL)MsgBox("教室调整成功")Text1.Text=""Text2.Text=""Text3.Text=""Text4.Text=""Text5.Text=""EndIfEndSubPrivateSubCommand3_Click()'调整时间DimrtAsNewADODB.RecordsetIf(Text1.Text=""OrText2.Text=""OrText3.Text=""OrText4.Text=""OrText5.Text="") ThenMsgBox("请输入完整信息")ElseSetRs=NewADODB.RecordsetSQL="select*from排课表"SetRs=Conn.Execute(SQL)IfRs("上课时间")=Text5.TextThenMsgBox("该教室该时间段已被占用,请重新选择")Text4.Text=""Text5.Text=""ElseSetRs=NewADODB.RecordsetSQL="update排课表set[上课时间]='"+Text5.Text+"'where[课程名称]='"+Text1.Text +"'and[教师姓名]='"+Text2.Text+"'and[教室名称]='"+Text4.Text+"'"SetRs=Conn.Execute(SQL)MsgBox("时间调整成功")'Adodc1.RefreshText1.Text=""Text2.Text=""Text3.Text=""Text4.Text=""Text5.Text=""EndIfEndIfEndSubPrivateSubShowData(RsAsADODB.Recordset,DgridAsMSFlexGrid)'该过程用来在Dgrid网格中显示记录集RS中的内容DimRowNumAsIntegerRowNum=1'代表MsFlexGrid控件的行数Dgrid.Rows=RowNum'设置MsFlexGrid控件的行数Dgrid.Cols=Rs.Fields.Count'设置MsFlexGrid控件的列数Forj=0ToRs.Fields.Count-1'遍列所有列Dgrid.TextMatrix(0,j)=Rs.Fields(j).Name'把列名显示在设置MsFlexGrid控件的首行NextjDoWhileNotRs.EOF'如果不是记录集的结尾RowNum=RowNum+1'行数加1Dgrid.Rows=RowNum'设置MsFlexGrid控件的行数Forj=0ToRs.Fields.Count-1'遍列所有列IfNotIsNull(Rs.Fields(j).Value)Then'如果列中的数据不为空,切记不能用如if Var1=Null来判断变量Var1的值是否为NullDgrid.TextMatrix(RowNum-1,j)=Rs.Fields(j).Value'把列的数据显示在MsFlexGrid的相应网格中EndIfNextjRs.MoveNext'记录指针下移LoopEndSub。

相关主题