版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章学校排课管理信息系统4.1系统开发功效分析4.2设计好自己数据库4.3系统开发过程实现
4.4应用程序打包和公布4.5相关开发技术介绍4.6最终运行结果查看第1页4.1系统开发功效分析4.1.1设计目标本管理信息系统主要功效是把各系别、班级或各讲课部门课程进行了汇总,然后依据学校教学计划制订各班级课程编排表。伴随学校每年扩招和专业不停细化,学校班级数、课程门数越来越多,每门课又包括很多信息,假如依然采取手工排课,则不可防止地会出现教室资源冲突或教师资源冲突情况。第2页4.1.2需要实现系统功效本管理信息系统开发就是为了使纷繁、复杂课表编排变得更为准确、合理和快速而设计。在确定了本系统设计目标之后,在开发本系统时,在本系统中需要实现系统功效主要有以下所述几点:
(1)提供灵活浏览和查找功效。能够查看某个班级全部课程信息以及对课程信息提供查找方式。第3页(2)掌握学校全部课程和教师信息,包含课程时间安排、班级以及任课教师姓名。
(3)能够对课程信息和教师信息进行删除和编辑。
(4)实现对课程进行变动管理,并实现尽可能自动排序功效。第4页4.1.3开发和运行环境开发工具:VisualBasic6.0汉字版,后台所用数据库是Access。运行环境:Windows9x、WindowsNT、Windows或WindowsXP/操作系统。第5页4.1.4系统功效模块设计依据日常工作中实际需求,结合实际排课情况模块分析,本系统在设计时所要实现主要功效以下:
1.实现数据装载鉴于本系统数据流量比较庞大情况,在本系统开启时必须有一个数据装载模块,等到数据完全被装载后才能正常进入本系统执行程序。第6页2.录入教职员工信息为确保数据库完整性和为后面排课提供可靠数据确保,录入教职员工一些基本信息,如必需教职员工姓名、专业和介绍等信息。
3.课程编排管理课程编排管理是本系统关键部分,其作用是在自动排序基础上实现手工排序。第7页4.教职员工代课信息查询教职员工代课信息查询给用户提供了一个排课结果查询界面,利用此界面应该能查询到某个教师在一周内代课全部班级和所带课程上课时间以及课程名称等内容。
5.本学期课程设置本学期课程设置模块功效是设置开设课程名称。本系统总体功效结构图如图4-1-1所表示。
第8页图4-1-1本系统总体功效结构图第9页4.2设计好自己数据库1.班级情况信息表(classArray)设计班级库是描述班级信息数据表,包含以下部分:班级编号(cClassCode)、上课日期(iTimeW)、上课节次(iTimeN)、课程名称(cSjName)。在数据库中创建一个表,表名为“ClassArray”,其字段结构如表4-2-1所表示。其中,cClassCode(班级编号)字段为该表主关键字(PrimaryKey,PK),它惟一标识了一条班级统计。第10页表4-2-1班级情况信息表(ClassArray)字段名字段说明类型宽度备注cClassCode班级编号文本7主关键字iTimeW上课日期数字
不能为空iTimeN上课节次数字
不能为空cSjName课程名称文本7不能为空第11页2.专业名称表(Subject)设计专业名称表是描述专业信息数据表,所存放域只有一个专业名称(cSjName)。在数据库中创建—个表,表名为Subject,其字段结构如表4-2-2所表示。其中,cSjName(专业名称)字段为该表外部关键字(ForeignKey,FK),它与ClassArray表cSjName字段组成了参考完整性。第12页表4-2-2专业名称表(Subject)字段名字段说明类型宽度备注cSjName专业名称文本7外部关键字第13页3.教师信息表(Teacher)设计教师信息表是描述教师信息数据表,包含以下部分:教师姓名(cTrName)、年纪(iAge)、简单评述(cTrDetails)等部分。在数据库中创建一个表,表名为Teacher,其字段结构如表4-2-3所表示。其中,cTrName(教师姓名)字段为该表主关键字(PrimaryKey,PK),它惟一标识了一条教师统计。第14页表4-2-3教师信息表(Teacher)字段名字段说明类型宽度备注cTrName教师姓名文本7主关键字iAge年纪数字
不能为空cTrDetails简单评述文本255能够为空第15页4.教师代课情况表(trClass)设计教师代课情况表是描述教师代课信息数据表,包含以下部分:班级编号(cClassCode)、专业名称(cSubject)、代课教师(cTeacher)等部分。在数据库中创建一个表,表名为trClass,其字段结构如表4-2-4所表示。其中,cSubject(专业名称)字段为该表外部关键字(ForeignKey,FK),它与Subject表cSjName字段组成了参考完整性。第16页表4-2-4教师代课表(trClass)字段名字段说明类型宽度备注cClassCode班级编号文本7不能为空cSubject专业名称文本7不能为空cTeacher代课教师文本7不能为空第17页图4-2-1数据库关系设计图中各表之间关系第18页4.3系统开发过程实现4.3.1主窗体界面(frmSplash)设计在工程中添加类型为“展示屏幕”窗体,并将其命名为frmLoading.frm。本窗口设计视图如图4-3-1所表示。第19页图4-3-1frmSplash窗口设计视图第20页
在设计好本窗体中各控件之后,我们还需要对该窗体上控件及其属性进行一些详细设置。对于本窗体中各控件,大家能够依据自己对窗体中各控件设置喜好自行进行设置。各控件设置属性随设置不一样而有所改变。下面再来看看本窗体代码设计。因为frmLoading窗体是本系统开启时窗体,所以,当frmLoading窗体被加载时,通常需要加载其背景图像,并设置图像位置和大小,最终再开启时钟。第21页窗体加载事件处理函数代码以下:PrivateSubForm_Load()'设置鼠标指针Me.MousePointer=11DimX,YAsInteger'加载背景图像ImgBg.Picture=LoadPicture(App.Path+"\back.jpg")'设置要加载图像大小和位置
ImgBg.Width=Form1.WidthImgBg.Height=Form1.Height第22页X=(Screen.Width-Form1.Width)/2Y=(Screen.Height-Form1.Height)/2'设置本窗口位置Form1.Left=XForm1.Top=Y'开启窗口时钟Timer1.Enabled=True
EndSub第23页
程序在运行到这里时候,假如出现时钟计时超出了一定数量,就会出现窗口自动消失,发出提醒声音并打开用户登录窗口情况。详细设计代码以下:
PrivateSubTimer1_Timer()'Splash窗口消失
UnloadMe'打开用户要登录窗口
fmStart.Show'发出提醒声音
Beep第24页4.3.2设计系统登录窗体(frmLogin)
因为本系统用户分为系统管理员和教师两大类,因而在设计登录窗体时候,就需要在登录窗体中增加一个ComboBox控件,用来表明用户身份。其中0表示系统管理员身份,1表示教师类用户身份。同时,为了防止非法用户干扰,对于用户登录窗口,还需要设置假如用户连续输错了三次密码,则将会自动退出系统情况。第25页图4-3-2登录窗体界面第26页本窗口设计视图如图4-3-2所表示,详细代码以下:PublicLoginSucceededAsBooleanPrivateSubcmdCancel_Click()LoginSucceeded=FalseUnloadfmStartEndSub第27页PrivateSubcmdOK_Click()IftxtPassword="password"ThenLoginSucceeded=TrueMe.HidefmStart.ShowElseMsgBox"InvalidPassword,tryagain!",,"Login"txtPassword.SetFocusSendKeys"{Home}+{End}"EndIfEndSub第28页PrivateSubForm_Load()LoadfmStartfmStart.HideEndSub第29页4.3.3实现程序主窗体(frmStart)设计系统主程序frmStart窗体不不过整个系统容器,同时还是整个系统主要操作界面,也是进入本系统首先出现系统操作界面。因为本系统采取了基于对话框模式功效,如图4-3-3所表示,所以,用户只需要做一个简单功效选择就能够进入对应功效模块。第30页图4-3-3程序主窗体frmStart设计与运行界面第31页1.定义窗体级变量本段代码主要用来定义暂时字符串变量和统计时钟周期变量。详细代码以下:
OptionExplicitDimstrRunAsStringDimiTpAsInteger'iTp统计时钟周期第32页2.单击【确定】按钮处理函数当用户在单击【确定】按钮时,系统能够实现依据用户选择确定进入对应模块,这时候,就需要在本窗体代码中接着添加以下代码:第33页PrivateSubCommand1_Click()'将鼠标指针设为等候Me.MousePointer=11'开启时钟Timer1.Enabled=TruestrRun=LTrim$(RTrim$(Combo1.Text))'对应该进入模块进行判断SelectCasestrRunCaseCombo1.List(0):Form1.Show第34页CaseCombo1.List(1):Form2.ShowCaseCombo1.List(2):Form3.ShowCaseCombo1.List(3):Form4.ShowCaseCombo1.List(4):Form5.ShowCaseCombo1.List(5):Form6.Show第35页CaseElse:MsgBox"请选择一个正确操作项",vbInformation+vbOKOnly,"操作"EndSelect
EndSub第36页3.单击【作者信息】按钮处理函数当用户单击【作者信息】按钮时,则会弹出【关于】对话框,显示相关本系统名称、版本和作者等信息。详细代码以下:
PrivateSubCommand2_Click()frmAbout.Show'这里frmAbout就是“关于”对话框窗体
EndSub第37页4.窗口装载预处理因为还需要在进入窗口装载之前做一些预处理工作,所以,需要在程序中加入以下代码:第38页PrivateSubForm_Load()Combo1.AddItem"教职员入库信息"Combo1.AddItem"排课管理"Combo1.AddItem"教职员带课查询"Combo1.AddItem"本学期课程设置"Combo1.AddItem"打印课程表"Combo1.AddItem"打印教师带课表"
EndSub第39页5.窗口卸载事件处理代码当被装载窗口需要卸载时,系统将弹出一个消息框,以提醒用户退出本系统。详细设计代码以下:
PrivateSubForm_Unload(CancelAsInteger)iTp=MsgBox("你确定要退出本系统",vbYesNo+vbQuestion,"退出")第40页IfiTp=vbNoThenCancel=1EndIfIfCancel=0ThenEndEndIf
EndSub第41页6.处理时钟事件代码当初钟运行到整点时候,鼠标指针就会变为正常形式。详细代码以下:
PrivateSubTimer1_Timer()'将时钟关闭
Timer1.Enabled=FalseMe.MousePointer=0
EndSub第42页4.3.4设计教员信息入库窗体(Form1)界面为了便于查看和编辑教师信息,在这里特意设置了一个教员信息入库窗体(Form1)。经过该窗体,用户就能够利用单击导航条,方便而快捷地逐条浏览数据库中教师信息了。当用户单击导航条中按钮时,能够从上面编辑框中逐条浏览教师信息。当用户单击编辑栏中按钮时,还能够对数据进行编辑操作。本窗体设计视图如图4-3-4所表示。第43页图4-3-4教员信息入库(Form1.frm)窗口设计视图第44页1.定义窗体级变量代码本段代码主要用来定义暂时字符串变量和存放SQL语句暂时变量。详细代码以下:
DimconAsADODB.Connection'定义数据链接
DimrsAsADODB.Recordset'定义数据集
第45页DimqrsAsADODB.Recordset'存放SQL语句暂时变量DimslSqlAsStringDimi,jAsInteger'暂时字符串变量DimstrBak(2)AsString第46页2.【导航】按钮单击事件处理函数本【导航】按钮单击事件处理函数作用是使其能够依据用户单击按钮事件来浏览对应统计。详细设计代码以下:第47页PrivateSubCommand1_Click(IndexAsInteger)OnErrorGoToErr:DimcnAsIntegerForcn=0To2Text1(cn).Text=""Nextcn
Ifrs.RecordCount>0ThenSelectCaseIndexCase0:第48页rs.MoveFirstCase1:rs.MovePreviousCommand1(2).Enabled=TrueCommand1(3).Enabled=TrueCase2:rs.MoveNextCommand1(0).Enabled=TrueCommand1(1).Enabled=TrueCase3:rs.MoveLast第49页EndSelectdisplayInfoEndIfGoTook:Err:CalldataOverok:EndSub第50页3.处理窗体加载事件代码设置本窗体加载事件作用是实现在处理窗体加载事件基础上,对系统数据源和数据连接进行设置,并初始化系统参数。详细代码以下:第51页PrivateSubForm_Load()DimcntAsInteger
'设置数据源和数据库驱动信息Setcon=NewADODB.ConnectionSetrs=NewADODB.RecordsetSetqrs=NewADODB.Recordset第52页con.Open"provider=Microsoft.Jet.OLEDB.4.0;datasource="&App.Path&"\dataUse.mdb"rs.Open"select*fromteacher",con,adOpenStatic,adLockOptimisticIfrs.RecordCount>0Then
第53页rs.MoveFirstdisplayInfoCanSave(False)ElseCanSave(True)CallCommand2_Click(0)EndIfEndSub第54页4.【编辑】按钮单击事件处理函数本段代码作用主要是经过【编辑】按钮单击事件,实现对所浏览统计增加、删除和修改等功效。详细设计代码以下:第55页PrivateSubCommand2_Click(IndexAsInteger)OnErrorGoToerrDealIfIndex=0OrIndex=2ThenCanSave(True)ElseCanSave(False)EndIf
SelectCaseIndex第56页'添加新统计Case0:rs.AddNewCalltoNull'删除选中统计
第57页Case1:j=MsgBox("你确定要删除本统计吗?",vbYesNo+vbQuestion,"删除")Ifj=vbYesThenrs.DeleteCalltoNullEndIf'修改选中统计第58页Case2:rs.Deleters.AddNew'保留用户设置
第59页Case3:IfLen(LTrim$(RTrim$(Text1(0).Text)))>0Then'rs.AddNewFori=0To2IfLen(LTrim$(RTrim$(Text1(i).Text)))>0Then
rs.Fields(i)=Text1(i).TextEndIf
第60页Nextirs.UpdateElseMsgBox"姓名不得为空",vbOKOnly+vbExclamation,"Error"EndIf'取消第61页Case4:'将所编辑内容清空
Fori=0To2Text1(i).Text=strBak(i)NextiCallCommand2_Click(3)
EndSelectExitSub第62页'进行异常处理errDeal:MsgBox"databaseError",vbExclamation+vbOKOnly,"error"'okEnd:EndSub第63页5.处理用户单击【修改】按钮事件代码(1)
本段代码作用是当用户单击【修改】按钮事件时候,来判断用户是否有权限使用该功效。详细设计代码以下:
PrivateSubCanSave(okAsBoolean)Frame1.Enabled=NotokFrame3.Enabled=ok'单击“修改”按钮,设置是否能够使用该功效第64页Fori=0To4Ifi<3ThenCommand2(i).Enabled=NotokElseCommand2(i).Enabled=okEndIfNextiEndSub第65页6.处理用户单击【修改】按钮事件代码(2)
与前面介绍那个处理用户单击【修改】按钮事件不一样,本段代码主要作用是用来显示用户查询结果。详细代码以下:第66页PrivateSubqueryComm_Click()slSql="select*fromTeacherwherecTrname='"+Text1(3).Text+"'"qrs.OpenslSql,con,adOpenStaticIfNotqrs.EOFThenqrs.MoveFirst'显示查询结果
i=j=0Fori=0To2第67页'Text1(i).Text=""IfLen(qrs.Fields(i))>0ThenText1(i).Text=qrs.Fields(i)strBak(i)=Text1(i).TextEndIfNextiEndIfqrs.CloseEndSub第68页7.浏览到最终一条数据统计时处理函数DataOver
本段代码作用是当用户浏览到最终一条统计时候用来进行对应处理。详细设计代码以下:
PrivateSubdataOver()'第1条数据统计第69页Ifrs.BOFThenCommand1(0).Enabled=FalseCommand1(1).Enabled=FalseCommand1(2).Enabled=TrueCommand1(3).Enabled=Truers.MoveFirstElse'最末一条数据统计第70页Ifrs.EOFThenrs.MoveLastCommand1(0).Enabled=TrueCommand1(1).Enabled=TrueCommand1(2).Enabled=FalseCommand1(3).Enabled=FalseElse第71页MsgBox"DatabaseError",vbExclamation+vbOKOnly,"Errorunknown"EndIfEndIfEndSub第72页8.显示数据辅助函数及全部数据统计本段代码作用主要是用来当用户在浏览时显示符合设定条件全部数据统计。详细设计代码以下:第73页PrivateSubdisplayInfo()i=j=0Fori=0To2IfLen(rs.Fields(i))>0ThenText1(i).Text=rs.Fields(i)strBak(i)=Text1(i).TextEndIfNextiEndSub第74页9.数据清零辅助函数设置本辅助函数作用是实现将用户先前所设置条件进行清0,以使其恢复到原始状态。详细设计代码以下:
PrivateSubtoNull()Fori=0To2Text1(i).Text="“
strBak(i)=""NextiEndSub第75页10.关闭窗体事件处理函数本段代码主要是用来将数据统计集合释放和关闭,释放数据链接。详细设计代码以下:第76页PrivateSubForm_Unload(CancelAsInteger)OnErrorGoToKKrs.Close'将数据统计集合释放Setrs=Nothingqrs.CloseSetqrs=noting'关闭数据链接第77页con.Close'释放数据链接
Setcon=NothingKK:EndSub
第78页4.3.5设计排课管理窗体(Form2)页面经过课程安排窗体能够查看并修改各个班级、教师课程信息,并能够查看最终课程编排表。设置本窗体操作方法是在工程中添加一个Form类型,然后将其命名为Form2.frm。其设计视图如图4-3-5所表示。第79页图4-3-5Form2窗口设计视图第80页1.定义窗体级变量本段代码作用主要是用来定义数据连接、数据集和存放暂时变量以及各数据集。详细设计代码以下:第81页OptionExplicit'定义数据链接DimconnAsADODB.Connection'定义教师数据集DimrsTrAsADODB.Recordset'定义学生数据集DimrsSjAsADODB.RecordsetDimi,j,sjCntAsInteger'储存班级编号暂时字符串变量DimClassCodeAsStringDimTrChanged,ClassChangedAsBoolean'存放SQL语句暂时变量DimstrSqlAsString第82页'存放教师信息数据集DimrsTrAryAsADODB.Recordset'存放各班级信息数据集DimrsClassAryAsADODB.RecordsetDimStrTr(9)AsStringDimstrSj(49)AsString
Dimminht,maxHtAsInteger第83页2.窗体加载事件处理函数该函数作用主要是用来设置数据源和数据连接,并将系统参数进行初始化。详细代码以下:第84页PrivateSubForm_Load()Me.MousePointer=11
'为数据链接分配空间Setconn=NewADODB.ConnectionSetrsTr=NewADODB.RecordsetSetrsSj=NewADODB.RecordsetSetrsTrAry=NewADODB.RecordsetSetrsClassAry=NewADODB.Recordset第85页'设置数据源conn.Open"provider=Microsoft.Jet.OLEDB.4.0;datasource="&App.Path&"\dataUse.mdb"rsTr.Open"select*fromteacher",conn,adOpenStatic,adLockOptimisticrsSj.Open"select*fromsubject",conn,adOpenStatic,adLockOptimisticminht=4090maxHt=9000第86页'初始化统计集sjCnt=rsSj.RecordCountCallcomboInit
'设置窗体中各控件属性EnableSave(False)cb(1).Enabled=False
'设置显示窗口高度Me.Height=minhtMe.MousePointer=0EndSub第87页3.当系统允许进行数据保留操作时处理函数本段代码主要作用是当系统在允许进行数据保留操作时为其设置一些对应控件Enable属性。详细代码以下:
第88页PrivateSubEnableSave(okAsBoolean)DimkAsIntegerFork=0To3Ifk<2Thencb(k).Enabled=NotokElsecb(k).Enabled=okEndIf第89页NextkFrame7.Enabled=NotokFrame2.Enabled=okFrame3.Enabled=ok
EndSub第90页4.显示数据处理集辅助处理函数本段代码作用是使得本控件能够依据用户所选择班级来显示对应信息。详细代码以下:第91页PrivateSubdisplayInfo()Forj=0TosjCnt-1strSql="selectcteacherfromtrclasswherecclasscode='"&ClassCode&"'andcsubject='"&Trim(Label2(j).Caption)&"'"SetrsTrAry=conn.Execute(strSql)第92页'这里用另一个方法创建recordset'rsTrAry.IfNotrsTrAry.EOFThen
Combo2(j).Text=rsTrAry.Fields(0)'rsTrAry!cteacherCombo2(j).Tag=rsTrAry.Fields(0)'rsTrAry!cteacherElseCombo2(j).Text=""Combo2(j).Tag=""EndIf第93页Nextj
Fori=0To49DimX,YAsIntegerX=Int(i/5+1)Y=iMod5+1strSql="selectcsjnamefromclassarraywherecclasscode='"&ClassCode&"'anditimew="&Y&"anditimen="&X第94页SetrsClassAry=conn.Execute(strSql)IfNotrsClassAry.EOFThenCombo3(i).Text=rsClassAry.Fields(0)Combo3(i).Tag=rsClassAry.Fields(0)ElseCombo3(i).Text=""Combo3(i).Tag=""EndIfNextiEndSub第95页5.时钟1事件处理函数本函数作用主要是用来显示课程表。其设计代码以下:PrivateSubTimer1_Timer()IfCommand1.Caption=">>"ThenIfMe.Height<maxHtThenMe.Height=Me.Height+150ElseTimer1.Enabled=FalseCommand1.Caption="<<"Command1.ToolTipText="收起课程表!"第96页Me.Height=maxHtTimer2.Enabled=FalseCommand1.BackColor=RGB(255,255,255)Shape2.BackColor=RGB(0,100,200)EndIfElseIfMe.Height>minhtThenMe.Height=Me.Height-150Else第97页Timer1.Enabled=FalseCommand1.Caption=">>"Command1.ToolTipText="课程表在这里!"Me.Height=minhtTimer2.Enabled=TrueEndIfEndIfEndSub第98页6.时钟2事件处理函数本时钟2事件处理函数主要用来控制导航条闪烁情况。详细设计代码以下:
PrivateSubTimer2_Timer()Staticr,g,bAsIntegerCommand1.BackColor=RGB(r,g,b)Shape2.BackColor=RGB(255-r,255-g,255-b)r=r+15g=g+39b=b+87第99页Ifr>255Thenr=0EndIfIfg>255Theng=0EndIfIfb>255Thenb=0EndIf
EndSub第100页7.单击【浏览表】Frame中按钮事件处理函数当用户在单击【浏览表】Frame中按钮事件时可利用本段代码来实现对其进行查看、修改和排定课程等功效。详细代码以下:第101页PrivateSubcb_Click(IndexAsInteger)'设置鼠标指针Me.MousePointer=11'进行异常处理OnErrorGoToerrDealSelectCaseIndex'查看课程信息第102页Case0:ClassCode=Trim(Combo1(0).Text)&"."&Trim(Combo1(1).Text)IfLen(Trim(Combo1(0).Text))>0AndLen(ClassCode)>1ThenCalldisplayInfocb(1).Enabled=TrueEndIf'修改课程信息第103页Case1:cb_Click(0)EnableSave(True)cb(1).Enabled=False'保留课程信息第104页Case2:IfTrChangedThenstrSql="delete*fromtrclasswherecclasscode='"&ClassCode&"'"conn.ExecutestrSqlDimstrTrNameAsStringFori=0TosjCnt-1strTrName=Trim(Combo2(i).Text)IfLen(strTrName)>0Then'设置SQL语句第105页strSql="insertintotrclassvalues('"&ClassCode&"',"+"'"+Trim(Label2(i).Caption)+"',"+"'"+Trim(Combo2(i).Text)+"')"conn.ExecutestrSqlEndIfNextiTrChanged=FalsersTrAry.Requerycb(1).Enabled=FalseEndIf第106页IfClassChangedThenconn.Execute"delete*fromclassarraywherecclasscode='"&ClassCode&"'"DimX,YAsInteger'设置课程表
Fori=0To49Y=iMod5+1X=Int(i/5)+1IfLen(Trim(Combo3(i).Text))>0ThenstrSql="insertintoclassarrayvalues('"&ClassCode&"',"&Y&","&X&",第107页'"&Trim(Combo3(i).Text)&"')"conn.ExecutestrSqlEndIfNextiClassChanged=FalsersClassAry.RequeryEndIfEnableSave(False)'取消查询到课程信息第108页Case3:Fori=0TosjCnt-1Combo2(i).Text=Combo2(i).TagNextiFori=0To49Combo3(i).Text=Combo3(i).TagNextiEnableSave(False)cb(1).Enabled=FalseEndSelect第109页GoTookerrDeal:MsgBox"ErrorUnknown"ok:Me.MousePointer=0
EndSub第110页8.ComboBox控件初始化辅助函数利用ComboBox控件初始化辅助函数能够很轻松地从数据库中读入课程信息并将其显示在适当位置上。详细实现设计代码以下:第111页PrivateSubcomboInit()rsSj.MoveFirstDimtrCntAsIntegertrCnt=rsTr.RecordCountrsTr.MoveFirstCombo1(0).Text=""Combo1(1).Text=""
'为所编辑控件添加List元素第112页Fori=1To12Combo1(0).AddItem(i)NextiFori=1To20Combo1(1).AddItem(i)Nexti
Fori=0To9Combo2(i).Text=""Ifi<sjCntThenLabel2(i).Caption=rsSj!csjname第113页rsSj.MoveNextElseLabel2(i).Visible=FalseCombo2(i).Visible=FalseEndIfLabel3(i).Caption=i+1NextiFori=0TosjCnt?1Ifi>0ThenForj=0TotrCnt?1Combo2(i).List(j)=Combo2(0).List(j)第114页NextjElsersTr.MoveFirstWhileNotrsTr.EOFCombo2(i).AddItem(rsTr.Fields(0))rsTr.MoveNextWendEndIfNextiFori=0To49Combo3(i).Text=""Forj=0TosjCnt?1第115页Combo3(i).AddItem(Label2(j).Caption)NextjNexti
EndSub第116页9.Combo2下拉选择框Change事件处理函数该函数主要用来修改TrChanged参数,方便于通知系统参数发生改变。详细代码以下:
PrivateSubCombo2_Change(IndexAsInteger)TrChanged=TrueEndSub第117页10.Combo3下拉选择框Change事件处理函数该函数主要用来修改TrChanged参数,以通知系统参数发生了改变。详细代码以下:
PrivateSubCombo3_Change(IndexAsInteger)ClassChanged=TrueEndSub第118页11.Command1单击事件处理函数该函数作用是用来开启时钟。详细代码以下:PrivateSubCommand1_Click()Timer1.Enabled=TrueEndSub第119页12.窗体大小改变事件处理函数利用窗体大小改变事件处理函数能够调整Frame3位置。详细设计代码以下:
PrivateSubForm_Resize()
‘
设置Frame3高度
Frame3.Top=Me.Height-Frame3.Height-520EndSub
第120页13.窗体关闭事件处理函数窗体关闭事件处理函数作用是用来实现用户在关闭对应窗体事件时释放对应数据统计和数据连接。详细代码以下:第121页PrivateSubForm_Unload(CancelAsInteger)OnErrorGoToErr:rsTr.ClosersSj.ClosersTrAry.ClosersClassAry.CloseSetrsTr=NothingSetrsSj=Nothing第122页SetrsTrAry=NothingSetrsClassAry=Nothingconn.CloseSetconn=NothingErr:EndSub第123页4.3.6设计课程查询窗体(Form3)页面经过课程查询窗体能够很方便地查看并修改各个教师代课信息,并能够实现查看修改后最终课程编排情况表。第124页
其窗体控件设计步骤以下:
(1)在工程中添加一个Form类型,并将其命名为Form3.frm。
(2)在该窗体控件中设计如图4-3-6所表示各种窗体控件。
(3)为不一样窗体控件添加上对应程序代码。
(4)全部设计好之后,按F5键运行、调试、修正和完善程序代码。第125页图4-3-6课程查询窗体Form3设计视图第126页1.定义窗体级变量本段代码作用主要是用来定义数据链接、数据集、数据结构和存放暂时变量以及各数据集等。详细设计代码以下:
OptionExplicit'定义数据链接
DimconnAsADODB.Connection'定义暂时数据集
DimrsAsADODB.Recordset'定义教师数据集
DimrsTrAsADODB.Recordset第127页'存放SQL语句暂时变量Dimi,j,value,idxAsIntegerDimstrName,strSqlAsString
'定义数据结构DataGetPrivateTypeDataGetclassAsStringSjnameAsString第128页TwAsIntegerTnAsIntegerEndType第129页2.窗体载入事件处理函数该函数主要作用是用来设置数据源和数据连接,并初始化系统参数。详细代码以下:
PrivateSubForm_Load()Me.MousePointer=11第130页OnErrorGoToKKaSetconn=NewADODB.Connection
conn.Open"provider=Microsoft.Jet.OLEDB.4.0;datasource="&App.Path&"\dataUse.mdb"SetrsTr=conn.Execute("selectctrnamefromteacher")Fori=0To9Label3(i).Caption=i+1Nexti第131页WhileNotrsTr.EOFCombo1.AddItem(rsTr.Fields(0))rsTr.MoveNext
WendCallClearCombostrSql="selecttrclass.cclasscode,trclass.csubject,classarray.itimew,classarray.itimen"+"fromteacher,trclass,classarray"+"whereteacher.ctrname=trclass.cteacherandtrclass.cclasscode=classarray.cclasscode"第132页+"andtrclass.csubject=classarray.csjnameandteacher.ctrname="
value=0GoTookKKa:MsgBox"ErrorUnknown"ok:Me.MousePointer=0
EndSub第133页3.输入数据事件处理函数该函数作用是直接调用Command1_Click,来完成对课程进行查询。详细设计代码以下:
PrivateSubOpn_Click(IndexAsInteger)'设定选项
value=IndexCallCommand1_Click
EndSub第134页4.单击【查询】按钮事件处理函数该函数作用是当用户在单击【查询】按钮之后,实现对所查询课程信息进行查询和显示功效。详细设计代码以下:
PrivateSubCommand1_Click()OnErrorGoTobnEndMe.MousePointer=11
DimsSqlAsStringDimdgUseAsDataGet第135页CallClearCombostrName=LTrim$(RTrim$(Combo1.Text))IfLen(strName)>0ThensSql=strSql&"'"&strName&"'"
Setrs=conn.Execute(sSql)IfNotrs.EOFThenWhileNotrs.EOFdgUse.class=rs.Fields(0)第136页dgUse.Sjname=rs.Fields(1)dgUse.Tw=rs.Fields(2)dgUse.Tn=rs.Fields(3)idx=(dgUse.Tn-1)*5+dgUse.Tw-1Combo3(idx).Visible=TrueCombo3(idx).AddItem(dgUse.class&"班")Combo3(idx).AddItem(dgUse.Sjname)Combo3(idx).Text=Combo3(idx).List(value)rs.MoveNextWendElse第137页MsgBox"没有得到相关数据,请检验",vbOKOnly+vbInformation,"数据捕捉"EndIfDimlcntAsIntegerForlcnt=0To49IfCombo3(lcnt).ListCount>2ThenCombo3(lcnt).BackColor=RGB(200,255,255)Combo3(lcnt).AddItem("注意有重课")
EndIf第138页NextlcntElseMsgBox"请输入或选择一教职员工姓名",vbInformation+vbOKOnly,"查询输入"EndIfbnEnd:Me.MousePointer=0
EndSub第139页5.去除ComboBox里内容本段代码功效设计比较简单,详细代码以下:PrivateSubClearCombo()Fori=0To49Combo3(i).BackColor=RGB(255,255,255)
Combo3(i).Text=""Combo3(i).Visible=FalseCombo3(i).ClearNextiEndSub第140页6.窗体卸载事件处理函数窗体卸载事件处理函数作用是用来实现用户在关闭对应窗体事件时释放对应数据统计和数据连接,关闭数据源详细代码以下:第141页PrivateSubForm_Unload(CancelAsInteger)OnErrorGoToKK:rs.ClosersTr.CloseSetrs=NothingSetrsTr=Nothingconn.CloseSetconn=NothingKK:EndSub第142页4.3.7课程设置窗体(Form4.frm)程序实现利用课程设置窗体能够让用户方便地设置本学期学校所开设课程名称。本窗体中各控件设计也比较简单,只要先在工程中添加一个“Form”类型,并将其命名为Form4.frm,然后再为其设计添加各种对应控件,如图4-3-7所表示。第143页图4-3-7Form4设计视图第144页1.定义窗体级变量本段代码作用主要是用来定义一些惯用数据链接、数据集和暂时字符串变量。详细设计代码以下:OptionExplicit'定义数据链接DimconAsADODB.Connection'定义数据集DimrsAsADODB.Recordset'定义暂时字符串变量Dimstr(9)AsString第145页2.窗口载入事件处理函数该函数主要作用是用来设置数据源和数据连接,并对本窗体中系统参数进行初始化。详细代码以下:PrivateSubForm_Load()Setcon=NewADODB.ConnectionSetrs=NewADODB.Recordset
CallclearTxtCanSave(False)第146页con.Open"provider=Microsoft.Jet.OLEDB.4.0;datasource="&App.Path&"\dataUse.mdb"rs.Open"select*fromsubject",con,adOpenStatic,adLockOptimisticCalldisplayInfo
EndSub第147页3.修改窗口Enable属性能够对窗口Enable属性进行修改,详细代码以下:PrivateSubCanSave(bSaveAsBoolean)Frame1.Enabled=bSavecn(1).Enabled=bSavecn(2).Enabled=bSave
cn(0).Enabled=NotbSave
EndSub第148页4.实现【修改】、【保留】和【取消】按钮单击事件处理函数这类函数作用是当用户在单击【修改】、【保留】和【取消】按钮之后,实现对所查询信息进行修改、保留和取消功效。详细设计代码以下:第149页PrivateSubcn_Click(IndexAsInteger)DimlcntAsIntegerDimstrTxtAsString
SelectCaseIndex'修改所查询到信息Case0:CanSave(True)'保留查询信息第150页Case1:con.Execute("delete*fromsubject")
Forlcnt=0To9strTxt=Trim$(LTrim$(Txt(lcnt).Text))IfLen(strTxt)>0Thenrs.AddNewrs!csjname=strTxtrs.UpdateEndIfNextlcntCanSave(False)'取消第151页Case2:Forlcnt=0To9Txt(lcnt)=str(lcnt)NextlcntCanSave(False)EndSelect
ExitSub
ex:MsgBox"databaseerror",vbOKOnly+vbExclamation,"error"
EndSub第152页5.显示数据统计辅助函数这类函数作用是依据用户所选择相关课程,显示对应信息。详细代码以下:第153页PrivateSubdisplayInfo()rs.MoveFirstDimlcntAsIntegerlcnt=0While(Notrs.EOFAndlcnt<10)
Txt(lcnt).Text=rs!csjnamestr(lcnt)=Txt(lcnt).Text第154页lcnt=lcnt+1rs.MoveNext
Wend
EndSub第155页6.去除编辑框汉字字辅助函数该函数主要作用是用来释放编辑框中文字统计。详细代码以下:
PrivateSubclearTxt()DimlcntAsIntegerForlcnt=0To9Txt(lcnt).Text=""Nextlcnt
End
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业示范温室大棚安装协议
- 儿童玩具设计总监聘任合同
- 厂房水电施工合同:印刷业篇
- 演出器材租赁合同
- 生态农业园绿化施工合同
- 建筑公司项目经理聘请协议
- 知识产权保护合同规范
- 图书馆资料储存分类方法
- 煤矿安全监查员工作规范
- 旅游景点设施管理
- YYT 0916.1-2014 医用液体和气体用小孔径连接件 第1部分:要求
- 2024电化学储能电站巡视检查项目表
- 绿化种植补种合同范本
- 生物质黑颗粒技术介绍材料A
- NBT11222-2023光伏组串I-V检测及诊断技术规范
- 混凝烧杯搅拌实验讲义一
- 光伏逆变器安装施工方案
- 周志华-机器学习-Chap01绪论-课件
- 部编版六年级年册《第五单元习作 围绕中心意思写》课件
- 2024-2030中国胎牛血清市场现状研究分析与发展前景预测报告
- MOOC 音乐与科学-南京邮电大学 中国大学慕课答案
评论
0/150
提交评论