#学生基本信息管理系统的开发

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第2章 学生基本信息管理系统地开发<C 级)
2.1项目概述 2.1.1项目主要功能
项目主要功能包含:<1)学生信息管理模块:该模块具体功能是学生基本基本信息地添加、信息修改、删除和查询,排序统计;(2)权限管理模块:该模块主要负责管理用户地信息,区分不同级别地用户,可提高系统安全性;<3)统计及报表;<4)数据管理四个部分.其
操作流程如下所示:2.1.2程序文件结构
图2-1程序文件结构 2.2全局变量和数据库设计 2.2.1定义全局变量 全局变量地定义: Public Flag As Integer
Public username As String
这两个变量用来存放登陆用户名和相应等级,定义在标准模块Module1.BAS中. 公有函数<可执行SQL语句,返回记录集)地定义:
Public Function exesql(ByVal sql As String> As ADODB.Recordset
sql = Trim$(sql>
Set conn = New ADODB.Connection
Set rst = New ADODB.Recordset
conn.ConnectionString = "dsn=student"’ODBC数据源名
conn.Open
Set rst.ActiveConnection = conn
rst.LockType = adLockOptimistic
rst.CursorType = adOpenKeyset
rst.Open sql
Set exesql = rst
Set rst = Nothing
Set conn = Nothing
End Function
公有函数亦定义在标准模块Module1.BAS中.
2.2.2数据库地设计
物理数据库名:student
ODBC数据源名:student
2.2.1S表<学生基本信息表)
2.2.2yonghu表<学生基本信息表)
2.3效果和关键实现
2.3.1登陆模块 (窗体名:login>
图2-2登陆界面(窗体名:login>
关键技术:
1、操作数据库地专用函数exesql也应添加到标准模块Module1.BAS中并在VB在VB项目-----引用中添加Microsoft ActiveX Data Objects 2.5 Library.
2、登陆错误次数限制3次不允许用户无止尽尝试密码,一旦错误超过三次程序自动结束,在窗体通用部分首先定义窗体级变量TIM,,核心程序如下:
'验证操作员及密码
Dim sql As String
sql = "select * from yonghu where username='" + Combo1.Text + "' and password='" + Text2.Text + "'"
Set rs = exesql(sql>
If rs.RecordCount > 0 Then
Load main
main.Show
username = Combo1
Unload Me
ElseIf TIM = 3 Then '密码输错3次,退出系统
myval = MsgBox("密码输入错误,请向系统管理员查询!", 0, "">
If myval = vbOK Then End
Else
MsgBox "输入错误,你还有" & 3 - TIM & "次机会"
TIM = TIM + 1
End If
3、支持键盘操作,例TEXT2文本框中支持方向键代码如下:
Private Sub text2_KeyDown(KeyCode As Integer, Shift As Integer>
If KeyCode = vbKeyReturn Then CmdOk.SetFocus '按回车键CmdOk获得焦点
If KeyCode = vbKeyUp Then Combo1.SetFocus
If KeyCode = vbKeyDown Then CmdOk.SetFocus
End Sub
4、密码框中输入任何字符以制定字符显示<例“*”),应设置其passwordchar属性地值即可.
2.3.2学生信息管理模块(窗体名:main>
图2-3学生信息管理界面(窗体名:main>
关键技术:
1、采用adodc和datagrid显示数据.
操作步骤:
<1)选中项目-部件
(2>Adodc控件完成与各类数据库地连接(连接ODBC数据源student>,可执行sql命令(select * from s>.
(3>datagrid控件完成数据地显示(指定其DataSource为Adodc控件>.
2、记录移动技术
首条:Adodc1.Recordset.MoveFirst
未条:Adodc1.Recordset.MoveLast
上一条<注意应判断是否已移到最前,如果不判断移到第1条记录后再往前移动,程序就出错),关键代码如下:
If Not Adodc1.Recordset.BOF Then
Adodc1.Recordset.MovePrevious
End If
下一条<注意应判断是否已移到最后,如果不判断移到第后条记录后再往后移动,程序就出错),关键代码如下:
If Not Adodc1.Recordset.EOF Then
Adodc1.Recordset.MoveNext
End If
3、数据删除技术<应判断是否存在记录,否则不存在记录作删除操作程序报错)关键代码如下:
If Adodc1.Recordset.RecordCount <> 0 Then
Dim sss
sss = Trim(Adodc1.Recordset.Fields("sno">>
If MsgBox("真地要删除[" + sss + "]吗?", vbYesNo, "系统友情提示"> = vbYes Then
Adodc1.Recordset.Delete
End If
End If
4、查询技术:
在这里强调标准SQL语句地语法问题,对于字符数据匹配,要加单引号,而对于数值型字段不需要加,例如SNO(char>与text1是否匹配地sql语句为:”select * from s where sno=’” &text1&”’”,例如Sgrade(int>与text1是否匹配地sql语句为”select * from s where Sgrade=” &text1
5、聚集函数地使用(可以给聚集函数起别名>,使用方法如下:
Dim t sqlt As String
sqlt = "select count(*> as 总人数 from s where " & Combo1.Text & Combo2.Text & "'" & Text1 & "'"
Set rs = exesql(sqlt> '调用执行SQL函数,已经在模块中添加
Text2.Text = rs("总人数">
5、增加修改技术<共用界面update)
增加全局变量Public Flag As Integer,Flag = 0 '增加记录,Flag = 1 '修改记录
If Flag = 1 Then
Call edit‘调用编辑过程
Else
Call add‘调用增加过程
End If
增加记录时,程序中应考虑主键,空值,check等约束,因此程序中必须增加容错判断,代码如下:
Sub add(> '注意也可以直接使用insert语句
Dim sql As String
sql = "select * from s where sno='" & Text1.Text & "'"
Set rs = exesql(sql>
If Text1.Text = "" Or Text2.Text = "" Then
MsgBox "学号姓名不能空"
Exit Sub
End If
If DTPicker1.Value > #1/1/2018# Or DTPicker1.Value < #1/1/1949# Then MsgBox "出生日期不合法<1949-1-1~2018-1-1)!"
Exit Sub
End If
If rs.RecordCount = 0 Then
rs.AddNew
rs("sno"> = Text1
rs("Sname"> = Text2
If Option1.Value = True Then
rs("Ssex"> = "男"
Else
rs("Ssex"> = "女"
End If
rs("Sbirthday"> = DTPicker1.Value
rs("Sdept"> = Text3
rs("Sgrade"> = CInt(Combo1.Text>
rs.UPDATE
MsgBox "增加记录成功"
Else
MsgBox "学号重复无法添加!"
End If
End Sub
2、编辑记录时,首先加载被编辑地数据到各控件,因此在窗体地相应事件中添加:Private Sub Form_Load(>
Combo1.AddItem "1"
Combo1.AddItem "2"
Combo1.AddItem "3"
Combo1.AddItem "4"
If Flag = 1 Then '修改数据,首先加载该条数据FLAG全局变量.
Text1 = main.Adodc1.Recordset.Fields("sno">
Text1.Enabled = False '学号无法更改
Text2 = main.Adodc1.Recordset.Fields("sname">
If main.Adodc1.Recordset.Fields("ssex"> = "男" Then
Option1.Value = True
Else
Option2.Value = True
End If
DTPicker1.Value = main.Adodc1.Recordset.Fields("sbirthday">
Text3 = main.Adodc1.Recordset.Fields("sdept">
Combo1.Text = main.Adodc1.Recordset.Fields("sgrade">
End If
End Sub
具体编辑过程如下:
Sub edit(> '注意也可以直接使用update语句
Dim sql As String
sql = "select * from s where sno='" & Text1.Text & "'"
Set rs = exesql(sql>
If Text1.Text = "" Or Text2.Text = "" Then
MsgBox "学号姓名不能空"
Exit Sub
End If
If DTPicker1.Value > #1/1/2018# Or DTPicker1.Value < #1/1/1949# Then MsgBox "出生日期不合法<1949-1-1~2018-1-1)!"
Exit Sub
End If
rs("Sname"> = Text2
If Option1.Value = True Then
rs("Ssex"> = "男"
Else
rs("Ssex"> = "女"
End If
rs("Sbirthday"> = DTPicker1.Value
rs("Sdept"> = Text3
rs("Sgrade"> = CInt(Combo1.Text>
rs.UPDATE
MsgBox "增加更新成功"
End Sub
6,权限限制技术:
Private Sub Form_Activate(>
'权限判断
'1级权限所有权限
'等级2:拥有数据查询,增加权限
'等级3:拥有数据查询
Dim sql As String
sql = "select * from yonghu where username='" & username & "'"
Set rs = exesql(sql>
If rs("jibie"> = 2 Then
Command3.Enabled = False
Command4.Enabled = False
ElseIf rs("jibie"> = 3 Then
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
End If
End Sub
7,报表打印技术(在报表中添加相应控件>:
Private Sub DataReport_Initialize(>
Set rs1 = exesql(sqltext>
Set DataReport1.DataSource = rs1 '设置 DataReport 地数据源
DataRepor t1.Sections("Section1">.Controls("text1">.DataField = "sno"’字段名
DataReport1.Sections("Section1">.Controls("text2">.DataField = "sname" DataReport1.Sections("Section1">.Controls("text3">.DataField = "ssex" DataReport1.Sections("Section1">.Controls("text4">.DataField = "sbirthday" DataReport1.Refresh
End Sub
2.3.3增加、修改学生信息模块(窗体名: update>
图2-4增加学生信息界面(窗体名:update>
图2-5修改学生信息界面窗体名:update
2.3.4查询打印报表模块(窗体名: datareport1>
图2-6查询打印报表界面(datareport1>
2.3.5权限管理模块(窗体名: datareport1>
图2-7权限管理界面(窗体名:quanxian>
2.4本实例小结
本章通过一个简单完整地应用程序开发实例,介绍了数据库应用系统开发中常用地一些技术,适合C级学生完成,涵盖了SQL地使用,常用控件地使用,报表地使用,我们在开发过程中,应充分考虑到到用户地需要,尽量地方便用户使用,例如,在这个例子中支持了键盘操作.当然本系统只是一个示例,在信息表述上不够完备,通用性不强,比如权限设置不够灵活,一些模块信息不够详细,读者可以根据实际情况来完善我们地例子,把它做得更加人性化,智能化,通用化.
第3章医院体检结论查询打印系统<C级)。

相关文档
最新文档