图书借阅管理系统Word文档下载推荐.docx
《图书借阅管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《图书借阅管理系统Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
读者编号,姓名,性别,学号,学院,专业,年级,类型,类别编号,
办证日期
管理员信息:
管理员编号,姓名,性别,权限,登录口令,住址,电话
馆藏图书信息:
图书编号,索书号,图书名称,作者,出版社,单价,摘要,关键字,副本数,分类,出版日期,状态
图书编号,读者编号,图书名,作者,借阅日期,归还日期,归还日期,应还日期,罚金
借阅历史信息:
图书编号,读者编号,图书名,作者,借阅日期,还书日期
罚款信息:
读者编号,图书编号,图书名,作者,借阅日期,应还日期,归还日期,罚款金额,处理状态,管理员编号
2.2系统处理的功能及要求
2.2.1.能够存储一定数量的图书信息,并方便有效的进行相应的书籍数据操作和管理,这主要包括:
1)图书信息的录入、删除及修改。
2)图书信息的多关键字检索查询。
3)图书的出借、返还及超期罚款或丢失赔偿。
2.2.2.能够对一定数量的读者、管理员进行相应的信息存储与管理,这其中包括:
1)读者信息的登记、删除及修改。
2)管理员信息的增加、删除及修改。
3)读者资料的统计与查询。
2.2.3.能够提供一定的安全机制,提供数据信息授权访问,防止随意删改、查询。
2.2.4.对查询、统计的结果能够列表显示。
2.3安全性和完整性要求
1)安全性要求
系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。
安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;
系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。
2)完整性要求
系统完整性要求系统中数据的正确性以及相容性。
可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。
2.4图书管理系统数据流程图
2.4.1顶层数据流图:
2.4.2第2层数据流图
2.4.3第3层数据流图:
(读者借阅)
2.4.4第3层数据流图:
(读者还书)
2.4.5第3层数据流图:
(查询图书信息,查询借阅者信息)
2.4.6第3层数据流图:
(修改图书信息)
2.4.7第3层数据流图:
(修改借阅者信息)
2.4图书借阅流程图
对于学生客管理员来单独的看时,各自对应的操作流程为:
(1)学生:
(2)管理员:
2.5数据结构:
2.5.1数据结构列表
数据结
构编号
数据结构名
数据结构
含义
组成
DS-1
Book
馆藏图书信息
BookNo,
BookName,
BookWriter,
BookPublish,
BookDate,
BookLanguage
DS-2
Reader
借阅者信息
StudentNo,
StudentName,
StudentSdept
DS-3
Borrow
借阅信息
BookWriter,
Borrowdate
DS-4
Maneger
管理员信息
MID,
MName
2.5.1处理逻辑描述
处理编号
处理功能
处理过程
PR-1
判断读者查询涉及的功能模块
馆藏图书信息模块、读者信息模块、读者类别信息模块、借阅信息模块、借阅历史信息模块、罚款信息模块、管理员模块、馆室信息模块:
先确定查询所涉及的功能模块;
然后,根据要查询的内容,确定查询数据流向;
最后显示查询结果。
PR-2
判断图书、读者修改要涉及的模块,同时把相应的修改数据传到相应的模块之中
馆藏图书信息模块、读者信息模块、读者类别信息模块、管理员信息模块、馆室信息模块:
先确定更新所涉及的功能模块;
然后,把更新信息传送到相应的模块中;
最后,进行相应的更新操作。
3概念设计阶段
概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键。
系统开发的总体目标是实现图书馆管理的系统化和自动化,缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书管理效率的目的。
主要任务是对借阅者信息、管理员信息、图书资料信息、借阅信息、归还图书信息的基本信息的操作及外理。
3.1分析得到模型的E-R图:
3.2各E-R图各实体的属性如下所示:
实体型转换为关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
对于实体间的联系则有以下不同的情况:
一个m:
n联系转换为一个关系模式。
与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
一个1:
n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
一个1:
1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
三个或三个以上实体间的一个多元联系可以转换为一个关系模式。
与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合,最后转换后的关系模式如下:
(1)Book(BookID,Title,Author,Publisher,Pyear,language)
(2)Student(ID,Name,Dept)
(3)Assistent(ID,Name)
(4)BBook(BookID,StdID,BDate)
(5)RBook(BookID,StdID,RDate)
(6)Lend(StdID,AstID,BookID,LDate)
(7)Return(StdID,AstID,BookID,RDate)
说明:
(1).书号是图书的键码,每一本书有唯一的书号,一个学生可以同时借阅多本书。
一个管理员可以同时处理多个同学的借阅等事宜。
(2).一般情况下,学生、管理员和图书之间的联系为1:
1:
n,借书的关系Lend作为连接关系,其键码为n端的实体集的键码,即书号为借书关系的键码,这反映了如果还书时也把当初的借书记录删除,则书号就能唯一识别一个元祖。
(3).如果还书时不同时删除借书记录,则意味着同一本书前后可以借给不同的学生,于是学生、管理员与图书之间的联系变为m:
n,这时借书关系的键码为书号和学号的组合。
(4).要知道图书的当前状态,是在图书馆存放,还是被借阅等,需要在Book的模式中增加对应用项用以表示图书当前的状态,比如。
4逻辑设计阶段
4.1数据库模式定义
馆藏图书信息表
列名
数据类型
可否为空
说明
BookID
Char
notnull
图书编号
Title
图书的书名
Author
图书作者
Pulisher
图书出版社
Pyear
Date
图书的出版年
Language
图书语种
借阅者信息表
ID
读者编号
Name
读者姓名
Dept
读者所在系别
管理员信息表
说明
管理员编号
管理员姓名
借阅信息表
StdID
借阅者学号
AstID
LDate
借阅时间
4.2用户子模式定义
编号
用户子模式(View)
作用(共性:
提供数据保密和安全保护机制)
V-1
BookView
便于查询和修改图书的基本信息
V-2
StudentView
方便读者基本信息的查询、更新
V-3
BorrowView
用于当前借阅信息的查询
借阅者基本信息视图
ReaDep
5物理设计
5.1物理设计阶段的目标与任务
数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:
(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
5.2数据存储方面
为提高在表中搜索元素的速度,我们可以在数据库中为各基本表实际实现的时候应该基于键码建立索引,建立的索引如下:
(1)Book(BookID)
(21)Student(ID)
5.3实现设计
5.3.1建立数据库
createdatabaseBook;
5.3.2建立数据表
(1)建立Book表
CREATETABLEBook(
BookIDvarchar(20)
PRIMARYKEY,
Titlevarchar(50)
Notnull,
Authorvarchar(50),
Publishervarchar(50),
Pyearchar(4),
Languagechar
(1)
DEFAULT‘c’,
Statechar
(1)
DEFAULT‘0’
);
(2)建立Student表
CREATETABLEStudent(
IDchar(6)
Namevarchar(20)
Deptvarchar(20)
Notnull
(3)建立Assistent表
CREATETABLEAssistent(
(4)建立BBook表
CREATETABLEBBook(
BIDvarchar(20)
StdIDchar(6)
BDateDatetime
CONSTRAINFK_BBOOK_BID
FOREIGNKEY(BID)
REFERENCESBook(BookID)
CONSTRAINFK_BBOOK_StdID
FOREIGNKEY(StdID)
REFERENCESStudent(ID)
(5)建立RBook表
CREATETABLERBook(
StdIDchar(6)
Notnull,
RDateDatetime
CONSTRAINFK_RBOOK_BookID
FOREIGNKEY(BookID)
CONSTRAINFK_RBOOK_StdID
(6)建立Lend表
CREATETABLELend(
AstIDchar(6)
BookIDvarchar(20)
LDateDatetime
CONSTRAINFK_LEND_StdID
CONSTRAINFK_LEND_AstID
FOREIGNKEY(AstID)
REFERENCESAssistent(ID),
CONSTRAINFK_LEND_BookID
(7)建立Return表
CREATETABLEReturn(
RDateDatetime
CONSTRAINFK_REURN_StdID
CONSTRAINFK_RETURN_AstID
FOREIGNKEY(AstID)
CONSTRAINFK_RETURN_BookID
(8)管理员操作
增加学生:
INSERTINTOStudent(ID,Name,Dept)
VALUES(#StdNo,#Name,#Dept);
删除学生:
DELETEFROMStudent
WHERE(ID=#ID);
修改学生信息:
UPDATEStudent
SETName=#Name,Dept=#Dept
WHERE(ID=#ID);
增加书籍:
INSERTINTOBook(BookID,Title,Author,
Publisher,Pyear,Language)
VALUES(#BookID,#Title,#Author
#Publisher,#Pyear,#Language)
删除书籍:
DELETEFROMBook
WHERE(BookID=#BookID);
修改书籍信息:
UPDATEBook
SETTitle=#Title,Author=#Author,
Publisher=#Publisher,Pyear=#Pyear,
Language=#Language
WHERE(BookID=#BookID)
学生借阅图书:
BEGINTRANSACTION
INSERTINTOLend(StdID,AstID,BookID,LDate)
VALUES(#StdID,#AstID,#BookID,#LDate);
UPDATEBOOK
SETState=’2’
WHEREBookID=#BookID
COMMIT;
学生归还图书:
INSERTINTOReturn(StdID,AstID,BookID,RDate)
VALUES(#StdID,#AstID,#BookID,#RDate);
SETState=’0’
(9)学生的操作:
预订图书:
CREATEPROCBook_Book
@BookIDvarchar(20),
@StdIDchar(6),
@BDatedatetime
AS
DECLARE@TransNameVARCHAR(20)
SELECT@TransName=’Book_Book’
BEGINTRANSACTION@TransName
DECLARE@bookedint,@book_state_beforechar
(1),
@book_state_afterchar
(1)
SELECT@booked=count(*)FROMBBook
WHEREBID=@BookID
IF@booked>
0
ROLLBACKTRANSACTION@TransName
ELSEBEGIN
SELECT@book_state_before=stateFROMBook
WHEREBookID=@BookID
IF@book_state_before=’0’
SELECT@book_state_after=’1’
ELSEIF@book_state_before=’2’
SELECT@book_state_after=’3’
UPDATEBook
SETstate=@book_state_after
WHEREBookID=@BookID
INSERTINTOBBook(BID,StdID,BDate)
VALUES(@BookID,@StdID,@BDate)
COMMITTRANSACTION@TransName
END
GO
续借图书:
CREATEPROCRenew_Book
@RDatedatetime
SELECT@TransName=’Renew_Book’
DECLARE@bookedint
WHEREBID=@BookID
IF@booked=0
INSERTINTORBook(BookID,StdID,RDate)
VALUES(@BookID,@StdID,@RDate)
5.3.3建立视图
(1)用于查询图书基本信息的视图定义如下:
createviewBookview(书号,书名,作者,出版社,出版年,语种)
as
selectBookID,Title,Author,Publisher,Pyear,Language
fromBook
(2)用于借阅者基本信息查询的视图定义如下:
createviewReaderview(借阅者学号,借阅者姓名,系别)
selectID,Name,Dept
fromReader
(3)用于显示当前借阅基本信息的视图定义如下:
createviewLendview(读者编号,管理员编号,书号,借阅日期)
selectStdID,AstID,BookID,LDate
fromLend,Book
whereLend.BookID=Book.BookID
(4)用于借阅历史信息查询的视图定义如下:
createviewHistoryview(读者编号,书名,借阅日期,归还日期)
selectStdID,Title,Ldate
5.3.4建立索引
createclusteredindexPublisheronBook(Publisher);
createclusteredindexIDonStudent(ID);
5.3.5建立触发器
1.当删除Student表中某一读者基本信息时,触发Lend表,删除相应的记录
createtriggerStudent_delete
onStudent
fordelete
as
deleteLend
fromdeleted
whereLend.StdID=deleted.StdID
2.当在借阅表中增加一条借阅记录时,使该图书的状态由“可借”变为“不可借”
createtriggerLend_insert1
onLend
forinsert
declare@BookIDchar(20)
select@BookID=BookID
frominserted
updateBook
setBookState='
不可借'
whereBookID=@BookID
6具体实现
向Book表中增加书籍:
IN