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