验报告
课 程: 数据库技术与应用 班 级: 自动化1001班 姓 名: 王艺霖 指导老师:安剑奇
2012年1月8日
目 录
一、摘要 ....................................................................................... - 1 - 二、需求分析 ............................................................................... - 1 - 系统综合需求 ......................................................................... - 2 - 系统的逻辑模型设计 ............................................................. - 3 - 三、系统设计 ............................................................................... - 8 - 概念结构设计 ......................................................................... - 8 - 逻辑结构设计 ....................................................................... - 10 - 系统功能模块图 .................................................................... - 11 - 四、详细设计 .............................................................................. - 11 - 五、系统实现与测试 ................................................................. - 17 - 六、课程设计总结 ..................................................................... - 20 - 七、参考文献 ............................................................................. - 21 -
图书借阅管理系统实验报告
一、摘要
图书管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护
以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对图书信息进行管理,有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高图书管理的效率,也是图书馆的科学化、正规化管理,是与世界接轨的重要条件。
学校图书馆每天有大量的老师和同学到图书馆借阅书籍。记录图书借阅情况是非常烦琐工作。使用计算机可以高速,快捷地完成工作。有鉴于此,开发一套图书馆信息管理系统,是十分必要的。该系统对于不同的借阅者有着不同的借阅方式,并实现了新进图书的数据录入;对购进图书的分类查询和分类统计;也能够按照书名、作者等对图书进行数量查询;还有实现了借还书的操作。
二、需求分析
需求分析就是从用户的角度,在满足用户的功能要求的基础上,通过自己的理解,将系统功能设计的更加人性化。对于图书借阅管理系统,具体的来说可以分为两个部分,一是向图书馆中输入图书,由于各类图书的不断出版,图书馆也要相应的跟着更新,因此,对于图书库存的管理应是动态的,这其中最重要的一点便是对图书信息的录入;此外由于图书不断的流动,损坏或丢失是不可避免的,因此,对于图书的减少也要予以考虑。第二点功能是借阅,借阅图书的对象有两类,一是学生,一是教师,在此系统中,这两者并无本质的区别(权限相同),只是由于身份不同,便于区分而已。此外,本系统很人性化的一点是设置了游客一角色,因为考虑到可能有些读者只是想了解书籍信息而并非想进行繁琐的借书查询过程,因此,对于游客,我们只开放查询功能,而对于其他诸如借书,还书,已借等窗口一概不对其开放。
- 1 -
图书借阅管理系统实验报告
系统综合需求:
1.基本功能要求
1.1图书管理员对书籍的管理: 书籍类别的管理:
图书馆中的书是分类放置的,所以实现增加、删除、查询的管理。 书籍信息的管理:
新书入库,图书购入后由管理人员将书籍编码并将其具体信息录入书籍信息表。管理员和读者还可以按不同的方式查询。 图书的挂失:
某图书因为各种的原因造成图书的遗失或损害,从而变得没有再使用的价值了,这些图书就要在图书书籍信息表给于标记
1.2读者管理
读者可以实现对图书信息的检索,如:按作者、书名、出版社、关键字的
检索从而很好的帮助了读者有效的查找目标书籍;还有读者可以实现对读者个人信息检索,获取当前读者的个人信息。并且可以查询当前读者的借书情况等。
1.3 借阅管理 还书管理:
提供读者ID号,在借阅表删除该记录,然后更新图书表中的信息。
借书管理:
根据读者ID号和图书编号,进行借书登记。在借阅表中插入 一条借录,更新图书表中的信息。
2.性能要求
- 2 -
图书借阅管理系统实验报告
性能的要求在精度方面,我们根据使用的需要,在各项的数据输入、输出及传输过程中,可以满足各种精度的要求。如:根据关键字精度的不同,查找可分为精度查找和模糊查找,精确查找指的是读者知道数目、作者等进行的查找,而模糊查找就是只要输入满足与输入关键字想匹配的字符既可以输出,供读者查找。
3.运行要求
系统客户端、服务器(C/S架构)运行在windows平台下。设计环境和开发工具:后台数据库管理系统选用的是SQL server 2000。前台开发工具选用的是Delphi7。
系统的逻辑模型设计:
1、顶层数据流图
游客查询图书读者操作验证读者信息读者信息删除,添加用户管理员图书管理图书的录入与删除借阅,归还,续借全部图书信息查询,修改密码用户管理查询图书图书库存
- 3 -
图书借阅管理系统实验报告
2、用户借书数据流图
借阅借借书信息书信息读者借书操作查询信息判断能否借查询信息办理借书图书查询书手续借书结果查询结果查询图书信息图书被借图书
3、图书挂失数据流图
存在借阅书籍修改管理员查找挂失图书图书信息核对借阅信息借阅信息
4、读者信息查询数据流图
- 4 -
图书借阅管理系统实验报告
个人信息查询内容读者登入查看信息查询查询内容读者借阅信息查询内容图书信息
5、读者管理数据流图
管理 管理员管理读者用户添加、删除、挂失、查看读者信息
6、数据字典
2.1读者信息(reader)表
字段名 rID rname rpswd sex tel count pmoney rstatus
- 5 -
数据类型 varchar varchar varchar char varchar int float varchar 10 20 10 2 15 4 10 6 长度 是 否 否 否 否 否 否 否 主键 描述 读者ID 姓名 密码 性别 电话号码 历史借阅量 欠费总额 账号状态 图书借阅管理系统实验报告
2.2罚款信息(fine)表
字段名 barcodeNO rID fineprice 数据类型 varchar varchar money 15 10 8 6 6 长度 是 是 否 否 否 否 主键 描述 条码号 读者ID 罚款金额 实还时间 欠款状态 图书归还状态 freturntime datetime fstatus bstatus varchar varchar 2.3管理员信息(admin)表 字段名 aID aname apswd 数据类型 varchar varchar varchar 10 20 10 长度 是 否 否 主键 描述 管理员ID 管理员姓名 管理员密码 2.4 学生信息(student)表
字段名 sID sname sdept ssex sprofession 数据类型 varchar varchar varchar varchar varchar 10 20 20 2 20 长度 是 否 否 否 否 主键 描述 学生ID 学生姓名 系别 性别 专业 2.5教师信息(teacher)表
字段名 tID tname tdept tsex 数据类型 varchar varchar varchar varchar 10 20 20 2 长度 是 否 否 否 主键 描述 教师ID 教师姓名 系别 性别 2.6图书信息(book)表 - 6 -
图书借阅管理系统实验报告
字段名 barcodeNO ISBN callNO status 数据类型 varchar varchar varchar varchar 15 20 10 6 长度 是 否 否 否 主键 描述 条码号 ISBN号 索书号 书籍状态 2.7借阅信息(borrowedbook)表
字段名 barcodeNO rID borrowtime returntime 数据类型 varchar varchar datetime datetime 15 10 长度 主键 是 否 否 否 描述 条码号 读者ID 借书时间 还书时间
2.8入库信息(iobook)表
字段名 ioISBN iocallNO iobtype iobname ioauthor iopublish ioprice ioamount ioname iopubtime iotime 数据类型 varchar varchar varchar varchar varchar varchar float int varchar varchar datetime 20 10 20 30 20 30 4 20 10 长度 主键 是 否 否 否 否 否 否 否 否 否 是 描述 入库ISBN 入库索书号 入库类型 入库书名 入库书籍作者 入库书籍出版社 入库价钱 入库数量 购书员 出版时间 入库时间 - 7 -
图书借阅管理系统实验报告
三、系统设计
概念结构设计
实体E-R图
1、读者表的E-R图
借阅总量欠款总额读者类型读者帐号状态读者ID姓名密码性别电话
2、管理员表的E-R图
管理员帐号
密码姓名 3、学生表的E-R图
- 8 -
图书借阅管理系统实验报告
学生学号姓名系别专业性别
4、教师表的E-R图
教师教师编号姓名系别性别
5、图书表的E-R图
作者条码号索书号出版社 图书价格图书类型出版日期书名 7、包含各个实体的总体E-R图
- 9 -
图书借阅管理系统实验报告
管理员ID姓名密码管理员添加删除查看借阅总量欠款总额读者类型帐号状态电话姓名性别密码1查看挂失mnn添加删除查看图书类型挂失挂失管理借阅管理m1出版日期索书号条码号出版社读者操作续借m图书书名价格归还作者读者ID图书条码号欠款状态欠款金额属于n还书时间账户清单图书归还状态
逻辑结构设计
根据E-R图,在消除冗余等情况下实现向关系模式的转换
读者(rID,姓名,密码,性别,电话号码,借阅量,欠费总额,账号状态) 管理员(aID,姓名,密码)
学生(sID,姓名,系别,性别,专业) 图书(条码号,ISBN,索书号,书籍状态) 教师(tID,姓名,系别,性别)
借阅(条码号,rID,借书时间,还书时间)
罚款(条码号,rID,罚款金额,还书时间,欠款状态,图书归还状态) 入库(入库ISBN,入库时间,入库索书号,入库类型,入库书名,入库书籍,
作者,出版社,入库价钱,入库数量,购书员,出版时间)
- 10 -
图书借阅管理系统实验报告
系统功能模块图
图书馆管理系统游客读者子系统管理员子系统图书查询图书续借图书挂失账目清单已借图书查询帐号挂失图书挂失修改密码图书借阅图书归还读者管理修改密码图书查询图书管理添加用户删除用户修改用户密码用户挂失取消挂失用户查询添加图书删除图书入库图书查询图书挂失
四、详细设计
一、部分存储过程代码流程图
1.1借书存储过程 代码:
create proc reader_borrowbook
@rID varchar (10),@barcodeNO varchar (15), @return int output as
declare @type varchar(5)
if exists (select * from reader where @rID=rID and rstatus='使用中')
- 11 -
图书借阅管理系统实验报告
begin
if exists (select * from book where @barcodeNO=barcodeNO AND status IN ('可借','不可借')) begin
if not exists (select * from borrowedbook where @rID=rID and
getdate()-returntime>0)
begin
if not exists (select * from borrowedbook where
@barcodeNO=barcodeNO)
begin
if not exists (select * from fine where @rID=rID and fstatus='未还') BEGIN
set @type=(select type from reader where @rID=rID) if @type='学生' begin
insert into borrowedbook (rID,barcodeNO,returntime) VALUES(@rID,@barcodeNO,GETDATE()+30) end else begin
insert into borrowedbook (rID,barcodeNO,returntime) VALUES(@rID,@barcodeNO,GETDATE()+60) end
INSERT INTO fine (barcodeNO,rID) values(@barcodeNO,@rID) update book
set status='不可借' where barcodeNO=@barcodeNO update reader set count=count+1
where rID=@rID set @return=1--借阅成功 END ELSE
set @return=0--欠款未还
end else set @return=2--该书已被借阅
end else set @return=3--有书超期不允许借阅 end else set @return=4--不存在此书 end else set @return=5---账户挂失不可借书 go
流程图:
- 12 -
图书借阅管理系统实验报告
开始读者是账号状态正常?否是书存在且状态可借?否账户挂失不可借书!否借阅表存在且超期?是该书已被借阅!否书籍是否在借阅表?是有书超期不允许借阅!是是否欠款未还?否不存在此书!欠款未还在借阅表插入教师或学生的记录并且更新书籍状态和读者历史借阅量且在罚款表中记录信息借阅成功!结束
1.2还书存储过程 代码:
create proc returnbook @barcodeNO varchar (15)=' ', @return int output as
declare @returntime datetime,@borrowtime datetime,@rID varchar(15) set @returntime=(select returntime from borrowedbook where
@barcodeNO=barcodeNO)--从借阅表获得图书应该归还时间 set @rID=(SElect rID FROM borrowedbook WHERE @barcodeNO=barcodeNO) if exists (select * from borrowedbook where barcodeNO=@barcodeNO) begin
- 13 -
图书借阅管理系统实验报告
delete borrowedbook
where barcodeNO=@barcodeNO
if(getdate()>@returntime)--如果图书超期归还不删除账单记录 begin
update fine
set freturntime=getdate()
where barcodeNO=@barcodeNO and @rID=rID update fine
set bstatus='已还'
where barcodeNO=@barcodeNO update book
set status='可借'
where barcodeNO=@barcodeNO update fine
set fineprice=convert(money,(getdate()-@returntime))*0.1 where barcodeNO=@barcodeNO and @rID=rID update fine
set fstatus='未还'
where barcodeNO=@barcodeNO AND @rID=rID set @return=-1 end else begin
update book
set status='可借'
where barcodeNO=@barcodeNO delete fine
where @rID=rID and barcodeNO=@barcodeNO set @return=1 end end else
set @return=0 --归还失败 go
流程图:
- 14 -
图书借阅管理系统实验报告
开始读者是是否在借阅表中?否删除借阅信息没有借阅,归还失败!否是是否超期?更新图书表中的图书状态更新罚款表标志已还,记录欠款金额,更新图书表中图书状态.归还成功结束
图书归还存储过程流程图
1.3续借存储过程 代码:
create proc reader_reborrowed_book
@rID varchar(15), @barcodeNO varchar(10), @return int output as
declare @type varchar(5)
exec admin_updatemoney @rID --更新欠款金额
if exists (select * from reader where @rID=rID and pmoney=0) --检查是否欠款 begin
if exists (select * from borrowedbook where @rID=rID and @barcodeNO=barcodeNO and DATEDIFF(DAY,returntime,GETDATE())<0)---检查是否借了要续借的书并且没有超期 begin
set @type=(select type from reader where @rID=rID) update borrowedbook set borrowtime=GETDATE()where @rID=rID AND @barcodeNO=barcodeNO
if @type='学生'
update borrowedbook set returntime=GETDATE()+30 where
- 15 -
图书借阅管理系统实验报告
@rID=rID AND @barcodeNO=barcodeNO else
update borrowedbook set returntime=GETDATE()+60 where @rID=rID AND @barcodeNO=barcodeNO set @return=1
update reader set count=count+1 where @rID=rID --借书次数加 end else set @return=2 end else set @return=3
流程图:
开始输入ID号更新欠款金额否是否欠款?是是否是否续借时没有超期?当前欠款,不允许续借!更新借阅表借阅时间为当前时间,并更新超期欠费,请先还教师(学生)的应还款!时间结束借书存储过程流程图
二、触发器代码及主要功能
usb library_system
create trigger tjy-insert on reader for insert as begin
update reader set
- 16 -
图书借阅管理系统实验报告
借书数=借书数+1
Where reader.sID in
(select inserted.sID From insterted) Update iobook set
ioamount = ioamount -1 Where iobook.isbn in
(select inserted.isbn From inserted) end
功能:
当读者借阅一本图书以后,相应reader表中的count属性会加一,而图书表中的库存量会相应减一。
五、系统实现与测试
开发平台: 前台选用的是delphi7;后台用的是sql2000编程
系统部分功能测试截图及相关说明
登入界面测试:
说明:可以以四种身份登录,分别是学生、教师、管理员、游客,学生账号是0909100110,初始密码123456,登录界面如下图。在主菜单中点击‘注销’,即返回上述界面,可以重新以不同身份登录
欢迎界面界面测试:
- 17 -
图书借阅管理系统实验报告
说明:上图为以学生身份登录时的界面,右下角显示系统时间
用户信息界面测试:
说明:上图为学生身份登录后的界面,可以看到学生的详细信息
书刊管理面界面测试:
- 18 -
图书借阅管理系统实验报告
说明:实现图书入库、出库、查看 动态更新馆藏图书信息
读者管理界面测试:
说明:实现对读者添加、删除、查看、挂失、修改密码功能
- 19 -
图书借阅管理系统实验报告
六、课程设计总结
对于这次数据库的课程设计,我有很多感触,总结起来可以分为以下几个方面: 1、 设计数据库真的是一个浩大的工程。就像我们的选课系统,其实就是一个‘B/S’
架构的数据库,用了它一年多,从来没有思考过它是如何实现的,直到数据库这门课要求我们做一个类似的系统,我才发现,其中学问颇多。同时,当听安老师娓娓道来一个具有功能的系统可以通过sql和诸如C++等前台工具实现时,突然觉得这是如此有意思,对它兴趣倍增!第一次听到‘前台’和‘后台’这两个名词,从老师口中得知一个应用系统要分两方面设计,这或许就是我认识数据库的第一步。
2、 真正开始做这个系统是在数据库的课上了几周以后,对sql有了一个比较浅层了解。
其实设计过程中我走了不少弯路,起初只是想赶快弄出一个像样的东西,于是就忙于delphi中一个一个窗体建立,可是由于缺乏后台数据库的支撑,导致在前台中的‘connection’和‘data source’无法确定,所以最后,当我窗体建了很多之后,却不能运行。看到运行结果错误一堆一堆时,感觉很迷茫,很沮丧。 3、 后来,当安老师在课上提到了需求分析这一词时,我如何至宝,这真的是一语点
醒梦中人啊,我突然领悟到,原来需求分析可以帮助我确定设计方向,确定整体框架。漫无目的的努力只能是事倍功半!果然,当把需求分析做了以后,我发现,其实大系统是可以通过一个一个小模块实现的;同时,这也大大减少了错误的出现,每一个小功能都运行一次,错误就很容易找了。
4、 最后,我想说,这门课教会了我很多东西,培养了我很多能力,而我认为这其中
最重要的便是自学能力。前台语言的学习真的不是一个容易的任务,认识一个陌生的事物是需要花费很多精力和时间的,但是就是在我解决了一个个疑惑后,我发现,每一次的解决都让我对这个新事物有了一个深层的理解,而解决疑惑的过程其实是就是培养能力的过程。因此,如果让如今的我再去设计一个什么软件,我想我可能就没有那么迷茫,那么不知所措了吧!
- 20 -
图书借阅管理系统实验报告
七、参考文献
《Delphi毕业设计指南与项目实践》杨永 科学出版社 2008 《数据库系统概论》 王珊 高等教育出版社 2009
《Delphi简明教程:高等学校计算机教材》刘瑞河/兰红 清华大学出版社 2005 《Delphi完全自学手册》梁水 人民邮电出版社2010
《Delphi程序设计教程(第二版)》杨长春
清华大学出版社 2008年1月
- 21 -
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务