图书管理系统数据库课程设计.docx
- 文档编号:28884166
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:18
- 大小:248.47KB
图书管理系统数据库课程设计.docx
《图书管理系统数据库课程设计.docx》由会员分享,可在线阅读,更多相关《图书管理系统数据库课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
图书管理系统数据库课程设计
数据库课程设计
图书管理系统
专业
学号
姓名
小组
目录
引言3
1.需求分析4
1.1分析4
1.2系统功能分析5
2.数据库功能流图5
3.数据库ER图设计6
4.数据库的建立6
5个人主要负责部分7
5.1数据库前台设计和前台与sqlserver连接7
5.2数据库存储过程,触发器,游标的建立11
5.2.2触发器16
6.总结16
引言
随着社会信息量的与日俱增,职场竞争的日趋激烈,越来越多的人更关注知识的积累、能力的培养。
作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。
在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。
对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理需要有效的图书管理软件。
对于日益扩大的图书馆,查找特定的书目总是借阅者或工作人员劳神费力,有时还没有结果。
因此往往是投入了大量的人力和财力却得不到高效的管理效率。
为了缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书借阅信息管理效率的目的,采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中。
本文以高校图书馆管理系统管理系统开发过程为背景,全文分为目录、需求分析、概要设计、逻辑设计、物理设计,以及系统的实现等全过程。
在程序设计与调试上采用了自上而下,逐步细化,逐步完善的原则。
1.需求分析
1.1分析
图书管理系统需要满足来自三方面的需求,这三个方面分别是图书借阅者、图书馆工作人员和图书馆管理人员。
图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书馆工作人员对对工作人员、图书借阅者、图书进行管理和维护,及系统状态的查看、维护。
图书馆工作人员有修改图书借阅者借书和还书记录的权限,所以需对工作人员登陆本模块进行更多的考虑。
在此模块中,图书馆工作人员可以
为图书借阅者加入借书记录或是还书记录。
对用户开放的图书查询
借阅者查看个人借阅情况信息
根据借阅情况对数据库进行操作
根据还书情况对数据库进行操作
查询及统计各种信息
维护图书信息
维护管理员信息
维护借阅者信息
处理信息的完整性
对借阅过期的图书生成报表
1.2系统功能分析
读者种类信息的修改、查询等
读者基本信息的输入
读者基本信息的查询、修改
书籍类别标准的制定、类别信息的输入
书籍类别信息的查询、修改
书籍信息的输入
书籍信息的查询、修改
借书信息的查询、修改
2.数据库功能流图
3.数据库ER图设计
4.数据库的建立
数据库共建立了6个表:
读者类别表(读者类别,允许借阅图书最大数,最长借书时间,借书证期限)
管理员信息表(管理员编号,管理员姓名,管理员性别,管理员密码,管理员电话)
借书卡信息表(读者编号,读者姓名,性别,读者类型,电话,学院,专业,借书数量,办证日期)
借阅信息表(图书编号,读者编号,借书时间,归还时间,应还时间,是否超期,罚款金额,管理员编号)
图书分类表(存放楼层,图书类别)
图书基本信息表(图书编号,书名,作者,出版社,出版日期,价格,存放楼层,库存数量)
5个人主要负责部分
5.1数据库前台设计和前台与sqlserver连接
数据库前台使用实现,设计前台时考虑了学生的借书,还书,查询书籍,查询借书记录的功能。
教师的借书,还书,查询书籍,查询借书记录的功能。
管理员的管理维护功能。
由于时间有限最终实现了学生的借书,还书,查询书籍,查询借书记录的功能。
前台的登入界面
登入学生入口可进行以下操作
借书
点提交
同时数据库借阅信息表为
还书
点击提交后
同时借阅信息表为
查询书籍
有三种方式可选
1书籍编号
2书籍名称
3书籍作者
查询借阅记录
5.2数据库存储过程,触发器,游标的建立
5.2.1建立了7个存储过
1dbo.bnaIndexBook通过输入图书的书名来查询书籍
源代码
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERprocedure[dbo].[bnaIndexBook]@bnamenchar(20)
as
select图书编号,书名,出版社,作者,出版日期,库存数量
from图书基本信息表
where书名=@bname
2dbo.bnoIndexBook通过输入图书的编号查询书籍
源代码
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERprocedure[dbo].[bnoIndexBook]@bnonchar(20)
as
select图书编号,书名,出版社,作者,出版日期,库存数量
from图书基本信息表
where图书编号=@bno
3dbo.naIndexBook通过输入作者名字查询
源代码
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERprocedure[dbo].[naIndexBook]@nanchar(20)
as
select图书编号,书名,出版社,作者,出版日期,库存数量
from图书基本信息表
where作者=@na
4dbo.Readhistory通过输入用户的编号查询借阅记录
源代码
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERprocedure[dbo].[Readhistory]@rnonchar(12)
as
select借书卡信息表.读者编号,借书卡信息表.读者姓名,图书基本信息表.书名,借阅信息表.借书时间,借阅信息表.应还时间,借阅信息表.归还时间,借阅信息表.是否超期
from借书卡信息表,借阅信息表,图书基本信息表
where借书卡信息表.读者编号=@rnoand借书卡信息表.读者编号=借阅信息表.读者编号and借阅信息表.图书编号=图书基本信息表.图书编号
5dbo.ReturnBook通过输入用户编号与书名编号实现还书
源代码
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERprocedure[dbo].[ReturnBook]@rnonchar(20),@prnonchar(12)
as
declare@retimedatetime,@rbtimedatetime
set@retime=(selectgetdate())
set@rbtime=(select应还时间from借阅信息表where@rno=图书编号and@prno=读者编号)
update借阅信息表
set归还时间=@retime
where@rno=图书编号and@prno=读者编号
update图书基本信息表
set库存数量=库存数量+1
where@rno=图书编号
update借书卡信息表
set借书数量=借书数量-1
where@prno=读者编号
if(datediff(hh,@rbtime,@retime)<0)
begin
update借阅信息表
set是否超期='否'
where@rno=图书编号and@prno=读者编号
print'学号为:
'+str(@prno)+'在'+convert(varchar(30),getdate(),111)+'成功归还图书编号为:
'+str(@rno)+'的图书,且未超时'
end
else
begin
update借阅信息表
set是否超期='是'
where@rno=图书编号and@prno=读者编号
print'学号为:
'+str(@prno)+'在'+convert(varchar(30),getdate(),111)+'成功归还图书编号为:
'+str(@rno)+'的图书,但已超时'
end
6dbo.StuBorrowBook通过输入读者的编号和书籍的编号实现学生借书
源代码
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERprocedure[dbo].[StuBorrowBook]@bnonchar(20),@pbnonchar(12)
as
declare@btimedatetime,@rbtimedatetime
set@btime=(selectgetdate())
set@rbtime=(dateadd(day,10,@btime))--学生最大借书时间为10天,最大借书数量为10
if(exists(select*from图书基本信息表,借书卡信息表,读者类别表where图书编号=@bnoand库存数量>0and借书卡信息表.借书数量<10))
begin
insertinto借阅信息表(图书编号,读者编号,借书时间,应还时间,是否超期)
values(@bno,@pbno,@btime,@rbtime,'否')
update图书基本信息表
set库存数量=库存数量-1
where图书编号=@bno
update借书卡信息表
set借书数量=借书数量+1
where读者编号=@pbno
print'学号为:
'+str(@pbno)+'在'+convert(varchar(30),getdate(),111)+'成功借阅图书编号为:
'+str(@bno)+'的图书,请及时归还'
end
else
begin
if(exists(select*from图书基本信息表,借书卡信息表,读者类别表where图书编号=@bnoand库存数量=0))
print'借书失败,已经没有库存'
else
begin
if(exists(select*from图书基本信息表,借书卡信息表,读者类别表where图书编号=@bnoand借书卡信息表.借书数量=10))
print'借书失败,您的借书数量已达上限'
else
print'借书失败'
end
end
7dbo.TeaBorrowBook通过输入读者的编号和书籍的编号实现学生借书
源代码
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERprocedure[dbo].[TeaBorrowBook]@bnonchar(20),@pbnonchar(12)
as
declare@btimedatetime,@rbtimedatetime
set@btime=(selectgetdate())
set@rbtime=(dateadd(day,20,@btime))
if(exists(select*from图书基本信息表,借书卡信息表where图书编号=@bnoand库存数量>0and借书卡信息表.借书数量<20))
begin
insertinto借阅信息表(图书编号,读者编号,借书时间,应还时间,是否超期)
values(@bno,@pbno,@btime,@rbtime,'否')
update图书基本信息表
set库存数量=库存数量-1
where图书编号=@bno
update借书卡信息表
set借书数量=借书数量+1
where读者编号=@pbno
print'学号为:
'+str(@pbno)+'在'+convert(varchar(30),getdate(),111)+'成功借阅图书编号为:
'+str(@bno)+'的图书,请及时归还'
end
else
begin
if(exists(select*from图书基本信息表,借书卡信息表,读者类别表where图书编号=@bnoand库存数量=0))
print'借书失败,已经没有库存'
else
begin
if(exists(select*from图书基本信息表,借书卡信息表,读者类别表where图书编号=@bnoand借书卡信息表.借书数量=20))
print'借书失败,您的借书数量已达上限'
else
print'借书失败'
end
end
5.2.2触发器
Warn触发器功能是当借阅信息表更新时触发,并列出已还书籍中超期的借阅信息,以便管理员做出处罚。
源代码
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERtrigger[warn]on[dbo].[借阅信息表]
forupdate
as
select图书编号,读者编号,借书时间,应还时间,归还时间
from借阅信息表
where是否超期='是'
print'这些书已经超期了'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 数据库 课程设计