图书馆管理信息系统.docx
《图书馆管理信息系统.docx》由会员分享,可在线阅读,更多相关《图书馆管理信息系统.docx(22页珍藏版)》请在冰豆网上搜索。
图书馆管理信息系统
图书馆管理信息系统
陈清芽
【论文摘要】这篇论文主要讲述关于图书馆管理信息系统的信息,特别是讨论了关于设计该系统时的思想、方法和过程,以及在细节上分析函数和方法的实现思想。
在本论文中讲述的图书馆管理信息系统拥有一个交互式的界面、逻辑的数据库结构。
并且在设计数据库时还考虑到了实体完整性约束、参照完整性约束、及尽量减少数据的冗余,在数据库里有包括表、过程、函数、触发器等5个数据库对象。
许多涉及到图书、读者的信息的功能在本系统中都有实现。
例如,你可以将新书的信息插入到数据库的图书基本情况表里;还可以对已经插入的关于图书的信息进行修改;更重要的是,读者可以从图书馆里借阅书籍。
经过多次的测试和运行,本系统能实现其在设计时的所有功能。
【关键字】图书、读者、管理系统、数据库、ODBC
LibraryManagementInformationSystem
ChenQingya
【Abstract】Thisdissertationmainlytalkaboutinformationaboutthesystemoflibrary,particularlydiscussesthedesignthinking,methodandprocessofcreatingalibraryManagementInformationSystemandanalysesthefunctionandmethodofrealizationindetail.Thissystem,whichisimplementedinourprojecttalkedaboutinthisdissertationhasaveryinteractiveinterface,averylogicaldatabasearchitecture.Whathasbeentakenintoaccountmostareentityintegrity,referenceintegrityandreductionofdataredundancy.Thereare5databaseobjectsintotal,includingtables,procedure,triggerandsoon.Manykindsoffunctionsrelatedtobookorreadercloselyhavebeenimplementedinoursystem.Forexample:
youcaninserttheinformationofanewbookintodatabase,youcanalsoaltertheinformationwhichhasbeeninserted,moreimportant,thereadercanborrowbookfromthelibrary.
Afterbeingtestedmanytimes,thesystemcanberunwell!
【Keywords】Book、Reader、ManagementSystem、Database、ODBC
1.选题背景
1.1.课题背景、意义和来源以及系统工具介绍
1.1.1.课题背景及意义
今天,随着信息技术的发展,在图书馆的管理中运用传统的手工操作方式在现在这个数字化的时代已显得极不适应,因此,工作人员和读者对于运用计算机来辅助协调和管理自身工作的需求正在逐步提高。
随着我国现代化技术的不断提高和普及,学校也在不断的提高它的各个部门的管理质量,而图书馆管理就是对图书的编目、查询及读者信息的管理,重要的是图书的信息管理,包括图书的采购、编目、下架、遗失等。
因此,图书的管理是一个工作量比较大而且较为繁杂的工作,至今还有很多学校仍然采用人工管理的方式,由两三个工作人员管理图书档案,对于借书还书都是用手工来进行操作,而一旦借阅者较多时就容易因忙碌导致错误的产生,这样的情况在今天这样一个科技高速发展、工作节奏加快的年代真是感觉太原始了。
自从管理信息系统这一新兴的管理方法引入我国,在我国企业管理中已有20多年的时间。
现在,管理信息系统已经广泛应用于各行各业。
因此在这样的前提下,我选择了“图书馆管理信息系统”这样一个较为普遍,同时又较为典型的课题。
在当今这样一个科技高速发展的社会里,仅有理论知识是显然不行的,所以,我希望通过开发这个系统,能更好地把理论与实际结合起来,充分将自己所学的专业知识应用于实践之中,并在实践中不断充实自己,提高自己的专业技能水平,以获取更多的教益......
1.1.2.课题的来源
本课题由学院和辅导老师提出,基于Delphi7.0及SQLServer2000数据库平台开发图书馆管理信息系统,用于解决图书在馆内的信息变更、查询,以及读者借阅图书等问题。
1.1.3.系统工具介绍
本系统的开发工具是用面向对象的Delphi进行设计的。
Delphi是由美国Borland公司推出的功能强大、使用灵活的快速应用开发工具,是面向对象领域的开发工具中的佼佼者。
它具有运行速度快、易于学习和使用以及开发效率高等特点,是可视化的应用编程开发环境、可重用性面向对象语言、快速编译器和数据库的完美结合。
它在各个方面都具有优越性,提供了一系列开发、测试和调试的先进工具,包括大量可以重复使用的VCL组件库、各种Form模板。
其应用程序主要是围绕着窗体和单元两个部分进行,窗体(Form)是与用户直接可见的对象,Delphi的应用程序由多个窗体(Form)组成,与之相对应的是单元,每个单元对应一个Form程序区段,包含事件处理程序、过程和函数。
1.2.国内外发展概况
目前,国际上大多数发达国家的图书馆基本上实现了电脑管理,尤其是那些较大型的图书馆还采用了大型数据库开发的软件,部分大型图书馆也使用Foxpro、SQLServer等。
而基于Access数据库的多数是中小型图书馆。
但在大多数不发达国家,基于SQLServer数据库的图书馆管理信息系统应用得很广泛。
而在中国,许多中小型图书馆用的还是手工图书管理,大多数图书馆对计算机管理信息还没有一定的认识,而SQLServer数据库具有使用方便、学习简单、易学易用的特点,所以基于SQLServer数据库在非发达国家有着很广阔的发展前景。
1.3.研究内容及须解决的关键问题
1.3.1.研究内容
课题研究的内容是关于图书馆管理信息系统的流通部子系统,是图书馆运用计算机管理和实际运用的具体体现,可以让大量的图书信息得到合理的安排。
该系统使用的是Delphi7.0,以SQLServer2000数据库平台进行开发。
1.3.2.需要解决的关键问题
*用户需求分析
*系统整体规划方案及设定
*功能模块的划分及设定
*利用SQLselect实现数据的连接
*实现最终系统代码的设计
2.图书馆管理信息系统解决方案
2.1.方案内容
我们可以用两层体系结构作为图书馆管理信息系统软件解决方案的核心,它的基本思想是将读者操作的界面同工作人员的操作界面分离,把信息系统按功能划分为管理和维护、信息服务和信息查询三大块,分别放置在相同或不同的硬件平台上。
之后从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。
这样,就把一个大的系统分解成了几个小系统。
系统划分了子系统后,下一步的工作是继续划分子系统的小模块。
先考虑在进入子系统时应该做什么,进入系统之后又应该做什么,提供哪些服务等。
例如,对于图书信息服务子系统,在工作人员进入时首先得调用相关数据库表,找出该工作人员的基本信息;进入系统后,子系统得提供图书查询,图书借阅和还书的功能。
2.2.方案论证
2.2.1.方案的选择
两层客户机/服务器技术在结构、开发环境、应用平台的开发方式上已经非常成熟。
请求另一计算机为之服务的计算机称为客户机(Client).而处理数据库的计算机称为服务器(Server)。
客户机/服务器是将处理工作分散到工作站和服务器上去处理,服务器不仅负责存取数据,还要对数据作一定的处理工作,这样在数据发送给工作站之前即取得查询结果集,从而在大部分情况下可大大减少网络传输的开销,因此,也减轻了工作处理负担,用户只需关心界面的处理工作即可。
客户机/服务器系统的成功与否在很大程度上依赖于服务器。
用户越多,服务器的处理负担越重,相应服务器硬件性能也要跟得上,否则就会导致影响时间比本地型数据库还要差的结果。
客户机运行数据请求程序,并将这些请求传送到服务器。
由客户机执行的计算称为前端处理。
前端处理具有所有与提供、操作和显示数据相关的功能。
C/S[1]数据库应用程序中客户端的主要功能:
●从用户接收数据
●处理应用逻辑
●生成数据库请求
●向服务器发送数据库请求
●从服务器接收结果并显示结果
在服务器上执行的计算称为后端处理。
后端处理设备是一台管理数据资源并执行数据库引擎功能(如存储、操作和保护数据)的计算机。
C/S数据库应用程序中服务器端的主要功能:
●从客户机接收数据库请求
●处理数据库请求
●传送结果给客户机
●执行完整性检查
●提供并行访问控制
●事务处理失败后,执行事务恢复
●优化查询和更新处理
2.2.2.方案的技术实现
在设计图书馆管理信息系统时,我们采用了传统的基于两层的C/S结构来构建系统。
根据需求的分析结果,在此C/S结构中,客户端有两种的操作用户:
工作人员和读者。
Delphi客户机/服务器结构原理:
这里前端应用程序发送命令给基于服务器数据库引擎,再由后者负责从物理磁盘上读取数据并加以处理,最后返回给前端应用程序。
服务器负责数据库处理工作,而工作站负责用户界面处理工作:
读者查询信息及工作人员对系统的操作和维护。
Delphi客户机/服务器的前端应用程序实际上不直接与数据库引擎打交道。
每个客户服务器提供一个数据库通信接口,该数据库通信接口运行于前端。
这些接口也称为数据库通信API等。
数据库通信接口的工作流程如下:
图2-1工作流程图
Delphi中的BDE提供了丰富和强壮的特性支持客户机/服务器应用的开发。
它提供了支持多种数据库如:
Oracle,SQLServer以及任何ODBC数据源的统一和一致的应用程序编程接口。
开发者可以不用修改数据库应用程序就能直接访问不同的数据库站点和数据格式。
3.系统总体设计
3.1.系统总体设计
对于图书馆主要负责提供的功能是指从图书的购入开始直到该图书过期下架的整个流通过程,这其中包括图书入库、借出、归还以及对参与此流通过程的读者的信息管理。
(1)新图书信息入库:
建立图书信息库,以便读者进行查询和借阅。
(2)修改图书信息:
在建立信息库时可能因操作错误或其它情况而造成数据库里图书信息的错误,需要修改这些错误。
(3)整理图书库:
图书因使用过久或信息过时需做下架处理,或者在读者借阅书籍时发生遗失的情况下需做遗失处理,这些都需要修改数据库关于书籍的信息。
(4)读者信息管理:
读者一般都是在校的学生和教师。
教师的信息一般在建立档案后一般不需要修改(或修改量较小),而对于学生则会有新生入学和老生毕业等情况出现,这些都需要修改数据库关于读者的信息。
(5)借书:
图书馆主要的功能就是提供书籍供读者借阅,在借阅图书时应按图书馆的规则进行借阅,例如不超过5本,如果已有超时借阅的图书,则在归还前不允许再借阅等等。
(6)还书:
对于图书遗失或超期归还的情况应根据图书馆的规则进行处罚。
(7)规则管理:
对于读者借阅书籍的权限(可借阅书籍数目,每人每本书可持有天数等)应该能按其类型加以分类,若有图书遗失或超期未还的情况发生,图书馆都应该规定处罚的条例。
另外对于操作此系统的前端工作人员的权限也应该有一定限制。
这些都应该只能由系统管理员来进行操作和修改。
(8)信息查询:
一般读者在借阅书籍前都需查询图书馆关于所借书籍的大概信息:
该图书是否在馆—是否已借出—在馆中的书架号;除查询书籍外读者还可查询关于自身的信息:
是否有超期未还的图书,还可借阅书籍数目等。
3.2.系统总体功能图
图3-1总体功能图
3.3.数据库设计
3.3.1.数据库的选择
图书馆管理信息系统是一个小型的数据库系统。
在这里我们选择SQLServer数据库进行开发。
MicrosoftSQLServer是一种关系型数据库管理系统。
关系模型是当前最受欢迎的数据存储和数据检索模型。
所有的数据处理都涉及存储和检索数据的操作,MicrosoftSQLServer是作为一个组织内部的全部数据的中心存储器来设计的。
组织中数据的关键特征强调了这一方法的重要性。
在客户机/服务器框架内,服务器数据库也要求与服务器的通信组件集成,以便和客户系统连接。
MicrosoftSQLServer的客户机/服务器使用WindowsNT的内置网络组件。
MicrosoftSQLServer还在其网络组件的顶部添加了服务特有的中介组件:
开放式数据库连接(OpenDatabaseConnectivity,ODBC)能使不同客户机进行相互连接,而不要求变更服务器及其他现存客户应用程序。
3.3.2.数据库设计
表名
属性
说明
表
Book
BookID,BookName,BookWriter,BookPublic,BookBorrowed,BookPosition,TypeID,Publicdate,BookPrice,BookIntime,Note
表Book主要存储
关于书籍的信息,
主键BookID,外键TypeID引用表
BookType
表
Reader
ReaderID,ReaderName,ReaderSex,DepartmentID,
JobID,ClassID,ReaderSum
表Reader主要存储
关于读者的信息,
主键ReaderID,外键:
DepartmentID引用表Department,
JobID引用表Job,
ClassID引用表Class
表
Class
ClassID,ClassName,
BorrowSum,Deadline
表Class主要存储
关于读者等级的信息,
主键ClassID
表
BookRule
RuleID,RuleName,
RuleContent
表BookRule主要存储
关于图书馆管理规则的信息,主键RuleID
表
BorrowRecorder
BookID,ReaderID,BookDate,Deadline,BookReturn,PastTime,Penalty,Note
表BorrowRecorder主要存储关于书籍借阅的信息,
主键BookID-ReaderID,外键:
BookID引用表Book,ReaderID引用表Reader,
表
Worker
WorkerID,WorkerName,
WorkerSex,WorkerRight,WorkerPassword
表Worker主要存储
关于工作人员的信息,
主键WorkerID
表
PastBook
BookID,BookName,
BookWriter,BookPublic,
OutDate,Note
表PastBook主要存储
关于过期图书的信息,
主键BookID,外键:
BookID引用表Book,
图3-1数据库表对象
3.3.4.数据库关系图
图3-3数据库关系图
4.图书馆管理信息系统的实现过程
4.1.系统结构
我们用两层体系结构作为图书馆管理信息系统软件解决方案的核心,把信息系统按功能划分为管理和维护、信息服务和信息查询三大块,分别放置在相同或不同的硬件平台上,并将系统的操作人员划分为三类:
读者,工作人员,系统管理员。
图4-1操作界面示意图
4.2.登录系统界面的设计
1.从列表框里选择用户,此列表框内的用户直接与数据库里工作人员的表相关联。
2.输入密码。
判断该密码与工作人员表中定义的密码是否相符。
3.如果不正确,提示输入正确的信息。
4.如果正确,用户登录,并根据工作人员表中的用户权限设定其可操作界面。
5.对于用户的权限规定:
权限为‘1’的用户(系统管理员)拥有全部的权限。
权限为‘2’的用户:
除不能修改图书馆的规则管理以外,拥有其他的全部管理权限,相当于底层的工作人员:
系统初始化、新书的入库、图书整理、修改图书信息、规则维护、用户信息管理、查询图书借阅、图书借出、图书归还。
权限为‘3’的用户为前台的工作人员;他只能负责前台的工作:
图书借出、图书归还。
4.3.信息服务子系统的设计
信息服务子系统包括借书和还书两大功能模块:
对于读者借书是应考虑的情况有:
1该图书是否在馆;
2该读者是否有借阅此图书的权限;
3该读者所借图书数目是否已满其可借图书数目或该读者是否有超期未还的图书。
对于读者归还图书时应考虑的情况有:
该图书是否超期,若有则应根据规则予以处罚。
信息服务子系统的数据流图:
图4-2借书的数据流图
图4-5还书的数据流图
4.4.管理和维护子系统的设计
1.新书入库:
首先根据图书名称自动产生图书编号(由数据库内的过程产生)。
2.修改图书信息:
根据输入的图书编号将已经插入的图书信息在界面上显示出来,然后由工作人员修改图书信息,将修改后的图书信息再重新插入数据库,此时的图书编号不发生改变。
3.用户信息管理:
对于已毕业的学生应删除其在数据库中的记录。
新入学的学生应根据其学籍档案在读者基本信息表里为其建立信息记录。
4.规则管理:
根据图书馆的最新规定增加或修改已存在的管理规则。
5.整理图书库:
a、图书遗失:
首先根据读者编号查询该遗失图书的基本信息。
再根据管理规则对遗失该图书的读者进行处罚。
之后对该图书的信息进行整理:
在遗失图书基本情况表里为其建立一条记录,并将其在其它表里的相关记录信息予以删除。
b、图书下架:
首先根据图书编号查询图书的基本信息。
查看该书是否已借出。
若已借出是否要进行下架的操作处理。
对于下架的图书,首先应在过期图书基本情况表里为其建立一条记录,并将其在其它表里的相关记录信息予以删除。
图4-6图书下架的数据流图
对于图书下架表单,在进行图书下架处理时,首先需要根据图书编号查询该图书的基本信息,所以在表单的代码处理中,应有检验图书编号的函数来检验数据库里是否存在该图书的编号,代码如下:
functionTfrmBookclear.CheckExistid(Code:
string):
boolean;
begin
try
qrydel.SQL.Clear;
then
Result:
=False
else
Result:
=True;
except
Result:
=False;;
end;
end;
只有当函数CheckExistid值为True时才能进行对此图书的下架处理,在对图书进行下架处理时,要将数据库表中除过期图书基本情况表外所有的表中关于该图书信息的记录全部删除。
删除记录的函数代码如下:
procedureTfrmBookclear.delete;
varsbookno,sborrow:
string;
begin
ifrbtndel.Checked=true
then
begin
ifCheckExistid(edtbookno.Text)=False
then
begin
MessageDlg('此号<'+edtbookno.Text+'>不存在,请重新输入!
',mtWarning,[mbok],0);
edtbookno.SetFocus;
edtbookno.SelectAll;
exit;
end;
ifbookborrowed(edtbookno.Text)=true//图书已借出
then
begin
ifMessageBox(0,PChar('此书<'+edtbookno.Text+'>已借出,
确实要删除吗?
'),'警告',MB_YESNO)=IDYES
then
begin
try
booknodel(edtbookno.Text);
MessageBox(0,'删除完成',PChar('删除'+edtbookno.Text),MB_OK);
except
MessageDlg('删除<'+edtbookno.Text+'>失败',mtWarning,[mbok],0);
end;
end
else
begin
edtbookno.SetFocus;
edtbookno.SelectAll;
exit;
end;
end
else
begin
try
booknodel(edtbookno.Text);
then
begin
sbookno:
=tbbook.FieldValues['BookID'];
sborrow:
=tbbook.FieldValues['BookBorrowed'];
ifsborrow='是'//图书已借出
then
begin
ifMessageBox(0,PChar('此书<'+sbookno+'>已借出,确实要删除吗?
'),'警告',MB_YESNO)=IDYES
then
begin
try
booknodel(sbookno);
MessageBox(0,'删除完成',PChar('删除'+sbookno),MB_OK);
except
MessageDlg('删除<'+sbookno+'>失败',mtWarning,[mbok],0);
end;
end;
end
else//图书未借出
begin
try
booknodel(sbookno);
MessageBox(0,'删除完成',PChar('删除'+sbookno),MB_OK);
except
MessageDlg('删除<'+sbookno+'>失败',mtWarning,[mbok],0);
end;
end;
tbbook.Refresh;
dbgbook.Refresh;
end;
end;
5.开发过程遇到的问题及解决方法
(1)关于字段为datetime型时产生的问题
在修改图书信息时:
其中关于书籍的入库时间在数据库里定义为datetime型。
当对书籍的信息进行修改后,若图书的入库时间为空时,则在插入数据时将产生错误。
解决方法:
当此字段为空时,将该书的入库时间默认为当前时间。
(2)对于有外键约束的表,在界面端用SQL语句向表中插入记录时,该外键属性值必不能为空,且必须将插入记录的所有属性都在语句中列出。
如在图书遗失情况下,首先应向LostBook表中添加该图书的记录,但此处因有外键约束:
BookID,ReaderID,则不能用语句:
insertintoLostBookv