(office Access VBA )图书借阅管理系统设计-371-(代码+文档)

转载地址: http://www.3q2008.com/soft/search.asp?keyword=371

VBA编写的 ACCESS 程序 请确认后在下载 咨询

图书借阅管理系统设计文档

一、            系统概述

为学校图书借阅室设计图书管理系统,完成新增图书上架、读者办理图书借阅证、图书查询、借书、还书工作的自动处理。

二、            需求分析

1. 图书借阅处理过程简述

处理过程主要包含:新增图书上架、办理图书借阅证、图书查询、借书、还书等。

(1) 新增图书上架

新书上架时,需要登记新书的:书名、作者、出版社、出版时间(年)、版次、价格、总册数的信息;并对图书统一编号(书号为8位数字)。

(2) 办理图书借阅证

读者办理借书证时,需要登记读者(学生)的学号(6位)、姓名、班级、扫描学生证照片,并对借书证统一编号(借书证号为6位数字,值与学号相同)。

(3) 图书查询

读者可以按照书名、作者、出版社查询图书基本信息,并可以得知现还有几册可以借阅。

(4) 借书

每个学生读者最多借3本书;借书时间为2周,如果有超期未还的图书则不能再借书。

读者借书时,应登记借书证号、书号、借书日期(年月日);并打印借书条交给读者,借书条上包括借书证号、所借各本书的书名、应还书的时间。

(5) 还书

读者还书时,应查看是否超期,如果超期则每天罚款0.1元,计算出应交罚款。

2. 数据分析

数据处理过程中涉及到两个实体:图书和读者;各实体应具有的属性如下:

²       图书(书号、书名、作者、出版社、出版时间、版次、价格、总册数)

²       读者(借书证号、学号、姓名、班级、照片)

由于同一种图书可以有多册上架,每个读者最多可以借阅3本书,所以图书和读者之间是多对多的关系;为了表示多对多关系,应将图书借阅定为实体,构造两个一对多关系。图书借阅的属性如下:

²       借阅(借书证号、书号、借书日期)

3. 功能分析

系统功能模块包括:图书上架、借书证办理、图书查询、借书、还书;另外还包括图书信息修改和读者信息修改;共七个模块。各模块功能如下:

a)        图书上架
登记新书信息并编号

b)        借书证办理
登记读者信息并编号

c)        图书查询
允许读者选择查询方式,并按照读者输入的信息查找到相关图书的信息并显示

d)        借书
查看是否能借书,如果可以则登记相关信息,打印借书条。

e)        还书
查看是否超期,如果超期,则计算应交罚款。

三、            数据库设计

1. 数据库

数据库名称为library.mdb。

2. 表

数据库中包含三个表:图书表(book)、读者表(reader)、借阅表(borrow)各表结构如下:

book

字段名

书号

书名

作者

出版社

出版时间

版次

价格

总册数

类型

文本

文本

文本

文本

数字

数字

数字

数字

字段大小

8

20

10

10

整数

字节

单精度型

字节

其它

数字字符

必填

必填

必填

1990至当年

1~9

两位小数

1~10

主键

主键

reader

字段名

借书证号

学号

姓名

班级

照片

类型

文本

文本

文本

文本

OLE对象

字段大小

6

6

4

6

其它

数字字符

数字字符/必填

必填

主键

主键

borrow

字段名

流水号

借书证号

书号

借书日期

已归还

类型

自动编号

文本/查阅

文本/查阅

日期

是/否

字段大小

6

8

其它

数字字符/必填

数字字符/必填

默认值:Date()

默认值:否

主键

主键

book表与borrow表为一对多的关系,连接字段为book的书号和borrow的书号;

reader表与borrow表为一对多的关系,连接字段为reader的借书证号和borrow的借书证号。

四、            总体设计

1. 总体功能设计

系统功能总体分为五个模块:管理员登录、图书上架、借阅证办理、图书查询和借书还书。

2. 系统功能模块图

总控模块

图书上架

借阅证办理

图书查询

借书还书

管理员登录

总控模块以主窗体形式出现。其中,默认情况下,管理员登录、图书查询和借书还书模块可以使用,即所有用户都可以使用。只有进行合法的管理员登录后,图书上架、借阅证办理才可以使用。

3. 子模块功能设计

l        管理员登录子模块用来判断用户输入的密码是否正确,以决定是否进入管理员模式

l        图书上架子模块用来输入图书基本信息

l        借阅证办理子模块用来输入读者基本信息

l        图书查询子模块包括按照书名、读者、出版社进行选择查询、条件查询和模糊查询三大部分

l        借书还书子模块包括借书和还书两个二级子模块。其中,

Ø        借书二级子模块包括借书信息输入和打印借书条两部分

Ø        还书二级子模块包括还书信息输入和计算超时欠费两部分

五、            详细设计

