基于vb的学生信息管理系统的开发_第1页
基于vb的学生信息管理系统的开发_第2页
基于vb的学生信息管理系统的开发_第3页
基于vb的学生信息管理系统的开发_第4页
基于vb的学生信息管理系统的开发_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

--1系统功能模块图三、数据库设计数据库设计包括构造和组织数据库数据的各种概念和方法。数据库设计分为两方面:物理设计和逻辑设计。物理设计指SQLServer如何使用现有硬件。逻辑设计指数据库结构。数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率保证数据的完整和一致。同时,合理的数据库结构也将有利于程序的实现。在设计一个数据库之前,首先要对数据库的设计目的和应用背景进行分析。在进行设计目的分析时,应搞清数据库要解决一个什么样的问题、需要存储那些数据、能够想用户提供那些统计信息、完成那些自动化功能等。应用背景指数据库应用于一个什么样的场合,同样的数据库应用于不同的场合,其特点和要求也不一样。在开发数据库之前,必须掌握一定的背景知识。(一)、数据库需求分析对于用户的需求,具体体现在各种信息的提供、保存、更新和查询等方面,这就要求数据库结构充分满足各种信息的输出和输入。我们收集基本数据、数据结构以及数据处理的流程,为后面的具体设计打下基础。在仔细分析调查有关学生信息需要的基础上,将得到如图3-1所示的本系统所处理数据流程。针对一般学生信息管理系统的需要,通过对学生学习过程的内容和数据流程分析,如下面所示的数据项和数据结构:学生基本信息:包括的数据项有:学生学号、学生姓名、性别、出生日期、班级联系电话、入校日期、家庭住址、备注等。班级信息:包括的数据项有:班号、所在年级、班主任姓名、所在教室等。课程基本信息:包括的数据项有:课程号、课程名称、课程类别、课程描述等。课程设置信息:包括的数据项有:年级信息、所学课程等。学生成绩信息:包括的数据项有:考试编号、所在班号、学生学号、学生姓名、所学课程、考试分数等。学生注册..学籍信息管理学生注册..学籍信息管理成绩信息输入成绩信息管理班级设置班级管理课程基本信息班级课程管理班级课程设计基本信息输入有了上面的数据结构、数据项和数据流程,我们就能进行下面数据库设计。(二)、数据库概念结构设计几乎所有的应用程序需要存放大量的数据,并将其组织成易于读取的格式,这种要求通常可以通过数据库管理系统来实现。数据库系统提供了数据在数据库内存方式的管理能力。数据库就是一组排列成易于处理和读取的相关信息的集合。得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。根据上面的设计规划出的实体有:学生实体、班级实体、年级实体、课程实体。各个实体具体的描述E-R图如下。图3-2为学生实体E-R图。学生…学生基本信息学生…学生基本信息学生课程信息学生班级信息学生成绩信息图3-2为学生实体E-R图图3-3为班级实体E-R图。班号…班班号…班…级…所在班级…班主任所在教室…图3-4为课程实体E-R图。课程名称..课程编号..课程描述…课程类型…课程名称..课程编号..课程描述…课程类型…课程…图3-5为年级实体E-R图。包括班级年级名称包括班级年级名称设置课程年级…实体和实体之间的关系E-R图3-6所示考核过程学考核过程学…生…班级设置班…级…年级设置年…级…课程设置课…程…图3-6实体之间关系E-R(三)、数据库逻辑结构设计现在需要将上面的数据库概念结构转化为SQLServer2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。在上面的实体以及实体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。学生信息管理系统数据库中各个表格的设计结果如下面的几个表格所示。每个表格表示在数据库中的一个表。表3—1为课程基本信息表表3-1course_info课程基本信息表列名数据类型可否为空说明Course_NoINT(4)NOTNULL课程编号Course_NameCHAR(10)NULL课程名称Course_TypeCHAR(10)NULL课程类型Course_DesCHAR(10)NULL课程描述表3-2为年级课程设置表表3-2gardecouse_info年级课程设置表格列名数据类型可否为空说明GradeCHAR(10)NULL年级Course_NameCHAR(10)NULL课程名称表3—3为学生成绩信息表表3—3result_info学生成绩信息表列名数据类型可否为空说明Exam_NoCHAR(10)NOTNULL考试编号Student_IDINT(4)学生学号Student_nameCHAR(10)NULL学生姓名Class_NoINT(4)NULL学生班号Course_NameCHAR(10)NULL课程名称resultFLOAT(8)NULL分数表3-4为系统用户表表3-4user_info系统用户表列名数据类型可否为空说明User_IDCHAR(10)NOTNULL用户名称(主键)User_PWDCHAR(10)NULL用户密码User_DESCHAR(10)NULL用户描述四、数据库结构的实现经过前面的需求分析和概念结构设计以后,得到数据库的逻辑结构。现在就可以在SQLServer2000数据库系统中实现该逻辑结构。这是利用SQLServer2000数据库系统中的SQL查询分析器实现的。创建这些表格的SQL语句见附录。五、学生信息管理系统主窗体的创建前面的SQL语句在SQLServer2000中的查询分析器执行后,将自动产生需要的所有表格。有关数据库结构的所有后台工作已经完成。现在将通过学生信息管理体统中各个功能块的实现,讲解如何使用VisualBasic来编写数据库系统的客户端程序。(一)、创建工程项目——studet_MIS为了用VisualBasic创建应用程序,应当使用工程。一个工程是用来建造和存放应用程序文件的集合,它包括:跟踪所有部件的工程文件(.vbp)。每个窗体的文件(.frm)。每个窗体的二进制数据文件(.frx),它含有窗体上的属性数据。对含有二进制如图片或图标)的任何.frm文件都是不可编辑的,这些文件都是自动生的。每个类模块的一个文件(.cls),该文件是可选项。每个标准模块的一个文件(.bas),该文件是可选项。一个或多个包含ActivexX控件的文件(.ocx),该文件是可选项。单个资源文件(.res),该文件是可选项。启动VsiualBasic后,单击FileNewProject菜单,在如图4—1所示的工程模板中StandardEXE,VisualBasic将自动产生一个Form窗体,属性都是缺省设置。这里我们删除这个窗体,单击FilelSaveProject菜单,将这个工程项目命名为StudentMIS。(二)、创建学生信息管理系统的主窗体VisualBasic创建的应用程序可以是SDI(单文档界面)和MDI(多文档界面)。在SDI的程序中,每个窗体之间是独立的。而MDI的程序中,有一个窗体是主窗体,可以包含其他的窗体,它的类型是MDIform。这个课题采用多文档界面,这样可以是程序更加美观、整齐有序。图5-1程序主窗体单击工具栏中的“ADDMDIform”按钮,生成一个如图4-2所示的窗体,属性设置见表4-1,主菜单的设置方法将在后面介绍。表5-1主窗体及其控件属性设置控件属性属性取值frmMain(form)NameFrmMainCaption学生信息管理系统StartUpPositonCenterScreenWindowStateMaximizedsbStatusBar(StatusBar)NameSbStatusBar在主窗体中加入状态栏控件,可以实时反映系统中的各个状态的变化。状态栏控件需在通常的属性窗口中设置一般属性,还需要在特有的弹出式彩单中进行设置。选中状态控件,单击鼠标右键,选中Property彩单,出现如图4—10所示的窗体。在“General”属性对一般属性进行设置,在“Panels”属性页对各个文本框进行设置,在”Font”属性页对文字体进行设置,在”Picture”属性页可以添加图片。图5-2状态栏控件特有的属性菜单单击InsertPanel按钮,为状态栏添加三个面板,设置属性页见表5-2。表5-2状态栏控件中三个面板的属性设置面板属性属性取值1StyleSbrText2StyleSbrDate3StyleSbrTime面板1用来显示各种文本信息,面板2用来显示当前日期,面板3用来显示当前时间。(三)、创建公用模块在VisualBasic中需要把各种数据保存到数据库中,而且要求有些变量在不同的窗体中能够使用,因此要创建用公用模块来存放整个工程项目公用的函数、全局变量等。整个工程项目中的任何地方都可以调用公用模块中的函数、变量,这样可以极大地提高代码的效率,给编程人员带来方便。在项目资源管理器中为项目添加一个Module,保存为Module1.bas。下面就可以开始添加需要的代码了。由于系统中各个功能模块都将频繁使用数据库中的各种数据,因此需要一个公用的数据操作函数,用以执行各种SQL语句。添加函数ExecuteSQL,编程代码见附录(创建公用模块)。ExecuteSQL函数有两个参数:SQL和MsgString。其中SQL用来存放需要执行的语句,MsgString用来返回执行的提示信息。函数执行时,首先判断SQL语句中包含的内当执行查询操作时,ExecuteSQL函数将返回一个与函数同名的记录集对象(Recordset),有满足条件的记录包含在对象中;当执行如删除、更新、添加等操作时,不返回记录集对,在ExecuteSQL函数中使用了ConnectString函数,这个函数用来连接数据库,这两个函数在后面中也将频繁使用,因为它们对任何数据库连接都是有效的。由于学生信息管理系统启动后,需要对用户进行判断。如果登录者是授权用户,将进入系统,否则将停止程序的执行。这个判断需要在系统运行的最初进行,因此将代码放在公用模块中。过程Main将在系统启动时首先执行,这就保证对用户的管理。六系统用户管理模块的创建系统用户管理模块主要实现:用户登录。添加用户。修改用户密码。录窗体的创建系统启动后,将首先出现如图6-1所示的用户登录窗体,用户首先输入用户名,然后输入密码。单击确定后如果用户三次输入密码不正确,将退出程序。图6-1用户登录窗体用户登录窗体中放置了两个文本框(TextBox),用来输入用户名和用户密码;两个按钮(CommandButton)用来确定或者取消登录;四个标签(Label)用来标示窗体的信息。控件的属性设置见表6-1。表6-1登录窗体中各个控件的属性设置控件属性属性取值FrmLogi(form)NamefrmLoginCaprtion登录StartUpPositonCenterScreenWindowStateNomaltxtUserNameNameNomaltxtPasswordNametztPasswordPasswordChar*cmdOKNameCmdOKCaption确定cmdCancelNameCmdCancelCaption取消Label1Caption学生管理信息系统Label2Caption用户名Label3Caption用户密码Label4Caption版权提供:LLSoftwareCorp.文本框txtPassword的PasswordChar属性是用指定字符来掩盖用户输入的密码。为窗体定义全局变量OK,用来判断登录是否成功;定义miCount,用来记载输入密码的次数。并且在载入窗体时初始化这两个全局变量,OptionExplicit是用来规定所有变量使用前必须定义。这样可以避免由于输入错误而产生的新变量。当用户输入完用户名和用户密码,单击该按钮,将触发按钮cmdOK的Click事件。用户如果没有输入用户名和用户密码,将出现消息框提示。如果输入的用户名在表格中没有找到,将提示重新输入用户名,文本框txtUserName将重新获得输入焦点。用户输入的密码不正确,文本框txtPassword将重新获得输入焦点。用户登录成功,全OK将被赋值为True;一旦三次输入密码均不正确,全局变量OK将被赋值为False。快中的Main过程将根据OK的值决定是退出,或者进入系统。如果用户取消登录,单击cmdCancel按钮,将触发按钮的Click事件。添加用户窗体的创建进入系统后,选择菜单“系统/添加用户”就可以添加用户,出现如图6-2所示的添加用户窗体。在这个窗体中放置了3个文本框,用来输入用户名和密码;两个按钮用来确定是否添加用户;3个标签用来标示文本框的提示。这些控件属性的设置见表6-2所示。用户需要两次输入密码,用来确保输入密码的正确。用户输入信息完毕,单击cmdOK按钮将触发Clidk事件。系统将首先查询数据库中与新建用户名相同的记录,如果有相同提示用户重新输入用户。当确定数据库中没有相同的用户名,并且两次输入密码一样时将把该条记录添加到数据库中。如果输入密码为空时,则显示“密码不能为空!”,单击cmdCancel按钮将会取消添加用户的操作。图6-2添加用户窗体表6-2添加用户窗体中各个控件的设置控件属性属性取值FrmAdduser(Form)NamefrmAdduserCaption添加用户StartUpPossitonCenterScreenWindowStateNomalTxtUserNameNameTxtUserNameTxtPassword1NameTxt{asswprd1PasswordChar*TxtPassword2NameTxtPassword2PasswordChar*CmdOKNameCmdOKCaption确定CmdCancelNameCmdCanelCaption取消Label1Caption请输入用户名Label2Caption请输入密码Label3Caption请确认密码(三)修改用户密码窗体的创建为了方便用户较容易记密码,用户可以对系统修改自己的密码,选择菜单“系统修改密码”,出现如图6-3所示的窗体。在这个窗体中放置了两个文本框,用来输入密码;两个按钮用来确定是否修改密码;两个标签用来标示文本框的内容。这些控件属性的设置见表6-3图6-3修改密码窗体两次输入密码后,单击cmdOK按钮,将触发事件判断是否修改密码,当两次输入密码一致时,数据库中的记录将更新。不一致时出现“密码输入密码不正确!”如果要取消修改密码时,单击cmdCanel按钮即可。表6-3修改用户密码窗体中各个控件的属性设置控件属性属性取值FrmModifyuserinfo(Form)NamefrmAdduserCaption修改密码StartUpPossitonCenterScreenWindowStateNomalTxtPassword1NameTxt{asswprd1PasswordChar*TxtPassword2NameTxtPassword2PasswordChar*CmdOKNameCmdOKCaption确定CmdCancelNameCmdCanelCaption取消Label2Caption请输入密码Label3Caption请确认密码七、程设置模块的创建课程设置模块主要实现如下功能:修改课程信息。设置年级课程。(一)、修改课程信息窗体的创建选择“课程设置/修改课程信息”菜单,将出现如图7-1所示的窗体。窗体中各个控件的属性见表7-2图7-1修改课程信息窗体“查看课程信息”框架中的4个按钮用来移动的数据集中记录的位置,需要将记录集对象定义为全局变量,程序在窗体载入时自动加入各条记录,由于程序中各处需要显示数据,所以需要定义函数ViewData。单击“第一条记录”按钮时,将显示第一条记录,单击“最后一条记录”按钮时,将显示最后一条记录,单击“下一条记录”按钮时,将显示下一条记录,单击“上一条记录”按钮时,将显示上一条记录,程序后面很多地方都将用到类似的查看信息的方法,后面就不重复了。“修改课程信息”框架中的4个按钮用来修改数据集中的记录,单击“修改记录”按扭,将进入到修改状态。窗体中各个控件的属性见表7-1表7-1修改课程窗体中各个控件的属性设置控件属性属性取值FrmModifycourseinfo(Form)FrmModifycourseinfo(Form)NamefrmModifycourseinfoCaption修改密码MDIChildTrueCmdFirstNamecmdOKCaption第一条记录CmdPreviousNameTxtPassword2Caption上一条记录CmdNextNameCmdOKCaption下一条记录CmdLastNameCmdCanelCaption最后一条记录CmdEditNameCmdEditCaption修改记录CmdUpdateNamecmdUpdateCaption更新记录CmdCancelNamecmdCancelCaption取消修改记录CmdDeleteNameCmdDeleteCaption删除记录Frame1Caption查看课程信息txtCoursenoNametxtClassnotxtCoursenaemNameTxtCoursenaemComboCoursetypeNameComboCoursetypetxtcoursedesNametxtcoursedesLabel1Caption课程编号Label2Caption课程名称Label3Caption课程类型Label4Caption课程描述Frame2Caption修改课程信息(三)设置年级课程窗体的创建选择菜单“课程设置/设置年级课程”,将出现如图7-2所示的窗体。图7-2设置年级课程窗体窗体各个控件的属性设置见表7-2表7-2修改课程信息中各个控件的属性设置控件属性属性取值FrmModifycourseinfo(Form)NamefrmModifycourseinfoCaption设置年级课程MDIChildTrueCombogradeNamecombogradeListallcourse(listbox)NamelistallcourseListselectcourse(listbox)NamelistselectcourseCmdSetNamecmdsetCaption设置课程CmdModifyNamecmdModifyCaption确认设置CmdAddNameCmdEditCaption-CmdDeleteNameCmdDeleteCaption--Label1Caption选择年级Label2Caption所有课程Label3Caption已经选择课程程序开始运行后,选择年级,将在“已经选择课程”列表框中显示内容。单击“年级”下拉式文本框,将触发Click事件显示所选择年级的课程,程序根据选择的年级查询获得相应的信息,并显示在列表框中。单击“设置课程”按钮,将进入设置状态,“所有课程”列表框将显示所有课程。列表框的ListIndex属性用来指示当前选择项,-1说明没有被选中的数据项。单击“确认设置”按钮,将课程设置数据保存到数据库中,单击“退出课程设置”按钮将退出程序。八成绩管理模块的创建成绩管理模块主要实现如下功能添加成绩信息。修改成绩信息。查询成绩信息。统计成绩信息。加成绩信息窗体的创建选择“成绩管理/添加成绩信息”菜单,将出现如图8-1所示的窗体。图8-1添加成绩信息窗体窗体中各个控件的属性设置见表8-1表8-1添加成绩信息窗体中各个控件的属性设置控件属性属性取值FrmModifycourseinfo(Form)NamefrmAddresultCaption添加成绩信息MDIChildTrueCmdOKNamecmdOKCaption确定添加CmdCancelNameCmdCancelCaption退出添加comboExamtypeNamecomboExamtypecomboClassnoNametxtClassnocomboCourseNamecomboCoursetxtResultNametxtResultcomboSIDNamecomboSIDtxtNameNametxtNameLabel1Caption考试编号Label2Caption选择班号Label3Caption选择学号Label4Caption姓名Label5Caption选择课程Label6Caption分数选择班级后,将触发Click事件,学号的文本框中自动加入相关班级的所有学号,单击“确认添加”按钮,将输入内容添加到数据库中。单击“取消添加”按钮,将输入的内容删除。(二)、修改成绩管理信息窗体的创建选择“成绩管理修改成绩信息”菜单,将出现如图8-2所示的窗体。图8-2修改成绩信息窗体窗体中各个控件的属性设置见表8-2表8-2修改成绩信息窗体中各个控件的属性设置控件属性属性取值FrmModifycourseinfo(Form)NamefrmModifycourseinfoCaption修改密码MDIChildTrueCmdFirstNamecmdOKCaption第一条记录CmdPreviousNameTxtPassword2Caption上一条记录CmdNextNameCmdOKCaption下一条记录CmdLastNameCmdCanelCaption最后一条记录CmdEditNameCmdEditCaption修改记录CmdUpdateNamecmdUpdateCaption更新记录CmdCancelNamecmdCancelCaption取消修改记录CmdDeleteNameCmdDeleteCaption删除记录Frame1Caption查看成绩信息comboTestnoNamecomboTestnocomboClassnoNamecomboClassnocomboNoNameComboNotxtNameNametxtNamecomboCourseNamecomboCoursetxtResultNametztResultFrame2Caption修改成绩信息Label1Caption考试编号Label2Caption选择班级Label3Caption选择学号Label4Caption姓名Label5Caption选择课程Label6Caption输入分数“查看成绩信息”框架中的4个按钮用来移动的数据集中记录的位置,需要将记录集对象定义为全局变量,程序在窗体载入时自动加入各条记录,由于程序中各处需要显示数据,所以需要定义函数ViewData。单击“第一条记录”按钮时,将显示第一条记录,单击“最后一条记录”按钮时,将显示最后一条记录,单击“下一条记录”按钮时,将显示下一条记录,单击“上一条记录”按钮时,将显示上一条记录,程序后面很多地方都将用到类似的查看信息的方法,后面就不重复了。“修改成绩信息”框架中的4个按钮用来修改数据集中的记录,单击“修改记录”按扭,将进入到修改状态。(三)查询成绩信息窗体的创建查询成绩信息窗体的创建方法与上面的窗体创建方法相同。选择“成绩管理/查询成绩信息”菜单,将出现查询信息的窗体,设置窗体中各个控件的属性。(四)统计成绩信息窗体的创建选择“成绩管理/统计成绩信息”菜单,将出现统计信息的窗体,设置窗体中各个控件的属性。把成绩统计出来并排好名次,然后编写程序代码。九、系统实现完成以上各个功能模块的创建后,当启动该系统时,首先出现登录窗口。在窗口的文本框中输入用户名和密码,如果用户三次输入密码不正确,将退出该程序。如果进入系统。出现学生信息管理系统的主窗体。选择“系统/添加用户”会出现添加用户窗口,输入用户名和密码,并对密码的确认,单击确认即可添加用户。选择“系统/修改用户密码”当两次输入密码一致时,数据库中的记录将更新。选择“课程设置/修改课程”菜单,就可以对课程进行修改。选择“课程设置/设置年级课程”出现设置课程窗口,选择年级,通过按钮可以增加或删除该年级的课程,单击“确认设置”按钮,将课程设置数据保存到数据库中。单击“退出课程设置”按钮将退出程序。选择“成绩管理/添加成绩信息”菜单,选择班级后,学号的文本框中自动加入相关班级的所有学号,单击“确认添加”按钮,将输入内容添加到数据库中。单击“取消添加”按钮,将输入的内容删除。选择“成绩管理/修改成绩信息”菜单,“查看成绩信息”框架中的4个按钮用来移动的数据集中记录的位置,“修改成绩信息”框架中的4个按钮用来修改数据集中的记录,单击“修改记录”按扭,将进入到修改状态。选择“成绩管理/查询成绩信息”首先选择查询方式,然后输入查询内容。单击“查询”按钮,就可以查出成绩信息。选择“成绩管理/统计成绩信息”,单击“统计”按钮,即可统计成绩。十、系统的编译完成了学生信息管理系统的编程和调试工作,最后一步就是该系统的编译。这涉及工程项目属性的设置、可执行应用程序的生成。在系统的编译和发行以前,设置工程项目的属性。选择菜单“ProjectlStudentProperties”,将会出现属性页并对其进行修改。最后选择“FileMakeStudent_Mis.exe”菜单,编译开始。编译完毕后,即生成了相对的可执行文件。编译成功后,生成可执行文件Student_Mis.exe。需要在发行前对生成的可执行文件进行测试。通过测试的可执行文件就可以发布运行了。一个完整的学生信息管理系统就创建完毕了。十一、总结历时六周的毕业设计终于划上了一个圆满的句号,感慨亦多。这次毕业设计让我巩固了VisualBasic的程序设计以及数据库的知识,使我较系统、全面地了解其他相关学科的知识,拓宽自己的视野。更重要的是通过亲自动手编写程序;调试系统;提高了自己应用知识和动手能力。同时也让我感到在大学三年的理论学习中,基础理论掌握的不够扎实,在毕业设计过程中许多地方还要重新学习,以至浪费了不少宝贵的时间。但是从一无所知,到能独立制作出一个简单的系统,是学习的过程,也是挑战自我的过程。总体讲这次毕业设计对我是受益匪浅的,它不仅让我巩固了大学三年所学的专业知识,而且有效地提高了我独立思考问题能力及与他人协作共同解决问题的能力。通过本次毕业设计,使我积累了VisualBasic程序设计的经验。对我以后从事VisualBasic程序设计的工作增添了信心。十二、致谢词经过了为期六周的毕业设计,我学到了许多宝贵的工程实践经验,并且从中感受到了作为一名工程人员的乐趣,收获很大。在此我首先要感谢我的指导老师——李宏伟老师,是他把我领进门,对我耐心的指导,教给了我丰富的知识,也正是从本次毕业设计开始,我深入地了解了VisualBasic程序设计,并掌握了VisualBasic程序设计技术方法的一般应用,为我将来走上工作岗位打下了坚实的基础。参考文献[1][美]Microsoft公司著.MicrosoftVisualBasic6.0ControlsReference控件参考手册北京希望电子出版社,1999[2]段银田,陈勇孝,郎洪VisualBasic程序设计基础北京:高等教育出版社,1999[3][美]DiannesieboldVisualBasic开发指南—SQLServer篇北京:电子工业出版社,2000[4]胡荣根VisualBasic6.0中文版数据库和Internet编程北京:清华大学出版社1999[5]宋琦凡付敬平使用VisualBasic开发数据库应用软件北京:电子工业出版社,1996[6]龚沛曾陆慰民扬志强VisualBasic程序设计教程[6.0]北京:高等教育出版社2000[7]丁莉等编著VisualBasic6.0中文版编程实例详解北京:电子工业出版社,1999附录创建表格的SQL语句:(一)创建系统用户表格user_InfoCREATETABLE[dbo].[user_Info1]([user_ID][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,[user_PWD][char](10)COLLATEChinese_PRC_CI_ASNULL,[user_Des][char](10)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY](二)创建课程基本信息表course_InfoCREATETABLE[dbo].[course_Info]([course_No][int]NOTNULL,[course_Name][char](10)COLLATEChinese_PRC_CI_ASNULL,[course_Type][char](10)COLLATEChinese_PRC_CI_ASNULL,[curse_Des][char](50)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY](三)创建年级课程设置信息表gradecourse_InfoCREATETABLE[dbo].[gradecourse_Info]([grade][char](10)COLLATEChinese_PRC_CI_ASNULL,[course_Name][char](10)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY](四)创建学生成绩信息表result_InfoCREATETABLE[dbo].[result_Info]([exam_No][char](10)COLLATEChinese_PRC_CI_ASNOTNULL[student_ID][int]NOTNULL,[student_Name][char](10)COLLATEChinese_PRC_CI_ASNULL,[class_No][int]NULL,[course_Name][char](10)COLLATEChinese_PRC_CI_ASNULL,[result][float]NULL)ON[PRIMARY]五、学生信息管理系统主窗体的创建(四)创建公用模块程序:PublicFunctionExecuteSQL(ByValSQLAsString,MsgStringAsString)DimcnnAsADODB.ConnectionDimrstAsADODB.RecordsetDimsTokens()AsStringOnErrorGoToExecuteSQL_ErrorsTokens=Split(SQL)Setcnn=NewADODB.Connectioncnn.OpenConnectStringIfInStr("INSERT,DELETE,UPDATE",UCase$(sTokens(0)))Thencnn.ExecuteSQLMsgString=sTokens(0)&"querysuccessful"ElseSetrst=NewADODB.Recordsetrst.OpenTrim&(SQL),cnn,adOpenKeyset,adLockOptisticSetExecuteSQL=rstMsgString="查询到"&rst.RecordCount&"记录条"EndIfExecuteSQL_Exit:Setrst=NothingSetcnn=NothingExitFunctionExecuteSQL_Error:MsgString="查询错误:"&Err.DescriptionResumeExecuteSQL_ExitEndFunctionPublicFunctionConnectString()AsStringConnectString="FileDSN=studentinfo.dsn;UID=sa;PWD="EndFunctionPublicFunctionTesttxt(txtAsString)AsBooleanIfTrim(txt)=""ThenTesttxt=FalseElseTesttxt=TrueEndIfEndFunctionSubMian()DimfLoginAsNewFrmlogicfLogin.ShowvbModalIfNotfLogin.OKThenEndEndIfUnloadfLoginSetfMainForm=NewfrmMainfMainForm.ShowEndSubPublicUserNameAsString用户登录窗体的创建程序:OptionExplicitPublicOKAsBooleanDimimCountAsIntegerPrivateSubForm_Load()OK=Falsemicount=0EndSubPrivateSubcmdok_Click()DimtxtsSQLAsStringDimmrcAsADODB.RecordsetDimMsgTextAsStringUserName=""IfTrim(txtUserName.Text="")ThenMsgBox"没有这个用户,请重新输入用户名!",vbOKOnly+vbExclamation,"警告"txtUserName.SetFocusElsetxtsql="select*fromuser_Infowhereuser_ID=""&txtUserName.Text&"""Setmrc=ExecuteSQL(txtsql,MsgText)Ifmrc.EOF=TrueThenMsgBox"没有这个用户,请重新输入用户名!",vbOKOnly+vbExclamation,"警告"txtUserName.SetFocusElseIfTrim(mrc.Fields(1))=Trim(txtPassword.Text)ThenOK=Truemrc.CloseMe.HideUserName=Trim(txtUserName.Text)ElseMsgBox"输入密码不正确,请重新输入!",vbOKOnly+vbExclamation,"警告"txtPassword.SetFocustxtPassword.Text=""EndIfEndIfEndIfmicount=micount+1Ifmicount=3ThenMe.HideEndIfExitSubEndSubPrivateSubcmdCancel_Click()OK=FalseMe.HideEndSub添加用户窗体的创建程序:PrivateSubCmdCancel_Click()UnloadMeEndSubPrivateSubcmdOK_Click()DimtxtSQLAsStringDimmrcAsADODB.RecordsetDimMsgTextAsStringIfTrim(Text1(0).Text)=""ThenMsgBox"请输入用户名称!",vbOKOnly+vbExclamation,"警告"ExitSubText1(0).SetFocusElsetxtSQL="select*fromuser_Info"Setmrc=ExecuteSQL(txtSQL,MsgText)While(mrc.EOF=False)IfTrim(mrc.Fields(0))=Trim(Text1(0))ThenMsgBox"用户已经存在,请重新输入用户名!",vbOKOnly+vbExclamation,"警告"Text1(0).SetFocusText1(0).Text=""Text1(1).Text=""Text1(2).Text=""ExitSubElsemrc.MoveNextEndIfWendIfTrim(Text1(1).Text)<>Trim(Text1(2).Text)ThenMsgBox"两次输入密码不一样,请确认!",vbOKOnly+vbExclamation,"警告"Text1(1).SetFocusText1(1).Text=""Text1(2).Text=""Elsemrc.AddNewmrc.Fields(0)=Trim(Trim(0).Text)mrc.Fields(1)=Trim(Trim(1).Text)mrc.Updatemrc.CloseMsgBox"添加用户成功!",vbOKOnly+vbExclamation,"添加用户"EndIfEndIfEndSub修改用户密码窗体的创建程序:PrivateSubcmdCanel_Click()UnloadMeEndSubPrivateSubcmdOK_Click()DimtxtSQL,MsgTextAsStringDimmrcAsADODB.RecordsetIfTrim(Text1(1).Text)<>Trim(Text1(2).Text)ThenMsgBox"密码输入不正确!",vbOKOnly+vbExclamation,"警告"Text1(1).SetFocsText1(1).Text=""ElsetxtSQL="select*fromuser_Infowhereuser_ID=""&UserName&"""Setmrc=ExecuteSQL(txtSQL,MsgText)mrc.Fields(1)=Text1(1).Textmrc.Updatemrc.CloseMsgBox"密码修改成功!",vbOKOnly+vbExclamation,"修改密码"Me.HideEndIfEndSub修改课程信息窗体的创建程序:DimmrcAsADODB.RecordsetDimmyBookmarkAsVariantDimmccleanAsBooleanPrivateSubCmdCancel_Click()IfNotmccleanThenFrame2.Enabled=TrueCmdFirst.Enabled=TrueCmdPrevious.Enabled=TrueCmdNext.Enabled=TrueCmdLast.Enabled=TruetxtCourseno.Enabled=FalsetxtCoursenaem.Enabled=FalsecomboCoursetype.Enabled=Falsetxtcoursedes.Enabled=Falsemrc.Bookmark=myBookmarkCallviewDataElseMsgBox"什么都没有修改,有什么好取消的!",vbOKOnly+vbExclamation,"警告"EndIfEndSubPrivateSubCmdDelete_click()myBookmark=mrc.Bookmarkstr2$=MsgBox("是否删除当前记录?",vbOKCancel,"删除当前记录")Ifstr2$=vbOKThenmrc.MoveNextIfmrc.EOFThenmrc.MoveFirstmyBookmark=mrc.Bookmarkmrc.MoveLastmrc.Deletemrc.BookmarkCallviewDataElsemyBookmark=mrc.Bookmarkmrc.MovePreviousmrc.Deletemrc.Bookmark=myBookmarkCallviewDataEndIfElsemrc.Bookmark=myBookmarkCallviewDataEndIfEndSubPrivateSubCmdEdit_Click()mcclean=FalseFrame2.Enabled=FalseCmdFirst.Enabled=FalseCmdPrevious.Enabled=FalseCmdNext.Enabled=FalseCmdLast.Enabled=FalsetxtCourseno.Enabled=TruetxtCoursenaem.Enabled=TruecomboCoursetype.Enabled=Truetxtcoursedes.Enabled=TruemyBookmark=mrc.boodmarkEndSubPrivateSubCmdFirst_Click()mrc.MoveLastCallviewDataEndSubPrivateSubCmdLast_Click()mrc.MoveLastCallviewDataEndSubPrivateSubCmdNext_Click()mrc.MoveFirstIfmrc.EOFThenmrc.MoveFirstEndIfCallviewDataEndSubPrivateSubCmdPrevious_Click()mrc.MoveFirstIfmrc.BOFThenmrc.MoveFirstEndIfCallviewDataEndSubPrivateSubCmdUpdate_click()DimtxtSQLAsStringDimMsgTextAsStringDimmrccAsADODB.RecordsetIfmccleanThenMsgBox"请先修改课程信息",vbOKOnly+vbExclamation,"警告"ExitSubEndIfIfNotTesttxt(txtCourseno.Text)ThenMsgBox"请输入课程编号",vbOKOnly+vbExclamation,"警告"txtCourseno.SetFocusExitSubEndIfIfNotTesttxt(txtCoursenaem.Text)ThenMsgBox"请输入课程名称",vbOKOnly+vbExclamation,"警告"txtCoursenaem.SetFocusExitSubEndIfIfNotTesttxt(comboCoursetype.Text)ThenMsgBox"请选择课程类型",vbOKOnly+vbExclamation,"警告"comboCoursetype.SetFocusExitSubEndIfIfNotTesttxt(txtcoursedes.Text)ThenMsgBox"请对课程进行描述",vbOKOnly+vbExclamation,"警告"txtcoursedes.SetFocusExitSubEndIfmrc.DeletetxtSQL="select*fromstudent_Infowherestudet_ID=""&Trim(txtCourseno.Text)&"""Setmrcc=ExecuteSQL(txtCourseno,MsgText)Ifmrcc.EOF=FalseThenMsgBox"课程编号重复,请重新输入!",vbOKOnly+vbExclamation,"警告"mrcc.ClosetxtCourseno.SetFocusElsemrc.AddNewmrc.Fields(0)=Trim(txtCourseno.Text)mrc.Fields(1)=Trim(txtCoursenaem.Text)mrc.Fields(2)=Trim(comboCoursetype.Text)mrc.Fields(3)=Trim(txtcoursedes.Text)mrc.UpdateMsgBox"修改课程信息成功",vbOKOnly+vbExclamation,"修改课程信息"mrc.Bookmark=myBoomarkCallviewDataFrame2.Enabled=TrueCmdFirst.Enabled=TrueCmdPrevious.Enabled=TrueCmdNext.Enabled=TrueCmdLast.Enabled=TruetxtCourseno.Enabled=FalsetxtCoursenaem.Enabled=FalsecomboCoursetype.Enabled=Falsetxtcoursedes.Enabled=Falsemcclean=TrueEndIfEndSubPrivateSubForm_Load()DimtxtSQLAsStringDimMsgTextAsStringtxtSQL="select*fromstudent_Info"Setmrc=ExecuteSQL(txtSQL,,MsgText)mrc.MoveFirstCallviewDatamcbookmark=mrc.Bookmarkmcclean=TrueEndSubPrivateSubviewData()txtCourseno.Text=mrc.Fields(0)txtCoursenaem.Text=mrc.Fields(1)comboCoursetype.Text=mrc.Fields(2)txtcoursedes.Text=mrc.Fields(3)EndSub设置年级课程窗体的创建程序:PrivateSubCmdAdd_Click()IfListallcourse.ListIndex<>-1ThenListselectcourse.AddItemListallcourse.List(Listallcourse.ListIndex)EndIfEndSubPrivateSubCmdDelete_click()IfListselectcourse.ListIndex<>-1ThenListselectcourse.RemoveItemListselectcourse.ListIndexEndIfEndSubPrivateSubcmdModify_Click()DimiAsIntegerDimmrcAsADODB.RecordsetDimmrccAsADODB.RecordsetDimMsgTextAsStringDimmyBookmarkAsVariantIfNotTesttxt(comboGrade.Text)ThenMsgBox"请先选择年级!",vbOKOnly+vbExclamation,"警告"ExitSubEndIfIfNotTesttxt(Listselectcourse.List(0))ThenMsgBox"请先选择课程!",vbOKOnly+vbExclamation,"警告"ExitSubEndIftxtSQL="select*fromgradecourse_Infowheregrade=""&Trim(comboGrade.Text)&"""Setmrc=ExecuteSQL(txtSQL,MsgText)Ifmrc.EOFThenFori=1ToListselectcourse.ListCountmrc.AddNewmrc.Fields(0)=comboGrade.Textmrc.Fields(1)=Listselectcourse.List(i-1)mrc.UpdateNextimrc.CloseMsgBox"课程设置成功!",vbOKOnly+vbExclamation,"警告"Elsemrc.ClosetxtSQL="delete*fromgradecourse_Infowheregrade=""&Trim(comboGrade.Text)&"""Setmrcc=ExecuteSQL(txtSQL,MsgText)txtSQL="selete*fromgradecourse_Info"Setmrcc=ExecuteSQL(txtSQL,MsgText)Fori=1ToListselectcourse.ListCountmrcc.AddNewmrcc.Fields(0)=comboGrade.Textmrcc.Fields(1)=Listselectcourse.List*(i-1)mrcc.UpdateNextimrcc.CloseMsgBox"课程设置成功!",vbOKOnly+vbExclamation,"警告"EndIfEndSubPrivateSubcmdSet_Click()DimmrcAsADODB.RecordsetDimtxtSQLAsStringDimMsgTextAsStringListallcourse.Enabled=TrueListselectcourse.Enabled=TruecmdModify.Enabled=TruetxtSQL="select*fromcourse_Info"Setmrc=ExecuteSQL(txtSQL,MsgText)While(mrc.EOF=False)Listallcourse.AddItemmrc.Fields(1)mrc.MoveNextWendmrc.CloseflagSet=TrueEndSubPrivateSubcomboGrade_Change()DimmrcAsADODB.RecordsetDimtxtSQLAsStringDimMsgTextAsStringDimiAsIntegerListselectcourse.CleartxtSQL="select*fromgradecourse_Infowheregrade=""&comboGrade.Text&"""Setmrc=ExecuteSQL(txtSQL,MsgText)IfNotmrc.EOFThenFori=1Tomrc.RecoudCountListselectcourse.AddItemmrc.Fields(1)mrc.MoveNextNextiEndIfmrc.CloseEndSubPrivateSubCommand5_Click()UnloadMeEndSub添加成绩信息窗体的创建:PrivateSubcomboClassno_Change()DimmrcAsADODB.RecordsetDimtxtSQLAsStringDimMsgTextAsStringComboSID.ClearComboCourse.CleartxtSQL="select*fromstudent_Infowhereclass_ON=""&comboClassno.Text&"""Setmrc=ExecuteSQL(txtSQL,MsgText)While(mrc.EOF=False)ComboSID.AddItemmrc!student_IDmrc.ClosetxtSQL="select*fromgradecourse_Infowheregrade=""&Grade&"""Setmrc=ExecuteSQL(txtSQL,MsgText)While(mrc.EOF=False)ComboCourse.AddItemmrc!course_Namemrc.MoveNestWendmrc.CloseFlagselect=TrueEndSub修改成绩信息窗体的创建程序:DimmrcAsADODB.RecordsetDimmyBookmarkAsVariantDimmccleanAsBooleanPrivateSubForm_Load()DimtxtSQLAsStringDimMsgTextAsStringtxtSQL="select*fromstudent_info"Setmrc=ExecuteSQL(txtSQL,MsgText)mrc.MoveFirstCallviewDatamcbookmark=mrc.Bookmarkmcclean=TrueEndSubPublicSubviewData()comboTestno.Text=mrc.Fields(0)comboClassno.Text=mrc.Fields(1)combosex.Text=mrc.Fields(2)txtboNo.Text=mrc.Fields(3)txtName.Text=mrc.Fields(4)comboCourse.Text=mrc.Fields(5)txtResult.Text=mrc.Fields(6)EndSubPrivateSubfirstcommand_click()mrc.MoveFirstCallviewDataEndSubPrivateSublastcommand_click()mrc.MoveLastCallviewDataEndSubPrivateSubpreviouscommand_click()mrc.MovePreviousIfmrc.BOFThenmrc.MoveLastEndIfCallviewDataEndSubPrivateSubnextcommand_click()mrc.MoveNextIfmrc.BOFThenmrc.MoveFirstEndIfCallviewDataEndSubPrivateSubeditcommand_click()mcclean=FalseFrame2.Enabled=FalseCmdFirt.Enabled=FalseCmdboPrevious.Enabled=FalseCmdNext.Enabled=FalseCdLast.Enabled=FalsecomboTestno.Enabled=TruecomboClassno.Enabled=TruecomboNo.Enabled=TruetxtName.Enabled=TruecomboCourse.Enabled=TruetxtResult.Enabled=TruemyBookmark=mrc.BookmarkEndSubPrivateSubCmdUpdate_click()DimtxtSQLAsStringDimMsgTextAsStringDimmrccAsADODB.RecordsetIfmccleanThenMsgBox"请选择考试编号",vbOKOnly+vbExclamation,"警告"comboTestno.SetFocusExitSubEndIfIfNotTesttxt(txtsid.Text)ThenMsgBox"请输入学号!",vbOKOnly+vbExclamation,"警告"comboNo.SetFocusExitSubEndIfIfNotTesttxt(txtName.Text)ThenMsgBox"请输入姓名!",vbOKOnly+vbExclamation,"警告"txtName.SetFocusExitSubEndIfIfNotTesttxt(combosex.Text)ThenMsgBox"请选择课程!",vbOKOnly+vbExclamation,"警告"comboCourse.SetFocusExitSubEndIfIfNotTesttxt(comboClassno.Text)ThenMsgBox"请选择班号!",vbOKOnly+vbExclamation,"警告"comboClassno.SetFocusExitSubEndIfIfNotTesttxt(txtsid.Text)ThenMsgBox"请输入分数!",vbOKOnly+vbExclamation,"警告"txtResult.SetFocusExitSubEndIfIfNotIsNumeric(Trim(txtsid.Text))ThenMsgBox"学号和分数请输入数字!",vbOKOnly+vbExclamation,"警告"txtsid.SetFocustxtResult.SetFocusExitSubEndIfmrc.DeletetxtSQL="select*fromstudent_infowherestudent_id=""&trim(txtsid.text)&"""Setmrcc=exceutesql(txtSQL,MsgText)Ifmrcc.BOF=FalseThenMsgeox"学号重复,请重复输入!",vbOKOnly+vbExclamation,"警告"mrcc.ClosecomboNo.SetFocusElsetxtrudate=Format(txtrudate,"yyyy-mm-dd")mrc.AddNewmrc.Fields(0)=Trim(comboTestno.Text)mrc.Fields(1)=Trim(comboClassno.Text)mrc.Fields(2)=Trim(comboNo.Text)mrc.Fields(3)=Trim(txtName.Text)mrc.Fields(4)=Trim(comboClassno.Text)mrc.Fields(5)=Trim(txtName.Text)mrc.Fields(6)=Trim(comboCourse.Text)mrc.Fields(7)=Trim(txtResult.Text)mrc.UpdateMsgBox"修改学籍信息成功!",vbOKOnly+vbExclamation,"修改学籍信息"mrc.Bookmark=myBookmarkCallviewDatacomdFirt.Enabled=TruecomdboPrevious.Enabled=TruecomdNext.Enabled=TruecomdLast.Enabled=TruecomboTestno.Enabled=FalsecomboClassno.Enabled=FalsecomboNo.Enabled=FalsetxtName.Enabled=FalsecomboCourse.Enabled=FalsetxtResult.Enabled=False.Enabled=False.Enabled=Falsemcclean=TrueEndIfEndIfEndSubPrivateSubcancelcommand_click()IfNotmccleanThenFrame2.Enabled=TrueCmdFirst.Enabled=TrueCmdPrevious.Enabled=TrueCmdNext.Enabled=TrueCmdLast.Enabled=TruecomboTestno.Enabled=FalsecomboClassno.Enabled=FalsecomboNo.Enabled=FalsetxtName.Enabled=Falsecombo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论