VB Access设计图书管理系统-源码 图示_第1页
VB Access设计图书管理系统-源码 图示_第2页
VB Access设计图书管理系统-源码 图示_第3页
VB Access设计图书管理系统-源码 图示_第4页
VB Access设计图书管理系统-源码 图示_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、需求分析 在进行一个项目的设计之前,先要进行必要的需求分析。 现某图书馆需要管理其各种人员和图书信息,希望实现办公的信息化,通过建立一个图书管理系统来管理 图书。其完成的功能如下: (1 可以实现图书的登记、借阅和赔偿的管理。 (2 可以实现对图书的各种信息的查询,包括逐个浏览,以及对图书信息的增加、删除和编辑操作。另外, 可以根据输入的信息来检索某个图书的信息。 (3 可以实现对管理人员的投诉管理。 (4 可以实现对值班人员的管理。 系统的功能模块图如图 1 所示。 本实例根据上面的设计规划出的实体有图书登记实体、图书借阅实体、图书赔偿实体、查询输出实体、值 班管理实体、投诉管理实体。各

2、个实体具体的描述 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 图 二、结构设计 根据上面的需求分析,设计好数据库系统,然后开发应用程序可以考虑的窗体

3、的系统,每一 个窗体实现不同的功能,可以设计下面的几个模块。 图书管理模块:用来实现图书的登记、借阅、赔偿。 图书资料模块:用来实现图书的查询输出。 值班管理模块:用来实现管理人员的值班浏览。 投诉管理模块:用来实现对管理人员的投诉管理。 系统管理模块:用来实现用户的增加、删除和修改等操作。 三、数据库设计 这里的数据库采用 Access,用 ADO 作为连接数据对象。 1、建立 Access 数据库 启动 Access,建立一个空的数据库 book.mdb,如图 8 所示。 使用程序设计器建立系统需要的表格如下。 图书登记表,如图 9 所示。 图 8 建立数据 库 book.mdb 图 9

4、图书登记表图书借阅表,如图 10 所示。图书赔偿表,如图 11 所示。 上一 图 10 图书借阅表 图 11 图书赔偿表图书资料表,如图 12 所示。系统管理表,如图 13 所示。 图 12 图书资料表 图 13 系统管理表投诉管理表,如图 14 所示。 图 14 投诉管理表 值班管理表,如图 15 所示。 图 15 值班管理表 2、连接数据在 Visual Basic 环境下,选择“工程”“引用”命令,在随后出现的对话框中选择 “Microsoft ActiveX Data Objects 2.0 Library”,然后单击“确定”按钮,如图 16 所示。 图 16 引用 ADO 连接数据库

5、 下: 在程序设计的公共模块中,先 体如表 3 所示。 表 3 所有子窗体 子 窗 体 名 Text 图 书 登 记 frmdengji 图 书 借 阅 frmjieyue 图 书 赔 偿 frmpeichang 增 加 新 用 户 frmadduser 查询输出 frmfind 登录系统 frmlogin 修改密码 frmchangepwd 下面分别给出这些子窗体,以及它们所使用的控件。 (1 图书登记子窗体如图 22 所示,其控件如表 4 所示。 图 22 图书登记子窗体 表 4 图书登记子窗体控件 控 件 类 别控件 Name 控件 Text Label Label1 编号 Label2

6、 书名 Label3 类型 Label4 购 买 日 期 Label5 定 价 TextBox Text1 ( 空 Text2 ( 空 Text3 ( 空 Text4 ( 空 Text5 ( 空 CommandButton Command1 增 加 记 录 Command2 删 除 记 录 Command3 下 一 条 Command4 上 一 条 Command5 第一条 Command6 最后一条 Command7 退出 ADO DataAdodc1 (空 DataGrid DataGrid1 (空 图书借阅和图书赔偿子窗体分别如图 23 和图 24 所示,因为它们的控件与图书登记子窗体的

7、雷同,在 此不作介绍。 图 23 图书借阅子窗体 图 24 图 书 赔 偿 子 窗 体 (2 增 加 用 户 子 窗 体 如 图 25 所 示 , 其 控 件 如 表 5 所 示 。 图 25 增加用户子窗体 表 5 增加用户子窗体控件 控 件 类 别控件 Name 控件 Text Label Label1 输入用户名 Label2 输入密码 Label3 确认密码 Label4 选 择权限 TextBox Text1 (空 Text2 (空 Text3 (空 ComboBox Comb1 (空 CommandButton Commandl 确定 Command2 取消 (3 修改密码子窗体如

8、图 26 所示。 图 26 修 改 密 码 子 窗 体 (4 库 房 管 理 子 窗 体 如 图 27 所 示 。 图 27 库房管理子窗体 其控件如表 6 所示。 表 6 库房管理子窗体控件 MSFlexGrid MSFlexGrid1 控 件 类 别控件 Name 控件 Text TextBox Text1 (空 ComboBox Combo1 (5 查询子窗体如图 28 所示,其控件如表 7 所示。 图 28 查询子窗体 表 7 查询子窗体控件 控 件 类 别控件 Name 控件 Text OptionButton Option1 按编号查询 Option2 按购买日期查询 Label

9、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 C

10、omboBox Combod ( 空 CommandButton Command1 查询 Command2 取消 (6 用户登录子窗体如图 29 所示。 (7 值班管理子窗体如图 30 所示,其控件如表 8 所示。 图 29 用户登录子窗体 图 30 值班管理子窗体 (8 投诉管理子窗体如图 31 所示,其控件如表 9 所示。 图 31 投诉管理子窗体 建立公共模块 1、显示目录 建立公共模块可以提高代码的效率,同时使得修改和维护代码都很方便。 创建公共模块的步骤如下: (1 在菜单中选择“工程”“添加模块”命令,则出现模块对话框,如图 不一致!", vbOKOnly + vbExc

11、lamation, "" Text1.SetFocus Text1.Text = "" Text2.Text = "" Else sql = "select * from 系统管理 where 用户名='" & userID & "'" rs_chang.Open sql, conn, adOpenKeyset, adLockPessimistic rs_chang.Fields(1 = Text1.Text rs_chang.Update rs_chang.Cl

12、ose MsgBox "密码修改成功", vbOKOnly + vbExclamation, "" Unload Me End If End Sub 在上述代码中,首先比较两个表中的数据是否一致,然后用 rs_chang.Fields(1 = Text1.Text 语句把代码 输入到数据库中。最后,用 MsgBox "密码修改成功", vbOKOnly + vbExclamation,""语句弹出一个信息框, 告诉修改成功,如图 39 所示。 显示目录 (4 库房管理子窗体代码 库房管理子窗体是用来管理图书资料的。

13、其运行效果如图 40 所示。 图 40 库房管理子窗体 实际上,设计库房管理子窗体的程序代码与增加用户子窗体的代码在思路上是完全相同的。就是在 DataGrid 的文本框中显示图书进出的清单,最后把填写的明细存储到数据库中。 检查代码如下: Option EXPlicit Dim rs_data2 As New ADODB.Recordset Dim select_row As String Dim showgrid2 As Boolean Dim rs_custom As New ADODB.Recordset Dim jinchu As String ' 进出库标志 Dim mod

14、ify As Boolean ' 修改状态标志 Private Sub cmdexit_Click( Unload Me End Sub Private Sub Form_Load( On Error GoTo loaderror Dim sql As String sql = "select * from 图书资料" rs_custom.CursorLocation = adUseClient rs_custom.Open sql, conn, adOpenKeyset, adLockPessimistic While Not rs_custom.EOF Comb

15、o1.AddItem rs_custom.Fields(0 rs_custom.MoveNext Wend findok = True modify = False ' 非修改状态 showgrid2 = False displaygrid1 ' 调用显示 Datagrid1 子程序 loaderror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub '显示 msflexgrid1 子程序 Public Sub displaygrid1( Dim i As Integer On E

16、rror GoTo displayerror setgrid setgridhead MSFlexGrid1.Row = 0 If Not rs_data1.EOF Then rs_data1.MoveFirst Do While Not rs_data1.EOF MSFlexGrid1.Row = MSFlexGrid1.Row + 1 MSFlexGrid1.Col = 0 If Not IsNull(rs_data1.Fields(0 Then MSFlexGrid1.Text = rs_data1.Fields(0 Else MSFlexGrid1.Text = ""

17、; MSFlexGrid1.Col = 1 If Not IsNull(rs_data1.Fields(1 Then MSFlexGrid1.Text = rs_data1.Fields(1 Else MSFlexGrid1.Text = "" MSFlexGrid1.Col = 2 If Not IsNull(rs_data1.Fields(2 Then MSFlexGrid1.Text = rs_data1.Fields(2 Else MSFlexGrid1.Text = "" MSFlexGrid1.Col = 3 If Not IsNull(rs

18、_data1.Fields(3 Then MSFlexGrid1.Text = rs_data1.Fields(3 Else MSFlexGrid1.Text = "" MSFlexGrid1.Col = 4 If Not IsNull(rs_data1.Fields(4 Then MSFlexGrid1.Text = rs_data1.Fields(4 Else MSFlexGrid1.Text = "" MSFlexGrid1.Col = 5 If Not IsNull(rs_data1.Fields(5 Then MSFlexGrid1.Text

19、= rs_data1.Fields(5 Else MSFlexGrid1.Text = "" rs_data1.MoveNext Loop End If displayerror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Public Sub setgrid( Dim i As Integer On Error GoTo seterror With MSFlexGrid1 .ScrollBar s = flexScrollBarBoth .FixedCols = 0 .Rows

20、= rs_data1.RecordCount + 1 .Cols = 6 .SelectionMode = flexSelectionByRow For i = 0 To .Rows - 1 .RowHeight(i = 315 Next For i = 0 To .Cols 1 .ColWidth(i = 1300 Next i End With Exit Sub seterror: MsgBox Err.Description End Sub Public Sub setgridhead( On Error GoTo setheaderror MSFlexGrid1.Row = 0 MSF

21、lexGrid1.Col = 0 MSFlexGrid1.Text = "编号" MSFlexGrid1.Col = 1 MSFlexGrid1.Text = "购买日期" MSFlexGrid1.Col = 2 MSFlexGrid1.Text = "书名" MSFlexGrid1.Col = 3 MSFlexGrid1.Text = "类型" MSFlexGrid1.Col = 4 MSFlexGrid1.Text = "定价" MSFlexGrid1.Col = 5 MSFlexGrid1

22、.Text = "备注" Exit Sub setheaderror: MsgBox Err.Description End Sub Private Sub Form_Unload(Cancel As Integer findok = False rs_data1.Close rs_custom.Close End Sub Private Sub MSFlexGrid1_Click( On Error GoTo griderror Dim getrow As Long getrow = MSFlexGrid1.Row If MSFlexGrid1.Rows = 1 Then

23、 MsgBox "无相关记录", vbOKOnly + vbExclamation, "" Else select_row = MSFlexGrid1.TextMatrix(getrow, 0 End If griderror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Public Sub showdata( With MSFlexGrid2 .Rows = rs_data2.RecordCount + 1 .Row = 0 If Not rs_data2.E

24、OF Then rs_data2.MoveFirst Do While Not rs_data2.EOF .Row = .Row + 1 .Col = 0 If Not IsNull(rs_data2.Fields(0 Then .Text = rs_data2.Fields(0 Else .Text = "" .Col = 1 If Not IsNull(rs_data2.Fields(1 Then .Text = rs_data2.Fields(1 Else .Text = "" .Col = 2 If Not IsNull(rs_data2.Fie

25、lds(2 Then .Text = rs_data2.Fields(2 Else .Text = "" .Col = 3 If Not IsNull(rs_data2.Fields(3 Then .Text = rs_data2.Fields(3 Else .Text = "" .Col = 4 If Not IsNull(rs_data2.Fields(4 And CDbl(rs_data2.Fields(4 < 0 Then .Text = -CDbl(rs_data2.Fields(4 Else .Text = rs_data2.Field

26、s(4 End If .Col = 5 If Not IsNull(rs_data2.Fields(5 Then .Text = rs_data2.Fields(5 Else .Text = "" .Col = 6 If Not IsNull(rs_data2.Fields(6 Then .Text = rs_data2.Fields(6 Else .Text = "" .Col = 7 If Not IsNull(rs_data2.Fields(7 And CDbl(rs_data2.Fields(4 < 0 Then .Text = -CDbl

27、(rs_data2.Fields(7 Else .Text = rs_data2.Fields(7 End If .Col = 8 If Not IsNull(rs_data2.Fields(8 Then .Text = rs_data2.Fields(8 Else .Text = "" rs_data2.MoveNext Loop rs_data2.MoveLast End If End With End Sub (5 查询子窗体代码 查询子窗体是用来查询库房中图书资料明细的。其运行效果如图 41 所示。 图 41 查询子窗体运行效果 在列表框中给出编号或年月日后,“查询

28、”按钮的 Click 事件将给出与数据库查找比较的结果。 Private Sub Command1_Click( On Error GoTo cmderror Dim find_date1 As String Dim find_date2 As String If Option1.Value = True Then sqlfind = "select * from 图书资料 where 编号 between '" & _ Combo1(0.Text & "'" & " and " & &

29、quot;'" & Combo1(1.Text & "'" End If If Option2.Value = True Then find_date1 = Format(CDate(Comboy(0.Text & "-" & _ Combom(0.Text & "-" & Combod(0.Text, "yyyy-mm-dd" find_date2 = Format(CDate( 定义连接数据库的变量: Option Explicit Di

30、m rs_zhiban As New ADODB.Recordset 然后列出窗体部分的代码。 Private Sub cmdadd_Click( On Error GoTo adderror If cmdadd.Caption = "新增记录" Then ' 当此按钮的状态为为“增加记录”时 cmdadd.Caption = "确定" ' 按钮名称改“确定” cmddel.Enabled = False DataGrid1.AllowAddNew = True DataGrid1.AllowUpdate = True ' 设定

31、DataGrid 可以增加记录 Else If Not IsNull(DataGrid1.Bookmark Then If Not IsDate(Trim(DataGrid1.Columns("值班开始日期".CellText(DataGrid1.Bookmark Then MsgBox "请按照格式 yyyy-mm-dd 输入值班开始日期", vbOKOnly + vbExclamation, "" Exit Sub End If If Not IsDate(Trim(DataGrid1.Columns("值班开始时间&q

32、uot;.CellText(DataGrid1.Bookmark Then MsgBox "请按照格式 hh-mm 输入值班开始时间", vbOKOnly + vbExclamation, "" Exit Sub End If If Not IsDate(Trim(DataGrid1.Columns("值班截止日期".CellText(DataGrid1.Bookmark Then MsgBox "请按照格式 yyyy-mm-dd 输入值班截止日期", vbOKOnly + vbExclamation, "

33、;" Exit Sub End If If Not IsDate(Trim(DataGrid1.Columns("值班截止时间".CellText(DataGrid1.Bookmark Then MsgBox "请按照格式 hh-mm 输入值班截止时间", vbOKOnly + vbExclamation, "" Exit Sub End If If Trim(DataGrid1.Columns("值班人".CellText(DataGrid1.Bookmark = "" Then M

34、sgBox "值班人不能为空!", vbOKOnly + vbExclamation, "" Exit Sub End If rs_zhiban.Update MsgBox "添加信息成功!", vbOKOnly + vbExclamation, "" DataGrid1.AllowAddNew = False DataGrid1.AllowUpdate = False Else MsgBox "没有添加信息!", vbOKOnly + vbExclamation, "" End If cmdadd.Caption = "新增记录" cmddel.Enabled = True End If adderror: If Err.Number &l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论