资源描述
图书管理系统编程(免费下载)
———————————————————————————————— 作者:
———————————————————————————————— 日期:
21
个人收集整理 勿做商业用途
图书管理系统编程
一 系统的功能要求
根据高校图书管理的实际要求,结合本系统开发的要求,对与本章所要介绍的“图书管理系统”的需求实现如下功能:
1、书籍管理部分:这一部分包括书籍类别管理和书籍信息管理两部分,其中书籍类别管理包括添加书籍类别、修改书籍类别等;书籍信息管理包括书籍信息的添加、书籍信息的修改、书籍信息的查询、书籍信息的删除等。
2、 读者管理部分:这一部分包括读者类别管理和读者信息管理两部分.其中德政类别管理包括添加读者类别、修改读者类别;读者信息管理包括添加读者信息、修改读者信息、删除读者信息、查询读者信息等。
3、 借阅管理部分:这一部分包括借书信息管理和还书信息管理两部分.其中,借书信息管理包括借书信息的添加、借书信息的修改、借书信息的查询等;还书信息管理部分包括还书信息的添加、还书信息的修改、还书信息的查询等
4、系统管理:包括修改系统用户密码,增加新用户以及退出系统等。
二 系统的需求分析
图书馆是一家所有工作手工操作的图书管理,随着计算机的发展,更多的图书馆采用计算机图书管理系统来实现,这样可以得到更好的管理.目前,方正学院已经购买了所有的计算机硬件很网络设备。设计一从采购—编目—流通—管理 一体化的图书馆系统.主要表现:(一)采购,对新书的目录,要查存,判断图书馆是不是已经订过了,要人工查阅帐本完成,是很麻烦的事。(二)验证,要填写两个帐本和盖章,而且在帐本上面很多信息是重复的。(三)编目,通过手工对书编目,对不同种类的书都要查找书是否已有,如果没有的话对新的书进行查阅中图法宝典来要编目,并且还有填写跟书卡,和大量的查阅用的卡片。这块消耗的人力最大了。(四)流通,在借书的时候要填写跟书卡和借书证并保管跟书卡做为借条;在还书的时候工作人员先要花一定时间把保管的跟书卡先找出来,再填写跟书卡和借书证。然后再把跟书卡和书夹在一起,工作人员要消耗很多时间,大大降低了工作效率.(五)无法统计书的阅读次数、当天的借还数目等很多统计信息。
三 VB应用
1.具有面向对象的可视化设计工具 OOP
2.事件驱动的编程机制
3.提供了易学易用的应用程序集成开发环境
4.结构化的程序设计语言
5.支持多种数据库系统的访问
6.支持动态数据交换(DDE)、动态链接库(DLL)和对象的链接与嵌入技术(OLE)
7.联机帮助功能
设计时:设计时是指在VB环境中建立应用程序时的时间.
运行时:运行时是指在应用程序运行期间,用户与应用程序进行交互的时间。通常我们在设计时初始化窗体和控件的属性,在运行时响应窗体和控件的事件修改它们的属性或调用它们的方法。
对象:将数据和处理该数据的过程(函数和子程序)打包在一起而生成的新的数据类型称之为对象。在Visual Basic中,所有窗体和控件都是对象。要访问对象的属性和方法,必须在对象和属性方法之间加入一个句点。
窗体:窗体是可用作定制应用程序界面的窗口,或用作从用户处收集信息的对话框。你可向窗体增加控件、图形或图片来创建你的应用程序界面。窗体可单独存在,也可是多文档界(MDI)中的一个文档,即一个子窗体。
四 ADO访问数据库的原理
与数据库相连,ADO。NET提供了如下3种方式:通过ODBC相连;通过OLEDB相连;直接与SQL Server相连.3种方式由于应用层次的差异,使得效率由低到高,独立性由高到低.对于相连数据库的数据处理,也有2种方式,即一种是通过DataSet来隔离异构的数据源,另一种是以流方式从数据源读取(DataReader方式)。
传统的应用程序是通过先建立到数据库的连接,在程序的整个运行过程中维护连接的方式来设计的。ASP。NET采取了断开连接方式的数据结构.当浏览器向Web服务器请求网页时,服务器处理这个请求,并将所请求的网页发送给浏览器,然后连接就被断开,直到浏览器发出下一个请求。
ADO.NET的另一个创新是引入了数据集(Dataset)。一个数据集是内存中提供数据关系图的高速缓冲区。数据集对数据源一无所知,它们可以由程序或通过从数据仓库中调入数据而被生成、填充。不论数据从何处获取,数据集都是通过使用同样的程序模板而被操作的,并且它使用相同的潜在的数据缓冲区。
Option Explicit
Private Sub Command1_Click()
Dim cn As New ADODB.Connection ’数据库连接变量
Dim Cmd As New ADODB。Command '命令集
Dim rs As New ADODB.Recordset ’记录集
Dim strConnect As String ’连接字符串
Set cn = New ADODB。Connection
strConnect = ”Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=database;Data Source=servername" ’指定连接字符串
cn.ConnectionString = strConnect
cn。Open ’连接数据库
With Cmd
。ActiveConnection = cn
。CommandType = adCmdStoredProc 个人收集整理,勿做商业用途个人收集整理,勿做商业用途
五 系统的功能模块图
书籍类别添加
书籍类别修改
图书管理系统
系
统管理
增加用户
修改密码
读者管理部分
读者信息管理
读者类别管理
书籍管理部分
书籍信息管理
书籍类别管理
书籍信息添加
书籍信息修改
书籍信息查询
书籍信息删除
添加读者类别
修改读者类别
添加读者信息
修改读者信息
删除读者信息
借阅管理部分
借书管理
还书管理
查询读者信息
借书信息修改
借书信息添加
借书信息查询
还书信息查询
还书信息添加
还书信息修改
图书类别表
读者信息表
书籍信息表
借阅信息
表
六 系统的流程图
根据学校图书管理的实际流程,结合上述的各功能模块,系统的整体流程如图:
重新登陆
通过验证
通过单击显示登录表单
若为管理员身份
若为管理员身份
七 逻辑结构E-R图
八 系统设计
1 模块设计
根据本系统的需求,结合实际图书管理情况,本系统应具有如下功能模块:
1.1 图书管理功能
书籍信息管理:包括书籍信息的添加、书籍信息的修改、书籍信息的查询
和书籍信息的删除 4 部分功能。其中,书籍信息包括图书编号、书名、图书类别、作者、出版社、出版日期、登记日期已及是否已被借出。
书籍类别管理:包括书籍类别的添加、书籍类别的修改、书籍类别的闪出 3 部分功能.其中,书籍类别包括类别名称和类别编号两部分。
1。2 读者管理部分
读者信息管理:包括读者信息的添加、读者信息的修改、读者信息的查询和读者信息的删除 4 部分功能。 其中,读者信息包括读者姓名、读者编号、性别、读者类别、工作单位、家庭住址、电话号码、登记日期和已借书数量。
读者类别管理:包括读者类别的添加、读者类别的修改、读者类别的删除 3 部分功能。其中,读者类别包括种类名称、借书数量、借书期限和有效期限 4 部分。
1。3 借阅管理部分
借书管理:包括添加借书信息和查询借书信息 2 部分功能。其中,借阅信息包括借阅编号、读者编号、读者姓名、书籍编号、书籍名称、出借日期和还书日期
还书管理:实现添加还书信息功能。其中,还书信息与借阅信息各部分明细相同。
1.4 系统管理部分
设置操作人员。系统初始设置一个超级用户和密码,操作人员可以利用这个超级用户名和密码登录,之后,可以设置其他的超级用户名称,也可以设置权限用户,同时也设置了这个用户可以使用的权限。
2 数据库设计
本系统使用 Access2000 作为数据库管理系统( DataBaseManagementSystem, 数据库管理系统)。在通路中,新建一个数据库,将其取名为 book.mdb ,将新建的数据库放置在应用程序的目录中,以便调用。
权限:(权限,姓名)
登录用户:(帐号,姓名,密码,权限)
用户:(用户帐号,姓名,性别,组号,证件号码)
图书类别:(类别,类名)
图书:(图书编号,类别,书名,作者,出版日期,出版社,定价,总数量,
剩下数量,备注)
借阅:(用户帐号,图书编号,借书日期,到期日期,数量,还书日期)
借阅信息:(用户帐号,图书编号,借书日期,到期日期,数量,还书日期)
例如,书籍信息部分设计的表如图所示
书籍信息部分
图书管理系统数据库
2.1数据库表设计
读书者类别表
对于读书者类别表,字段名称、借书数量、借书期限、有限期限等。在数据库中建立一个读书者类别表,用来记录所有的借阅者的信息。在刚刚建立的数据库中建立一个表,其字段结构如表达所示,需要注意的是该表的主关键字( PrimaryKey, PK )为种类名称,唯一标志一条的主关键字( PrimaryKey, PK )为种类名称,唯一标志一条记录。
读书类别表
字段名
数据类型
说明
种类名称
文本
必须字段为是,允许空字符为否
借书数量
数字
无
借书期限
数字
无
有效期限
数字
无
读者信息表
对于读者信息表,字段名称应该为读者姓名、读者编号、性别、读者类别、工作单位、家庭住址、电话号码、登记日期和已借书数量。在数据库中建立一个表,如图所示。主要的钥匙, PK ),唯一标识了一条记录的其中读者编号为该表的主关键字。
读者信息表
字段名
数据类型
说明
读者姓名
文本
必须字段为是,允许空字符为否
读者编号
文本
必须字段为是,允许空字符为否
性别
文本
字段大小2
读者类别
文本
字段大小50
工作单位
文本
字段大小50
家庭住址
文本
字段大小50
电话号码
文本
字段大小12
登记日期
日期/时间
无
已借书数量
数字
无
图书类别表
对于图书类别表,字段名称应该为类别名称和类别编号。具体设置如表
图书类别表
字段名
数据类型
说明
类别名称
文本
必须字段为是,允许空字符为否
类别编号
文本
必须字段为是,允许空字符为否
书籍信息表
对于书籍信息表,字段名称应该为图书编号、书名、图书类别、作者、出版社、出版日期、登记日期及是否已被借出.具体设置如表所示.
书籍信息表
字段名
数据类型
说明
图书编号
文本
必须字段为是,允许空字符为否
书名
文本
必须字段为是,允许空字符为否
类别
文本
字段大小50
作者
文本
字段大小50
出版社
文本
字段大小50
出版日期
日期/时间
无
登记日期
日期/时间
无
是否已被借出
文本
字段大小2
借阅信息表
对于借阅信息表,字段名称应该为借阅编号、读者编号、读者姓名、书籍编号、书籍名称、出借日期和还书日期.具体设置如表所示。
借阅信息表
字段名
数据类型
说明
借阅编号
自动编号
无
读者编号
文本
字段大小50
读者姓名
文本
字段大小50
书籍编号
文本
字段大小50
书籍名称
文本
字段大小50
出借日期
日期/时间
无
还书日期
日期/时间
无
按照上面的表格要求设计好数据库(book.mdb)后,就可以进行系统窗体界面开发了。
九 部分源代码
图书管理系统
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComCtlLib.Button)
On Error Resume Next
Select Case Button.Key
Case ”查询图书”
frmfindbook。Show
Case "查询读者”
frmfindreader。Show
Case ”添加图书”
frmaddbookstyle。Show
Case "添加读者”
frmaddreaderinfo。Show
Case "查询借书”
frmfindborrowinfo.Show
Case "退出"
End
End Select
End Sub
Private Sub add_admin_Click()
frmadduser.Show
End Sub
Private Sub add_back_book_Click()
frmbackbookinfo。Show
End Sub
Private Sub add_book_info_Click()
frmaddbookinfo.Show
End Sub
Private Sub add_book_style_Click()
frmaddbookstyle。Show
End Sub
Private Sub add_lend_book_Click()
frmfindbook.Show
End Sub
Private Sub add_reader_info_Click()
frmaddreaderinfo.Show
End Sub
Private Sub add_reader_style_Click()
frmaddreaderstyle.Show
End Sub
Private Sub change_pwd_Click()
frmchangepwd.Show
End Sub
Private Sub del_book_info_Click()
frmmodifybookinfo。Show
End Sub
Private Sub del_book_style_Click()
frmmodifybookstyle.Show
End Sub
Private Sub del_reader_info_Click()
frmreaderinfo.Show
End Sub
Private Sub del_reader_style_Click()
frmmodifyreaderstyle。Show
End Sub
Private Sub exit_sys_Click()
End
End Sub
Private Sub find_book_info_Click()
frmfindbook.Show
End Sub
Private Sub find_lend_book_Click()
frmfindborrowinfo.Show
End Sub
Private Sub find_reader_info_Click()
frmfindreader。Show
End Sub
Private Sub modify_book_info_Click()
frmmodifybookinfo。Show
End Sub
Private Sub modify_book_style_Click()
frmmodifybookstyle.Show
End Sub
Private Sub modify_reader_info_Click()
frmreaderinfo。Show
End Sub
Private Sub modify_reader_style_Click()
frmmodifyreaderstyle.Show
End Sub
添加图书信息
Option Explicit
Private Sub Command1_Click()
Dim rs_addbook As New ADODB.Recordset
Dim sql As String
If Trim(Combo1.Text) = ”" Then
MsgBox ”请选择图书种类”, vbOKOnly + vbExclamation, ”"
Combo1.SetFocus
Exit Sub
End If
If Trim(Text1。Text) = ”” Then
MsgBox "图书编号不能为空", vbOKOnly + vbExclamation, ""
Text1。SetFocus
Exit Sub
End If
If Trim(Text2.Text) = ”" Then
MsgBox ”书名不能为空”, vbOKOnly + vbExclamation, "”
Text2。SetFocus
Exit Sub
End If
If Not IsDate(Text5。Text) Then
MsgBox "请按照yyyy-mm-dd格式输入日期", vbOKOnly + vbExclamation, "”
Text5。SetFocus
Exit Sub
End If
If Not IsDate(Text6.Text) Then
MsgBox ”请按照yyyy—mm-dd格式输入日期”, vbOKOnly + vbExclamation, ””
Text6。SetFocus
Exit Sub
End If
sql = "select * from 书籍信息 where 书籍编号='” & Text1。Text & ”’"
rs_addbook。Open sql, conn, adOpenKeyset, adLockPessimistic
If rs_addbook。EOF Then
rs_addbook。AddNew
rs_addbook.Fields(0) = Trim(Text1。Text)
rs_addbook.Fields(1) = Trim(Text2.Text)
rs_addbook。Fields(2) = Trim(Combo1。Text)
rs_addbook.Fields(3) = Trim(Text3.Text)
rs_addbook。Fields(4) = Trim(Text4。Text)
rs_addbook。Fields(5) = Trim(Text5.Text)
rs_addbook.Fields(6) = Trim(Text6。Text)
rs_addbook。Fields(7) = ”否"
rs_addbook。Update
MsgBox ”添加书籍信息成功!”, vbOKOnly, ”"
rs_addbook。Close
Else
MsgBox ”图书编号重复!”, vbOKOnly + vbExclamation, ""
Text1.SetFocus
Text1。Text = ”"
rs_addbook.Close
Exit Sub
End If
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Dim rs_leibie As New ADODB。Recordset
Dim sql As String
sql = "select * from 图书类别”
rs_leibie.Open sql, conn, adOpenKeyset, adLockPessimistic
rs_leibie.MoveFirst
Do While Not rs_leibie.EOF
Combo1.AddItem rs_leibie。Fields(0)
rs_leibie.MoveNext
Loop
rs_leibie。Close
End Sub
Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)
End Sub
Private Sub Text2_Change()
End Sub
图书类别
Option Explicit
Private Sub Command1_Click()
Dim rs_bookstyle As New ADODB.Recordset
Dim sql As String
If Trim(Text1。Text) = ”” Then
MsgBox "图书种类不能为空", vbOKOnly + vbExclamation, ""
Text1。SetFocus
Exit Sub
End If
If Trim(Text2.Text) = "" Then
MsgBox ”种类编号不能为空”, vbOKOnly + vbExclamation, ""
Text2。SetFocus
Exit Sub
End If
sql = "select * from 图书类别 where 类别名称=’" & Text1.Text & ”’”
rs_bookstyle。Open sql, conn, adOpenKeyset, adLockPessimistic
If rs_bookstyle。EOF Then
rs_bookstyle.AddNew
rs_bookstyle。Fields(0) = Trim(Text1.Text)
rs_bookstyle。Fields(1) = Trim(Text2。Text)
rs_bookstyle。Update
MsgBox "添加图书类别成功!", vbOKOnly, ””
rs_bookstyle.Close
Else
MsgBox ”读者类别重复!”, vbOKOnly + vbExclamation, ”"
Text1。SetFocus
Text1。Text = "”
rs_bookstyle。Close
Exit Sub
End If
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Text1_Change()
End Sub
添加读者信息
Option Explicit
Dim rs_addreader As New ADODB.Recordset
Private Sub Command1_Click()
Dim sql As String
If Trim(Combo1。Text) = "” Then
MsgBox ”请选择读者种类", vbOKOnly + vbExclamation, "”
Combo1。SetFocus
Exit Sub
End If
If Trim(Text1.Text) = "” Then
MsgBox ”读者姓名不能为空", vbOKOnly + vbExclamation, ”"
Text1。SetFocus
Exit Sub
End If
If Trim(Text2。Text) = "” Then
MsgBox "读者编号不能为空”, vbOKOnly + vbExclamation, ”"
Text2.SetFocus
Exit Sub
End If
sql = "select * from 读者信息 where 读者编号=’" & Text2.Text & ”'”
rs_addreader.Open sql, conn, adOpenKeyset, adLockPessimistic
If rs_addreader.EOF Then
rs_addreader.AddNew
rs_addreader。Fields(0) = Trim(Text1.Text)
rs_addreader。Fields(1) = Trim(Text2.Text)
rs_addreader.Fields(2) = Trim(Combo2.Text)
rs_addreader.Fields(3) = Trim(Combo1。Text)
rs_addreader.Fields(4) = Trim(Text3.Text)
rs_addreader。Fields(5) = Trim(Text4.Text)
rs_addreader。Fields(6) = Trim(Text5.Text)
rs_addreader.Fields(7) = CDate(Text6.Text)
rs_addreader.Update
MsgBox ”添加读者信息成功!", vbOKOnly, ""
rs_addreader.Close
Else
MsgBox "读者编号重复!”, vbOKOnly + vbExclamation, "”
Text1.SetFocus
Text1。Text = "”
rs_addreader.Close
Exit Sub
End If
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Combo2.AddItem "男”
Combo2.AddItem "女”
Dim rs_leibie As New ADODB.Recordset
Dim sql As String
sql = "select * from 读者类别”
rs_leibie。Open sql, conn, adOpenKeyset, adLockPessimistic
rs_leibie.MoveFirst
Do While Not rs_leibie。EOF
Combo1。AddItem rs_leibie.Fields(0)
rs_leibie。MoveNext
Loop
rs_leibie.Close
End Sub
Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)
End Sub
添加读者类别
Option Explicit
Dim rs_readerstyle As New ADODB.Recordset
Private Sub Command1_Click()
Dim sql As String
If Trim(Text1。Text) = "" Then
MsgBox ”读者种类不能为空”, vbOKOnly + vbExclamation, "”
Text1。SetFocus
Exit Sub
End If
If Trim(Text2。Text) = ”" Then
MsgBox ”借书数量不能为空”, vbOKOnly + vbExclamation, ””
Text2.SetFocus
Exit Sub
End If
If Trim(Text3。Text) = ”” Then
MsgBox "借书期限不能为空”, vbOKOnly + vbExclamation, ""
Text3.SetFocus
Exit Sub
End If
If Trim(Text4.Text) = ”” Then
MsgBox "有限期限不能为空", vbOKOnly + vbExclamation, ""
Text4.SetFocus
Exit Sub
End If
sql = "select * from 读者类别 where 种类名称=’” & Text1。Text & "'"
rs_readerstyle。Open sql, conn, adOpenKeyset, adLockPessimistic
If rs_readerstyle.EOF Then
rs_readerstyle。AddNew
rs_readerstyle。Fields(0) = Trim(Text1。Text)
rs_readerstyle.Fields(1) = CInt(Text2.Text)
rs_readerstyle.Fields(2) = CInt(Text3.Text)
rs_readerstyle.Fields(3) = CInt(Text4。Text)
rs_readerstyle.Update
MsgBox "添加读者类别成功!”, vbOKOnly, ”"
rs_readerstyle。Close
Else
MsgBox ”读者类别重复!”, vbOKOnly + vbExclamation, "”
Text1.SetFocus
Text1。Text = ””
rs_readerstyle。Close
Exit Sub
End If
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
End Sub
Private Sub Text1_Change()
End Sub
展开阅读全文