1. 系统初始化模块

系统初始化模块的作用是声明系统全局变量,初始化系统变量设置等。

¨模块init

Option Compare Database

Public Login As Boolean                   '全局变量Login - 记录管理员是否登录

2. 系统主控模块——主窗体

(1) 功能说明

系统主窗体是用户进入系统后首先打开的窗体,主要用于方便用户进行工作选择,因此采用按钮和菜单两种方式完成。

(2) 界面设计——按钮

i 主窗体界面图

系统主窗体界面设计如图 1。

1

ii 主窗体及控件属性

系统主窗体及控件属性如表 1。

1

名称

属性

属性值

主窗体

标题

图书借阅管理系统

滚动条

两者均无

记录选择器

导航按钮

分割线

自动调整

自动居中

边框样式

细边框

最大最小化按钮

最小化按钮

命令0

单击事件

运行宏“管理员登录”

Label0

标题

管理员登录

命令1

单击事件

运行宏“图书上架”

可见性

Label1

标题

图书上架

可见性

命令2

单击事件

运行宏“借阅证办理”

可见性

Label2

标题

借阅证办理

可见性

命令3

单击事件

运行宏“图书查询”

Label3

标题

图书查询

命令4

单击事件

运行宏“借书还书”

Label4

标题

借书还书

iii 主窗体及控件事件宏和代码
¨主窗体“加载”事件

Private Sub Form_Load()

    Login = False

End Sub

¨主窗体“打开”事件

Private Sub Form_Open(Cancel As Integer)

    命令1.Visible = Login

    Label1.Visible = Login

    命令2.Visible = Login

    Label2.Visible = Login

    命令0.Visible = Not Login

    Label0.Visible = Not Login

End Sub

¨ “管理员登录”宏

操作

参数

参数值

Close

对象类型

窗体

对象名称

主窗体

OpenForm

窗体名称

管理员登录

¨ “图书上架”宏

操作

参数

参数值

OpenForm

窗体名称

图书上架

数据模式

增加

¨“借阅证办理”宏

操作

参数

参数值

OpenForm

窗体名称

借阅证办理

数据模式

增加

¨“图书查询”宏

操作

参数

参数值

OpenForm

窗体名称

图书查询

¨“借书还书”宏

操作

参数

参数值

OpenForm

窗体名称

借书还书

(3) 界面设计——菜单

i 系统主菜单

系统主菜单(略)

如表 2。()

2

菜单项

子菜单

参数

管理

管理员登录

打开窗体OpenForm

图书上架

打开窗体OpenForm

图书信息修改

打开窗体OpenForm

借阅证办理

打开窗体OpenForm

退出系统

Quit

借还书

图书查询

打开查询OpenQuery

借书

打开报表OpenReport

还书

打开报表OpenReport

窗口

最小化

Minimize

帮助

关于…

打开窗体OpenForm

系统说明

打开窗体OpenForm

系统设计说明

ii 宏设计

(略)如表 2。()

表 3

3. 管理员登录子模块——“管理员登录”窗体

(1) 功能说明

在系统主界面中当用户选择管理员登录功能时,打开管理员登录窗体,要求用户输入管理员密码。密码正确才能进入。密码输入错误,给出提示并返回主控窗体。

(2) 界面设计

“管理员登录”窗体界面设计如图 2:

2

控件

属性

属性值

标签

名称

标签1

标题

请输入管理员密码:

文本框

名称

密码

输入掩码

密码

按钮

名称

命令2

标题

确定

默认

(3) 功能实现

单击“确定”按钮时,进行密码验证,决定登录是否成功。在“确定”按钮的“单击”事件中,写入如下代码:

Private Sub命令2_Click()

    If 密码<> "admin" Then

        MsgBox "密码输入错误!即将进入读者登录界面。"

        Login = False

    Else

        MsgBox "欢迎进入管理员登录界面!"

        Login = True

    End If

    DoCmd.Close

    DoCmd.OpenForm "主窗体"

End Sub

4. 图书上架子模块——“图书上架”窗体

(1) 功能说明

在系统主界面中当用户选择“图书上架”功能时,打开“图书上架”窗体,要求用户输入图书基本信息。输入完成后关闭窗体,即可完成图书信息输入,并返回主控窗体。

(2) 界面设计

“图书上架”窗体界面设计如下图 3:

3

其中,窗体及主要控件属性设置如下:

控件

属性

属性值

窗体

记录源

“book”表

按钮

名称

关闭

标题

关闭

(3) 功能实现

¨“关闭”按钮

Private Sub 关闭_Click()

On Error GoTo Err_关闭_Click

    DoCmd.Close

Exit_关闭_Click:

    Exit Sub

Err_关闭_Click:

    MsgBox Err.Description

    Resume Exit_关闭_Click

End Sub

5. 借阅证办理子模块——“借阅证办理”窗体

