图书借阅管理系统.docx
- 文档编号:5359679
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:19
- 大小:1,004.22KB
图书借阅管理系统.docx
《图书借阅管理系统.docx》由会员分享,可在线阅读,更多相关《图书借阅管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
图书借阅管理系统
图书借阅管理系统
重庆文理学院
学校图书借阅管理系统
姓名:
王崟丞
学号:
201502334079
班级:
2015级信息与计算科学
指导老师:
刘登刚
信息,并进行借阅登记。
(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-删除索引数据库有保持数据的独立性,所谓数据独立,是指存储在数据库中的数据独立于处理数据的所有应用程序而存在。
也就是说,数据是客观实体的符号化标识,它就是一个客观存在,不会因为某一项应用的需要而改变它的结构,因此是独立于应用而存在着的客观实体。
而某一项应用是处理数据获取信息的过程,也就是应用程序,它只能根据客观存在着的数据来设计所需要的数据处理方法,而不会去改变客观存在着的数据本身。
数据库的传统定义是以一定的组织方式存储的一组相关数据的集合,主要表现为数据表的集合。
根据标准,SQL
语句按其功能的不同可以分为以下6大类:
数据定义语句(Data-DefinitionLanguage,DDL);数据操作语句(Data-ManipulationLanguageSQLServer2005功能,DML);操作管理语句(Transaction-ManagementLanguage,TML);数据控制语句(Data-ControlLanguage,DCL);数据查询语句(Data-QueryLanguage,DQL);游标控制
语句(Cursor-ControlLanguage,CCL)。
这门课中仍然有许多不太懂的地方,还需要以后进一步学习。
三、对如何学好数据库的个人看法
1、首先从个人自学方面,由于数据库的内容较多,所以老师在教学时不是将每个知识点都精细地教授于我们,所以总体看来,该门课在上的时候,各知识点之间的衔接性不是很强,所以,这就要求我们,在学习该门课之前做好预习的准备,当然在上课时的认真听讲这是必要的,除此之外,在课后还要对上课的内容进行咀嚼,还有就是对相应的习题进行一定题量的练习,对不会的题目要反复斟酌,在这可以通过向同学或老师请教,从而达到解决,切不可对不会的题目放之任之,从而盲点越积越多,最终影响对数据库学习的积极性。
以上是对理论知识的学习方法,那么对于数据库的实验课学习来说,两者学习方式基本一样,只是通过上机课,来对理论知识进行实践,同时,也加深了对理论知识的认识的深度。
2、学习有时候不仅仅只是个人自闭的学习,我们不能将自学理解为自己一个人学习,而真的的会学习,或者说是效率更高的学习,是一种团队精神的学习,因为每个人看待问题的角度是不同的,通过和同学,老师的不断交流中,我们可以对某一事物有更深层次的理解,从而达到事半功倍的效果,省得我们一个人去钻牛角尖,最终问题还得不到有效地解决,所以,总结来说,学好数据库出个人的自学方面以外,还要加强和其他人的交流,创造一个好的学习氛围,为学好数据库做铺垫。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 借阅 管理 系统