数据库课程设计报告图书借阅管理系统.docx
- 文档编号:12249051
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:16
- 大小:436.67KB
数据库课程设计报告图书借阅管理系统.docx
《数据库课程设计报告图书借阅管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告图书借阅管理系统.docx(16页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告图书借阅管理系统
课程设计题目:
图书借阅管理系统
一、课题介绍与思路分析
1、实验目的:
通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力。
2、课题描述:
描述:
设计一个图书借阅管理系统,实现下列功能:
1.图书信息的维护(包括录入,修改和删除);
2.读者信息的维护(包括录入,修改和删除);
3.借阅(借,还)信息的维护(包括借,还信息录入,修改和删除);
3、实现思路:
由于我所做的是关于图书借阅的一个管理系统,
所以我打算从以下几个方面着手解决这个实验课题:
(1)、确定表的方法
首先:
简单分析图书借阅的基本情况
其次:
由至上而下的模式简略地画出系统需求分析图
再次:
根据系统需求分析逐个画出局部E-R图
接着:
分析各个局部E-R图之间的潜在冲突
然后:
整合调节E-R图,画出全局E-R图
紧接着:
大致列出表,并利用第三范式分析表之间的函数依赖关系
最后:
最终确定表
(2)、对数据库代码设计的方法
首先:
根据表提供的数据建立数据库的基本表
其次:
对基本表插入数据,完成对基本表的完善
再次:
根据基本表建立视图(我省略了)、索引(我省略了)、存储过程、触发器
最后:
调试并修改,最终完成数据库代码设计
4、参考资料:
(1)、《数据库原理及应用教程(第二版)》陈志泊主编,陈志泊王春玲编著
(2)、《SQLServer2000开发与管理应用实例(中文版)》邹建编著
2、设计与实现过程
1、系统需求分析:
对于图书借阅管理系统的借阅问题,出于对整体数据库建立的需要,我先做了一个
需求分析。
该分析中,我以至上而下的模式展开,将需求分成若干个子模块,并对每个进行属性分析。
与此同时,考虑到问题的实际操作性,又将部分模块合并到某些具体的模块中,比如图书管理模块,我直接将其放入借书信息和借书管理两模块中考虑,而不对图书管理这一模块直接考虑。
但是,由于时间有限,所以我干脆忽略在实际操作中需要考虑的续借模块,而将续借模块简化后放入借书信息模块中,这是我设计中的一个瑕疵。
2、E-R图设计
我分两个步骤完成E-R图设计
首先完成局部E-R图,然后完成整体E-R图设计
<1>、局部E-R图设计
(1)、图书信息E-R图设计:
(2)、借书信息E-R图设计:
(3)、借者信息E-R图设计(4)、还书信息E-R图设计
<2>、整体E-R图设计
实体为:
图书信息、借书信息、借者信息、还书信息
联系为:
图书信息---借书数量---借书信息、图书信息---还书数量---还书信息
借书信息---借阅资格---借者信息、借书信息---是否逾期---还书信息
借者信息---还书日期---还书信息
3、基本表的设计
代码如下:
<1>、图书信息表:
createtableB_I--------------B_I全称BookInformation,即图书信息
(
书名char(30),
书编号char(10),
价格numeric(5,2),
作者char(10),
出版社char(30),
库存量int,
借出量int
)
<2>、借书信息表:
createtableB_B_I-------------B_B_I全称Borrowbooksinformation,即借书信息
(
书编号char(10),
借者姓名char(10),
借书日期datetime,
借书期限datetime,
借书数量smallint,
续借日期datetime,
续借数量smallint
)
<3>、还书信息表:
createtableA_B_I----------------B_A_I全称Alsobooksinformation,即还书信息
(
书编号char(10),
还书日期datetime,
借者姓名char(10)
)
<4>、借者信息表:
createtableB_B_P-------------B_B_P全称Borrowbookspeople,即借书人
(
借者姓名char(10),
系别char(30),
性别char
(2)default'女'
)
4、存储过程及触发器的建立
<1>、存储过程的建立:
/*..........将新信息系插入图书信息表.................*/
createprocedureB_I_insert(
@书名char(30),
@书编号char(10),
@价格numeric(5,2),
@作者char(10),
@出版社char(30),
@库存量int,
@借出量int)
as
insertintoB_Ivalues(@书名,@书编号,@价格,@作者,@出版社,@库存量,@借出量)
execB_I_insert'WindonsCE嵌入式系统','000009','34.5','何倧键','北京航空航天大学出版社','27','12'
select*fromB_I
/*..........对图书信息表进行必要的修改...............*/
createprocedureB_I_update(
@书编号char(10),
@价格numeric(5,2),
@库存量int,
@借出量int)
as
updateB_I
set价格=@价格,库存量=@库存量,借出量=@借出量
where书编号=@书编号
execB_I_update'000008','51.5','2','11'
select*fromB_I
/*...........删除图书信息表的信息.....................*/
createprocedureB_I_delete(
@书编号char(10))
as
delete
fromB_I
where书编号=@书编号
execB_I_delete'000001'
select*fromB_I
/*..........将新信息系插入借书信息表.................*/
createprocedureB_B_I_insert(
@书编号char(10),
@借者姓名char(10),
@借书日期datetime,
@还书日期datetime,
@借书数量smallint)
as
declare@timedatetime
set@time=getdate()
set@借书日期=@time
set@还书日期=@借书日期+90
insertintoB_B_Ivalues('@书编号','@借者姓名','@借书日期','@还书日期','@借书数量')
execB_B_I_insert'000001','叶忠雪','','','1'
select*fromB_B_I
/*..........对借书信息表进行必要的修改...............*/
createprocedureB_B_I_update(
@书编号char(10),
@借者姓名char(10),
@借书数量smallint)
as
updateB_B_I
set借者姓名=@借者姓名,借书数量=@借书数量
where书编号=@书编号
execB_B_I_update'000003','周宇珑','3'
select*fromB_B_I
/*...........删除图书信息表的信息.....................*/
createprocedureB_B_I_delete(
@书编号char(10))
as
delete
fromB_B_I
where书编号=@书编号
execB_B_I_delete'000004'
select*fromB_B_I
/*..........将新信息系插入还书信息表.................*/
createprocedureA_B_I_insert(
@书编号char(10),
@还书日期datetime,
@借者姓名char(10))
as
insertintoA_B_Ivalues('@书编号','@还书日期','@借者姓名')
execA_B_I_insert'000005','2012-1-6','杨鸿文'
select*fromA_B_I
/*..........将新信息系插入借者信息表.................*/
createprocedureB_B_P_insert(
@借者姓名char(10),
@系别char(30),
@性别char(4))
as
insertintoB_B_Pvalues('@借者','@系别','@性别')
*........建立触发器,对图书信息表进行修改...........*/
createtriggerB_I_trigger_update
onB_I
forupdate
asdeclare@old_书编号char(10)
declare@new_书编号char(10)
set@old_书编号=(select书编号fromdeleted)
set@new_书编号=(select书编号frominserted)
updateB_I
set书编号=@new_书编号
where书编号=@old_书编号
updateB_I
set书编号='000000'
where书编号='000001'
select*fromB_I
select*fromB_B_I
select*fromA_B_I
/*........建立触发器,对借者信息表进行修改...........*/
createtriggerB_B_I_trigger_update
onB_B_I
forupdate
asdeclare@old_借书数量char(10)
declare@new_借书数量char(10)
set@old_借书数量=(select借书数量fromdeleted)
set@new_借书数量=(select借书数量frominserted)
updateB_B_I
set借书数量=@new_借书数量
where借书数量=@old_借书数量
/*........建立触发器,对图书信息表进行删除以及插入...........*/
createtriggerB_I_too
onB_B_I
forinsert,delete
as
begin
updateB_I
set库存量=库存量+1where书编号in(select书编号fromdeleted)
updateB_I
set库存量=库存量-1where书编号in(select书编号frominserted)
End
5、插入具体数据
insertintoB_Ivalues('数据库原理','000001','28','赵枫','人民邮电出版社','20','1')
insertintoB_Ivalues('C++编程原理','000002','31','钱德','新思维出版社','90','8')
insertintoB_Ivalues('计算机程序解读','000003','32','孙俪','好书出版社','32','1')
insertintoB_Ivalues('几何学','000004','57','李楠','数学家协会出版社','87','73')
insertintoB_Ivalues('历史断代','000005','32','曾祥威','清华大学出版社','23','789')
insertintoB_Ivalues('编译原理与实现','000006','50','Kenneth','中信出版社','45','9')
insertintoB_Ivalues('黑客攻略必杀技','000007','34','某某人','人民交通出版社','23','')
insertintoB_Ivalues('百年孤独','000008','49.8','马尔克斯','北京燕山出版社','12','1')
insertintoB_B_Ivalues('000008','夏号','2011-8-900:
00:
00','2011-12-1000:
00:
00','5')
insertintoB_B_Ivalues('000005','曾祥威','2011-8-900:
50:
00','2011-12-1000:
00:
00','2')
insertintoB_B_Ivalues('000006','曾祥威','2011-8-900:
40:
00','2011-12-1000:
00:
00','1')
insertintoB_B_Ivalues('000007','曾祥威','2011-8-900:
00:
00','2011-12-1000:
00:
00','1')
insertintoB_B_Ivalues('000005','张小龙','2011-8-900:
40:
00','2011-12-1000:
00:
00','1')
insertintoB_B_Ivalues('000006','李安安','2011-8-910:
00:
00','2011-12-1000:
00:
00','2')
insertintoB_B_Ivalues('000006','张小龙','2011-8-920:
00:
00','2011-12-1000:
00:
00','2')
insertintoB_B_Ivalues('000008','夏号','2011-8-901:
00:
00','2011-12-1000:
00:
00','5')
insertintoB_B_Ivalues('000008','夏号','2011-8-900:
00:
00','2011-12-1000:
00:
00','2')
insertintoB_B_Ivalues('000008','夏号','2011-8-900:
00:
00','2011-12-1000:
00:
00','5')
insertintoB_B_Ivalues('000008','夏号','2011-8-900:
00:
00','2011-12-1000:
00:
00','3')
insertintoB_B_Ivalues('000008','夏号','2011-8-900:
00:
00','2011-12-1000:
00:
00','6')
insertintoA_B_Ivalues('000005','2011-11-2400:
00:
00','曾祥威')
insertintoA_B_Ivalues('000006','2011-11-2401:
02:
03','曾祥威')
insertintoA_B_Ivalues('000007','2011-11-2401:
02:
03','曾祥威')
insertintoA_B_Ivalues('000005','2011-11-2401:
02:
03','张小龙')
insertintoA_B_Ivalues('000006','2011-11-2401:
02:
03','李安安')
insertintoA_B_Ivalues('000006','2011-11-2401:
02:
03','张小龙')
insertintoB_B_Pvalues('夏号','软件工程','')
insertintoB_B_Pvalues('曾丹','外国语学院','')
insertintoB_B_Pvalues('叶忠雪','外国语学院','')
insertintoB_B_Pvalues('刘小强','机电学院','男')
insertintoB_B_Pvalues('李安安','经管学院','男')
insertintoB_B_Pvalues('陈莎莎','经管学院','')
insertintoB_B_Pvalues('杨鸿文','经管学院','男')
insertintoB_B_Pvalues('黄隽','水利水电学院','男')
insertintoB_B_Pvalues('周宇珑','经管学院','')
insertintoB_B_Pvalues('张小龙','经管学院','男')
insertintoB_B_Pvalues('曾祥威','软件学院','男')
6、调试结果
<1>、建表:
<2>、存储过程与触发器:
7、结论
此系统主要完成对图书借阅信息的一系列设计,包括对借出、归还以及借阅人的管理设计。
我在采用数据库SQLserver2000来完成整个系统的设计。
在书籍的借出、归还两者之间建立了良好的链接关系,某一部分地修改均会引发系统对与其相关的部分进行连锁修改。
我采用的语言包括DDL、DML、squal查询语言。
当然的,在系统的设计过程中不可避免地遇到了各种各样的问题。
由于整个系统是由我单独设计的,鉴于自身水平限制,并没有完全发挥SQL的功能,代码还存在着一些不完美之处。
通过本次设计我真正掌握了不少以前印象不是很深刻的东西,发现并解决了大量的问题。
本次设计碰到许多的难点,但也有不少的收获。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 报告 图书 借阅 管理 系统