(1) 功能说明

在系统主界面中当用户选择“借阅证办理”功能时,打开“借阅证办理”窗体,要求用户输入读者基本信息。输入完成后关闭窗体,即可完成读者信息输入,并返回主控窗体。

(2) 界面设计

“借阅证办理”窗体界面设计如图 4:

4

其中,窗体及主要控件属性设置如下:

控件

属性

属性值

窗体

记录源

“reader”表

“借书证号”
文本框

名称

借书证号

控件来源

借书证号

输入掩码

000000

是否锁定

按钮

名称

结束

标题

办理结束

默认

“班级”组合框属性如下图:

(3) 功能实现

¨窗体加载后,自动将焦点设置在“学号”文本框上

Private Sub Form_Load()

    [学号].SetFocus

End Sub

¨输入学号后,自动将“借书证号”设置为与“学号”相同

Private Sub 学号_Change()

    [借书证号] = [学号]

End Sub

Private Sub 学号_LostFocus()

    [借书证号] = [学号]

End Sub

¨ “结束”按钮

Private Sub 结束_Click()

On Error GoTo Err_结束_Click

   ch = MsgBox("输入的读者信息将会保存。请确认数据输入是否正确。" & vbCrLf _

        & "单击“是”将保存数据,单击“否”将回到输入窗口继续输入或修改。", _

        vbQuestion + vbYesNo + vbDefaultButton2, "确认保存")

    If ch = vbYes Then

        DoCmd.Close

    End If

Exit_结束_Click:

    Exit Sub

Err_结束_Click:

    MsgBox Err.Description

    Resume Exit_结束_Click

End Sub

6. 图书查询子模块——“图书查询”窗体

(1) 功能说明

在系统主界面中当用户选择“图书查询”功能时,打开“图书查询”窗体,允许用户选择按照书名、读者、出版社查询或使用模糊查询。

(2) 界面设计

“图书查询”窗体界面设计如图 5:

5

窗体属性如下表:

属性

属性值

标题

图书查询

滚动条

两者均无

记录选择器

导航按钮

分割线

自动调整

自动居中

边框样式

细边框

最大最小化按钮

最小化按钮

“Combo条件”文本框属性如下图:

(3) 功能实现

¨单击“按书名查询图书及现有册数”按钮(名称为“按书名查询”),打开“按书名查询图书及现有册数”窗体

Private Sub 按书名查询_Click()

On Error GoTo Err_按书名查询_Click

    DoCmd.OpenForm "按书名查询图书及现有册数"

Exit_按书名查询_Click:

    Exit Sub

Err_按书名查询_Click:

    MsgBox Err.Description

    Resume Exit_按书名查询_Click

    

End Sub

¨单击“按作者查询图书及现有册数”按钮(名称为“按作者查询”),打开“按作者查询图书及现有册数”窗体

Private Sub 按作者查询_Click()

On Error GoTo Err_按作者查询_Click

    DoCmd.OpenForm "按作者查询图书及现有册数"

Exit_按作者查询_Click:

    Exit Sub

Err_按作者查询_Click:

    MsgBox Err.Description

    Resume Exit_按作者查询_Click

   

End Sub

¨单击“按出版社查询图书及现有册数”按钮(名称为“按出版社查询”),打开“按出版社查询图书及现有册数”窗体

Private Sub 按出版社查询_Click()

On Error GoTo Err_按出版社查询_Click

    DoCmd.OpenForm "按出版社查询图书及现有册数"

Exit_按出版社查询_Click:

    Exit Sub

Err_按出版社查询_Click:

    MsgBox Err.Description

    Resume Exit_按出版社查询_Click

   

End Sub

¨如果在“查询条件”组合框(名称为“Combo条件”)中选择“全部”,则不显示“查询内容”文本框,否则显示

Private Sub Combo条件_Change()

    If Combo条件.ListIndex = 0 Then

        Text查询内容.Visible = False

        Label查询内容.Visible = False

    Else

        Text查询内容.Visible = True

        Label查询内容.Visible = True

    End If

End Sub

Private Sub Combo条件_Click()

    If Combo条件.ListIndex = 0 Then

        Text查询内容.Visible = False

        Label查询内容.Visible = False

    Else

        Text查询内容.Visible = True

        Label查询内容.Visible = True

    End If

End Sub

¨单击“条件查询”按钮(名称为“Cmd查询”),根据条件分别打开不同窗体

Private Sub Cmd查询_Click()

    Select Case Combo条件

        Case "全部"

            DoCmd.OpenForm "查询结果"

        Case "书名"

            DoCmd.OpenForm "书名查询", OpenArgs:=Text查询内容

        Case "作者"

            DoCmd.OpenForm "作者查询", OpenArgs:=Text查询内容

        Case "出版社"

            DoCmd.OpenForm "出版社查询", OpenArgs:=Text查询内容

    End If

