图书管理系统设计方案
目录
1、引言.........................................................................................................................1
2、需求分析.................................................................................................................1
3、系统设计.................................................................................................................2
3.1、设计图书管理系统的功能结构...........................................................................2 3.2、图书管理系统的用户管理实体—关系...............................................................2 3.3、图书管理系统的借阅管理实体—关系...............................................................2 3.4、图书管理系统的读者管理实体—关系...............................................................3 3.5、图书管理系统的图书库管理实体—关系...........................................................3
4、系统详细设计.........................................................................................................4
4.1、数据库的设计.......................................................................................................4
4.2、管理模块的具体设计...........................................................................................6 4.3、数据库和管理模块的连接..................................................................................11
5、软件调试...............................................................................................................12
5.1、管理员权限操作..................................................................................................12 5.2、普通用户操作......................................................................................................17
6、设计总结及分析...................................................................................................18
7、课程设计体会.......................................................................................................18
8、设计中所用到的程序代码汇总........................................................................19
一、引言
随着人们对物质需求的逐步满足,精神文明的追求日益增加,大大小小的书店,图书馆到处可见,特别是一些规模较大的学校,图书馆的数量以及规模都在增大。随着各图书馆的图书的数量不断增多和图书馆规模的不断扩大,管理这些庞大的体系非常困难的,因为图书的情况是随时改变的,因此必需对图书进行动态的管理,而这对于一个管理人员来说是一件比较复杂的事情,存储、查询、借阅是必不可少的业务。
数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;基于这一点,开发了这个图书管理系统,它将图书借还这一传统方式进行信息化。我们这一系统满足了对日常的图书管理;图书的出租与归还的管理;图书的总量;图书是否借出查询一数据库系统基本实现了对图书的数据库管理,大大的提高了工作效率和图书的遗失率。
二、需求分析
用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为以后的具体设计打下基础。
针对一般图书馆管理信息系统的需求,通过对图书馆管理工作过程的内容和数据流程分析,设计如下面所示的数据项和数据结构:
1.读者信息,包括的数据项有:读者编号、读者姓名、联系电话、所属部门。 2.书库,包括的数据项有:书号、书名、作者、出版社、单价、类别、在库状态。 3.借阅记录,包括的数据项有:序号、书号、书名、借出时间、归还时间、读者姓名。 4.系统设置,包括的数据项有:用户名、密码、权限。 本系统具有的功能:
1、实现读者的新增、编辑和删除功能。 2、实现图书的新增、编辑和删除功能。 3、实现图书的查询功能。 4、实现图书借出和归还管理功能。 5、实现借阅历史信息的查询功能。
6、实现两种不同权限用户的登录功能:普通用户和管理级用户。
7、实现用户管理功能,可以通过管理级用户添加新用户,具有权限级别及密码修改功能。 有了上面的数据结构、数据项和数据流程,就可以进行下面的数据库设计了。
2
三、系统设计
3.1、设计图书管理系统的功能结构:
用户 管理员 图书管理系统库 图 读者管理 借阅管理 图书库管理 系统管理 书 查 询 图用 退图图软 图读读读图书户出书件书 书者者者书归管系借信编 删编删新新还 理 统 出 息辑 除 增 辑 除 增 图书管理系统的功能结构
3.2、图书管理系统的用户管理实体—关系:
用户管理实体—关系
3.3、图书管理系统的借阅管理实体—关系:
3
节约查询
借阅管理实体--关系
3.4、图书管理系统的读者管理实体—关系:
读者管理实体—关系
3.5、图书管理系统的图书库管理实体—关系:
图示管理实体—关系
如上的实体关系图,设计出功能模块以及说明:
1. 系统管理模块:用于登录、增加用户、修改用户密码等操作。 2. 读者管理模块:用于新增读者、编辑读者和删除读者的操作。 3. 图书库管理模块:用于新增图书、编辑图书和删除图书操作。 4. 图书查询管理模块:用于库中图书的查询操作。
5. 图书借阅管理模块:用于图书借出、图书归还和图书借阅记录查询操作。 6. 系统信息模块:用于显示软件信息和退出操作。
4
四、系统详细设计
4.1、数据库的设计
数据表的设计。本系统的数据表共有四张,分别是“系统设置”数据表、“读者库”数据表、“书库”数据表和“借阅记录”数据表。
数据库表
4.1.1、“系统设置”数据表主要用于存储用户信息,包括用户名、密码、权限三个字段。
5
4.1.2、“读者库”数据表主要是用于存储读者信息,只有等级的读者才具有借阅资格。包括:读者编号、读者姓名、联系电话、所属部门,四个字段。
4.1.3、“书库”数据表主要是用于存储图书信息,包括:书号、书名、作者、出版社、单价、类别、在库状态,七个字段。
6
4.1.4、“借阅记录”数据表用于存储读者借出归还的历史记录,包括:序号、书号、书名、借出时间、归还时间、读者编号、读者姓名,七个字段。
7
4.2、管理模块的具体设计
4.2.1主窗体模块设计
主窗体模块指的是所以模块的操作界面,在本系统中使用多文档窗体及菜单方式来实
现,创建主窗体的步骤:
1、在工程中创建MDI窗体,然后在选定的MDI窗体的前提下,从菜单栏中选择,从而进行菜单编辑。
2、在菜单编辑器中依次创建系统管理、新增用户、修改密码、分割线、关于软件、分割线、退出系统、读者管理、读者新增、读者编辑、读者删除、图书库管理、图书新增、图书编辑、图书删除、图书查询、借阅管理、图书接触、图书归还、借阅查询等菜单。 3、菜单设计完成后,返回MDI窗体,显示如下图。
4.2.2、系统管理模块设计
系统管理模块包括登陆模块窗体、新增用户窗体模块和密码修改模块窗体。用户登录模块的功能是防止不合法用户的登录;增加用户窗体模块用于实现新增用户功能;密码修改模块用于实现合法用户修改密码的功能。具体设计如下:
1、在空白的窗体上,添加标签控件、文本框控件、命令按钮等并调整大小及位置然后设置其各自的属性,显示如下。
8
2、对下列事件编程,为登录窗体调价启动事件,为定时器添加timer事件,为登陆窗体添加启动事件,为登录窗体添加“登录”按钮事件,为在登录窗体中实现权限设置在公共模块添加代码。具体代码见附件
3、创建新增用户窗体,添加标签控件、文本框控件、文本框控件以及组合框控件以及命令按钮控件,调整大小以及位置显示如下。
4、在窗体中将新用户、密码和权限添加到数据库中。代码见附件。
5、创建修改密码窗体模块,即只要知道用户名和正确密码前提下,修改登录密码。在窗体上添加各控件并设置相应属性后显示如下。
6、设置“提交”按钮功能,实现修改密码的目的,代码见附件
4.2.3、读者管理模块设计
1、在创建读者新增窗体模块,即在一个空白的窗体上添加Frame控件、标签控件、文本框控件以及命令控件,调整窗体大小以及其他控件的属性,显示如下。
9
2、设置窗体启动事件,主要实现连接数据库并初始化读者编号等功能,代码见附件
3、设置“确定”按钮,用于实现登录新的图纸信息的目的,具体代码见附件。
4、同上创建读者编辑窗体以及读者删除窗体。显示如下。(代码见附件)
4.2.3、图书库管理模块设计
如上述的步骤建立图书库管理模块,显示如下(代码见附件)
10
4.2.4、图书查询模块以及图书借阅管理模块设计
如上述的步骤建立,显示如下(代码见附件)
11
12
4.3数据库和管理模块的连接
4.3.1、准备工作主要包括ADO库文件的导入以及模块中Sub Main的设置,具体操作步骤如下:
第一步:新建EXE标准工程,并保存为“图书管理系统”工程。从菜单栏中选择【工程】→【引用】命令,弹出【引用】对话框。
第二步:在【引用】对话框中的列表框内选中Microsoft ActiveX Data Objects 2.8Library复选框。
第三步:单击【确定】按钮返回集成开发环境,即完成ADO库文件的导入工作。接着在模块中设置 Sub Main,即在工程资源管理窗口中完成模块的添加操作后,接着便为模块添加代码,即在工程资源管理窗口中双击新建的模块图标,进入模块的代码编辑窗口,在其中输入如下代码:
Sub Main()
On Error GoTo Err ‘使用错误处理语句
Cn.Open “Provider=Microsoft.Jet.oledb.4.0;Data Source=”& App.Path&”JXC.mdb” frmLogin.Show Exit Sub Err:
MsgBox”数据库连接错误!”,vbCritical,”警告” End End Sub
第四步:在工程属性中设置启动对象,即从菜单栏中选择【工程】→【属性】命令,在弹出的【工程属性】对话框中的【通用】选项下,将“启动对象”设置为Sub Main,单击【确定】按钮,即可完成进图书系统的数据库连接准备工作。 4.3.2、用户的权限及实现方法
定义权限,即普通用户权限不能增加新用户、不能使用图书管理模块和借阅管理模块,而管理级用户可以使用全部功能。
13
第一步 在公共模块中定义一个布尔变量并声明一个函数,代码编写如下:
Public Function QuanXian(blnDJ As Boolean)
If blnDJ = True Then ‘当为True时,即管理级用户 MDIForm1.mnuAddNew = True MDIForm1.mnuIn = True MDIForm1.mnuOut = True
Else ‘否则为普通用户
MDIForm1.mnuAddNew = False ‘响应的菜单呈无用状态 MDIForm1.mnuIn = False MDIForm1.mnuOut = False End If End Function
第二步 在登录窗体中添加获取登录时用户的应有权限。
rs2.Open \"Select 权限 From 系统 Where 用户名='\" & Combo1.Text & \"' \ cn, adOpenKeyset, adLockOptimistic If rs2.Fields(0) = \"System\" Then blnDJ = True If rs2.Fields(0) = \"Guest\" Then blnDJ = False rs2.Close
第三步 在主窗体(MDI)窗体下响应登录窗体中用户权限的选择,即在主窗体的启动事件中添加如下代码即可。
Call Quanxian(blnDJ)
五、软件的调试
分为两个部分进行,一是管理员,二是用户。
14
5.1、管理员权限登录操作 5.1.1新增用户
15
5.1.2、修改密码
5.1.3、读者新增
16
5.1.4、读者编辑
17
5.1.5、图书新增
5.1.6、图书编辑
5.1.7、图书删除
18
5.1.8、图书搜索
5.1.9、图书借出
19
5.1.10、图书归还
5.1.11、借阅查询
5.2、普通用户权限登录
5.2.1修改密码
20
5..2.2、搜索
六、设计总结及分析
6.1.1、功能 :软件基本完成上述所分析要求的功能。
6.1.2、界面设计
1.界面友好:本系统的界面很大众化,功能不复杂,管理人员和用户可以较好的把握各自对应权限所有的功能。
2.界面美观:本系统界面比较粗糙,设计一些大方得体的图片,图表等使得界面更加的美丽,给人感觉更亲近。
七、课程设计体会
21
图书管理系统的使用,大大增加了图书管理员的效率,这次我们设计的系统虽然完成,但依然存在一定问题:1.功能还比较简单;2.没有经过大量用户的实践检验,无法保证完全满足用户各方面的要求;3.功能有待在使用过程中完善提高。在程序的设计过程中,通过各种资料的阅读,更深一步的了解了图书馆管理信息系统、数据库系统的的概念,为今后开发和设计信息系统和数据库系统打下了深厚的基础。
在开发软件的过程中,对编程工具 Visual Basic从一无所知到能够简单的应用,不仅新学会了一种功能强大的编程语言,而且提高了独立自学的能力。在学习过程中,遇到了许多的问题,经过努力,我终于冲破了这些难点。由于每个软件的自身设计思路是不一样的,在各种功能的实现上多存在着差异,这使我走了许多的弯路。但同时使我了解了一种新的思路,使我获益匪浅。学到的知识是有限的,面对的实践应用是多种多样的,所学很可能无法满足所用,必须在实践中、在应用中不断学习不断提高,这次完成毕业设计的过程中我学到了许多从前闻所未闻的知识和技能。
八、设计中所用到的程序代码汇总
Option Explicit
Private Sub cmdOk_Click() Unload Me End Sub
Private Sub Form_Load()
frmAbout.Icon = LoadPicture(App.Path & \"\\SX.ico\") ' Image1.Picture = LoadPicture(App.Path & \"\\PIC\\1.jpg\") End Sub //背景图片
Private Sub Label1_Click() End Sub Option Explicit
Dim rs As New ADODB.Recordset Private Sub cmdNo_Click() Unload Me End Sub //标签
Private Sub cmdOk_Click()
If txt(0).Text = \"\" Or txt(1).Text = \"\" Or Combo1.Text = \"\" Then
22
MsgBox \"请输入完成的信息!\" Else
rs.Open \"Select * From 系统设置 Where 用户名='\" & txt(0).Text & \"'\adLockOptimistic
If rs.EOF = False Then ' If rs.RecordCount <> 0 Then
MsgBox \"有重名!\警告\" rs.Close Exit Sub End If rs.Close
If txt(2).Text = txt(1).Text Then
rs.Open \"系统设置\ rs.AddNew
rs.Fields(0) = txt(0).Text rs.Fields(1) = txt(1).Text rs.Fields(2) = Combo1.Text rs.Update rs.Close
MsgBox \"添加新用户成功!\恭喜\" txt(0).Text = \"\" txt(1).Text = \"\" txt(2).Text = \"\" Combo1.ListIndex = -1 Else
MsgBox \"两次输入的密码不相同,请确认后重新输入\警告\" End If End If
End Sub //注册
Private Sub Form_Load() Combo1.AddItem \"System\" Combo1.AddItem \"Guest\"
cn.Open \"Provider=Microsoft.Jet.oledb.4.0;Data Source=\" & App.Path & \"\\Library.mdb\" Icon = LoadPicture(App.Path & \"\\SX.ico\") End Sub //权限
23
Private Sub Form_Unload(Cancel As Integer) cn.Close End Sub
Option Explicit
Private Sub cmdCancel_Click() Unload Me End Sub
Private Sub cmdOk_Click() Dim i As Integer
If txt(0).Text = \"\" Or txt(1).Text = \"\" Or txt(2).Text = \"\" Or txt(3).Text = \"\" Then MsgBox \"请输入完整的信息!\" Else
rs1.Open \"读者库\ rs1.AddNew For i = 0 To 3
rs1.Fields(i) = txt(i).Text Next i rs1.Update
MsgBox \"添加新用户成功!\恭喜\" txt(0).Text = rs1.Fields(0) + 1 For i = 1 To 3 txt(i).Text = \"\" Next i End If End Sub
Private Sub Form_Load()
cn.Open \"Provider=Microsoft.Jet.oledb.4.0;Data Source=\" & App.Path & \"\\Library.mdb\" rs1.Open \"读者库\ If rs1.RecordCount = 0 Then txt(0).Text = 1 Else
rs1.MoveLast
24
txt(0).Text = rs1.Fields(0) + 1 '自动设置读者编号 避免读者编号重复 End If rs1.Close
txt(0).Enabled = False
Icon = LoadPicture(App.Path & \"\\SX.ico\") End Sub
Private Sub Form_Unload(Cancel As Integer) cn.Close End Sub Option Explicit
Private Sub cmdAdd_Click() Dim i As Integer
If txt(0).Text = \"\" Or txt(1).Text = \"\" Or txt(2).Text = \"\" Or txt(3).Text = \"\" Or txt(4).Text = \"\" Or Combo1.Text = \"\" Then
MsgBox \"请输入完整的信息!\警告\" Exit Sub Else
rs1.AddNew For i = 0 To 4
rs1.Fields(i) = txt(i).Text Next i
rs1.Fields(5) = Combo1.Text rs1.Fields(6) = \"Yes\"
rs1.UpdateBatch adAffectCurrent End If
MsgBox \"图书新增成功!\提示\"
txt(0).Text = \"ISBN-\" & Right(rs1.Fields(0), 1) + 1 For i = 1 To 4 txt(i).Text = \"\" Next i
Combo1.ListIndex = -1 End Sub
Private Sub cmdCancel_Click() Unload Me
25
End Sub
Private Sub Form_Load()
cn.Open \"Provider=Microsoft.Jet.oledb.4.0;Data Source=\" & App.Path & \"\\Library.mdb\" rs1.Open \"书库\ rs1.MoveLast
txt(0).Text = \"ISBN-\" & Right(rs1.Fields(0), 1) + 1 txt(0).Enabled = False
Combo1.AddItem \"技术类\" Combo1.AddItem \"非技术类\"
Icon = LoadPicture(App.Path & \"\\SX.ico\") End Sub
Private Sub Form_Unload(Cancel As Integer) rs1.Close cn.Close End Sub Option Explicit
Private Sub cmdB_Click()
If Text1(0).Text = \"\" Or Text2(0).Text = \"\" Or Text3.Text = \"\" Then MsgBox \"请输入完整的数据!\警告\" Exit Sub Else
rs1.Open \"Select * From 书库 Where 书号='\" & Text1(0).Text & \"'\adLockOptimistic
If rs1.Fields(6) = \"Yes\" Then rs1.Close
Dim temp1 As String, temp2 As String
rs1.Open \"Select * From 书库 Where 书号='\" & Text1(0).Text & \"'\adLockOptimistic
temp1 = rs1.Fields(1) rs1.Close
rs1.Open \"Select * From 读者库 Where 读者编号= '\" & Text2(0).Text & \"'\adOpenKeyset, adLockOptimistic
26
temp2 = rs1.Fields(1) rs1.Close
rs1.Open \"借阅记录\ rs1.AddNew
rs1.Fields(1) = Text1(0).Text rs1.Fields(2) = temp1 rs1.Fields(3) = Text3.Text rs1.Fields(5) = Text2(0).Text rs1.Fields(6) = temp2
rs1.UpdateBatch adAffectCurrent rs1.Close
rs1.Open \"Select * From 书库 Where 书号='\" & Text1(0).Text & \"'\adLockOptimistic
rs1.Fields(6) = \"No\"
rs1.UpdateBatch adAffectCurrent rs1.Close
MsgBox \"已办理好借阅手续!\提示\" Else
MsgBox \"该书已经被借出\提示\" rs1.Close End If End If End Sub
Private Sub cmdCancel_Click() Unload Me End Sub
Private Sub Form_Load()
cn.Open \"Provider=Microsoft.Jet.oledb.4.0;Data Source=\" & App.Path & \"\\Library.mdb\" Text3.Text = Date Text3.Enabled = False
Icon = LoadPicture(App.Path & \"\\SX.ico\") End Sub
Private Sub Form_Unload(Cancel As Integer) cn.Close
27
End Sub
Option Explicit
Private Sub cmdCancel_Click() Unload Me End Sub
Private Sub cmdDelete_Click()
If txt(0).Text = \"\" Or txt(1) = \"\" Or txt(2) = \"\" Or txt(3) = \"\" Or txt(4) = \"\" Or Combo1.Text = \"\" Then
MsgBox \"请单击行标选择需要修改的图书行\提示\" Exit Sub Else
If txt(0) <> rs1.Fields(0) Then
MsgBox \"请单击行标选择需要修改的图书行\提示\" Else
If MsgBox(\"确认删除读者么?\提示\") = vbYes Then rs1.Delete adAffectCurrent ' rs1.UpdateBatch adAffectCurrent rs1.MoveLast Dim i As Integer For i = 0 To 4 txt(i) = \"\" Next i
Combo1.ListIndex = -1 End If
MsgBox \"删除成功!\提示\" End If End If End Sub
Private Sub DataGrid1_Click() Dim i As Integer For i = 0 To 4
28
txt(i).Text = rs1.Fields(i) Next i
Combo1.Text = rs1.Fields(5) End Sub
Private Sub Form_Load()
cn.Open \"Provider=Microsoft.Jet.oledb.4.0;Data Source=\" & App.Path & \"\\Library.mdb\" rs1.CursorLocation = adUseClient
rs1.Open \"书库\
Set DataGrid1.DataSource = rs1 txt(0).Enabled = False
Icon = LoadPicture(App.Path & \"\\SX.ico\") End Sub
Private Sub Form_Unload(Cancel As Integer) rs1.Close cn.Close End Sub Option Explicit
Private Sub cmdCancel_Click() Unload Me End Sub
Private Sub cmdEdit_Click()
If txt(0).Text = \"\" Or txt(1) = \"\" Or txt(2) = \"\" Or txt(3) = \"\" Or txt(4) = \"\" Or Combo1.Text = \"\" Then
MsgBox \"请单击行标选择需要修改的图书行\提示\" Exit Sub Else
If txt(0) <> rs1.Fields(0) Then
MsgBox \"请单击行标选择需要修改的图书行\提示\" Else
If MsgBox(\"确认要修改么?\提示\") = vbYes Then Dim i As Integer For i = 0 To 4
rs1.Fields(i) = txt(i).Text
29
Next i
rs1.Fields(5) = Combo1.Text rs1.UpdateBatch adAffectCurrent MsgBox \"修改成功\提示\" End If End If End If End Sub
Private Sub DataGrid1_Click() Dim i As Integer For i = 0 To 4
txt(i).Text = rs1.Fields(i) Next i
Combo1.Text = rs1.Fields(5) End Sub
Private Sub Form_Load()
cn.Open \"Provider=Microsoft.Jet.oledb.4.0;Data Source=\" & App.Path & \"\\Library.mdb\" rs1.CursorLocation = adUseClient
rs1.Open \"书库\ Set DataGrid1.DataSource = rs1 txt(0).Enabled = False
Icon = LoadPicture(App.Path & \"\\SX.ico\") End Sub
Private Sub Form_Unload(Cancel As Integer) rs1.Close cn.Close End Sub Option Explicit
Private Sub cmdSearch_Click()
On Error Resume Next rs1.Close
30
rs1.CursorLocation = adUseClient
rs1.Open \"Select * From 书库 Where \" & Combo1.Text & \" ='\" & txt_Search.Text & \"'\adOpenKeyset, adLockOptimistic Set DataGrid1.DataSource = rs1
If rs1.RecordCount = 0 Then MsgBox \"查无此书\" End Sub
Private Sub Form_Load()
cn.Open \"Provider=Microsoft.Jet.oledb.4.0;Data Source=\" & App.Path & \"\\Library.mdb\" Combo1.AddItem \"书号\" Combo1.AddItem \"书名\" Combo1.AddItem \"作者\" Combo1.AddItem \"出版社\" Combo1.AddItem \"类别\"
Icon = LoadPicture(App.Path & \"\\SX.ico\") End Sub
Private Sub Form_Unload(Cancel As Integer) cn.Close End Sub Option Explicit
Private Sub MDIForm_Load()
MDIForm1.Icon = LoadPicture(App.Path & \"\\SX.ico\") End Sub
Private Sub mnuAbout_Click() frmAbout.Show vbModal End Sub
Private Sub mnuAddNew_Click() frmAddNew.Show vbModal
31
End Sub
Private Sub mnuAddR_Click() frmAddR.Show vbModal End Sub
Private Sub mnuBookAdd_Click() frmBookAdd.Show vbModal End Sub
Private Sub mnuBookB_Click() frmBookB.Show vbModal End Sub
Private Sub mnuBookDelete_Click() frmBookDelete.Show vbModal End Sub
Private Sub mnuBookEdit_Click() frmBookEdit.Show vbModal End Sub
Private Sub mnuBookFind_Click() frmBookFind.Show End Sub
Private Sub mnuBookR_Click() frmBookR.Show vbModal End Sub
Private Sub mnuEditP_Click() frmEditP.Show vbModal End Sub
Private Sub mnuExit_Click() End End Sub
32
Private Sub mnuRDelete_Click() frmRDelete.Show vbModal End Sub
Private Sub mnuREdit_Click() frmREdit.Show End Sub
Private Sub mnuSearch_Click() frmSearch.Show End Sub Option Explicit
Public cn As New ADODB.Connection
Public rs1 As New ADODB.Recordset, rs2 As New ADODB.Recordset Public rs3 As New ADODB.Recordset, rs4 As New ADODB.Recordset Public rs5 As New ADODB.Recordset, rs6 As New ADODB.Recordset
Public BlnQX As Boolean
Public Function QX() If BlnQX = False Then
MDIForm1.mnuAddNew.Enabled = False MDIForm1.mnuReader = False MDIForm1.mnuLib = False MDIForm1.mnuBR = False End If End Function
33
因篇幅问题不能全部显示,请点此查看更多更全内容