图书借阅管理系统.docx
《图书借阅管理系统.docx》由会员分享,可在线阅读,更多相关《图书借阅管理系统.docx(22页珍藏版)》请在冰豆网上搜索。
图书借阅管理系统
重庆文理学院
学校图书借阅管理系统
姓名:
王崟丞
学号:
201502334079
班级:
2015级信息与计算科学
指导老师:
刘登刚
一、题目及要求说明。
题目:
学校图书借阅管理系统
I、报告题目要求
(1)任选一个项目,调查分析一个具体的或模拟的实例;
(2)描述该实例的业务信息和管理工作的要求;
(3)列出实体、联系;
(4)指出实体和联系的属性;
(5)画出E-R图;
(6)将E-R图转换成关系模式,并注明主键和外键;
(7)建立数据字典;
(8)创建数据库;
(9)根据题目的要求写查询、存储过程、触发器等。
II、项目举例
功能要求:
●实现图书信息、类别、出版社等信息的管理;
●实现读者信息、借阅证信息的管理;
●实现图书的借阅、续借、归还管理;
●实现超期罚款管理、收款管理;
●创建触发器,分别实现借书和还书时自动更新图书信息的在册数量;
●创建视图查询各种图书的书号、书名、总数和在册数;
●创建存储过程查询指定读者借阅图书的情况;
●建立数据库相关表之间的参照完整性约束。
二、说明书。
(I)问题的描述
图书馆管理系统开发。
系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。
本系统主要实现对图书借阅信息的管理,主要功能为管理有关读者、图书、借阅、征订和管理员的信息等。
图书借阅管理系统是一种基于集中统一规划的数据库数据管理新模式。
本系统主要实现对图书借阅信息的管理,主要功能为管理有关读者、图书、借阅和管理员的信息等。
图书借阅管理系统是一种基于集中统一规划的数据库数据管理新模式。
本系统结构分为基础信息维护,读者管理,图书管理,图书流通管理。
读者管理可以浏览读者的信息,可以对读者信息进行维护。
图书管理可以浏览图书的信息,可以对图书信息进行维护。
借阅管理可以显示当前数据库中书籍借阅情况,可以对借阅信息进行维护。
读者管理可以浏览读者的信息,可以对读者信息进行维护。
图书管理可以浏览图书的信息,可以对图书信息进行维护。
借阅管理可以显示当前数据库中书籍借阅情况,可以对借阅信息进行维护。
(II)需求分析
(II.1)需求分析
(II.1.1)基础信息维护
在图书借阅管理系统中,基础信息包括:
读者信息和图书信息。
这些信息可以在读者档案管理,图书档案管理中应用。
在读者档案管理中,读者的类别信息实现读者权限划分;在图书档案管理中,图书类型信息实现图书类别的划分。
(II.1.2)读者管理
管理员对读者管理可以实现浏览,添加,修改操作,在添加读者信息时需一个读者证号对读者身份进行辨别,此编号必须唯一,还需要登记读者的详细信息。
(II.1.3)图书管理
管理员对图书管理可实现添加,修改和删除操作,在添加图书信息时需给图书建立一个图书编号,编号唯一。
还需要等级图书的详细信息,在实现图书修改时,图书编号不可修改。
实现图书信息的删除时要验证图书是否归还,如没有归还,将不能实现图书的删改。
(II.1.4)图书流通管理
图书流通管理需要实现图书的借阅,归还功能。
图书的借阅时要登记读者证号和图书编号,以及管借阅和归还的时间。
图书归还要检查是否逾期,若逾期将交罚款,否则正常返还。
(II.2)系统功能结构
(1)更新图书:
管理员可对图书信息进行录入、修改、查询、删除。
(2)查询图书:
读者和管理员可随时查询图书的信息及最新入管图书。
(3)借阅图书:
读者通过浏览图书信息确定要借阅的书籍,由管理员处理借阅信息,并进行借阅登记。
(4)归还图书:
读者将已借阅的图书归还给图书馆,管理员检查图书并做相应的登记。
(5)读者注册:
读者通过注册页面,填写个人信息,系统显示信息通过后,管理员给予读者借书卡一张。
(6)续借管理:
读者想继续阅读已到归还日期的图书,可通过网上续借或当面续借。
(7)罚款处理:
读者未按时归还图书也未办理续借或照成图书损坏,则按照书馆规定由管理员处罚相应金额的罚款。
(II.3)数据流图
1顶层数据流图
2中层数据流图
3底层数据流图
(A)注册管理数据流程底图。
(B)还书管理数据流程底图。
(C)借书管理数据流程底图。
(D)图书管理数据流程底图。
(III)逻辑结构设计
(III.1)局部E-R图。
(III.1.1)注册管理E-R图
(III.1.2)还书管理E-R图
(III.1.3)借书管理E-R图
(III.1.4)图书管理E-R图
(III.2)全局E-R图。
(III.3)数据字典。
(III.3.1)数据流条目
①注册申请数据流条目
数据流名称
注册申请
简述
读者第一次想图书馆借阅书籍时需要注册登记
别名
无
组成
注册申请=申请卡号+姓名+密码+注册时间+联系方式
②图书借阅数据流条目
数据流名称
图书借阅
简述
读者向图书馆进行图书借阅是需要进行相应的登记
别名
无
组成
图书借阅=借书卡号+密码+书名+借阅数量+借阅日期
(III.3.2)存储条目
①读书信息文件条目
文件名
读者信息
简述
包括所有读者的信息
别名
无
组成
读者信息=借书卡号+姓名+密码+注册时间+联系方式
②借/还信息文件条目
文件名
借/还信息
简述
包括所有读者借书以及归还图书的所有记录
别名
无
组成
借/还信息=借书卡号+姓名+密码+借书时间+还书时间+联系方式
③图书信息文件条目
文件名
图书信息
简述
包括所有图书的信息
别名
无
组成
图书信息=图书编号+图书名称+图书位置+库存量+单价
④罚款信息文件条目
文件名
罚款文件
简述
包含所有罚款信息
别名
无
组成
罚款信息=借书卡号+密码+姓名+罚款原因+罚款金额
(III.3.3)数据项条目
1借书卡号数据项条目
文件名
借书卡号
简述
每个读者注册时的卡号
别名
无
组成
借书卡号=年份(XXXX)+月份(XX)+序号(XX)
值类型
9位数字
取值范围
2图书编号数据项条目
文件名
图书编号
简述
包括图书的具体位置
别名
无
组成
图书编号=图示类别(XXXXX)+书架号(XXXX)+序列号(XX)+图书名称(XXXXX)
值类型
17位数字
取值范围
(IV)数据库实现
(IV.1)数据库及数据库对象创建的SQL语句。
tb_reader学生表
CREATETABLE`tb_reader`(
`readerid`varchar(10)NOTNULL,
`rname`varchar(20)NOTNULL,
`sex`varchar
(2)NOTNULL,
`grade`varchar
(1)NOTNULL,
`Profession`varchar(20)NOTNULL,
`ifeffective`tinyint(4)NOTNULL,
`email`varchar(20)DEFAULTNULL,
PRIMARYKEY(`readerid`)
)
tb_manager管理员表
CREATETABLE`tb_manager`(
`managerid`varchar(10)NOTNULL,
`loginname`varchar(20)NOTNULL,
`password`varchar(20)NOTNULL,
PRIMARYKEY(`managerid`)
)
tb_borrow借阅表
CREATETABLE`tb_borrow`(
`borrowid`int(11)NOTNULLAUTO_INCREMENT,
`bookid`varchar(10)NOTNULL,
`readerid`varchar(10)NOTNULL,
`managerid`varchar(10)NOTNULL,
`borrowTime`datetimeNOTNULL,
`backTime`datetimeNOTNULL,
`ifreborrow`tinyint(4)NOTNULL,
PRIMARYKEY(`borrowid`)
)
tb_book图书表
CREATETABLE`tb_book`(
`bookid`varchar(10)NOTNULL,
`bname`varchar(20)DEFAULTNULL,
`type`varchar(20)DEFAULTNULL,
`author`varchar(20)DEFAULTNULL,
`price`float(10,2)DEFAULTNULL,
`publish`varchar(20)DEFAULTNULL,
`quantity`tinyint(4)NOTNULL,
`remain`tinyint(4)NOTNULL,
PRIMARYKEY(`bookid`)
)
tb_punishment超期处罚表
CREATETABLE`tb_book`(
`bookid`varchar(10)NOTNULL,
`bname`varchar(20)DEFAULTNULL,
`type`varchar(20)DEFAULTNULL,
`author`varchar(20)DEFAULTNULL,
`price`float(10,2)DEFAULTNULL,
`publish`varchar(20)DEFAULTNULL,
`quantity`tinyint(4)NOTNULL,
`remain`tinyint(4)NOTNULL,
PRIMARYKEY(`bookid`)
)
tb_purview管理员权限设置表
CREATETABLE`tb_book`(
`bookid`varchar(10)NOTNULL,
`bname`varchar(20)DEFAULTNULL,
`type`varchar(20)DEFAULTNULL,
`author`varchar(20)DEFAULTNULL,
`price`float(10,2)DEFAULTNULL,
`publish`varchar(20)DEFAULTNULL,
`quantity`tinyint(4)NOTNULL,
`remain`tinyint(4)NOTNULL,
PRIMARYKEY(`bookid`)
)
(IV.2)存储过程
创建存储过程,输入读者id查询出书名、借阅时间、归还时间、管理员id、是否续借情况
createprocedurep
@readerid_invarchar(10),
@bookid_invarchar(20),
@bname_outvarchar(20)output,
@borrowTine_outdatetimeoutput,
@backTime_outdatetimeoutput,
@managerid_outvarchar(20)output,
@ifxeborom_outtinyintoutput
as
select
@bname_out=bname,@borrowTime_out=borrowTime@backTime_out
=backTime,@managerid_out=managerid,@ifreborrow_out=ifreborrow
fromtb_book,tb_borrow
wheretb_borrow.readerid=@readerid_inand
tb_borrow.bookid=@bookid_inandtb_book.bookid=b_borrow.bookid
存储过程使用
declare@readerid_invarchar(10),
@bookid_invarchar(20),
@bname_outvarchar(20),
@borrowTime_outdatetime,
@backTime_outdatetime,
@managerid_outvarchar(10),
@ifreborrow_outtinyint
select@readerid_in='2010508033'
seleet@bookid_in='005'
execp@readerid_in,@bookid_in,@bname_out
output,@borrowTime_outoutput,@backTime_out
output,@managerid_outoutput,@ifreborrow_outoutput
print'书名:
'+@bname.out
print'借书吋囘:
'+rtrim(@borrowTime_out]
print'还书肘囘:
'+tim(@backTime_out}
print'管理员编号:
'+@managerid_out
print'是否续借:
'+rtrim(@ifreborrow_out)
(IV.3)触发器
(IV.3.1)借书触发器。
当借书时,图书表中的remain(剩余图书)自动减一。
createtriggert_borrow
ontb_borrowforinsert
as
declare@bookid_readvarchar(10)
select@bookidread=bookidfrominserted
begin
updatetb_booksetremain=remain-1wherebookid=@bookid_read
End
(IV.3.2)还书触发器。
当还书时,图书表中的remain自动加一。
createtriggert_back
ontb_borrowforupdate
asifupdate(backTime)
declare@bookid_readvarchar(10}
select@bookid_read=bookidfrominserted
begin
updatetb_booksetremain=remin+1wherebookid=@bookid_read
End
(IV.3.3)罚款触发器,当借阅图书短期时,自动在punishment表中添加罚款记录。
记录罚款读者、书名、天数、金额并且自动将reader表中的ifeffective置为0,使该读者不能再借书。
createtriggert_punish
ontb_borrowforupdate
as
ifupdate(backTime)
begin
declare@backTimedatetine,
@borrowTimedatetime,
@ifxeborrowtinyint,
@daysint,
@days1int,
@bmoneyint,
@readeridvarchar(10),
@bookidvarchar(10)
select@backTime=backTimefrominserted
select@borrowTime=borrowTimefrominserted
select@ifreborrow=ifreborrowfrominsented
select@day=convert(int,@backTime)-convert(int,@boxrowTime)
select@readerid=readeridfrominserted
select@bookid=bookidfrominserted
if@days>30
begin
if@ifreborrow=1
begin
if@days>60
begin
select@days1=@days-60
select@money=@days1*0.1
insertinto
tb_punishment(readerid,bookid,days,bmoney)
values(@readerid,@bookid,@days1,@bmoney)
updtetb_readersetifeffective=0whexe
readerid=@readerid
end
end
if@ifreborrow=0
begin
select@days1=@day-30
select@money=@days1*0.1
insertinto
tb_punishment(@radeeid,bookid,days,bmoney)
values(@readerid,@bookid,@days1,@bmoney)
updatetb_readersetifeffective=0where
readerid=@readerid
end
end
end
(IV.3.4)读者是否有效触发器。
当读者借书时,检查reader表中的ifeffective属性,若为0则说明有短期罚款,不能借书。
creztetriggert_ifcanborrow
ontb_borrowforinsert
declare@readeridvarchar(10),
@ifeffectivetinyint
select@readerid=readeridfrominserted
select@ifeffective=ifeffectivefromtb_readerwhere
readerid=@readerid
if@ifeffective=0
begin1
print'您有短期罚款'
rollbacktransactiom
end
(IV.4)视图
创建视图查询各种图书的书号、书名、总数和在册数。
createviewview_query
asselectbookid,bname,quantity,remainfromtb_book
创建视图查询读者的短期罚款情况。
其中包括读者号。
读者姓名。
罚款书名,罚款金额。
createviewview_reader
asselecttb_punishment.readerid;,rname,bname,bmoneyfrom
tb_pumishment,tbbook,tb_readerwhere
tb_pumishment.bookid=tb_book.bookidand
tb_punishment.readerid=tb_reader.readerid
(V)结论
一、数据库主要知识点
我们首先从第一章绪论了解了数据库的概念,其中有几个较为重要的知识点,即数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)的概念以及数据库管理员(DBA)的职责。
此外本章还介绍了数据库发展的三个阶段:
人工管理阶段、文件系统阶段和数据库系统阶段。
第二章介绍了数据模型和三层模式数据库。
本章要求我们理解实体-联系方法,并学会绘制E-R图。
此外还应掌握概念数据模型的意义和传统的三大数据模型,以及数据独立性和数据库三层模式结构。
接着开始着重讲述现在普遍使用的关系数据库。
包括关系数据模型的数据结构和基本术语,关系模型的完整性约束和关系代数运算。
重点是关系模式完整性的分类和功能,以及关系代数中集合运算和关系运算。
最后介绍了关系数据库系统的三层模式结构。
第五章系统讲述了关系数据库的标准语言SQL的定义功能、查询功能、操作和控制功能。
重点在于数据查询功能。
另外还介绍了视图的用法和动态SQL中定义、操作和查询功能。
第六章的知识点有:
存储过程的创建和执行过程、修改和删除;触发器的基本概念,建立,插入和删除视图,插入、删除和更新类触发器。
最后介绍了数据完整性。
第七章介绍安全性,包括安全性措施的层次、数据库管理系统的安全功能等,用户管理和角色管理,权限管理。
其他的安全问题包括:
数据加密、审计、统计数据库和用户定义的安全性措施。
事务管理这一章首先介绍了事务的概念、性质以及
SQL对事务的支持。
并发控制——干扰问题、可串行性、封锁、死锁、隔离级别、封锁与隔离级别;恢复——故障类型、备份类型、日志的概念、恢复模型、备份转储、还原。
第九章为关系数据理论:
函数依赖术语和符号;函数依赖的公理系统——Amstrong公理的内容及其正确性、逻辑蕴含和闭包、公理的完备性、闭包的计算、函数依赖集的等价和最小化;规范化——1NF、2NF、3NF、BCNF;模式分解。
第十章:
数据库设计。
完善E-R模型中的概念——弱实体,依赖关系,强制联系;数据库设计的过程主要掌握其建立的步骤。
第十一章介绍面向对象数据库:
新的数据库应用和新的数据库类型;面向对象的数据模型——对象与类;对象的属性、方法和状态、对象的交互和消息、类的确
定和分化、封装、继承、多态;对象关系数据库与对象数据库;面向对象数据库的研究。
十二章“数据库应用的结构和开发环境”并非重点,而第十三章的内容在软件工程课程中就已经掌握,所以这两章的知识点就略过了。
第十四章分布式数据库与分布式数据管理:
概念;分布式数据库的分布方式;分布式数据库特点和目标——更新传播、分布式查询处理、目录表管理、分布式事务管理;SQLServer的复制及其术语、复制模型。
十五章数据仓库:
概念;结构;数据仓库系统;建立数据仓库系统;实现数据仓库的数据库模型;数据仓库与决策支持。
最后,数据库研究和应用的新领域这一章中掌握知识库的知识即可。
二、学习数据库的心得
SQL(结构化查询语言)是用于执行查询的语法。
但是SQL语言也包含用于更新、插入和删除记录的语法。
查询和更新指令构成了SQL的DML部分:
SELECT-从数据库表中获取数据UPDATE-更新数据库表中的数据DELETE--从数据库表中删除数据INSERTINTO-向数据库表中插入数据SQL的数据定义语言(DDL)部分使我们有能力创建或删除表格。
我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL中最重要的DDL语句:
CREATE
DATABASE-创建新数据库ALTERDATABASE-修改数据库CREATETABLE-创建新表ALTERTABLE-变更(改变)数据库表DROPTABLE-删除表CREATEINDEX-创建索引(搜索键)DROPINDEX-删除索引