1、VB6.0%2BSQL学生信息管理系统开发设计论文 作者: 日期:40 个人收集整理 勿做商业用途前言学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生档案管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算
2、机对学生档案信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套管理软件成为很有必要的事情,在下面的各章中我将以开发学生档案管理系统为例,谈谈其开发过程和所涉及到的问题及解决方法。管理信息系统(MIS)是进行信息的采集、存储、加工、维护和使用的系统。它是随着管理科学和技术科学的发展而形成的。学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为用户
3、提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难.学生信息管理系统是我个人根据所学开发的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。从语言角度出发,相比Visual C+庞大的MFC函数库和复杂的编程技术,Visual Basic一直是最易上手和工作效率较高的Windows开发工具。它拥
4、有直观的开发环境,而且随时提供弹出式信息以及自动编码帮助功能.在数据库功能方面十分强大,能够利用多种数据来源来创建可重用的数据集合,这些集合可被看成是集合的对象,即使是当低级数据集合驻留于不同的机器,并且使用不同的数据库服务器平台也是如此。采用更完善的32位的API(应用程序),所以能更快地生成表单。 它提供可视化数据环境设计器(Data Environment Designer)为用户提供了包括数据表关系、表查询设计、自动生成的SQL代码以及生动的预览结果等等的联合视图。其中“SQL”窗格显示当前查询的SQL语句。当建立了自己的查询,并对其重新格式化以便于读取时它将自动更新。经过分析,我使用
5、 MICROSOFT公司的 VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。本系统内容包括:登陆系统信息、输入学生信息、查询用户所需的信息、浏览本系统所涉及到的学生信息情况,帮助信息等。它大体上可以分为以下三个功能模块:输入模块、查询模块和修改模块等,涉及到:(1)控件有:标签(Label)、文本框(TextBox)、命令按钮(CommandButton)、框架(Frame)、组合框(ComboBox)、ADO
6、 Data控件、DataGrid控件;(2)控件数组;(3)菜单编辑器;(4)Access数据库(可在Visual Basic 6.0 工程界面中的“外接程序菜单下的“可视化数据环境设计器下的VisData建立数据库;也可直接在Access下建立数据库)。第一章 学生信息管理系统开发的可行性规则11 学生信息系统开发过程 管理信息系统的开发是一个复杂的系统工程。开发过程可划分为下列六个阶段,每个阶段有明确的开发任务。(1) 软件计划确定系统的总目标、功能、性能、可靠性以及接口等方面.对系统使用的资源、成本、可取得的效益进行分析,探讨解决问题的方案,最终完成系统的可行性研究。(2) 需求分析应确
7、定哪些需求是可以满足的,并对此进行描述,写出软件需求说明书以及初步制系统的草稿。(3) 软件设计应把已确定的各项需求转换成相应的体系结构。其中包括根据数据需求抽象为系统概念模式,并进面定义成相应的数年据库;把已确定的各项功能划分为相应的模块,使每个模块和特定的功能需求相对应。然后,对模块完成的工作进行具体的描述。(4) 编程编写程序是将软件设计转换为程序代码的过程,完成软件设计中每功能模块程序设计。(5) 测试将编程完成的程序代码通过测试检查软件的各个组成部分的正确性,确定是达了要求.12 学生信息管理系统设计 设计管信息系统,需要运用窗体和控件、过程代码、数据库设计等许多知识。 学生信息包括
8、学生基本信息、班级信息、成绩信息等。 学生信息管理就是将上述信息转变为计算机能接受的数据送入计算机,系统包括学生数据输入、信息查询、信息浏览及报表输出等功能。(1) 数据输入对学生信息的管理,包括学生信息的输入、添加、删除和修改.(2) 信息查询通过查询,将满足查询条件的信息显示在窗体上。(3) 信息浏览将满足分析条件的数据在报表中显示出来。13 系统设计 系统设计包括登陆界面设计、数据库设计、主界面设计、菜单设计和功能设计。功能设计包括输入设计、查询设计。 数据库设计数据库采用Access数据库,使用VisData或在Access环境中创建通过数环境设计器的查询设计窗口,将学生信息表(per
9、sonal)中的字段添加到设计器中。14数据库概念结构E-R图设计这一阶段是集成来自不同用户对现实世界描述所构成的外部视图形成全局的概念模型,进而可以转换成数据库的模式.班级号学生信息管理系统设计的E-R图为如下:班级号性别姓名学号班级名导员名学生包含班级 1 n n 制定选择 n 1学号成绩课程号 m家庭住址姓名课程 m 1学籍入学日期性别班号课程名电话学生号出生日期1.5 登陆界面设计登陆界面是用户进入系统前必须要验证身份的一个必要步骤。此界面由两个标签、两个文本框和两个按钮组成。登陆界面运行如下:1。6主界面设计总体界面设计是软件的外貌,一个实用、美观的界面是一个优秀软件的重要组成部分.
10、首先,界面力求简洁和实用。面向用户是软件设计的宗旨,以用户为开发核心,要让用户使用方便,不感到界面烦乱和冗余。避免不必要的操作在界面上,并使用户直观上感到舒服。其次,要从审美观点出发,使用户使用软件成为一种享受。特别面对长期使用的数据管理软件,更使用户在长时间使用中感到清新和轻松,这是不容易做到的。选择兰色背景为软件序幕色;灰色不夸张,气质淡雅,长时观察仍感自然清晰,对眼刺激小。进入主界面以最大化窗体出现,各功能设置为菜单项软件运行操作均在此界面中进行。软件运行期间,主界面永不消失,各子窗体颜色均为灰色。主界面是用户打开系统首先见到的界面,也是进入其他模块的入口。主界面将常用菜单项设计为工具栏
11、,在工具栏上有输入用户信息管理,班级信息管理,学籍信息管理,课程信息管理,成绩信息管理,奖惩信息管理,个人信息管理和帮助等主界面运行如下:17 功能设计171 输入模块输入模块可以用来输入班级信息,学籍信息,课程信息,成绩信息,由主界面中的输入菜单进入输入学生息窗体.输入学生信息窗体是由四个标签(Label)、两个框架(Frame)、两个按钮(CommandButton)和一个Adodc控件.班级信息界面如下图所示:功能要求; 在窗体上通过不同的按钮可以显示数据库中的各条信息。 “添加按钮用于新增班级编号,班级名称,导员姓名和备注信息。从而数据表中的记录数目会自动增加。 “删除按钮用于删除数据
12、表中的某些记录,从而数据表中的记录也相应地被删除。 “修改”按钮用于修改某些学生的基本信息情况,从而数据表中的记录相应地也被修改。 “取消”按钮用于返回到主界面. 下面是学生学籍的输入界面:功能要求; 在窗体上通过不同的按钮可以显示数据库中的各条信息. “添加”按钮用于新增学生学号,姓名,性别,出生日期,学生编号,联系电话,入学日期,家庭住址等等。如还有其他信息的需要还可以随时在菜单中增加。从而数据表中的记录数目会自动增加。 “删除”按钮用于删除数据表中的某些记录,从而数据表中的记录也相应地被删除。“查询”按钮可以用与查找所需要的学生信息,只要输入一条信息,和此学生相对应的信息都会显示出来。“
13、取消”按钮用于返回到主界面。下面是课程信息的输入界面:学生成绩录入界面窗体结构(1) 1计算机系成绩录入界面 此窗体主要是由一个“datagrid”控件、一个“adodc”控件和两个命令按钮组成。(2) 主要控件属性、事件、方法的设置及源代码的解释说明A 右击adodc1控件将选择“adodc properties”属性, 选择“提供者”选项卡选择“Microsoft Jet4。0 DB Provider”,选择“下一步”。然后选择“general”选项卡中的“use connection string的“build按钮, 在“1.选择或输入数据库名称”文本框中输入要连接的数据库路径,然后按“
14、测试连接如果连接成功按“确定”。选择“recordsource”选项卡, 在“command type”列表框中选择“2-adcmdtable、在“Table or Stored Procedure Name列表框选择“计算机系”,然后单击“确定”,这样就建立了adoac1与数据库中计算机系的连接。为了能够直接录入信息将其mode属性设置为“3-admodereadwrite”。B 将“datagrid1”的“datasource”属性设为“adodc1”,右击“datagrid1”控件在弹出菜单上选择“字段索引”,再弹出的消息框中选择“是”则对“datagrid1”的设置完成。两个命令按钮的
15、caption属性分别设为“添加空行和“返回. 此段程序为用户添加一条空记录。(3) 主要功能 用户可直接在窗体中表格的最后一空行中输入数据,便可直接保存到数据库中,如果要输入多行可按“添加空行”按钮添加空白行.输入完数据按“取消按钮可回到主界面。下面是学生成绩信息输入:下面是学生奖励惩罚信息的输入:功能要求; 在窗体上通过不同的按钮可以显示数据库中的各条信息. “添加”按钮用于新增备学生学号,奖惩的时间,备注信息。从而数据表中的记录数目会自动增加. “删除按钮用于删除数据表中的某些记录,从而数据表中的记录也相应地被删除。172 查询模块 通过主界面进入查询窗体,查询模块用于查询显示满足不同条
16、件学生的基本情况。可以在学籍管理中对某个学生进行查询,可以得到学号,姓名,性别,出生日期,班级编号,联系电话和家庭住址等信息。 在窗体中有四个标签(Label)、两个组合框(ComboBox)、四个按钮(Frame) 窗体运行如下:功能设计: 可以在组合框中任意选择所需要查询的条件,从下拉列表中直接选择即可. 单击“查询”按钮,直接进入到查询结果窗体界面frmresult中去.在frmresult窗体中可以显示出所要查询信息结果. 单击“取消”按钮,即可返回到主界面窗体中去。另外如要查询个人的信息可以直接到“个人信息管理”中去查询.窗体运行如下:功能设计: 可以在组合框中的学号输入要查询的学生
17、学号就可得到其相对应的个人信息,包括姓名,性别,生日,班号,入学日期,联系电话. 另外还可得出个人的奖惩情况 第二章 学生档案管理系统程序及内容2 1登陆界面代码如下:If mrc。EOF = True ThenMsgBox ”没有这个用户,请重新输入用名!, vbOKOnly + vbExclamation, 警告”txtUserName.SetFocusElseIf Trim(mrc。Fields(1))Trim(txtPassword。Text) ThenOK = Truemrc。CloseMe。HideUserName = Trim(txtUserName。Text)ElseMsgBo
18、x ”输入密码不正确,请重新输入!, vbOKOnly + vbExclamation, ”txtPassword.SetFocustxtPassword.Text = ”End IfEnd IfEnd IfmiCount = miCount + 1If miCount = 3 ThenMe。HideEnd IfExit SubEnd SubPrivate Sub Label1_Click()End Sub22主界面代码Private Sub addcinfoMenu_Click() frmAddclassinfo。ShowEnd SubPrivate Sub addcourseMenu_Cl
19、ick() frmAddcourseinfo。ShowEnd SubPrivate Sub addresultMenu_Click() frmAddresult。ShowEnd SubPrivate Sub addsinfoMenu_Click() frmAddsinfo.ShowEnd SubPrivate Sub adduserMenu_Click() frmAdduser.Show sbStatusBar.Panels(1)。Text = ”添加用户”End SubPrivate Sub exitMenu_Click() EndEnd SubPrivate Sub exitsinfoMe
20、nu_Click() Unload frminquireinfoEnd SubPrivate Sub gradecourseMenu_Click() frmSetcourseinfo.ShowEnd SubPrivate Sub inquireresultMenu_Click() frmInquireresult.ShowEnd SubPrivate Sub inquiresinfoMenu_Click() frmInquiresinfo。ShowEnd SubPrivate Sub MDIForm_Load() Me.Left = GetSetting(App.Title, Settings
21、”, ”MainLeft”, 1000) Me.Top = GetSetting(App。Title, ”Settings”, MainTop”, 1000) Me。Width = GetSetting(App。Title, ”Settings, ”MainWidth, 6500) Me.Height = GetSetting(App。Title, ”Settings”, ”MainHeight”, 6500) End SubPrivate Sub MDIForm_Unload(Cancel As Integer) If Me.WindowState vbMinimized Then Save
22、Setting App。Title, Settings”, ”MainLeft, Me.Left SaveSetting App。Title, ”Settings”, MainTop, Me。Top SaveSetting App.Title, Settings, MainWidth”, Me。Width SaveSetting App.Title, Settings”, MainHeight”, Me.Height End If Private Sub modifycinfoMenu_Click() frmModifyclassinfo。ShowEnd SubPrivate Sub modi
23、fycourseMenu_Click() frmModifycourseinfo。ShowEnd SubPrivate Sub modifypwdMenu_Click() frmModifyuserinfo.ShowEnd SubPrivate Sub modifyresultMenu_Click() frmModifyresult.ShowEnd Sub frmModifysinfo.ShowEnd Sub23学生信息输入(1)班级信息输入代码:Dim mrc As ADODB。RecordsetDim MsgText As StringDim tSQL As StringPrivate S
24、ub Command1_Click() If Text1(0) = ” Then MsgBox 班级编号不能为空!”, vbOKOnly, 提示” Text1(0).SetFocus Exit Sub End If If Text1(1) = ” Then MsgBox ”班级名称不能为空!”, vbOKOnly, ”提示 Text1(1).SetFocus Exit Sub End If If Text1(2) = Then MsgBox ”导员姓名不能为空!, vbOKOnly, ”提示 Text1(2).SetFocus Exit Sub End If txtSQL = ”select
25、* from class_Form where class_NO= Trim(Text1(0)) ” Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc.EOF = False Then MsgBox ”此班级编号已存在!, vbOKOnly, 警告” Text1(0)。SetFocus Exit Sub End If mrc.Close txtSQL = select from class_Form” Set mrc = ExecuteSQL(txtSQL, MsgText) mrc.AddNew mrc。Fields(0) = Trim(Text1(0
26、)) mrc。Fields(1) = Trim(Text1(1) mrc。Fields(2) = Trim(Text1(2) mrc.Fields(3) = Trim(Text1(3) mrc。Update mrc.Close For i = 0 To 3 Text1(i) = ” Next MsgBox ”班级信息添加成功!, vbOKOnly, 提示 ShowDataEnd SubPrivate Sub Command2_Click() For i = 0 To 3 Text1(i) = ” NextEnd SubPrivate Sub Command3_Click() If Text1(
27、5) = ” Then MsgBox 班级名称不能为空!, vbOKOnly, ”提示 Text1(5)。SetFocus Exit Sub End If If Text1(6) = ” Then MsgBox ”导员姓名不能为空!, vbOKOnly, 提示” Text1(6).SetFocus Exit Sub End If txtSQL = ”delete from class_Form where class_NO=” & Trim(Text1(4) Set mrc = ExecuteSQL(txtSQL, MsgText) txtSQL = select from class_For
28、m” Set mrc = ExecuteSQL(txtSQL, MsgText) mrc。AddNew mrc.Fields(0) = Trim(Text1(4)) mrc。Fields(1) = Trim(Text1(5)) mrc.Fields(2) = Trim(Text1(6)) mrc.Fields(3) = Trim(Text1(7) mrc。Update mrc.Close For i = 4 To 7 Text1(i) = ” Next MsgBox 班级信息修改成功!, vbOKOnly, ”提示” ShowDataEnd SubPrivate Sub Command4_Cl
29、ick() For i = 4 To 7 Text1(i) = ” NextEnd SubPrivate Sub Command5_Click() txtSQL = delete from class_Form where class_NO=” & Trim(Text1(8) ” Set mrc = ExecuteSQL(txtSQL, MsgText) For i = 8 To 11 Text1(i) = Next MsgBox ”班级信息以经删除!”, vbOKOnly, ”警告 ShowDataEnd SubPrivate Sub Command6_Click() For i = 8 T
30、o 11 Text1(i) = ” NextEnd SubPrivate Sub Form_Load() Me。Caption = ”班级信息-添 加” Picture1(1)。Top = Picture1(0)。Top Picture1(1)。Left = Picture1(0).Left Picture1(2).Top = Picture1(0)。Top Picture1(2).Left = Picture1(0).Left ShowData For i = 0 To 2 Label2(i).BackColor = &HE0E0E0 Picture1(i)。Visible = False
31、Next Label2(0).BackColor = HFFFFFF Picture1(0).Visible = TrueEnd SubPrivate Sub Form_Resize() dColor。ZOrder 1End SubPrivate Sub Label1_Click()End SubPrivate Sub Label2_Click(Index As Integer) Me.Caption = 班级信息” Me。Caption = Me。Caption - & For i = 0 To 2 Label2(i).BackColor = HE0E0E0 Picture1(i)。Visi
32、ble = False Next Label2(Index).BackColor = &HFFFFFF Picture1(Index).Visible = True For i = 0 To 11 Text1(i) = ” Next Command3。Enabled = False Command5.Enabled = FalseEnd SubPrivate Sub ShowData() Dim txSQL As String Dim mrcc As ADODB.Recordset txSQL = select * from class_Form Set mrcc = ExecuteSQL(t
33、xSQL, MsgText) With MSFlexGrid1 ColWidth(0) = 1200 ColWidth(1) = 1200 ColWidth(2) = 1200 ColWidth(3) = 6000 TextMatrix(0, 0) = ”班级编号 TextMatrix(0, 1) = ”班级名称” TextMatrix(0, 2) = ”导员姓名 TextMatrix(0, 3) = ”备注信息 Rows = 1 Do While Not mrcc。EOF Rows = .Rows + 1 For i = 0 To mrcc。Fields.Count 1 TextMatrix
34、(.Rows - 1, i) = mrcc。Fields(i) Next i mrcc。MoveNext Loop End With mrcc。CloseEnd SubPrivate Sub MSFlexGrid1_Click() If Picture1(1).Visible = True Then Text1(4) = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0)) Text1(5) = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1) Text1(6) = Trim(MSFlexGrid1.Te
35、xtMatrix(MSFlexGrid1.Row, 2)) Text1(7) = Trim(MSFlexGrid1。TextMatrix(MSFlexGrid1.Row, 3)) Command3。Enabled = True End If If Picture1(2).Visible = True Then Text1(8) = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1。Row, 0) Text1(9) = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1) Text1(10) = Trim(MSFlexGri
36、d1.TextMatrix(MSFlexGrid1。Row, 2) Text1(11) = Trim(MSFlexGrid1。TextMatrix(MSFlexGrid1。Row, 3)) Command5.Enabled = True End IfEnd SubPrivate Sub Text1_Change(Index As Integer) If Index = 4 Then tSQL = ”select * from class_Form where class_NO=” & Trim(Text1(Index)) ” Set mrc = ExecuteSQL(tSQL, MsgText
37、) If mrc.EOF = False Then Text1(5) = mrc。Fields(1) Text1(6) = mrc。Fields(2) Text1(7) = mrc.Fields(3) Command3.Enabled = True Exit Sub Else Text1(5) = ” Text1(6) = ” Text1(7) = ” Command3.Enabled = False End If mrc.Close End If If Index = 8 Then tSQL = ”select from class_Form where class_NO=” & Trim(
38、Text1(Index)) & ” Set mrc = ExecuteSQL(tSQL, MsgText) If mrc.EOF = False Then Text1(9) = mrc。Fields(1) Text1(10) = mrc.Fields(2) Text1(11) = mrc。Fields(3) Command5。Enabled = True Exit Sub Else Text1(9) = ” Text1(10) = Text1(11) = ” Command5.Enabled = False End If mrc.Close End IfEnd SubPrivate Sub T
39、ext1_GotFocus(Index As Integer) Text1(Index).SelStart = 0 Text1(Index)。SelLength = Len(Text1(Index)End SubPrivate Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer) EnterToTab KeyCodeEnd Sub(2)课程信息输入代码:Dim mrc As ADODB.RecordsetDim MsgText As StringPrivate Sub Combo1_Click() L
40、ist1TextEnd SubPrivate Sub Command1_Click() Dim txtSQL As String If Text1(0) = ” Then MsgBox ” 课程名称不能为空!, vbOKOnly, 提示” Text1(0).SetFocus Exit Sub End If txtSQL = ”select * from course_Form where course_Name= & Trim(Text1(0) ” Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc.EOF = False Then MsgBox ”此课程
41、名称已经存在!, vbOKOnly, ”警告 Text1(0)。SetFocus Exit Sub End If mrc.Close txtSQL = ”select from course_Form” Set mrc = ExecuteSQL(txtSQL, MsgText) mrc.AddNew mrc.Fields(0) = Trim(Text1(0)) mrc.Fields(1) = Trim(Text1(1) mrc.Update mrc。Close Text1(0) = ” Text1(1) = MsgBox 课程信息添加成功!, vbOKOnly, ”提示” List2TextEnd SubPrivate Sub Command2_Click() Dim txtSQL As String If L