End Sub

¨单击“模糊查询”按钮(名称为“模糊查询”),根据条件查询(使用SQL命令)后显示

Private Sub 模糊查询_Click()

On Error GoTo Err_模糊查询_Click

    sqlstr = ""

    num = 1

    If 书号 <> "" Then

        If num <> 1 Then

            sqlstr = sqlstr & " and "

        End If

        num = num + 1

        sqlstr = sqlstr & "书号 like '*" & 书号 & "*'"

    End If

    If 书名 <> "" Then

        If num <> 1 Then

            sqlstr = sqlstr & " and "

        End If

        num = num + 1

        sqlstr = sqlstr & "书名 like '*" & 书名 & "*'"

    End If

    If 作者 <> "" Then

        If num <> 1 Then

            sqlstr = sqlstr & " and "

        End If

        num = num + 1

        sqlstr = sqlstr & "作者 like '*" & 作者 & "*'"

    End If

    If 出版社 <> "" Then

        If num <> 1 Then

            sqlstr = sqlstr & " and "

        End If

        num = num + 1

        sqlstr = sqlstr & "出版社 like '*" & 出版社 & "*'"

    End If

    If 出版时间 <> "" Then

        If num <> 1 Then

            sqlstr = sqlstr & " and "

        End If

        num = num + 1

        sqlstr = sqlstr & "出版时间 like '*" & 出版时间 & "*'"

    End If

    If 版次 <> "" Then

        If num <> 1 Then

            sqlstr = sqlstr & " and "

        End If

        num = num + 1

        sqlstr = sqlstr & "版次 like '*" & 版次 & "*'"

    End If

    If 价格 <> "" Then

        If num <> 1 Then

            sqlstr = sqlstr & " and "

        End If

        num = num + 1

        sqlstr = sqlstr & "价格 like '*" & 价格 & "*'"

    End If

    If sqlstr <> "" Then

        DoCmd.OpenForm "查询结果", OpenArgs:=sqlstr

    Else

        MsgBox "请输入查询要求!"

    End If

Exit_模糊查询_Click:

    Exit Sub

Err_模糊查询_Click:

    MsgBox Err.Description

    Resume Exit_模糊查询_Click

   

End Sub

7. 图书查询各子模块(子窗体)

(1) “按书名查询图书及现有册数”窗体、“按作者查询图书及现有册数”窗体、“按出版社查询图书及现有册数”窗体

¨界面设计

“按书名查询图书及现有册数”窗体界面如图 6(其他类似):

6

各窗体“记录源”属性如下表:

窗体

属性值

“按书名查询图书及现有册数”

“按书名查询图书及现有册数”查询

“按作者查询图书及现有册数”

“按作者查询图书及现有册数”查询

“按出版社查询图书及现有册数”

“按出版社查询图书及现有册数”查询

¨查询实现

“按书名查询图书及现有册数”查询设计如图 7:(其余类似)

7

¨“查询图书借出册数”查询实现

(2) “书名查询”窗体、“作者查询”窗体、“出版社查询”窗体

¨界面设计

“书名查询”窗体界面如图 8(其他类似):

8

¨查询功能实现

“书名查询”窗体加载代码和查询按钮代码如下:(其余窗体类似)

Private Sub Form_Load()

    查询书名 = Me.OpenArgs

    Me.RecordSource = "select * from 查询图书及现有册数 where 书名='" & Me.OpenArgs & "'"

    记录数.Caption = "共" & DCount("书号", "查询图书及现有册数", "书名='" & Me.OpenArgs & "'") & "条记录"

    查询书名.SetFocus

End Sub

Private Sub 查询_Click()

    Me.RecordSource = "select * from 查询图书及现有册数 where 书名='" & 查询书名 & "'"

    记录数.Caption = "共" & DCount("书号", "查询图书及现有册数", "书名='" & 查询书名 & "'") & "条记录"

    查询书名.SetFocus

End Sub

¨“查询图书及现有册数”查询实现

(3) “查询结果”窗体

¨界面设计

“查询结果”窗体界面如图 9:

9

¨功能实现

“查询结果”窗体加载代码如下:

Private Sub Form_Load()

    If Me.OpenArgs <> "" Then

        Me.RecordSource = "select * from 查询图书及现有册数 where " & Me.OpenArgs

        查询条件.Caption = "查询条件:" & Me.OpenArgs

    End If

    记录数.Caption = "共" & DCount("书号", "查询图书及现有册数", Me.OpenArgs) & "条记录"

End Sub

8. 借书还书

(1) 功能说明

(略)

(2) 界面设计

(略)

(3) 功能实现

(略)

9. 设置启动窗体

将主窗体设置为启动窗体。


转载地址: http://www.3q2008.com/soft/search.asp?keyword=371

  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值