VB数据库设计学生通讯录
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB数据库设计学生通讯录
用VB数据设计学生通讯录
陈正法
(江苏盐城技师学院计算机系江苏盐城224002)
摘要:本文利用VB6.0的数据库的强大功能,初步阐述了如何用VB设计数据库,
用数据控件操纵数据库,并用数据绑定控件显示数据字段的编程过程,巧妙地运用了
二进制格式显示照片的信息,确保了通讯录的完整性。
关键词:数据库;照片;数据控件;数据绑定控件
同学几年,即将毕业,有必要制作班级通讯录的小册子,每个人只需要有学号、姓名、电话、家庭住址、照片等作息就可以制作班级通讯录了;制作方法众多,有用Word制作的,有用Excel制作的,有用专门通讯录软件制作的,也有用编程制作的,但在照片的显示方面大多有很大困难;笔者通过多年的VB教学实践,利用VB6.0的数据库的强大功能初步探讨了一个可灵活显示包括照片等信息的通讯录的设计过程,巧妙地运用二进制数据储存和显示图像信息,全部信息存储在数据库中,具有安全、简洁、实用等功能,为计算机辅助设计通讯录提供了一个强大和实用的方法。
一、建立Access数据库
设计数据库的方式很多,既可以用Microsoft
Access来设计数据库,也可以用SQL Server来设
计数据库,又可用VFP来设计数据库,等等;本
文从简洁实用角度考虑,使用VB自带的可视化数
据管理器来设计Access数据库;可视化数据管理
器是VB提供的一种很方便实用的数据库设计工
具,具有创建数据库、设计与编辑数据表等功能。
1、创建Access数据库
在VB中选择“文件”|“新建”|Version7.0MDB
菜单,打开“Access数据库”窗口,选择保存路
径,输入数据库名为“学生通讯录”,单击“保存”按钮,打开“可视化数据管理器”窗口。
2、设计数据表的结构
在“可视化数据管理器”窗口中右击鼠标,选择“新建表”命令,打开“表结构”对话框,先输入表名”stu”,再根据如上图界面设计如下字段:
(1)学号:文本类型,大小为10个字符;(2)姓名:文本类型,大小为10个字符;(3)性别:文本类型,大小为2个字符;(4)QQ号:文本类型,大小为11个字符;(5)手机:文本类型,大小为11个字符;(6)住址:文本类型,大小为30个字符;(7)照片:二进制类型,这是数据库存储和显示图片的关键,这样就可以在VB中用数据控件和图像框控件再配合特定代码来显示照片了。
二、分别添加相应控件及设置相应属性:
1、添加六个标签控件:Caption属性分别为学号、姓名、性别、QQ号、手机、住址;名称属性为默认。
2、添加六个文本框控件:其中有五个绑定控件的Text属性都为空,名称属性都为默认,DataSource属性为Data1,DataField属性分别为学号、姓名、QQ号、手机、住址;还有一个文本框的Text属性为空,名称属性为TexFind。
3、添加五个命令按钮:Caption属性分别为上一个、下一个、添加、删除和查询;名称属性为默认。
4、添加二个组合框:一个为绑定控件,DataSource属性为Data1,DataField属性为性别,List属性为男、女;另一个组合框的名称属性为CobFind,List属性为学号、姓名、QQ号、手机,Text属性为学号。
5、添加一个图像框(绑定控件):DataSource属性为Data1,DataField属性为照片,Stretch 属性为True。
6、添加一个通用对话框:名称属性为CDlg。
7、添加一个Data控件(数据控件):DatabaseName属性为“学生通讯录.mdb”,RecordSource 属性为stu。
三、编写代码:
1、编写初始化代码
在加载窗体事件中输入Data1.DatabaseName = App.Path & "\学生通讯录.mdb",主要是设置数据库文件的相对路径,这样可以将通讯录文件复制到其它计算机也能正常运行。
‘初始化窗体
Private Sub Form_Load()
CobFind.AddItem "学号"
CobFind.AddItem "姓名"
CobFind.AddItem "QQ号"
CobFind.AddItem "手机"
CobFind.Text = "学号"
Data1.DatabaseName = App.Path & "\学生通讯录.mdb"
End Sub
2、编写“上一个”和“下一个”按钮代码
为方便浏览通讯录,本文专门设计了两个按钮,“上一个”按钮利用MovePrevious方法快速准确地将记录移动到上一条记录,浏览该同学的信息;“下一个”按钮利用MoveNext 方法快速准确地将记录移动到下一条记录,浏览该同学的信息;同时利用选择结构有效地控制了记录移动到开头和结尾时有可能出现的错误,保证通讯录浏览过程的正确无误;核心代码主要有:(1)移动到上一个记录
Data1.Recordset.MovePrevious,(2)移动到开头Data1.Recordset.BOF,(3) 移动到下一个记录Data1.Recordset.MoveNext,(4) 移动到结尾Data1.Recordset.EOF。
'上一个
Private Sub ComPrev_Click()
On Error Resume Next
Data1.Recordset.MovePrevious
ComNext.Enabled = True
If Data1.Recordset.BOF Then
Data1.Recordset.MoveFirst
ComPrev.Enabled = False
End If
End Sub
'下一个
Private Sub ComNext_Click()
On Error Resume Next
Data1.Recordset.MoveNext
ComPrev.Enabled = True
If Data1.Recordset.EOF Then
Data1.Recordset.MoveLast
ComNext.Enabled = False
End If
End Sub
3、编写“添加”按钮代码
本设计巧妙地利用了同一按钮实现添加和更新两种功能,当显示“更新”按钮时,依次添加照片、学号、姓名、性别、QQ号、手机和住址后,单击“更新”按钮即可完成一名同学的信息录入(特别要注意的是必须先添加照片),此时显示“添加”按钮,为输入下一记录作准备;核心代码主要有:(1)添加新记录Data1.Recordset.AddNew,(2)更新记录Data1.UpdateRecord,(3) 显
示打开对话框CDlg.ShowOpen,(4) 图像框中加载照片Image1.Picture = LoadPicture(CDlg.FileName)。
'添加记录
Private Sub ComAdd_Click()
If ComAdd.Caption = "确定" Then
On Error GoTo errorhandler
Data1.UpdateRecord
Data1.Recordset.MoveLast
ComPrev.Enabled = True
ComNext.Enabled = True
ComDel.Enabled = True
ComFind.Enabled = True
ComAdd.Caption = "添加"
Else
Data1.Recordset.AddNew
CDlg.FileName = ""
CDlg.ShowOpen
If CDlg.FileName <> "" Then
Image1.Picture = LoadPicture(CDlg.FileName)
End If
ComAdd.Caption = "确定"
ComPrev.Enabled = False
ComNext.Enabled = False
ComDel.Enabled = False
ComFind.Enabled = False
End If
Exit Sub
'错误处理
errorhandler:
If Err.Number = 524 Then
MsgBox "该记录已存在!", 48, "警告" '输入的姓名相同
End If
Resume
End Sub
4、编写“删除”按钮代码
当输入错误或有不需要的信息时,可以很轻松的单击“删除”按钮删除该信息,不需要的信息不再保留在数据库中,减少了数据库的冗余;核心代码主要有:(1) 删除记录Data1.Recordset.Delete,(2)更新数据库Data1.Refresh。
'删除记录
Private Sub ComDel_Click()
On Error Resume Next
Dim i As Integer
i = MsgBox("真的要删除当前记录吗?", 52, "警告")
If i = 6 Then
Data1.Recordset.Delete
Data1.Refresh
End If
End Sub
5、编写“查询”按钮代码
为灵活方便浏览通讯录,本文设计了根据学号、姓名、QQ号和手机号码四种查询方式,从不同角度查询同学信息,灵活快速全面;核心代码主要有:(1)根据某种查询方式显示记
录 Data1.Recordset.FindFirst "查询方式=" & "'" & TexFind.Text & "'"(2)判断记录是否存在Data1.Recordset.NoMatch。
'查询通讯录
Private Sub ComFind_Click()
If TexFind.Text = "" Then
MsgBox "请输入查询内容!", 48, "提示"
Exit Sub
End If
If CobFind.Text = "学号" Then
Data1.Recordset.FindFirst "学号=" & "'" & TexFind.Text & "'"
ElseIf CobFind.Text = "姓名" Then
Data1.Recordset.FindFirst "姓名=" & "'" & TexFind.Text & "'"
ElseIf CobFind.Text = "QQ号" Then
Data1.Recordset.FindFirst "QQ号=" & "'" & TexFind.Text & "'"
ElseIf CobFind.Text = "手机" Then
Data1.Recordset.FindFirst "手机=" & "'" & TexFind.Text & "'"
End If
If Data1.Recordset.NoMatch Then
MsgBox "记录不存在", 64, "提示"
End If
End Sub
四、输入和浏览记录
运行本文设计的VB通讯录,通过单击“添加”按钮后,用户可将班级的每个同学的信息输入到文本框中,将照片添加到图像框中,输完一个学生的信息后,单击更新按钮就能将该学生信息自动保存到数据库中;重复上述操作,将全班同学信息全部输入完毕,一个图文并茂的班级通讯录就大功告成了。
在毕业几年后的某次班级聚会上,同学们打开笔记本电脑,打开该班级通讯录程序,通过单击上一个和下一个按钮可以浏览所有记录,还可以在查询按钮下方的下拉列表框中选择一种查询方式,然后在该下拉列表框下面的文本框中输入相应信息,单击查询按钮即可找到与查询条件相符的某位同学的其他信息,回想学校生活,其乐无穷。
参考资料:
[1]林陈雷等.VB教育信息化系统开发实例导航.北京:人民邮电出版社,2003.6
[2]求是科技.VB6.0程序设计与开发技术大全.北京:人民邮电出版
社,2004.9。