还剩53页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
毕业论文题目学生信息管理系统院系名称信息工程系专业班级计算机网络技术学生姓名学号指导教师20年月日摘要使用本系统进行学生信息的管理,其中包括有系统用户的管理,院系管理,专业管理,学生信息管理,教学计划管理,以及学生成绩的管理系统用户管理是管理用户信息的添加、修改、删除和查询功能;院系管理是管理院系信息的添加、修改、删除和查询功能;专业管理是管理专业信息的添加、修改、删除和查询功能;学生信息管理是管理学生信息的添加、修改、删除和查询功能;教学计划管理是管理教学计划的添加、修改、删除和查询功能;学生成绩管理是管理学生成绩信息的添加、修改、删除和查询功能关键字学生信息管理窗体目录1引言…………………………………………………………………………
11.1项目开发计划阶段………………………………………………………
11.2开发阶段…………………………………………………………………12学生信息管理系统简介……………………………………………………33系统功能分析………………………………………………………………54系统数据库设计……………………………………………………………
64.1定义数据字典……………………………………………………………
64.2定义数据库结构…………………………………………………………65系统应用程序设计…………………………………………………………
95.1新建工程…………………………………………………………………
95.2窗体设计…………………………………………………………………9结束语…………………………………………………………………………49致谢……………………………………………………………………………50参考文献………………………………………………………………………51附录……………………………………………………………………………521引言目前,随着高等院校办学规模的不断扩大,学生人数的逐年增长,学校对学生的信息管理工作也变得越来越繁重为此,很大大中专院校都开发或购买了学生信息管理系统,用于对学校学生的基本信息、课程设置信息、成绩信息等进行计算机管理从而方便快捷的对学生信息进行管理,保证了学校管理的正常并有效的进行着,不会因学生信息繁多,不好管理而影响学校的学生扩招计划从而使学校快速持续稳定的发展着本系统分为六个功能模块即系统用户管理模块、院系管理模块、专业管理模块、学生信息管理模块、教学计划管理模块和学生成绩管理模块每个模块实现不同的功能系统用户管理模块是对用户信息的添加、修改、删除和查询功能的实现;院系管理模块是对院系信息的添加、修改、删除和查询功能的实现;专业管理模块是对专业信息的添加、修改、删除和查询功能的实现;学生信息管理模块是对学生信息的添加、修改、删除和查询功能的实现;教学计划管理模块是对教学计划的添加、修改、删除和查询功能的实现;学生成绩管理模块是对学生成绩信息的添加、修改、删除和查询功能的实现
1.1项目开发计划阶段这个时期的主要任务是分析用户需求,分析软件系统所追求的目标,分析开发该系统的可行性经过了解大致可以分为以下两个阶段
(1)问题定义阶段收集、分析、理解、确定用户的要求,在与用户进行全面讨论的基础上共同拟定“软件系统目标与范围说明书”
(2)可行性研究阶段确立对问题定义阶段确实的问题是否有可行的解决方案,并对各种可能方案做出成本和效益分析,系统分析员据此提出“可行性论证报告”,作为确定是否继续进行这项工程的依据
1.2开发阶段这个时期包括设计和实现两个任务其中设计任务又分为需求分析和系统设计两个阶段,实现任务包括编程和测试两个阶段
(1)需求分析阶段确定用户对软件系统的全部需求,并以“需求说明书”的形式表达,其目的是明确该软件项目是用来“做什么”的需求分析是整个开发任务的开始,也是最重困难、最耗时的一步作为基础的需求分析是否做得充分与准确,直接决定了构建数据库与应用系统的速度和质量需求分析做得不好,有时甚至会导致整个系统作废
(2)系统设计阶段设计软件系统的模块层次结构,设计模块的控制流程,其目的是明确软件系统“如何做”本阶段又可以分为概要设计和详细设计两个步骤,前者完成软件系统模块的划分和模块的层次结构以及数据库结构设计;后者完成每个模块的控制流程设计本阶段要完成“设计说明书”的编写
(3)编程阶段本阶段将按照选定的程序设计语言将“设计说明书”中每个模块的控制流程编写出相应的程序,得到软件系统的源程序
(4)测试阶段软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终审查,是保证软件质量的关键步骤2学生信息管理系统简介本章讲述如何实现学生信息管理系统的开发,该系统各主要功能模块界面如图下3系统功能分析在实际开发此系统时,系统功能分析需要设计人员与用户进行全面、深入的交流,切实了解用户对整个系统期望具有的功能,与用户共同决定系统应具备的功能学生信息管理系统主要具有以下功能●系统用户管理管理用户信息的添加、修改、删除和查询功能●院系管理管理院系信息的添加、修改、删除和查询功能●专业管理管理专业信息的添加、修改、删除和查询功能●学生信息管理管理学生信息的添加、修改、删除和查询功能●教学计划管理管理教学计划的添加、修改、删除和查询功能●学生成绩管理管理学生成绩的添加、修改、删除和查询功能根据系统功能分析,可得到学生信息管理系统功能模块结构图如图3—1图3—1学生信息管理系统功能模块结构图4系统数据库设计数据库在学生信息管理系统中占有非常重要的地位,数据库设计的好坏将直接影响到系统的效率以及系统实现的效果合理的数据库结构设计可以提高数据存储的效率,保证数据的完整性和一致性,同时,合理的数据库结构也将有利于程序的实现数据库设计可包括两个部分定义数据字典、定义数据库结构
4.1定义数据字典在学生信息管理系统中有下面所示的数据字典
(1)系统用户数据系统用户数据包含的数据项有用户名、密码、用户权限
(2)院系信息数据院系信息数据包含的数据项有学院代码和学校名称
(3)专业信息数据专业信息数据包含的数据项有学院代码、专业代码和专业名称
(4)学生基本信息数据学生基本信息数据包含的数据项有学号、姓名、性别、生日、民族、政治面貌、籍贯和备注
(5)教学计划信息数据教学计划信息数据包含的数据项有学院代码、专业代码、课程代码、课程名称、学期、学时、学分和课程性质
(6)学生成绩信息数据学生成绩信息数据包含的数据项有学号、姓名、课程代码、成绩和备注
4.2定义数据库结构学生信息管理系统采用的后台数据库是MicrosoftOfficeAccess2003数据库系统,数据库名称为“StudentMIS.mdb“,其中包含了6张数据表,各表的名车设计结果分别如表4—1~表4—6所示
(1)系统用户数据表(login)系统用户数据表用来保存用户的账户信息,表中各字段的属性如表4—1所示表4—1“login“数据表的各字段属性字段名称数据类型字段大小主键标题user文本10用户名password文本10密码admin是/否是否为超级用户
(2)院系信息数据表(institute)院系信息数据表用来保存学校院系的信息,数据表中各字段的属性如表4—2所示表4—2“institute“数据表的各字段属性字段名称数据类型字段大小主键标题institude_id文本2Yes学院代码Institude_name文本22学院名称
(3)专业信息数据表(major)专业信息数据表用来保存学校各院系所设专业的信息,数据表中各字段的属性如表4—3所示表4—3“major“数据表的各字段属性字段名称数据类型字段大小主键标题Institude_id文本2Yes学院代码major_id文本2Yes专业代码major_name文本22专业名称
(4)学生信息数据表(students)学生信息数据表用来保存学校所有学生的基本信息,数据表中各字段的属性如表4—4所示表4—4“students“数据表的各字段属性字段名称数据类型字段大小主键标题number文本12Yes学号name文本8姓名sex文本1性别birth日期/时间生日nationality文本10民族political_party文本4政治面貌family_place文本30籍贯Memo备注备注说明学生信息数据表中的学号字段的字段名为number,其长度为12即number字段的前四位表示年级,其次两位表示学院代码,再次两位表示专业代码,接下来两位表示班级,最后两位表示序号
(5)教学计划信息数据表(lessons)教学计划信息数据表用来保存各学院专业所开设的各类课程的信息,数据表中各字段的属性如表4—5所示表4—5“lessons“数据表的各字段属性字段名称数据类型字段大小主键标题institude_id文本2Yes学院代码major_id文本2Yes专业代码lesson_id文本7Yes课程代码lesson_name文本50课程名称Term文本1学期hours数字整型(小数位数0)学时credit数字单精度型(小数位数1)学分lesson_type文本8课程性质
(6)学生成绩信息数据表(score)学生成绩信息数据表用来保存学生各门课程的成绩信息,数据表中各字段的属性如表4—6所示表4—6“score“数据表的各字段属性字段名称数据类型字段大小主键标题Number文本12Yes学号Name文本8姓名lesson_id文本7Yes课程代码Score数字单精度型(小数位数1,默认值0)成绩Memo备注备注5系统应用程序设计
5.1新建工程在VB中新建一个标准EXE工程,并将工程保存为“学生信息管理系统.vbp“接下来就可以设计各窗体,编写代码实现系统功能
5.2窗体设计在已建的“学生信息管理系统.vbp“工程中新建窗体,并在相应的窗体上添加文本框、标签、直线以及命令按钮等常用的VB内部控件,并设置相关属性值具体实现代码(部分)如下
1.用户登录窗体代码OptionExplicitDimtry_timesAsInteger尝试登陆次数PrivateSubForm_Load设置数据库路径StudentDBfile=App.Path\StudentMIS.mdb窗体中心定位CallScreenCenterMeEndSubPrivateSubcmdCancel_Click结束应用程序IfMsgBox你选择了退出登陆,是否退出_vbYesNo+vbInformation用户登陆=vbYesThenEndElseExitSubEndIfEndSubPrivateSubcmdOK_ClickDimsNameAsStringsPasAsStringDimmrsAsADODB.RecordsetstrSQLAsStringsName=TrimtxtUserName.Text:sPas=TrimtxtPassword.Text数据有效性检查IfsName=ThenMsgBox请输入用户名!vbCritical用户登陆验证txtUserName.SetFocusExitSubEndIfIfsPas=ThenMsgBox请输入密码!vbCritical用户登陆验证txtPassword.SetFocusExitSubEndIf检查用户名是否正确strSQL=select*fromloginwhereuser=sNameSetmrs=ExecuteSQLstrSQLIfmrs.EOF=TrueThenMsgBox用户名不存在!vbCritical用户登陆验证try_times=try_times+1Iftry_times=3ThenMsgBox您已经三次尝试进入本系统,均不成功,系统将关闭!_vbCritical用户登陆验证EndElsetxtUserName.SetFocustxtUserName.SelStart=0txtUserName.SelLength=LentxtUserName.TextExitSubEndIfEndIfstrSQL=select*fromloginwhereuser=sName_andpassword=sPasSetmrs=ExecuteSQLstrSQLIfmrs.EOF=TrueThenMsgBox密码错误!vbCritical用户登陆验证try_times=try_times+1Iftry_times=3ThenMsgBox您已经三次尝试进入本系统,均不成功,系统将关闭!_vbCritical用户登陆验证EndElsetxtPassword.SetFocustxtPassword.SelStart=0txtPassword.SelLength=LentxtPassword.TextExitSubEndIfEndIfMsgBox登陆成功!vbInformation用户登陆验证保存当前登陆的权限bolAuthority=mrs.Fieldsadmin加载MDI主窗体StudentMIS.Show卸载登陆窗体UnloadMeEndSub
2.主窗体代码OptionExplicitPrivateSubMDIForm_Load操作菜单按钮禁用CallInitMenuAndToolbarsFalseInitMenuAndToolbars为标准模块中自定义的公用函数EndSub教学计划信息菜单单击事件PrivateSubmMan_Lessons_ClickIfunloadChildFormThenfrmLessons.Show操作菜单按钮使能CallInitMenuAndToolbarsTrueEndSub专业信息菜单单击事件PrivateSubmMan_Major_ClickIfunloadChildFormThenfrmMajor.Show操作菜单按钮使能CallInitMenuAndToolbarsTrueEndSub成绩信息菜单单击事件PrivateSubmMan_Score_ClickmOpe_CreTable.Enabled=False建表菜单失效IfunloadChildFormThenfrmScore.Show操作菜单按钮使能CallInitMenuAndToolbarsTrueEndSub学生信息菜单单击事件PrivateSubmMan_Students_ClickIfunloadChildFormThenfrmStudent.Show操作菜单按钮使能CallInitMenuAndToolbarsTrueEndSub还原菜单命令PrivateSubmOpe_Cancel_ClickCallMe.ActiveForm.CancelDataEndSub清空菜单命令PrivateSubmOpe_Clear_ClickDims$k%s=是否确定删除当前的记录表的全部数据?k=MsgBoxsvbYesNo+vbQuestion操作提示Ifk=vbYesThenCallMe.ActiveForm.ClearDataEndIfEndSub建表菜单命令PrivateSubmOpe_CreTable_ClickCallMe.ActiveForm.CreateScoreTableEndSub删除菜单命令PrivateSubmOpe_Delete_ClickCallMe.ActiveForm.DeleteDataEndSub保存菜单命令PrivateSubmOpe_Update_ClickCallMe.ActiveForm.SaveDataEndSub退出菜单命令PrivateSubmSys_Exit_ClickEndEndSub用户管理菜单命令PrivateSubmSys_User_ClickIfunloadChildFormThenfrmUserManage.ShowEndSub工具栏按钮单击事件PrivateSubToolbar1_ButtonClickByValButtonAsMSComctlLib.ButtonSelectCaseButton.KeyCaseDeleteCallmOpe_Delete_ClickCaseNewCallmOpe_CreTable_ClickCaseRecallCallmOpe_Cancel_ClickCaseClearCallmOpe_Clear_ClickCaseSaveCallmOpe_Update_ClickEndSelectEndSub
3.用户管理窗体部分代码OptionExplicitDimrsAsADODB.Recordset记录集对象DimstrSQLAsString字符串变量,保存SQL语言DimbEditAsBoolean编辑状态标志DimbAddAsBoolean添加状态标志PrivateSubForm_LoadSetrs=NewADODB.RecordsetstrSQL=select*fromloginSetrs=ExecuteSQLstrSQLIfrs.RecordCount=0ThenCallDisButtonsElsers.MoveFirstCallFillTextcmdUpdate.Enabled=FalsecmdCancel.Enabled=FalseEndIf窗体中心定位CallCenterPosStudentMISMeEndSubPrivateSubcmdEdit_Click编辑记录bEdit=TruecmdEdit.Enabled=FalsecmdAdd.Enabled=FalsecmdDelete.Enabled=FalsecmdUpdate.Enabled=TruecmdCancel.Enabled=TruecmdFirst.Enabled=FalsecmdPrevious.Enabled=FalsecmdNext.Enabled=FalsecmdLast.Enabled=FalsetxtUser.SetFocusEndSubPrivateSubcmdAdd_Click添加记录bAdd=Truers.AddNewCallClearTextcmdEdit.Enabled=FalsecmdAdd.Enabled=FalsecmdDelete.Enabled=FalsecmdUpdate.Enabled=TruecmdCancel.Enabled=TruecmdFirst.Enabled=FalsecmdPrevious.Enabled=FalsecmdNext.Enabled=FalsecmdLast.Enabled=FalsetxtUser.SetFocusEndSubPrivateSubcmdDelete_Click删除当前记录IfMsgBox真的要删除吗?vbYesNo+vbExclamation提示信息=vbYesThenrs.Deleters.MoveNextIfrs.EOFAndrs.RecordCount0Thenrs.MoveFirstIfrs.RecordCount=0ThenCallDisButtonsCallClearTextElseCallFillTextEndIfrs.RequeryEndIfEndSubPrivateSubcmdUpdate_Click更新IfTrimtxtUser.Text=ThenMsgBox用户名不能为空!vbCritical提示txtUser.SetFocusExitSubEndIfIfTrimtxtPassword.Text=ThenMsgBox密码不能为空!vbCritical提示txtPassword.SetFocusExitSubEndIfIfbEditThenrs.UpdateIfbAddThenrs.Updaters.Requeryrs.MoveLastEndIfCallFillTextcmdEdit.Enabled=TruecmdAdd.Enabled=TruecmdDelete.Enabled=TruecmdUpdate.Enabled=FalsecmdCancel.Enabled=FalsecmdFirst.Enabled=TruecmdPrevious.Enabled=TruecmdNext.Enabled=TruecmdLast.Enabled=TruebEdit=FalsebAdd=FalseEndSubPrivateSubcmdCancel_Click取消更改bEdit=FalsebAdd=Falsers.CancelUpdateIfrs.RecordCount=0ThencmdUpdate.Enabled=FalsecmdAdd.Enabled=TrueCallClearTextExitSubElseCallFillTextcmdEdit.Enabled=TruecmdAdd.Enabled=TruecmdDelete.Enabled=TruecmdUpdate.Enabled=FalsecmdCancel.Enabled=FalsecmdFirst.Enabled=TruecmdPrevious.Enabled=TruecmdNext.Enabled=TruecmdLast.Enabled=TrueEndIfEndSubPrivateSubcmdFirst_Click第一条记录rs.MoveFirstIfrs.RecordCount0ThenCallFillTextEndSubPrivateSubcmdPrevious_Click上一条记录rs.MovePreviousIfrs.BOFThenrs.MoveFirstIfrs.RecordCount0ThenCallFillTextEndSubPrivateSubcmdNext_Click下一条记录rs.MoveNextIfrs.EOFThenrs.MoveLastIfrs.RecordCount0ThenCallFillTextEndSubPrivateSubcmdLast_Click最后一条记录rs.MoveLastIfrs.RecordCount0ThenCallFillTextEndSubPrivateSubDisButtons按钮禁用cmdEdit.Enabled=FalsecmdDelete.Enabled=FalsecmdUpdate.Enabled=FalsecmdCancel.Enabled=FalsecmdFirst.Enabled=FalsecmdPrevious.Enabled=FalsecmdNext.Enabled=FalsecmdLast.Enabled=FalseEndSubPrivateSubFillText用当前记录的字段内容填充文本框txtUser.Text=TransNullrs.Fields0txtPassword.Text=TransNullrs.Fields1IfTransNullrs.Fields2ThenchkAdmin.Value=1ElsechkAdmin.Value=0EndIfEndSubPrivateSubClearText清除文本框txtUser.Text=txtPassword.Text=chkAdmin.Value=FalseEndSub4专业信息窗体代码OptionExplicitDimcnAsNewADODB.Connection连接对象DimDataEditedAsBoolean数据已编辑标志DimbFirstStartAsBoolean窗体首次启动的标志DataGrid内部错误处理PrivateSubDataGrid1_ErrorByValDataErrorAsIntegerResponseAsIntegerIfDataError=7007ThenMsgBox所输字符数超过允许输入字符最大个数,参见状态栏提示!_vbCritical错误提示Response=0不弹出系统错误提示框EndIfEndSub设置ADO数据控件的连接属性和记录源属性PrivateSubSetAdcAdodc
1.ConnectionString=Provider=Microsoft.Jet.OLEDB.
4.0;DataSource=_StudentDBfile;PersistSecurityInfo=FalseAdodc
1.RecordSource=selectmajor_idas专业代码major_nameas专业名称_formmajororderbymajor_idascEndSubPrivateSubAdodc1_FieldChangeCompleteByValcFieldsAsLongFieldsAsVariant_ByValpErrorAsADODB.ErroradStatusAsADODB.EventStatusEnum_ByValpRecordsetAsADODB.Recordset字段改变完成后触发的事件DataEdited=TrueEndSubPrivateSubAdodc1_RecordChangeCompleteByValadReasonAsADODB.EventReasonEnum_ByValcRecordsAsLongByValpErrorAsADODB.Error_adStatusAsADODB.EventStatusEnumByValpRecordsetAsADODB.Recordset记录改变完成后触发的事件SelectCaseadReasonCaseadRsnDeleteadRsnUpdateadRsnAddNewDataEdited=TrueEndSelectEndSubPrivateSubAdodc1_RecordsetChangeCompleteByValadReasonAsADODB.EventReasonEnum_ByValpErrorAsADODB.ErroradStatusAsADODB.EventStatusEnum_ByValpRecordsetAsADODB.Recordset记录集改变完成后触发的事件SelectCaseadReasonCaseadRsnAddNewadRsnDeleteadRsnAddNewDataEdited=TrueEndSelectEndSubDataGrid控件当前单元行列位置改变事件PrivateSubDataGrid1_RowColChangeLastRowAsVariantByValLastColAsIntegerDimdbrowAsLongs1$s2$s3$确定记录指针OnErrorResumeNextWithAdodc
1.RecordsetIf.RecordCount=0Thendbrow=.RecordCountElsedbrow=.AbsolutePositionEndIfs1=当前记录位置dbrows2=记录总数Adodc
1.Recordset.RecordCounts3=提示Adodc
1.Recordset.FieldsDataGrid
1.Col.Name最多只允许输入_Adodc
1.Recordset.FieldsDataGrid
1.Col.DefinedSize位字符!StatBar.Panels
1.Text=s1StatBar.Panels
2.Text=s2StatBar.Panels
3.Text=s3EndWithEndSubPublicSubDeleteData删除当前记录当前单元在最后一行,但没有AddNew操作,被挂起情况下退出该过程IfDataGrid
1.AddNewMode=dbgAddNewCurrentOrAdodc
1.Recordset.RecordCount=0ThenExitSubEndIfAdodc
1.Recordset.Bookmark=DataGrid
1.BookmarkAdodc
1.Recordset.Delete设置修改标志DataEdited=TrueDataGrid
1.RefreshEndSubPublicSubSaveData保存全部修改OnErrorGoToerrhandler:IfAdodc
1.Recordset.RecordCount0ThenAdodc
1.Recordset.MoveFirstAdodc
1.Recordset.UpdateBatchcn.CommitTrans提交事务DataEdited=FalseDataGrid
1.RefreshAdodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务ExitSuberrhandler:显示与数据库操作规则有关的错误信息CallShowDbRuleErrInf专业代码EndSubPublicSubCancelData还原全部修改OnErrorGoToerrhandler:IfAdodc
1.Recordset.RecordCount0ThenAdodc
1.Recordset.MoveFirstAdodc
1.Recordset.CancelBatchcn.RollbackTrans回滚事务DataEdited=FalseDataGrid
1.RefreshAdodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务ExitSuberrhandler:显示与数据库操作规则有关的错误信息CallShowDbRuleErrInf专业代码EndSubPublicSubClearData删空当前记录集CallDBRecordset_DeleteAdodc
1.RecordsetDataGrid
1.Refresh设置修改标志DataEdited=TrueEndSub窗体卸载前查询事件PrivateSubForm_QueryUnloadCancelAsIntegerUnloadModeAsIntegerDims$b%IfDataEdited=TrueThens$=数据已修改,是否保存?b=MsgBoxs$vbYesNoCancel+vbQuestion操作提示SelectCasebCasevbYes保存修改CallSaveDataCasevbNo取消修改CallCancelDataCasevbCancelCancel=True不关闭窗体ExitSubEndSelectEndIf操作菜单、按钮禁用CallInitMenuAndToolbarsFalseEndSub5学生信息窗体代码OptionExplicitDimcnAsNewADODB.Connection连接对象DimDataEditedAsBoolean数据已编辑标志DimbFirstStartAsBoolean窗体首次启动的标志DataGrid内部错误处理PrivateSubDataGrid1_ErrorByValDataErrorAsIntegerResponseAsIntegerIfDataError=7007ThenMsgBox所输字符数超过允许输入字符最大个数,参见状态栏提示!_vbCritical错误提示Response=0ElseIfDataError=7008ThenAdodc
1.Recordset.AddNewResponse=0EndIfEndSub设置ADO数据控件的连接属性和记录源属性PrivateSubSetAdcAdodc
1.ConnectionString=Provider=Microsoft.Jet.OLEDB.
4.0;DataSource=_StudentDBfile;PersistSecurityInfo=FalseAdodc
1.RecordSource=selectnumberas学号nameas姓名sexas性别birthas生日_nationalityas民族_political_partyas政治面貌family_placeas籍贯memoas备注fromstudentsEndSubPrivateSubAdodc1_FieldChangeCompleteByValcFieldsAsLongFieldsAsVariantByValpError_AsADODB.ErroradStatusAsADODB.EventStatusEnumByValpRecordsetAsADODB.Recordset字段改变完成后触发的事件DataEdited=TrueEndSubPrivateSubAdodc1_RecordChangeCompleteByValadReasonAsADODB.EventReasonEnum_ByValcRecordsAsLongByValpErrorAsADODB.Error_adStatusAsADODB.EventStatusEnumByValpRecordsetAsADODB.Recordset记录改变完成后触发的事件SelectCaseadReasonCaseadRsnDeleteadRsnUpdateadRsnAddNewDataEdited=TrueEndSelectEndSubPrivateSubAdodc1_RecordsetChangeCompleteByValadReasonAsADODB.EventReasonEnumByValpError_AsADODB.ErroradStatusAsADODB.EventStatusEnumByValpRecordsetAsADODB.Recordset记录集改变完成后触发的事件SelectCaseadReasonCaseadRsnAddNewadRsnDeleteadRsnAddNewDataEdited=TrueEndSelectEndSub当前单元位置改变事件PrivateSubDataGrid1_RowColChangeLastRowAsVariantByValLastColAsIntegerDimdbrowAsLongs1$s2$s3$确定记录指针OnErrorResumeNextWithAdodc
1.RecordsetIf.RecordCount=0Thendbrow=.RecordCountElsedbrow=.AbsolutePositionEndIfs1=当前记录位置dbrows2=记录总数Adodc
1.Recordset.RecordCounts3=提示Adodc
1.Recordset.FieldsDataGrid
1.Col.Name最多只允许输入_Adodc
1.Recordset.FieldsDataGrid
1.Col.DefinedSize位字符!StatBar.Panels
1.Text=s1StatBar.Panels
2.Text=s2StatBar.Panels
3.Text=s3EndWithEndSub年级组合框单击PrivateSubnjComb_ClickIfbFirstStartThenExitSubCallSaveData其后面的所有列表框显示全部xyComb.ListIndex=0zyComb.ListIndex=0bjComb.ListIndex=0根据选择的条件组合进行相应的查询CallConditionQuery重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集Adodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub学院组合框单击PrivateSubxyComb_ClickDimmsql$sArrayAsStringmrsAsNewADODB.RecordsetIfbFirstStartThenExitSubCallSaveData其后面的所有列表框显示全部zyComb.ListIndex=0bjComb.ListIndex=0重新填充专业组合框内容sArray=SplitxyComb.TextIfsArray0=全部Thenmsql=select*frommajororderbyinstitute_idmajor_idascSetmrs=ExecuteSQLmsqlCallADDComboListRSzyCombmrsTruemajor_nameinstitute_idmajor_idElsemsql=select*frommajorwhereinstitute_id=sArray1_orderbyinstitute_idmajor_idascSetmrs=ExecuteSQLmsqlCallADDComboListRSzyCombmrsTruemajor_nameinstitute_idmajor_idEndIf根据选择的条件组合进行相应的查询CallConditionQuery重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集Adodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub专业组合框单击PrivateSubzyComb_ClickIfbFirstStartThenExitSubCallSaveData其后面的所有列表框显示全部bjComb.ListIndex=0根据选择的条件组合进行相应的查询CallConditionQuery重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集Adodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub班级组合框单击PrivateSubbjComb_ClickIfbFirstStartThenExitSubCallSaveData根据选择的条件组合进行相应的查询CallConditionQuery重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集Adodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub根据选择的条件组合进行相应的查询PrivateSubConditionQueryDimmsql$sxyArrayAsStringszyArrayAsStringmsql=selectnumberas学号nameas姓名sexas性别birthas生日nationalityas民族_political_partyas政治面貌family_placeas籍贯memoas备注fromstudentssxyArray=SplitxyComb.TextszyArray=SplitzyComb.TextIfnjComb.Text=全部AndsxyArray0=全部AndszyArray0=全部_AndbjComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlStumsqlElseIfnjComb.Text全部AndsxyArray0=全部AndszyArray0=全部_AndbjComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlStumsqlnjComb.TextElseIfnjComb.Text=全部AndsxyArray0全部AndszyArray0=全部_AndbjComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlStumsqlsxyArray1ElseIfnjComb.Text=全部AndsxyArray0全部AndszyArray0=全部_AndbjComb.Text全部ThenAdodc
1.RecordSource=CreateSqlStumsqlsxyArray1bjComb.TextElseIfnjComb.Text=全部AndsxyArray0全部AndszyArray0全部_AndbjComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlStumsqlsxyArray1szyArray1szyArray2ElseIfnjComb.Text=全部AndsxyArray0全部AndszyArray0全部_AndbjComb.Text全部ThenAdodc
1.RecordSource=CreateSqlStumsqlsxyArray1szyArray1szyArray2bjComb.TextElseIfnjComb.Text全部AndsxyArray0全部AndszyArray0=全部_AndbjComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlStumsqlnjComb.TextsxyArray1ElseIfnjComb.Text=全部AndsxyArray0=全部AndszyArray0全部_AndbjComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlStumsqlszyArray1szyArray2ElseIfnjComb.Text=全部AndsxyArray0=全部AndszyArray0全部_AndbjComb.Text全部ThenAdodc
1.RecordSource=CreateSqlStumsqlszyArray1szyArray2bjComb.TextElseIfnjComb.Text全部AndsxyArray0全部AndszyArray0全部_AndbjComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlStumsqlnjComb.TextsxyArray1szyArray1szyArray2ElseIfnjComb.Text=全部AndsxyArray0=全部AndszyArray0=全部_AndbjComb.Text全部ThenAdodc
1.RecordSource=CreateSqlStumsqlbjComb.TextElseIfnjComb.Text全部AndsxyArray0全部AndszyArray0全部_AndbjComb.Text全部ThenAdodc
1.RecordSource=CreateSqlStumsqlnjComb.TextsxyArray1szyArray1szyArray2_bjComb.TextEndIfEndSubPublicSubSaveData保存全部修改OnErrorGoToerrhandler:IfAdodc
1.Recordset.RecordCount0ThenAdodc
1.Recordset.MoveFirstAdodc
1.Recordset.UpdateBatchcn.CommitTrans提交事务DataEdited=FalseDataGrid
1.RefreshAdodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务ExitSuberrhandler:显示与数据库操作规则有关的错误信息CallShowDbRuleErrInf学号EndSubPublicSubCancelData还原全部修改OnErrorGoToerrhandler:IfAdodc
1.Recordset.RecordCount0ThenAdodc
1.Recordset.MoveFirstAdodc
1.Recordset.CancelBatchcn.RollbackTrans回滚事务DataEdited=FalseDataGrid
1.RefreshAdodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务ExitSuberrhandler:显示与数据库操作规则有关的错误信息CallShowDbRuleErrInf学号EndSub6教学计划窗体代码OptionExplicitDimcnAsNewADODB.Connection连接对象DimDataEditedAsBoolean数据已编辑标志DimbFirstStartAsBoolean窗体首次启动的标志DataGrid内部错误处理PrivateSubDataGrid1_ErrorByValDataErrorAsIntegerResponseAsIntegerIfDataError=7007ThenMsgBox所输字符数超过允许输入字符最大个数,参见状态栏提示!_vbCritical错误提示Response=0ElseIfDataError=7008ThenAdodc
1.Recordset.AddNewResponse=0EndIfEndSub设置ADO数据控件的连接属性和记录源属性PrivateSubSetAdcAdodc
1.ConnectionString=Provider=Microsoft.Jet.OLEDB.
4.0;DataSource=_StudentDBfile;PersistSecurityInfo=FalseAdodc
1.RecordSource=selectinstitute_idas学院代码major_idas专业代码_lesson_idas课程代码_lesson_nameas课程名称termas学期hoursas学时_creditas学分lesson_typeas课程性质_fromlessonsorderbyinstitute_idmajor_idascEndSubPrivateSubAdodc1_FieldChangeCompleteByValcFieldsAsLongFieldsAsVariant_ByValpErrorAsADODB.ErroradStatusAsADODB.EventStatusEnum_ByValpRecordsetAsADODB.Recordset字段改变完成后触发的事件DataEdited=TrueEndSubPrivateSubAdodc1_RecordChangeCompleteByValadReasonAsADODB.EventReasonEnum_ByValcRecordsAsLongByValpErrorAsADODB.Error_adStatusAsADODB.EventStatusEnumByValpRecordsetAsADODB.Recordset记录改变完成后触发的事件SelectCaseadReasonCaseadRsnDeleteadRsnUpdateadRsnAddNewDataEdited=TrueEndSelectEndSubPrivateSubAdodc1_RecordsetChangeCompleteByValadReasonAsADODB.EventReasonEnum_ByValpErrorAsADODB.ErroradStatusAsADODB.EventStatusEnum_ByValpRecordsetAsADODB.Recordset记录集改变完成后触发的事件SelectCaseadReasonCaseadRsnAddNewadRsnDeleteadRsnAddNewDataEdited=TrueEndSelectEndSub当前单元格改变位置事件PrivateSubDataGrid1_RowColChangeLastRowAsVariantByValLastColAsIntegerDimdbrowAsLongs1$s2$s3$确定记录指针OnErrorResumeNextWithAdodc
1.RecordsetIf.RecordCount=0Thendbrow=.RecordCountElsedbrow=.AbsolutePositionEndIfs1=当前记录位置dbrows2=记录总数Adodc
1.Recordset.RecordCounts3=提示Adodc
1.Recordset.FieldsDataGrid
1.Col.Name最多只允许输入_Adodc
1.Recordset.FieldsDataGrid
1.Col.DefinedSize位字符!StatBar.Panels
1.Text=s1StatBar.Panels
2.Text=s2StatBar.Panels
3.Text=s3EndWithEndSubPrivateSubSSPanel1_ClickEndSub课程性质组合框单击PrivateSubtyComb_ClickIfbFirstStartThenExitSubCallSaveData根据选择的条件组合进行相应的查询CallConditionQuery重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集Adodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub学期组合框单击PrivateSubxqComb_ClickIfbFirstStartThenExitSubCallSaveData其后面的所有列表框显示全部tyComb.ListIndex=0根据选择的条件组合进行相应的查询CallConditionQuery重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集Adodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub学院组合框单击事件PrivateSubxyComb_ClickDimsArrayAsStringmsqlAsStringmrsAsADODB.RecordsetIfbFirstStartThenExitSubCallSaveData其后面的所有列表框显示全部zyComb.ListIndex=0xqComb.ListIndex=0tyComb.ListIndex=0重新填充专业组合框内容sArray=SplitxyComb.TextIfsArray0=全部Thenmsql=select*frommajororderbyinstitute_idmajor_idascSetmrs=ExecuteSQLmsqlCallADDComboListRSzyCombmrsTruemajor_nameinstitute_idmajor_idElsemsql=select*frommajorwhereinstitute_id=sArray1_orderbyinstitute_idmajor_idascSetmrs=ExecuteSQLmsqlCallADDComboListRSzyCombmrsTruemajor_nameinstitute_idmajor_idEndIf根据选择的条件组合进行相应的查询CallConditionQuery重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集Adodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub专业组合框单击PrivateSubzyComb_ClickIfbFirstStartThenExitSubCallSaveData其后面的所有列表框显示全部xqComb.ListIndex=0tyComb.ListIndex=0根据选择的条件组合进行相应的查询CallConditionQuery重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集Adodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub根据选择的条件组合进行相应的查询PrivateSubConditionQueryDimmsql$sxyArrayAsStringszyArrayAsStringmsql=selectinstitute_idas学院代码major_idas专业代码lesson_idas课程代码_lesson_nameas课程名称termas学期hoursas学时creditas学分_lesson_typeas课程性质fromlessonssxyArray=SplitxyComb.TextszyArray=SplitzyComb.TextIfsxyArray0=全部AndszyArray0=全部AndxqComb.Text=全部_AndtyComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlElseIfsxyArray0全部AndszyArray0=全部AndxqComb.Text=全部_AndtyComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlsxyArray1ElseIfsxyArray0全部AndszyArray0全部AndxqComb.Text=全部_AndtyComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlsxyArray1_szyArray1szyArray2ElseIfsxyArray0全部AndszyArray0全部AndxqComb.Text全部_AndtyComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlsxyArray1_szyArray1szyArray2xqComb.TextElseIfsxyArray0全部AndszyArray0全部AndxqComb.Text全部_AndtyComb.Text全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlsxyArray1_szyArray1szyArray2xqComb.TexttyComb.TextElseIfsxyArray0=全部AndszyArray0全部AndxqComb.Text=全部_AndtyComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlszyArray1szyArray2ElseIfsxyArray0=全部AndszyArray0全部AndxqComb.Text全部_AndtyComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlszyArray1szyArray2xqComb.TextElseIfsxyArray0=全部AndszyArray0全部AndxqComb.Text全部_AndtyComb.Text全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlszyArray1szyArray2_xqComb.TexttyComb.TextElseIfsxyArray0=全部AndszyArray0全部AndxqComb.Text=全部_AndtyComb.Text全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlszyArray1szyArray2_tyComb.TextElseIfsxyArray0=全部AndszyArray0=全部AndxqComb.Text全部_AndtyComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlxqComb.TextElseIfsxyArray0=全部AndszyArray0=全部AndxqComb.Text全部_AndtyComb.Text全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlxqComb.TexttyComb.TextElseIfsxyArray0全部AndszyArray0=全部AndxqComb.Text全部_AndtyComb.Text=全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlsxyArray1xqComb.TextElseIfsxyArray0全部AndszyArray0=全部AndxqComb.Text全部_AndtyComb.Text全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlsxyArray1xqComb.TexttyComb.TextElseIfsxyArray0全部AndszyArray0全部AndxqComb.Text=全部_AndtyComb.Text全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlsxyArray1_szyArray1szyArray2tyComb.TextElseIfsxyArray0全部AndszyArray0=全部AndxqComb.Text=全部_AndtyComb.Text全部ThenAdodc
1.RecordSource=CreateSqlLesmsqlsxyArray1tyComb.TextEndIfEndSubPublicSubSaveData保存全部修改OnErrorGoToerrhandler:IfAdodc
1.Recordset.RecordCount0ThenAdodc
1.Recordset.MoveFirstAdodc
1.Recordset.UpdateBatchcn.CommitTrans提交事务DataEdited=FalseDataGrid
1.RefreshAdodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务ExitSuberrhandler:显示与数据库操作规则有关的错误信息CallShowDbRuleErrInf学院代码、专业代码和课程代码的组合值EndSubPublicSubCancelData还原全部修改OnErrorGoToerrhandler:IfAdodc
1.Recordset.RecordCount0ThenAdodc
1.Recordset.MoveFirstAdodc
1.Recordset.CancelBatchcn.RollbackTrans回滚事务DataEdited=FalseDataGrid
1.RefreshAdodc
1.RefreshSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务ExitSuberrhandler:显示与数据库操作规则有关的错误信息CallShowDbRuleErrInf学院代码、专业代码和课程代码的组合值EndSubPublicSubClearData删空当前记录集CallDBRecordset_DeleteAdodc
1.RecordsetDataGrid
1.Refresh设置修改标志DataEdited=TrueEndSubPublicSubDeleteData删除当前记录当前单元在最后一行,但没有AddNew操作,被挂起情况下退出该过程IfDataGrid
1.AddNewMode=dbgAddNewCurrentOrAdodc
1.Recordset.RecordCount=0ThenExitSubEndIfAdodc
1.Recordset.Bookmark=DataGrid
1.BookmarkAdodc
1.Recordset.Delete设置修改标志DataEdited=TrueDataGrid
1.RefreshEndSub窗体卸载前查询事件PrivateSubForm_QueryUnloadCancelAsIntegerUnloadModeAsIntegerDims$b%IfDataEdited=TrueThens$=数据已修改,是否保存?b=MsgBoxs$vbYesNoCancel+vbQuestion操作提示SelectCasebCasevbYes保存修改CallSaveDataCasevbNo取消修改CallCancelDataCasevbCancelCancel=True不关闭窗体ExitSubEndSelectEndIf操作菜单、按钮禁用CallInitMenuAndToolbarsFalseEndSub7成绩信息窗体代码OptionExplicitDimcnAsNewADODB.Connection连接对象DimDataEditedAsBoolean数据已编辑标志DimbFirstStartAsBoolean窗体首次启动的标志PrivateSubForm_LoadDimmsql$mrsAsADODB.RecordsetsArrayAsString年级组合框njComb.ListIndex=0显示第一项填充学院组合框msql$=selectdistinctinstitute.institute_namelessons.institute_idfrom_institutelessonswhereinstitute.institute_id=lessons.institute_id_orderbylessons.institute_idascSetmrs=ExecuteSQLmsqlCallADDComboListRSxyCombmrsFalseinstitute_nameinstitute_id填充专业组合框sArray=SplitxyComb.Textmsql=selectdistinctmajor.major_namelessons.institute_id_lessons.major_idfrommajorlessonswhere_lessons.institute_id=sArray1_andlessons.institute_id=major.institute_id_andmajor.major_id=lessons.major_id_orderbylessons.institute_idlessons.major_idascSetmrs=ExecuteSQLmsqlCallADDComboListRSzyCombmrsFalsemajor_nameinstitute_idmajor_id班级组合框bjComb.ListIndex=0显示第一项学期组合框xqComb.ListIndex=0填充课程组合框sArray=SplitzyComb.Textmsql$=selectdistinctlesson_idlesson_namefromlessonswhereinstitute_id=_sArray1andmajor_id=sArray2andterm=_xqComb.Textorderbylesson_idascSetmrs=ExecuteSQLmsqlCallADDComboListRSkcCombmrsFalselesson_namelesson_id设置ADO控件CallSetAdcEndSub设置ADO数据控件的连接属性和记录源属性PrivateSubSetAdcDimszyArrayAsStringskcArrayAsStringszyArray=SplitzyComb.Text:skcArray=SplitkcComb.TextAdodc
1.ConnectionString=Provider=Microsoft.Jet.OLEDB.
4.0;DataSource=_StudentDBfile;PersistSecurityInfo=FalseAdodc
1.RecordSource=selectscore.numberas学号score.nameas姓名_score.lesson_idas课程代码score.scoreas成绩score.memoas备注_fromscorestudentswherescore.number=students.number_andscore.numberlikenjComb.TextszyArray1szyArray2bjComb.Text_%andscore.lesson_id=skcArray1orderbyscore.numberascEndSubDataGrid内部错误处理PrivateSubDataGrid1_ErrorByValDataErrorAsIntegerResponseAsIntegerIfDataError=7007ThenMsgBox所输字符数超过允许输入字符最大个数,参见状态栏提示!_vbCritical错误提示Response=0ElseIfDataError=7008ThenMsgBox不允许手动添加成绩记录,要输入成绩请选择“操作”菜单下的“建表”命令!_vbCritical错误提示Response=0EndIfEndSub设置建表菜单、命令按钮的使能与否状态PrivateSubSetCreTableMenuAndButtonEnbEnAsBooleanStudentMIS.mOpe_CreTable.Enabled=bEnStudentMIS.Toolbar
1.ButtonsNew.Enabled=bEnEndSub年级组合框单击事件PrivateSubnjComb_ClickIfbFirstStartThenExitSubCallSaveData重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集CallSetAdcAdodc
1.RefreshDataGrid
1.Columns
0.Locked=True不允许编辑学号DataGrid
1.Columns
1.Locked=True不允许编辑姓名DataGrid
1.Columns
2.Locked=True不允许编辑课程代码建表菜单当记录集为空时使能不为空时禁止IfAdodc
1.Recordset.RecordCount=0ThenCallSetCreTableMenuAndButtonEnTrueElseCallSetCreTableMenuAndButtonEnFalseEndIfSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub学院组合框单击事件PrivateSubxyComb_ClickDimmsql$sArrayAsStringmrsAsNewADODB.RecordsetIfbFirstStartThenExitSubCallSaveData填充专业组合框sArray=SplitxyComb.Textmsql=selectdistinctmajor.major_namelessons.institute_id_lessons.major_idfrommajorlessonswhere_lessons.institute_id=sArray1_andlessons.institute_id=major.institute_id_andmajor.major_id=lessons.major_id_orderbylessons.institute_idlessons.major_idascSetmrs=ExecuteSQLmsqlCallADDComboListRSzyCombmrsFalsemajor_nameinstitute_idmajor_id重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集CallSetAdcAdodc
1.RefreshDataGrid
1.Columns
0.Locked=True不允许编辑学号DataGrid
1.Columns
1.Locked=True不允许编辑姓名DataGrid
1.Columns
2.Locked=True不允许编辑课程代码建表菜单当记录集为空时使能不为空时禁止IfAdodc
1.Recordset.RecordCount=0ThenCallSetCreTableMenuAndButtonEnTrueElseCallSetCreTableMenuAndButtonEnFalseEndIfSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub专业组合框单击事件PrivateSubzyComb_ClickDimmsql$sArrayAsStringmrsAsNewADODB.RecordsetIfbFirstStartThenExitSubCallSaveData填充课程组合框sArray=SplitzyComb.Textmsql$=selectdistinctlesson_idlesson_namefromlessons_whereinstitute_id=sArray1andmajor_id=_sArray2andterm=xqComb.Text_orderbylesson_idascSetmrs=ExecuteSQLmsqlCallADDComboListRSkcCombmrsFalselesson_namelesson_id重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集CallSetAdcAdodc
1.RefreshDataGrid
1.Columns
0.Locked=True不允许编辑学号DataGrid
1.Columns
1.Locked=True不允许编辑姓名DataGrid
1.Columns
2.Locked=True不允许编辑课程代码建表菜单当记录集为空时使能不为空时禁止IfAdodc
1.Recordset.RecordCount=0ThenCallSetCreTableMenuAndButtonEnTrueElseCallSetCreTableMenuAndButtonEnFalseEndIfSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub班级组合框单击事件PrivateSubbjComb_ClickIfbFirstStartThenExitSubCallSaveData重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集CallSetAdcAdodc
1.RefreshDataGrid
1.Columns
0.Locked=True不允许编辑学号DataGrid
1.Columns
1.Locked=True不允许编辑姓名DataGrid
1.Columns
2.Locked=True不允许编辑课程代码建表菜单当记录集为空时使能不为空时禁止IfAdodc
1.Recordset.RecordCount=0ThenCallSetCreTableMenuAndButtonEnTrueElseCallSetCreTableMenuAndButtonEnFalseEndIfSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub学期组合框单击事件PrivateSubxqComb_ClickDimmsql$sArrayAsStringmrsAsNewADODB.RecordsetIfbFirstStartThenExitSubCallSaveData填充课程组合框sArray=SplitzyComb.Textmsql$=selectdistinctlesson_idlesson_namefromlessons_whereinstitute_id=sArray1andmajor_id=_sArray2andterm=xqComb.Text_orderbylesson_idascSetmrs=ExecuteSQLmsqlCallADDComboListRSkcCombmrsFalselesson_namelesson_id重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集CallSetAdcAdodc
1.RefreshDataGrid
1.Columns
0.Locked=True不允许编辑学号DataGrid
1.Columns
1.Locked=True不允许编辑姓名DataGrid
1.Columns
2.Locked=True不允许编辑课程代码建表菜单当记录集为空时使能不为空时禁止IfAdodc
1.Recordset.RecordCount=0ThenCallSetCreTableMenuAndButtonEnTrueElseCallSetCreTableMenuAndButtonEnFalseEndIfSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub课程组合框单击事件PrivateSubkcComb_ClickIfbFirstStartThenExitSubCallSaveData重新初始化状态栏显示信息StatBar.Panels
1.Text=当前记录位置0StatBar.Panels
2.Text=记录总数0StatBar.Panels
3.Text=打开更新后的记录集CallSetAdcAdodc
1.RefreshDataGrid
1.Columns
0.Locked=True不允许编辑学号DataGrid
1.Columns
1.Locked=True不允许编辑姓名DataGrid
1.Columns
2.Locked=True不允许编辑课程代码建表菜单当记录集为空时使能不为空时禁止IfAdodc
1.Recordset.RecordCount=0ThenCallSetCreTableMenuAndButtonEnTrueElseCallSetCreTableMenuAndButtonEnFalseEndIfSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务EndSub当前单元位置改变事件PrivateSubDataGrid1_RowColChangeLastRowAsVariantByValLastColAsIntegerDimdbrowAsLongs1$s2$s3$确定记录指针OnErrorResumeNextWithAdodc
1.RecordsetIf.RecordCount=0Thendbrow=.RecordCountElsedbrow=.AbsolutePositionEndIfs1=当前记录位置dbrows2=记录总数Adodc
1.Recordset.RecordCounts3=提示Adodc
1.Recordset.FieldsDataGrid
1.Col.Name最多只允许输入_Adodc
1.Recordset.FieldsDataGrid
1.Col.DefinedSize位字符!StatBar.Panels
1.Text=s1StatBar.Panels
2.Text=s2StatBar.Panels
3.Text=s3EndWithEndSub建表过程,新建成绩录入表PublicSubCreateScoreTableDimmrsAsNewADODB.Recordsetmsql$szyArrayAsStringskcArrayAsStringi%szyArray=SplitzyComb.Text:skcArray=SplitkcComb.Textmsql=selectnumbernamefromstudentswherenumberlikenjComb.Text_szyArray1szyArray2bjComb.Text%orderbynumberascSetmrs=ExecuteSQLmsqlIfmrs.RecordCount0Thenmrs.MoveFirstFori=1Tomrs.RecordCountAdodc
1.Recordset.AddNewAdodc
1.Recordset.Fields学号.Value=mrs.Fieldsnumber.ValueAdodc
1.Recordset.Fields姓名.Value=mrs.Fieldsname.ValueAdodc
1.Recordset.Fields课程代码.Value=skcArray1mrs.MoveNextNextiDataGrid
1.RefreshDataEdited=True建表菜单和建表工具栏按钮失效StudentMIS.mOpe_CreTable.Enabled=FalseStudentMIS.Toolbar
1.ButtonsNew.Enabled=FalseElseMsgBox无所选年级专业班的学生信息请检查选定条件是否正确!vbInformation提示EndIfEndSubPublicSubSaveData保存全部修改OnErrorGoToerrhandler:IfAdodc
1.Recordset.RecordCount0ThenAdodc
1.Recordset.MoveFirstAdodc
1.Recordset.UpdateBatchcn.CommitTrans提交事务DataEdited=FalseDataGrid
1.RefreshAdodc
1.RefreshDataGrid
1.Columns
0.Locked=True不允许编辑学号DataGrid
1.Columns
1.Locked=True不允许编辑姓名DataGrid
1.Columns
2.Locked=True不允许编辑课程代码建表菜单当记录集为空时使能不为空时禁止IfAdodc
1.Recordset.RecordCount=0ThenCallSetCreTableMenuAndButtonEnTrueElseCallSetCreTableMenuAndButtonEnFalseEndIfSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务ExitSuberrhandler:显示与数据库操作规则有关的错误信息CallShowDbRuleErrInf学号EndSubPublicSubCancelData还原全部修改OnErrorGoToerrhandler:IfAdodc
1.Recordset.RecordCount0ThenAdodc
1.Recordset.MoveFirstAdodc
1.Recordset.CancelBatchcn.RollbackTrans回滚事务DataEdited=FalseDataGrid
1.RefreshAdodc
1.RefreshDataGrid
1.Columns
0.Locked=True不允许编辑学号DataGrid
1.Columns
1.Locked=True不允许编辑姓名DataGrid
1.Columns
2.Locked=True不允许编辑课程代码建表菜单当记录集为空时使能不为空时禁止IfAdodc
1.Recordset.RecordCount=0ThenCallSetCreTableMenuAndButtonEnTrueElseCallSetCreTableMenuAndButtonEnFalseEndIfSetcn=Adodc
1.Recordset.ActiveConnection获取当前记录集的连接对象cn.BeginTrans开始一个新事务ExitSuberrhandler:显示与数据库操作规则有关的错误信息CallShowDbRuleErrInf学号EndSubPublicSubClearData删空当前记录集CallDBRecordset_DeleteAdodc
1.RecordsetDataGrid
1.Refresh设置修改标志DataEdited=True建表菜单当记录集为空时使能不为空时禁止IfAdodc
1.Recordset.RecordCount=0ThenCallSetCreTableMenuAndButtonEnTrueElseCallSetCreTableMenuAndButtonEnFalseEndIfEndSubPublicSubDeleteData删除当前记录当前单元在最后一行,但没有AddNew操作,被挂起情况下退出该过程IfDataGrid
1.AddNewMode=dbgAddNewCurrentOrAdodc
1.Recordset.RecordCount=0ThenExitSubEndIfAdodc
1.Recordset.Bookmark=DataGrid
1.BookmarkAdodc
1.Recordset.Delete设置修改标志DataEdited=TrueDataGrid
1.Refresh建表菜单当记录集为空时使能不为空时禁止IfAdodc
1.Recordset.RecordCount=0ThenCallSetCreTableMenuAndButtonEnTrueElseCallSetCreTableMenuAndButtonEnFalseEndIfEndSub8标准模块代码OptionExplicit数据库文件路径PublicStudentDBfileAsString保存用户权限(是否为超级用户)PublicbolAuthorityAsBoolean执行SQL命令参数为SQL语句字符串表达式,函数返回执行后的结果记录集PublicFunctionExecuteSQLByValsqlAsStringAsADODB.RecordsetDimmyconAsADODB.ConnectionDimrstAsADODB.RecordsetSetmycon=NewADODB.Connectionmycon.ConnectionString=Provider=Microsoft.Jet.OLEDB.
4.0;DataSource=_StudentDBfile;PersistSecurityInfo=Falsemycon.Open打开连接连接数据源IfmyconIsNothingThenMsgBox连接失败,请你检查数据库路径!EndIfDimsArrayAsStringOnErrorGoToexecutesql_errorsArray=SplitsqlIfInStrINSERTDELETEUPDATEUCasesArray0Thenmycon.ExecutesqlElseSetrst=NewADODB.Recordsetrst.OpensqlmyconadOpenKeysetadLockOptimistic打开记录集对象SetExecuteSQL=rstEndIfexecutesql_exit:Setrst=NothingSetmycon=NothingExitFunctionexecutesql_error:Resumeexecutesql_exitEndFunction空Null转换函数PublicFunctionTransNullRsFieldAsFieldAsVariantOnErrorResumeNextIfIsNullRsField.ValueThenSelectCaseRsField.TypeCaseadBooleanTransNull=FalseCaseadDateadCharTransNull=CaseadIntegeradCurrencyadSingleadDoubleTransNull=0CaseElseTransNull=0EndSelectElseTransNull=RsField.ValueEndIfEndFunction置窗体于屏幕中心PublicSubScreenCenterfmAsFormDimmt!ml!Withfmmt=Screen.Height-.Height*
0.5ml=Screen.Width-.Width*
0.
5.MovemlmtEndWithEndSubMDI子窗口中心定位PublicSubCenterPosparentfmAsFormchildfmAsFormWithchildfm.Top=parentfm.ScaleHeight-.Height*
0.
5.Left=parentfm.ScaleWidth-.Width*
0.5EndWithEndSub关闭所有MDI子窗体PublicFunctionunloadChildFormAsBooleanDimi%unloadChildForm=TrueForms集合的元素代表每一个在应用程序中加载的窗体包括MDI窗体MDI子窗体和非MDI窗体Forms集合只有一个属性Count,指定集合中元素的数目IfForms.Count=1ThenExitFunctionFori=Forms.Count-1To1Step-1UnloadFormsiNextiIfForms.Count1ThenunloadChildForm=FalseEndFunction显示的错误提示信息PublicSubShowDbRuleErrInfsNameAsStringSelectCaseErr.NumberCase-2147467259违背主关键字唯一性和非空性的规则时MsgBoxsName不能出现重复值或空值!vbCritical错误提示EndSelectEndSub删空记录集PublicSubDBRecordset_DeletersAsRecordsetIfrs.RecordsetCount=0ThenExitSubrs.MoveFirstDoWhilers.RecordsetCount0rs.Delete:rs.MoveNextLoopEndSub为一般用户设置访问权限IfNotbolAuthorityThen.mSys_User.Enabled=FalseEndWithEndSub填充组合框PublicSubADDComboListRSmboxAsObjectrsAsRecordsetAllEnableAsBooleanfld1NameAsStringOptionalfld2NameOptionalfld3Namefld1Name为要添加到ComboBox控件中的记录集字段名fld2Name为可选字段名,存在时将该字段作为fld1Name字段的附加信息Dimi%mbox.ClearIfAllEnable=TrueThenmbox.AddItem全部EndIfIfrs.RecordCount0ThenFori=1Tors.RecordCountIfIsMissingfld2NameThenmbox.AddItemrsfld1NameElseIfIsMissingfld3NameThenmbox.AddItemrsfld1Namersfld2NameElsembox.AddItemrsfld1Namersfld2Namersfld3NameEndIfEndIfrs.MoveNextNextiEndIfIfmbox.ListCount0Thenmbox.ListIndex=0EndSub构造学生表查询SQL语句PublicFunctionCreateSqlStusql$OptionalsnjOptionalszyOptionalsbjAsString说明like为模糊查询,_代表任意一个单字符,%代表任意多个字符DimqrySql$qrySql=sql判别年级参数snjEndSub结束语本系统实现对学校学生的基本信息、课程设置信息、成绩信息等进行计算机管理从而方便快捷的将庞大的学生信息进行管理本系统初步完成比较简略,数据存储空间有限,还有待于进一步提高完善致谢感谢指导老师对我们课题的指导以及本组所有参与研究讨论的成员参考文献
[1]谭浩强.VisualBasic程序设计.北京清华大学出版社.2006年(书)
[2]郑海春.VisualBasic编程及实例分析教程.北京清华大学出版社.2007年(书)
[3]刘淳.数据库系统原理与应用.北京中国水利水电出版社.2008(书)
[4]BobRichardPeasleyWaynePrachniah.VisualBASIC6使用指南.田金兰等译.北京电子工业出版社,2004
[5]DavidMcMahon.rapidapplicationdevelopmentwithvisualbasic.Newyork McGraw-hill,2002附录VisualBasic推荐使用的控件前缀控件类型前缀例子ADODataadoadoBiblioCheckBoxchkchkReadOnlyComboBoxcbocboEnglishCommandButtoncmdcmdExitDatadatdatBiblioDataCombodbcdbcAuthorDataGriddgbdgbTitlesDriveListBoxdrvdrvTargetFileListBoxfilfilSourceFormfrmfrmEntryFramefrafraLanguageGraphgragraRevenueGridgrdgrdPricesHScrollBarhsbhsbVolumeImageimgimgIconLablelbllblMessageMenumnumnuFileOpenShapeshpshpCircleSlidersldsldScaleTexBoxtxttxtLastNameTimertmrtmrAlarmToolbartlbtlbActions学生信息管理系统系统用户管理院系管理专业管理学生信息管理教学计划管理学生成绩管理。