实验四图书馆管理系统设计报告.docx
《实验四图书馆管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《实验四图书馆管理系统设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
实验四图书馆管理系统设计报告
实验四图书馆管理系统设计报告
图书馆管理系统设计
1.设计背景
随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。
图书馆管理系统是在适应市场需求的客观前提下,为了学校管理图书馆而开发的。
2.系统功能
本系统定位于学校的中小型图书馆,暂时考虑单机环境下的实现操作。
系统选择目前常用的WindowsXP/7。
系统开发的总体目的是在图书馆信息管理中实现管理的系统化、自动化、减少工作量,增加效率及可靠性。
本图书管理系统的主要功能有:
(1)图书权限的管理:
包括系统登录,密码修改,管理员添加等;
(2)图书类别的管理:
即图书类别的添加、修改、查询。
包括图书类别的编号、名称等;
(3)入库图书的管理:
即新进图书的登记,馆藏图书的修改、删除、查询和报损。
包括图书的编号(条码号)、ISBN号、索书号、原名、原作、译者、图书类别、语种、出版社等;
(4)读者信息的管理:
即读者信息的添加、修改、删除、查询和报损。
包括读者编号、类型、性别、身份证号、工作单位、办证日期等;
(5)读者借阅图书信息的管理:
即信息(包括被借图书及借阅者信息)的添加、修改、删除、查询。
包括借书者编号、姓名、类别,所借书编号、名称、原名、作者、书籍类别、出版社、借出日期、应还日期等;
(6)还书信息的管理:
即信息(包括图书信息及还书者信息)的添加、修改、删除、查询。
包括还书者编号、姓名、所还书编号、名称、原名、作者、书籍类别、出版社、借出日期、应还日期、实还日期等。
3.系统平台设计
3.1系统平台配置概述
在方案的确定上,我们主要考虑了一下几个方面:
1.方案在技术上的先进性和成熟性2.方案的可靠性、可维护性以及系统的恢复能力3.方案的效率,包括其速度、容量和操作的方便性4.方案的可扩充性,例如设备的增加、更新和升级等5.方案得而性能价格比以及对环境的要求等等
3.2系统平台的配置:
(一)从图书馆系统的功能、规模、主要的处理方式和用户的需求和条件来考虑,充分运用计算机系统技术、通信技术和网络技术等来确定一个总体的方案,使用微机网络更为灵活、经济。
(二)机器选型微机性能比较高,价格相对较低,可以选择微机作为硬件支撑环境。
在考虑应用软件对计算机处理能力需求时,主要是考虑一下几个方面:
1.主机的结构、CPU的性能和速度、内存的大小、I/O通道与输出口、外存存储器类型和容量、性能价格指标等。
2.外设的型号以及性能指标3.配件的性能指标与兼容性二、系统软件平台的配置:
根据系统设备配置的总体方案和系统功能上的要求,采用Windows操作系
统
4.代码设计
4.1登录过程代码
FunctiongetUserRights()
MyConnection.Open()
MyCommand=NewOleDbCommand("SELECT*FROMSystemUsersWHEREUserID='"&TxtUserID.Text&"'",MyConnection)
MyReader=MyCommand.ExecuteReader()
WhileMyReader.Read
AdminStatus=MyReader("AdminRights")
LibStatus=MyReader("LibRights")
ReaderStatus=MyReader("ReaderRights")
EndWhile
MyConnection.Close()
MyReader.Close()
MyCommand.Dispose()
EndFunction
4.2书籍查询过程代码
SubfindByISDN()
dbset.Clear()
MyConnection.Open()
MyCommand=NewOleDbCommand("Select*fromBookDetailsWHEREISDN='"&TxtCondition.Text&"'",MyConnection)
dataA=NewOleDbDataAdapter(MyCommand)
dataA.fill(dbset,"BookDetails")
DGResult.ReadOnly=True
DGResult.DataSource=dbset.Tables("BookDetails")
MyReader=MyCommand.ExecuteReader()
WhileMyReader.Read
EndWhile
MyConnection.Close()
MyReader.Close()
MyCommand.dispose()
EndSub
其findByAuthorName()过程实现代码如下:
SubfindByAuthorName()
dbset.Clear()
MyConnection.Open()
MyCommand=NewOleDbCommand("Select*fromBookDetailsWHEREAuthorNameLIKE'"&
TxtCondition.Text&"%'",MyConnection)
dataA=NewOleDbDataAdapter(MyCommand)
dataA.fill(dbset,"BookDetails")
DGResult.ReadOnly=True
DGResult.DataSource=dbset.Tables("BookDetails")
MyReader=MyCommand.ExecuteReader()
WhileMyReader.Read
EndWhile
MyConnection.Close()
MyReader.Close()
MyCommand.dispose()
EndSub
其findByName()过程实现代码如下:
SubfindByName()
dbset.Clear()
MyConnection.Open()
MyCommand=NewOleDbCommand("Select*fromBookDetailsWHEREBookNameLIKE'"&TxtCondition.Text&"%'",MyConnection)
dataA=NewOleDbDataAdapter(MyCommand)
dataA.fill(dbset,"BookDetails")
DGResult.ReadOnly=True
DGResult.DataSource=dbset.Tables("BookDetails")
MyReader=MyCommand.ExecuteReader()
WhileMyReader.Read
EndWhile
MyConnection.Close()
MyReader.Close()
MyCommand.Dispose()
EndSub
4.3书籍添加过程代码
Functionadd_BookIntoDatabase()
MyConnection.Open()
MyCommand=NewOleDbCommand("INSERTINTOBookDetailsVALUES('"&TxtSN.Text&"','"&
TxtISBN.Text&"','"&TxtBookName.Text&"','"&ComboBookCode.Text&
"','"&ComboBookType.Text&"','"&TxtBookDes.Text&"','"&
TxtBookAuthor.Text&"','"&TxtPublishdate.Text&"','"&TxtEdition.Text&
"','"&ComboStatus.Text&"','"&picPath&"','"&TxtAdditionDate.Text&
"')",MyConnection)
MyCommand.ExecuteNonQuery()
MyConnection.Close()
MyCommand.Dispose()
EndFunction
4.4书籍编辑过程代码
FunctionupdateBook()
MyConnection.Open()
Try
MyCommand=NewOleDbCommand("UPDATEBookDetailsSETBookName='"&TxtBookName.Text&
"',AuthorName='"&TxtBookAuthor.Text&"',BookType='"&ComboBookType.Text&"',BookCode='"&ComboBookCode.Text&"',BookDes='"&TxtBookDes.Text&"',PublishDate='"&
TxtPublishdate.Text&"',LibDate='"&TxtAdditionDate.Text&"',Picture
='"&picPath&"'WHERESN='"&TxtSN.Text&"'",MyConnection)
MyCommand.ExecuteNonQuery()
CatchcAsException
MsgBox(c.ToString)
EndTry
MyConnection.Close()
MyCommand.Dispose()
End
4.5用户删除功能代码
SubLoadUser()
LvUser.Items.Clear()
DimLItemAsListViewItem
DimSQLStringAsString="SELECT*FROMSystemUsers"
'SQL查询语句
MyConnection.Open()
MyCommand=NewOleDbCommand(SQLString,MyConnection)
MyReader=MyCommand.ExecuteReader()
WhileMyReader.Read
LItem=NewListViewItem(MyReader("UserID").ToString)
LItem.SubItems.Add(MyReader("UserName").ToString)
LItem.SubItems.Add(MyReader("Password").ToString)
LItem.SubItems.Add(MyReader("Status").ToString)
LItem.SubItems.Add(MyReader("Address").ToString)
LItem.SubItems.Add(MyReader("Phone").ToString)
LItem.SubItems.Add(MyReader("CellPhone").ToString)
LItem.SubItems.Add(MyReader("Email").ToString)
LItem.SubItems.Add(MyReader("AdminRights").ToString)
LItem.SubItems.Add(MyReader("LibRights").ToString)
LItem.SubItems.Add(MyReader("ReaderRights").ToString)
LvUser.Items.Add(LItem)
EndWhile
MyConnection.Close()
MyReader.Close()
MyCommand.Dispose()
EndSub
4.6借书过程代码
SubissueBook()
MyConnection.Open()
MyCommand=NewOleDbCommand("INSERTINTOIssueBookVALUES('"&TxtIssueNo.Text&"','"&TxtSN.Text&"','"&TxtBookName.Text&"','"&TxtAuthorName.Text&"','"&TxtReaderNo.Text&"','"&TxtReaderName.Text&"','"&TxtIssueDate.Text&"','"&TxtReturnDate.Text&"','"&ComboChargeType.Text&"')",MyConnection)
MyCommand.ExecuteNonQuery()
MyConnection.Close()
MyCommand.dispose()
EndSub
其checkStatus()过程实现代码如下:
FunctioncheckStatus()AsBoolean
DimoStatusAsString
MyConnection.Open()
MyCommand=NewOleDbCommand("SELECT*FROMBookDetailsWHERESN='"&TxtSN.Text&"'",MyConnection)
MyReader=MyCommand.ExecuteReader()
WhileMyReader.Read
oStatus=MyReader("BookStatus")
EndWhile
MyConnection.Close()
MyReader.Close()
MyCommand.dispose()
IfoStatus="正常"Then
ReturnTrue
Else
IfoStatus="被借"Then
ReturnFalse
EndIf
EndIf
EndFunction
其checkIssueTag()过程实现代码如下:
FunctioncheckIssueTag()AsBoolean
DimoTagAsString
MyConnection.Open()
MyCommand=NewOleDbCommand("SELECT*FROMReaderDetailsWHEREReaderNo='"&TxtReaderNo.Text&"'",MyConnection)
MyReader=MyCommand.ExecuteReader()
WhileMyReader.Read
oTag=MyReader("IssueTagUsed")
EndWhile
MyConnection.Close()
MyReader.Close()
MyCommand.dispose()
IfoTag="3"Then
ReturnFalse
Else
IfoTag"3"Then
ReturnTrue
EndIf
EndIf
EndFunction
4.7还书过程代码
FunctioncheckIfAlreadyExists()AsBoolean
MyConnection.Open()
MyCommand=NewOleDbCommand("SELECT*FROMIssueBookWHEREIssueNo='"&TxtIssueNo.Text&"'",MyConnection)
Try
MyReader=MyCommand.ExecuteReader()
WhileMyReader.Read
TextBox10.Text=MyReader("IssueNo")
EndWhile
CatchcAsException
MsgBox(c.ToString)
EndTry
MyConnection.Close()
MyReader.Close()
MyCommand.dispose()
IfTxtIssueNo.Text=TextBox10.TextThen
ReturnTrue
Else
IfTxtIssueNo.TextTextBox10.TextThen
ReturnFalse
EndIf
EndIf
EndFunction
其updateReaderIssueTag()过程实现代码如下:
SubupdateReaderIssueTag()
DimCurrentIssueTagAsString
DimCurrentIssueTagUsedAsStringDimitagAsIntegerDimitagusedAs
Integer
CurrentIssueTag=getCurrentReaderIssueTag()CurrentIssueTagUsed=getCurrentReaderTagUsed()itag=CInt(CurrentIssueTag)itagused=CInt(CurrentIssueTagUsed)itag=itag+1
itagused=itagused-1CurrentIssueTag=itag.ToString
CurrentIssueTagUsed=itagused.ToStringMyConnection.Open()
MyCommand=NewOleDbCommand("UPDATEReaderDetailsSETIssueTag='"&CurrentIssueTag&"',IssueTagUsed='"&CurrentIssueTagUsed&"'WHEREReaderNo='"&TxtReaderNo.Text&"'",MyConnection)Try
MyCommand.ExecuteNonQuery()CatchcAsExceptionMsgBox(c.ToString)EndTry
MyConnection.Close()MyCommand.dispose()EndSub
4.输入输出设计表一
表二
5.数据库设计说明
数据库结构要能充分满足各种信息的输入和输出,收集基本数据,数据结构处理的流程,组成一份详尽的数据字典,为具体设计做准备。
针对一般图书管理系统的需求,通过对数据管理工作过程的内容和数据流程的分析,得到其系统的逻辑模型,设计如下数据项和数据结构:
l图书(图书条形码,图书名称,图书类型,作者,翻译者,出版社名,价格,页码,书架号,库存,入架时间,入架操作员,借阅次数)
l图书类型(类型编号,类型名称,该类型读者可借阅天数)
l读者(读者编号,姓名,性别,类型,出生日期,证件类型,证件号码,联系电话,电子邮箱,注册日期,注册操作员,备注,借阅图书本数,借阅图书总数量)
l读者类型(读者编号,读者类型名称,该类型读者可借阅书籍数量)5.1数据字典
(1)数据流的描述数据流编号:
D001数据流名称:
选择信息简述:
可以选择的特定模块数据流来源:
你选择模块的表数据流去向:
选择信息判断
数据流组成:
用户ID+权限+模块名等
数据流编号:
D002
数据流名称:
用户登入信息简述:
用户登录数据流来源:
外界输入数据流去向:
图书馆管理系统数据流组成:
密码+用户名等
数据流编号:
D003
数据流名称:
用户基本信息
简述:
用户登入后系统获得的基本信息数据流来源:
登入信息
数据流去向:
图书馆管理系统各个模块数据流组成:
用户ID+权限等
数据流编号:
D004
数据流名称:
基本操作信息
简述:
包含添加,删除,修改等基本操作数据流来源:
模块表数据流去向:
选择信息判断数据流组成:
添加,删除,修改等5.2处理逻辑的描述处理逻辑编号:
P001处理逻辑名称:
登录
简述:
根据用户输入的信息进行登录输入的数据流:
D002登入信息处理描述:
把用户的密码和用户名输入系统进行登录输出的数据流:
D003用户的ID和权限处理频率:
1000次/天
处理逻辑编号:
P002
处理逻辑名称:
所有模块信息的显示简述:
显示相应模块的报表
处理描述:
根据用户选择的相应模块,以报表的形式输出各个模块的信息输出的数据流:
D004操作信息处理频率:
1000次/天
处理逻辑编号:
P003
处理逻辑名称:
读者类型信息的显示简述:
显示读者类型的报表输入的数据流:
D001选择模块信息
处理描述:
根据用户选择的相应模块,以报表的形式输出各个模块的信息输出的数据流:
D004操作信息处理频率:
1000次/天
处理逻辑编号:
P004
处理逻辑名称:
读者档案信息的显示简述:
显示读者档案的报表输入的数据流:
D001选择模块信息
处理描述:
根据用户选择的相应模块,以报表的形式输出各个模块的信息输出的数
据流:
D004操作信息处理频率:
1000次/天
处理逻辑编号:
P005处理逻辑名称:
图书类型信息的显示简述:
显示图书类型的报表处理描述:
根据用户选择的相应模块,以报表的形式输出各个模块的信息输出的数
据流:
D004操作信息处理频率:
1000次/天
处理逻辑编号:
P006
处理逻辑名称:
图书档案信息的显示简述:
显示图书档案的报表输入的数据流:
D001选择模块信息
处理描述:
根据用户选择的相应模块,以报表的形式输出各个模块的信息输出的数
据流:
D004操作信息处理频率:
1000次/天
处理逻辑编号:
P007处理逻辑名称:
添加简述:
根据用户的选择信息进行添加输入的数据流:
D004操作信息处理描述:
根据输入的判断进行相应的处理逻辑输出的数据流:
存储表处理频率:
1000次/天
处理逻辑编号:
P008处理逻辑名称:
删除简述:
根据用户的选择信息进行删除输入的数据流:
D004操作信息处理描述:
根据输入的判断进行相应的处理逻辑输出的数据流:
存储表处理频率:
1000次/天
处理逻辑编号:
P009处理逻辑名称:
修改简述:
根据用户的选择信息进行修改输入的数据流:
D004操作信息处理描述:
根据输入的判断进行相应的处理逻辑输出的数据流:
存储表处理频率:
1000次/天5.3外部实体的描述外部实体编号:
S001外部实体名称:
系统管理员简述:
管理信息的人
输入的数据流:
管理员基本信息输出的数据流:
D001,D0025.4数据库概念设计根据系