《小型图书馆管理系统》的设计与实现
一 系统开发平台介绍
开发工具介绍
本系统所使用的开发工具是Visual Basic 6.0 。
Visual Basic 6.0是Microsoft Visual Studio 6.0 可视化工具中的一个开发系统。是一个用于快速开发基于Windows的客户机/服务器应用程序的高效工具,与以前各版本相比Visual Basic 6.0具有以下新特点。
提供了高效能的源码编译器,使应用程序得到优化。
提供了新的比其他数据访问接口更加方便,更加全面的数据访问接口——ADO(ActiveX Data object),能访问除了标准的关系型数据库(如 Access Foxpro SQL server 等)中的数据库外,还能访问邮件数据,Web上的文本或图形目录服务器等信息。
提供了动态的HTML页面设计器。
提供了WEB CAASS设计器。
Visual Basic 6.0开发软件的优势:
可视化程序设计
面向对象的程序设计
事件驱动的编程机制
高度的扩充性
支持大型数据库的连接与存取操作
1.2 后台数据库介绍
本系统所使用的后台数据库是Access数据库
数据库引擎
数据库引擎是一种管理数据怎样被存储和检索的软件系统,数据库的基本功能就是由它来提供的。
数据库引擎有许多种,本系统所涉及的数据库引擎是Microsoft Jet。Jet不是一个商业产品,准确的说它是好几个Microsoft产品使用的子系统,在Visual Basic 3.0和Microsoft Access1.0中Microsoft就引入了这个引擎,以后Microsoft经常修正这个引擎,并且不断提升其功能。本系统涉及的版本是Jet3.51
二 系统分析
设计数据库系统时,应该充分了解用户各方面需求,包括现有的以及将来可能增加的需求,数据库设计一般包括以下几个步骤:
数据需求分析、
数据库概念结构设计
数据库逻辑结构设计
数据库需求分析
用户的需求具体体现在各种信息的提供,保存,更新和查询。这就要求数据库的结构能充分满足各种信息的输入和输出。在仔细分析调查有关图书馆管理信息需求的基础上设计出如图(见附录——图书馆管理系统数据流程图)所示的数据流程
针对图书馆管理系统的需求,通过对图书馆管理工作过程的内容和数据流程分析,设计出如下的数据项
1 书库图书信息,包括数据项有:图书编号、书名、书号、类别、出版社、作者、ISBN、印张、字数、版次、印数、定价、开本、是否在库、是否损坏、是否遗失、入库时间、图书介绍
学生信息,包括数据项有:学生编号、学号、姓名、性别、系别、班级、级别、已借图书、照片
借书信息,包括数据项有:图书序号、学生序号、是否归还、书名、姓名、学号、书号、系别、班级、已借图书、出版社、作者、借阅日期、图书类别、是否续借
供货商信息,包括数据项有:供货商序号、供货商、城市、地址、电话、传真、邮政编码、EMAIL、联系人、首次合作时间
定单信息,包括数据项有:定单序号、书名、书号、类别、出版社、作者、ISBN、印张、字数、版次、印数、定价、开本、详细信息、供货商序号、供货商、联系人、城市、订购数量、订购价格、交付方式、交货日期、定单日期、是否验收、验收日期
过期图书信息,包括数据项有:图书序号、书名、书号、学生序号、学生姓名、系别、班级、过期时间
员工信息,包括数据项有:员工序号、姓名、密码、类别、性别、家庭住址、联系电话、职务、出生日期、照片
罚款信息,包括数据项有:流水号、罚款原因、罚款金额、日期
2.2 数据库概念结构设计
得到上面的数据项就能够设计出以下各种实体以及它们的关系,为后面的逻辑结构设计打下基础
根据上面的实力设计规划出的实体有:图书信息实体、学生信息实体、借阅信息实体、供货商信息实体、定单信息实体、过期图书实体、员工信息实体、罚款信息实体。
图2-1 图书信息实体E-R图
图2-2 学生信息实体E-R图
图2-3 借阅信息实体E-R图
图2-4 供货商信息实体E-R图
图2-5 定单信息实体E-R图
图2-6 过期图书信息实体E-R图
图2-7 员工信息实体E-R图
图2-8 罚款信息实体E-R图
图2-9 各实体间关系图
2.3 数据库逻辑结构设计
图书馆管理系统中数据库的各个表格设计结果如下:
表2-1:shukubiao 书库图书信息表
表2-2:xueshengbiao 书库图书信息表
表2-3:jh 借阅信息表
表2-4 ghs 供货商信息表
表2-5 orders 定单信息表
表2-6 gqs 过期书信息表
表2-7 password1 员工信息表
表2-8 jhfk 罚款信息表
2.4 设计方案构思
2.4.1图书馆管理信息系统的功能分析
图书馆管理具有自身鲜明的特点:
根据操作人员的级别不同设置权限,对系统的操作有权限的设置
能够实现图书的借、还、续借功能
具有对图书库的一般性维护的功能,包括过期书统计、损坏书统计
能够实现图书的采购、下定单及定单验收、图书出库的功能
能够实现学生及供货商的注册、浏览、删除、查询功能
能够实现员工的录入、修改等功能
能够实现书库借还图书情况、供货商、学生、员工信息的打印报表功能
能够实现数据备份功能
2.4.2图书馆管理信息系统的功能需求分析
功能模块
1 分级权限
2借还图书
3书库维护
4 图书采购
5 学生及供货商管理
系统总体功能模块框图如图2-10
图书馆管理系统数据流程图
图2-10 图书馆管理系统数据流程图
图书馆管理系统数据流程图说明
本系统需要数据输入的地方有:学生的录入和供货商的注册以及图书采购定单的填写即图书的入库
在学生信息录入之前应先设置好学生的种类以及一些相关信息然后进行学生信息的录入,学生信息保存在“xueshengbiao”表中,进行学生信息的管理;另外一个需要数据输入的地方为供货商的录入,供货商信息保存在“ghs”表中,根据供货商的信息进行供货商的管理
最后一个需要数据输入的地方为图书采购定单的填写。在整个图书采购到图书入库的过程中需要所有的数据做为支持。
首先学生信息和图书信息二者相互作用,形成图书的借阅信息;
然后根据图书的借阅信息进行图书借阅信息的统计,统计出每一类图书的借阅数量等统计信息;
这些统计信息的数据支持成为图书采购计划的重要依据,拟订图书的采购任务计划;
然后根据供货商信息选择图书采购计划的供货商;
根据以上这些信息进行图书采购的定单的填写,图书采购定单保存在“orders”表中,形成图书采购定单信息的管理;
根据定单信息验收图书,同时图书入库。
最后根据入库图书的类别设置进行图书信息管理,书库信息保存在“shukubiao”中。
本文涉及的代码:
Public Sub SendMsgToForms(msg As VbMsgBoxResult)
Dim frm As Form
For Each frm In Forms
frm.recmsg msg
Next frm
End Sub
VERSION 1.0 CLASS
BEGIN
multiuse = -1
End
attribute vb_name="vbmsg"
attribute vb_globalnamespace=false
attribute vb_creatable=true
attribute vb_predeclaredid=false
attribute vb_exposed=true
Option Explicit
Public iType As Long
Public iName As String
Public iSource As String
Dim iT As Date
Public Property Get iTime() As Date
iTime = iT
End Property
Public Property Get itimestr() As String
itimestr = Format(iT, "yyyy.mm.dd hh:mm:ss")
End Property
Private Sub class_initialize()
iT = Now()
End Sub
'模块2:MSGCLI。CLS
VERSION1.0 CLASS
BEGIN
Mulitiuse = -1
End
attribute vb_name="msgclient"
attribute vb_globalnamespace=false
attribute vb_creatable=true
attribute vb_predeclaredid=false
attribute vb_exposed=true
Option Explicit
public event recmsg(buval msg as VbMsgBoxResult )
Public minmsg As Long
Public maxmsg As Long
Public ID As Long
Public Sub setmsg(msg As vbmsg)
If msg.iType >= minmsg And msg.itupe < maxmsg Then
RaiseEvent recmsg(msg)
End If
End Sub
Public Property Get key() As String
key = "id:" & ID
End Property
'模块3:MSGCLI。CLS
attribute vb_name="modglobal"
Option Explicit
Public clients As New Collection
Public clicount As Long
VERSION1.0 CLASS
BEGIN
Mulitiuse = -1
End
attribute vb_name="msgserver"
attribute vb_globalnamespace=false
attribute vb_creatable=true
attribute vb_predeclaredid=false
attribute vb_exposed=true
Option Explicit
Public Sub sendmsg(msg As VbMsgBoxResult)
Dim c As msgclient
For Each c In clients
c.setmsg msg
DoEvents
Next c
End Sub
Public Sub addmsgclient(c As msgclient)
clicount = clicount + 1
c.ID = clicount
clients.Add c, c.key
End Sub
Public Sub delmsgclient(c As msgclient)
clients.Remove c.key
If clients.Count = 0 Then licount = 0
End Sub
comst msginfoid = 101
Private WithEvents mclient As msgclient
Private Sub form_load()
Set mclient = New msgclient
mclient.minmsg = msginfoid
mclient.maxmsg = msginfoid
addmsgclient mclient
End Sub
Private Sub Form_Unload(Cancel As Integer)
delmsgclient mclient
End Sub
方法一:VB登录界面代码 Option Explicit
?
Private Sub cmdCancel_Click() Dim intResult As Integer '请求用户确认是否真的退出系统登录 intResult = MsgBox("你选择了退出系统登录,退出将不能启动企业人事管理系统!" & vbcrlf_ & "是否真的退出?", vbYesNo, "登录验证") If intResult = vbYes Then End '根据用户选择结束应用程序
End Sub
Private Sub CmdOK_Click() Dim UserName As String Dim userpassword As String Dim str As String Dim nTryCount As Integer Dim rs As New ADODB.Recordset Set rs = New ADODB.Recordset UserName = Trim(txtUserName.Text) userpassword = Trim(txtpassword.Text)
str = "select * from 用户信息表 where 用户名='" & UserName & "' and 用户密码 = '" & userpassword & " '" rs.Open str, connectString, adOpenKeyset, 2
If rs.EOF Then '登录失败 MsgBox "对不起,无此用户或者密码不正确!请重新输入!!", vbCritical, "错误" txtUserName.Text = "" txtpassword.Text = "" txtUserName.SetFocus nTryCount = nTryCount + 1 If nTryCount >= 3 Then MsgBox "您无权操作本系统!", vbCritical, "无权限" Unload Me End If Else '登陆成功
主界面.Show Unload Me End If End Sub
?
方法二:
Private Sub Command1_Click()?? Dim username As String?? Dim userpassword As String?? Dim try_times As Integer?? try_times = 0?? ?? username = Trim$(user.text)?? userpassword = Trim$(password.text)
?? If user.text = "" Then???? MsgBox "用户名不能为空!", vbOKOnly + vbInformation, "友情提示"???? user.SetFocus???? Exit Sub?? End If?? If password.text = "" Then???? MsgBox "密码不能为空!", vbOKOnly + vbInformation, "友情提示"???? password.SetFocus???? Exit Sub?? End If?? ?? Dim strSQL As String?? strSQL = "select * from staff where sno='" & username & "' and password='" & userpassword & "'"?? ?? Dim str As New ADODB.Recordset?? ?? Set str = New ADODB.Recordset?? ?? str.CursorLocation = adUseClient?? str.Open strSQL, conn, adOpenStatic, adLockReadOnly?? ?? With str????? If .State = adStateOpen Then .Close????? .Open strSQL????? If .EOF Then??????? try_times = try_times + 1??????? If try_times = 3 Then????????? MsgBox "您已经三次尝试进入本系统,均不成功,系统将会自动关闭", vbOKOnly + vbCritical, "警告"????????? Unload Me??????? Else????????? MsgBox "对不起,用户名不存在或密码不正确!", vbOKOnly + vbQuestion, "警告"????????? user.SetFocus????????? user.text = ""????????? password.text = ""??????? End If??? Else?????? Unload Me?????? frm_main.Show?????? ?????? End If?????? End With?????? ?????? ?? End Sub
Private Sub Command2_Click()? Unload Me? End Sub
Private Sub Form_Load()?? Set conn = New ADODB.Connection?? conn.ConnectionString = "dsn=LMS"?? conn.Open?? ?? Login.Show?? End Sub
Private Sub password_KeyPress(KeyAscii As Integer)? If KeyAscii = 13 Then? Command1.SetFocus? ? End If? ?
《小型图书馆管理系统》的设计与实现.doc