VB+Access设计图书管理系统.docx
- 文档编号:9483188
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:47
- 大小:399.33KB
VB+Access设计图书管理系统.docx
《VB+Access设计图书管理系统.docx》由会员分享,可在线阅读,更多相关《VB+Access设计图书管理系统.docx(47页珍藏版)》请在冰豆网上搜索。
VB+Access设计图书管理系统
VB+Access设计图书管理系统
一、需求分析
在进行一个项目的设计之前,先要进行必要的需求分析。
现某图书馆需要管理其各种人员和图书信息,希望实现办公的信息化,通过建立一个图书管理系统来管理图书。
其完成的功能如下:
(1)可以实现图书的登记、借阅和赔偿的管理。
(2)可以实现对图书的各种信息的查询,包括逐个浏览,以及对图书信息的增加、删除和编辑操作。
另外,可以根据输入的信息来检索某个图书的信息。
(3)可以实现对管理人员的投诉管理。
(4)可以实现对值班人员的管理。
系统的功能模块图如图1所示。
本实例根据上面的设计规划出的实体有图书登记实体、图书借阅实体、图书赔偿实体、查询输出实体、值班管理实体、投诉管理实体。
各个实体具体的描述E-R图如下。
图书登记实体E-R图如图2所示。
图书借阅实体E-R图如图3所示。
图1系统的功能模块图
图2图书登记实体E-R图
图3图书借阅实体E-R图
图书赔偿实体E-R图如图4所示。
图4图书赔偿实体E-R图
投诉管理实体E-R图如图5所示。
图5投诉管理实体E-R图
值班管理实体E-R图如图6所示。
图6值班管理实体E-R图
查询输出实体E-R图如图7所示。
图7查询输出实体E-R图
二、结构设计
根据上面的需求分析,设计好数据库系统,然后开发应用程序可以考虑的窗体的系统,每一个窗体实现不同的功能,可以设计下面的几个模块。
●图书管理模块:
用来实现图书的登记、借阅、赔偿。
●图书资料模块:
用来实现图书的查询输出。
●值班管理模块:
用来实现管理人员的值班浏览。
●投诉管理模块:
用来实现对管理人员的投诉管理。
●系统管理模块:
用来实现用户的增加、删除和修改等操作。
三、数据库设计
这里的数据库采用Access,用ADO作为连接数据对象。
1、建立Access数据库
启动Access,建立一个空的数据库book.mdb,如图8所示。
使用程序设计器建立系统需要的表格如下。
图书登记表,如图9所示。
图8建立数据库book.mdb图9图书登记表
图书借阅表,如图10所示。
图书赔偿表,如图11所示。
图10图书借阅表图11图书赔偿表
图书资料表,如图12所示。
系统管理表,如图13所示。
图12图书资料表图13系统管理表
投诉管理表,如图14所示。
图14投诉管理表
值班管理表,如图15所示。
图15值班管理表
2、连接数据
在VisualBasic环境下,选择“工程”→“引用”命令,在随后出现的对话框中选择“MicrosoftActiveXDataObjects2.0Library”,然后单击“确定”按钮,如图16所示。
图16引用ADO连接数据库
在程序设计的公共模块中,先定义ADO连接对象。
语句如下:
PublicconnAsNewADODB.Connection'标记连接对象
然后在子程序中,用如下的语句即可打开数据库:
DimconnectionstringAsString
connectionstring="provider=Microsoft.Jet.oledb.4.0;"&_
"datasource=book.mdb"
conn.Openconnectionstring
3、设置ODBC
VB的ADO对象是通过ODBC来访问数据库,所以还要建立ODBC数据引擎接口。
打开控制面板中的“管理工具”→“数据源”(ODBC),出现如图17所示的对话框。
图17ODBC对话框
单击“添加”按钮,出现“创建新数据源”对话框,如图18所示。
图18“创建新数据源”对话框
选择MicrosoftAccessDriver(*.mdb),单击“完成”按钮,出现如图19所示对话框。
图19设置连接数据源
在“数据源名”文本框中添加一个名字,单击“确定”按钮完成系统默认连接设置。
然后在ODBC对话框中单击“确定”按钮完成ODBC设置。
界面设计
设计好的界面如图20所示。
图20图书管理系统界面
这是一个多文档界面(MDI)应用程序,可以同时显示多个文档,每个文档显示在各自的窗体中。
MDI应用程序中常有包含子菜单的“窗体”选项,用于在窗体或文档之间进行切换。
菜单应用程序中,有5个菜单选项,每个选项对应着E-R图的一个子项目。
1、创建主窗体
首先创建一个工程,命名为图书管理系统,选择“工程”→“添加MDI窗体”命令,则在项目中添加了主窗体。
该窗体的一些属性如表1所示。
表1主窗体的属性
属
性值
Caption
图书管理系统
Name
Main
Menu
Mainmenu1
Windowstate
Maxsize
Windowstate的值为Maxsize,即程序启动之后自动最大化。
将“菜单”组件从“工具箱”拖到窗体上。
创建一个Text属性设置为“文件”的顶级菜单项,且带有名为“关闭”的子菜单项。
类似地创建一些菜单项,如表2所示。
表2菜单项表
菜单名称
Text属性
功能描述
MenuItem1
图书管理
顶级菜单,包含子菜单
MenuItem2
图书登记
调出图书登记窗体
MenuItem3
图书借阅
调出图书借阅窗体
MenuItem4
图书赔偿
调出图书赔偿窗体
MenuItem5
图书资料
顶级菜单,包含子菜单
MenuItem6
查询输出
调出查询输出窗体
MenuItem7
值班管理
顶级菜单,没有子菜单
MenuItem8
投诉管理
顶级菜单,没有子菜单
MenuItem9
系统管理
顶级菜单,包含子菜单
MenuItem10
增加用户
调出用户窗体
MenuItem11
修改密码
调出密码窗体
MenuItem12
退出
系统退出
主窗体如图21所示。
图21主窗体
2、创建各子窗体
选择“工程”→“添加窗体”命令,添加子窗体。
在新建VisualBasic工程时自带的窗体中,将其属性MIDChild改成True,则这个窗体成为MID窗体的子窗体。
在这个项目中,要创建的子窗体如表3所示。
表3所有子窗体
子窗体名
Text
图书登记
frmdengji
图书借阅
frmjieyue
图书赔偿
frmpeichang
增加新用户
frmadduser
查询输出
frmfind
登录系统
frmlogin
修改密码
frmchangepwd
下面分别给出这些子窗体,以及它们所使用的控件。
(1)图书登记子窗体如图22所示,其控件如表4所示。
图22图书登记子窗体
表4图书登记子窗体控件
控件类别
控件Name
控件Text
Label
Label1
编号
Label2
书名
Label3
类型
Label4
购买日期
Label5
定价
TextBox
Text1
(空)
Text2
(空)
Text3
(空)
Text4
(空)
Text5
(空)
CommandButton
Command1
增加记录
Command2
删除记录
Command3
下一条
Command4
上一条
Command5
第一条
Command6
最后一条
Command7
退出
ADO
DataAdodc1
(空)
DataGrid
DataGrid1
(空)
图书借阅和图书赔偿子窗体分别如图23和图24所示,因为它们的控件与图书登记子窗体的雷同,在此不作介绍。
图23图书借阅子窗体
图24图书赔偿子窗体
(2)增加用户子窗体如图25所示,其控件如表5所示。
图25增加用户子窗体
表5增加用户子窗体控件
控件类别
控件Name
控件Text
Label
Label1
输入用户名
Label2
输入密码
Label3
确认密码
Label4
选择权限
TextBox
Text1
(空)
Text2
(空)
Text3
(空)
ComboBox
Comb1
(空)
CommandButton
Commandl
确定
Command2
取消
(3)修改密码子窗体如图26所示。
图26修改密码子窗体
(4)库房管理子窗体如图27所示。
图27库房管理子窗体
其控件如表6所示。
表6库房管理子窗体控件
控件类别
控件Name
控件Text
TextBox
Text1
(空)
ComboBox
Combo1
MSFlexGrid
MSFlexGrid1
(5)查询子窗体如图28所示,其控件如表7所示。
图28查询子窗体
表7查询子窗体控件
控件类别
控件Name
控件Text
OptionButton
Option1
按编号查询
Option2
按购买日期查询
Label
Label1
从
Label2
到
Label3
从
Label4
年
Label5
月
Label6
日
Label7
到
Label8
年
Label9
月
Label10
日
Combo(0)ComboBox
Combo1
(空)
Combo
(1)ComboBox
Combo1
(空)
Comboy(0)ComboBox
Comboy
(空)
Comboy
(1)ComboBox
Comboy
(空)
Combom(0)ComboBox
Combom
(空)
Combom
(1)ComboBox
Combom
(空)
Combod(0)ComboBox
Combod
(空)
Combod
(1)ComboBox
Combod
(空)
CommandButton
Command1
查询
Command2
取消
(6)用户登录子窗体如图29所示。
(7)值班管理子窗体如图30所示,其控件如表8所示。
图29用户登录子窗体图30值班管理子窗体
(8)投诉管理子窗体如图31所示,其控件如表9所示。
图31投诉管理子窗体
建立公共模块
1、显示目录
建立公共模块可以提高代码的效率,同时使得修改和维护代码都很方便。
创建公共模块的步骤如下:
(1)在菜单中选择“工程”→“添加模块”命令,则出现模块对话框,如图32所示。
(2)选择模块图标后,单击“打开”按钮,则模块已经添加到项目中了。
默认情况下名为Module1。
图32模块对话框
(3)在模块中定义整个项目的公共变量。
PublicconnAsNewADODB.Connection'标记连接对象
PublicuserIDAsString'标记当前用户ID
PublicuserpowAsString'标记用户权限
PublicfindAsBoolean'标记查询
PublicsqlfindAsString'查询语句
Publicrs_data1AsNewADODB.Recordset
PublicfindokAsBoolean
PublicfrmdataAsBoolean
PublicConstkeyenter=13'enter键的ASCII码
在主窗体添加完菜单之后,就要为各个子菜单创建事件处理程序。
主窗体代码
在本项目中,子菜单事件都是Click事件,这里先给出主窗体部分的代码。
下面是响应“增加用户”子菜单Click事件,调出增加用户窗体代码。
PrivateSubadduser_Click()
frmadduser.Show
EndSub
下面是响应“查询输出”子菜单Click事件,调出查询输出窗体代码。
PrivateSubchaxunshuchu_Click()
frmfind.Show
EndSub
下面是响应“退出”子菜单Click事件,调出退出窗体代码。
PrivateSubexit_Click()
UnloadMe
EndSub
下面是响应“图书登记”子菜单Click事件,调出图书登记窗体代码。
PrivateSubcheckin_Click()
frmdengji.Show
EndSub
下面是响应“修改密码”子菜单Click事件,调出修改密码窗体代码。
PrivateSubchangepwd_Click()
frmchangepwd.Show
EndSub
下面是响应“图书借阅”子菜单Click事件,调出图书借阅窗体代码。
PrivateSubborrow_Click()
frmjieyue.Show
EndSub
下面是响应“图书赔偿”子菜单Click事件,调出图书赔偿窗体代码。
PrivateSubtushupeichang_Click()
frmpeichang.Show1
EndSub
下面是响应“值班管理”菜单Click事件,调出值班管理窗体代码。
PrivateSubzhibanguanli_Click()
frmzhiban.Show1
EndSub
下面是响应“投诉管理”子菜单Click事件,调出投诉管理窗体代码。
PrivateSubtousuguanli_Click()
frmtousu.Show1
EndSub
2、各子窗体的代码
在各个子窗体建立好后,就可以根据各个子窗体的功能给它们添加相应代码了。
(1)图书登记子窗体代码
本窗体用来填写图书登记的信息,用ADO来连接数据库,是本窗体的重点。
采用MDI的子程序,所以运行后,它出现在主程序的界面下,如图33所示。
图33图书登记子窗体
按钮控件要求先填写基本信息,然后与数据库信息比较。
PrivateSubCommand1_Click()
OnErrorGoToadderr
Text1.SetFocus
Adodc1.Recordset.AddNew
ExitSub
adderr:
MsgBoxErr.Description
EndSub
PrivateSubCommand2_Click()
OnErrorGoTodeleteerr
WithAdodc1.Recordset
IfNot.EOFAndNot.BOFThen
IfMsgBox("删除当前记录吗?
",vbYesNo+vbQuestion)=vbYesThen
.Delete
.MoveNext
If.EOFThen.MoveLast
EndIf
EndIf
EndWith
ExitSub
deleteerr:
MsgBoxErr.Description
EndSub
PrivateSubCommand3_Click()
Adodc1.Recordset.MoveNext
IfAdodc1.Recordset.EOFThen
MsgBox"这是最后一条记录",vbOKCancel+vbQuestion
Adodc1.Recordset.MoveLast
EndIf
EndSub
PrivateSubCommand4_Click()
Adodc1.Recordset.MovePrevious
IfAdodc1.Recordset.BOFThen
MsgBox"这是第一条记录",vbOKCancel+vbQuestion
Adodc1.Recordset.MoveFirst
EndIf
EndSub
PrivateSubCommand5_Click()
IfAdodc1.Recordset.EOFThen
MsgBox"记录空",vbOKCancel+vbQuestion
End
Else
Adodc1.Recordset.MoveFirst
ExitSub
EndSub
PrivateSubCommand6_Click()
IfAdodc1.Recordset.RecordCount=0Then
MsgBox"空记录",vbOKCancel+vbQuestion
End
Else
Adodc1.Recordset.MoveLast
EndIf
EndSub
PrivateSubCommand7_Click()
MDIForm1.Show
frmdengji.Hide
EndSub
图书借阅和图书赔偿子窗体运行后如图34和图35所示,因为它们的代码和图书登记子窗体的代码雷同,在此不做重复。
图34图书借阅子窗体运行效果
图35图书赔偿子窗体运行效果
(2)增加用户子窗体代码
增加用户子窗体是用来增加用户的用户名、密码和权限的。
其运行效果如图36所示。
单击“确定”按钮后,还要返回一个信息框,提示成功信息,如图37所示。
图36增加用户子窗体运行效果图37成功信息框
窗体部分代码的思路是,收集输入的表中的字符串,然后与数据库中的系统的用户数据比较,如果不存在,则允许添加。
PrivateSubCommand1_Click()
DimsqlAsString
Dimrs_addAsNewADODB.Recordset
IfTrim(Text1.Text)=""Then
MsgBox"用户名不能为空",vbOKOnly+vbExclamation,""
ExitSub
Text1.SetFocus
Else
sql="select*from系统管理"
rs_add.Opensql,conn,adOpenKeyset,adLockPessimistic
While(rs_add.EOF=False)
IfTrim(rs_add.Fields(0))=Trim(Text1.Text)Then
MsgBox"已有这个用户",vbOKOnly+vbExclamation,""
Text1.SetFocus
Text1.Text=""
Text2.Text=""
Text3.Text=""
Combo1.Text=""
ExitSub
Else
rs_add.MoveNext
EndIf
Wend
IfTrim(Text2.Text)<>Trim(Text3.Text)Then
MsgBox"两次密码不一致",vbOKOnly+vbExclamation,""
Text2.SetFocus
Text2.Text=""
Text3.Text=""
ExitSub
ElseIfTrim(Combo1.Text)<>"system"AndTrim(Combo1.Text)<>"guest"Then
MsgBox"请选择正确的用户权限",vbOKOnly+vbExclamation,""
Combo1.SetFocus
Combo1.Text=""
ExitSub
Else
rs_add.AddNew
rs_add.Fields(0)=Text1.Text
rs_add.Fields
(1)=Text2.Text
rs_add.Fields
(2)=Combo1.Text
rs_add.Update
rs_add.Close
下面是返回成功信息对话框的代码:
MsgBox"添加用户成功",vbOKOnly+vbExclamation,""
UnloadMe
EndIf
EndIf
EndSub
(3)修改密码子窗体代码
修改密码子窗体是用来修改用户密码的。
其运行效果如图38所示。
图38修改密码子窗体运行效果
在“确定”按钮的Click事件中添加如下代码:
PrivateSubCommand1_Click()
Dimrs_changAsNewADODB.Recordset
DimsqlAsString
IfTrim(Text1.Text)<>Trim(Text2.Text)Then
MsgBox"密码不一致!
",vbOKOnly+vbExclamation,""
Text1.SetFocus
Text1.Text=""
Text2.Text=""
Else
sql="select*from系统管理where用户名='"&userID&"'"
rs_chang.Opensql,conn,adOpenKeyset,adLockPessimistic
rs_chang.Fields
(1)=Text1.Text
rs_chang.Update
rs_chang.Close
MsgBox"密码修改成功",vbOKOnly+vbExclamation,""
UnloadMe
EndIf
EndSub
在上述代码中,首先比较两个表中的数据是否一致,然后用rs_chang.Fields
(1)=Text1.Text语句把代码输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB Access 设计 图书 管理 系统