图书馆管理系统设计_第1页
图书馆管理系统设计_第2页
图书馆管理系统设计_第3页
图书馆管理系统设计_第4页
图书馆管理系统设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库设计与管理课程设计报告题目:图书借阅管理系统专班姓学业:级:名:口亏:指导教师:学 期:目录一、概述1、本课程设计的题目2、小组成员3、个人分工4、本人贡(1)(2)(3)(4)建表 表的数据维护 数据完整性 数据查询22222233二、需求分析1、数据需求2、事物需求3、系统需求分析结果三、数据库概念结构设计(图书借阅管理系统E-R图)四、数据库逻辑结构设计学生借阅图书表bookborrow学生归还图书表bookreturn 五、数据库物理实现学生借阅图书时各种异常情况下操作的结果 学生正常借阅图书时操作 学生续借图书 学生还书 查询一段时间之内各类未归还图书的在借次数1、2、3、4、

2、5、7791012六、心得体会、概述1、本课程设计的题目是 :图书借阅管理系统 。2、小组成员有 :于菲菲、吴维、王菲菲。3、个人分工 :于菲菲负责 student 表,吴维负责 bookborrow 和 bookreturn 表,王菲菲负责 bookinfo 表和 bookclass 表。4、本人贡献:( 1)建立学生借阅图书信息表( bookborrow )和学生归还图书信息表 (bookreturn) :根据图书借阅管理信息的需要, 除了需要保存学生信息的学生信息表, 保存 图书信息的图书信息表、类别表之外,在学生借阅图书时,为了准确记录借阅、 归还的学生号、图书编号、时间,还必须创建一

3、个借阅表,为了简化借阅信息的 查询,直接显示未归还和已归还的图书借阅, 我分别创建了学生借阅图书信息表 ( bookborrow )和学生归还图书信息表 (bookreturn), 学生借阅图书信息表用来 存储借书学生的学号、 所借图书的图书编号、 借书时间、应归还日期、 续借次数, 学生归还图书信息表用来存储还书学生的学号、 所还图书的图书编号、 还书时间、 超期罚款金额。(2)表的数据维护:a. bookborrow 表数据插入: bookborrow 表中借书学生的学号、所借图书的 图书编号、借书时间、应归还日期都是由借书存储过程 insert_bookborrow_1 来插入的,借书学

4、生的学号、 所借图书的图书编号由存储过程的参数设定, 借书 时间则是利用系统函数 getdate() 获取当天时间来赋值, 规定学生一次性借书时 间不能超过一个月,所以应归还日期在借书日期的基础上加一个月。b. bookborrow 表数据更新:续借次数则涉及到续借存储过程,续借时首先 根据续借当天日期和 bookborrow 表中的应归还日期判断是否超过一次性借书时 间限制,超过应归还日期则不能续借, 在没有超过续借日期的前提下, 还对学生 可续借次数进行了限制, 超过次数限制的话, 仍然无法续借, 若满足以上两个续 借条件,此次续借可正常进行,并且更新 bookborrow 表中的结束日期

5、为此次续 借日期,续借次数自加 1。c. bookreturn 表数据插入、 bookborrow 表数据删除:在学生归还图书时, 先根据 bookborrow 表的记录判断还书输入参数信息是否存在,若不存在则表明 没有对应的借书行为,不能进行还书的操作。 bookreturn 表中还书学生的学号、 所还图书的图书编号、 还书时间、超期罚款金额都是由还书存储过程 returnbook 来插入的, 还书书学生的学号、 所借图书的图书编号由存储过程的参数设定, 还 书时间利用系统函数 getdate() 获取当天时间来赋值。根据 bookborrow 中的应 归还日期来判断归还图书时是否超过还书期

6、限,若超期,则按超期天数内每天 0.1 元来计算超期罚款金额,并将其插入 bookreturn 表中对应的超期罚款金额 列。还书成功的同时删除 bookborrow 表中对应的借书记录。(3) 数据完整性:a. 使用 默认约束实施 数据 完整性 ,为 了实现续借次 数的 自加,为 bookborrow 表的续借次数列定义了一个默认约束,在学生借书时,没有指定该 列的值,使用默认值“ 0”。b.使用外键约束实施数据完整性:因为 bookborrow表中的学生学号必须 是学生信息表中已经注册过的学生号, 图书编号也必须是图书信息表中存在的图 书号。所以为 bookborrow 表的学生学号和图书编

7、号两列分别定义外键约束来实 施数据完整性。从而限定了 bookborrow 表中这两列的取值范围,并设置打开级 联更新,关闭级联删除。 设置级联更新的作用是, 在图书信息表和学生信息表相 应的信息改变,不需要再对 bookborrow 表的对应列一一修改,学生学号和图书 编号自动修改为新值。关闭级联删除的作用是,若某学生成功借出了某本书后, 要想删除这个学生或者本书的信息,在 bookborrow 表中还存在相应记录的情况 下(即学生还未还书, 还没有删除 bookborrow 中的借书记录),则无法操作成功, SQL Server将报错,并回滚该删除操作。( 4)数据查询:将学生借阅图书信息

8、和学生归还图书信息分开存储,这 样的设计思想可以简化很多查询操作。 对图书管理最重要的部分莫过于管理未归 还图书,还书同学的相应借书记录都直接从 bookborrow 表中删除,这样的话, bookborrow 表就能直接显示为归还的学生、图书信息。查询一段时间之内各类 未归还图书的在借次数时,输入两个时间点,对图书类别表、图书信息表、 bookborrow 表进行内连接查询,统计借书时间在两个时间点之内的查询结果行 数,即可轻松查阅一段时间之内各类未归还图书的在借次数。通过以上表和功能的各种设计, 最终形成的学生借阅图书信息表 (bookborrow)和学生归还图书信息表(bookretur

9、n)不仅能系统的记录记录每次 发生的借阅事件,还书事件,轻松实现借书、续借、还书的操作,而且对于各种 限制约束也全面考虑, 维护数据完整性, 并给出各种提示信息, 从而实现人性化 的操作界面。二、需求分析1、数据需求图书馆图书管理系统需要完成功能主要有:1)学生基本信息的输入,包括学生学号、学生姓名、学生性别等。包括图书编号、图书名称、作者姓名、出版社名称、 图书总量、图书余量。修改,包括图书编号、图书名称、作者姓名、出版社 定价、图书总量、图书余量。2)学生基本信息的查询、修改,包括学生学号、学生姓名、学生性别等。 图书类别标准的制定、类别信息的输入,包括图书分类号、类别名称。 图书类别信息

10、的查询、修改,包括图书分类号、类别名称。 图书信息的输入, 出版日期、定价、 图书信息的查询、 名称、出版日期、7)学生借书信息的输入, 包括学生学号、 学生姓名、图书名称、 借书日期。8)学生借书信息的查询、修改,包括学生学号、学生姓名、图书编号、图 书名称、借书日期、应归还日期等。9)学生续借信息的输入,包括学生学号、图书编号、借书日期。10)学生续借信息的查询、修改,包括学生学号、图书编号、借书日期。6)11)12)13)14)学生还书信息的输入,包括学生学号、图书编号、还书日期。 学生还书信息的查询、修改,包括还书学生学号、学生姓名、图书编 号、图书名称、借书日期、还书日期等。超期还书

11、罚款输入,还书超出期限包括超出期限还书的学生学号、图 书编号、罚款金额、还书日期。超期还书罚款查询、修改、删除,包括学生学号、学生姓名、图书编 号、图书名称、罚款金额等。2、事物需求1)在学生信息管理部分 , 要求:a. 可以查询学生信息。b. 可以对学生信息进行添加及删除的操作。2)在图书信息管理部分 , 要求:a. 可以浏览图书信息。b. 可以对图书信息进行维护 , 包括添加及删除的操作。3)在借阅信息管理部分 , 要求:a. 可以浏览借阅信息。4)a.b. 可以对借阅信息进行维护操作。 在续借信息管理部分,要求: 可以记录续借信息。5)b.可以对借阅信息进行维护操作。 在归还信息管理部分

12、,要求 :a. 可以浏览归还信息。b. 对归还信息可修改维护操作。6)在罚款信息管理部分 , 要求:a. 可以浏览罚款信息。b. 对罚款信息可以更新。3、系统需求分析结果学生从图书馆频繁借书、还书是一种经常性的行为, 基于以上对问题的分析, 利用计算机代替传统人工给我们提供信息, 及时地调整学校图书馆图书结构, 并 且对学生们的借阅过程形成一整套动态的管理就十分必要了。 学校图书馆规模相对于商业图书馆小, 但要有着完善的图书信息, 对每一册书要 有详细的记录信息, 功能上对系统的需求是全面的。 因此对用户的需求可分为四 个方面:一方面是图书馆工作人员通过计算机来管理各类图书, 分类编号, 调整

13、 图书结构,增加图书库存,适应学生的需求; 二方面是学生们能通过计算机来查 询浏览图书馆中的图书, 来确定自己需要的书籍, 为借阅做好准备; 三方面是工 作人员对学生们的借书证发放; 四方面也是图书馆的核心工作, 对图书的借阅管 理。这四个方面形成了学校图书馆一个工作整体,采用计算机自动化信息处理, 可方便快捷地共享信息、交流信息,高效地协同工作。三、数据库概念结构设计本图书馆管理系统根据实际需求创建如下五个数据表:booki nf (图书信息表),bookclass (图书类别表),student (学生信息表),bookborrow (学生借 阅图书信息表),bookreturn (学生还

14、书信息表)。这些数据表可以单独存储学生、 图书的信息,再结合它们之间的相互关系,相互操作即实现了普通图书馆的三大 基本功能:即学生借阅图书、学生续借图书、学生归还图书。图书借阅管理系统E-R图:四、数据库逻辑结构设计由于概念设计的结果是E-R图,DBMS-般采用关系模型,因此数据库的逻 辑设计过程就是把ER图转化为关系模式的过程。由于关系模型所具有的优点, 逻辑设计可以充分运用关系数据库规范化理论,使设计过程形式化地进行。设计结果是一组关系模式的定义。将E-R图转化成关系模型,转化的关系模式进行优 化,最终达到第三范式。将E-R图转化为关系模式:(1) booki nfo(book id,bo

15、ok name,book_author,book_press,pressdate,price,book total,bookrema in )(2) stude nt(student_id,name,sex,age,department,major,class,birth_date,telephone,E-mail )(3) bookclass(book id,bookclass_id,bookcategory )(4) bookborrow(book_id,stude nt_id,borrow nu m,borrowdate,rreturndate,n ewdate ,reborrowdat

16、e )(5) bookreturn(book id,student id,returndate,fine)学生借阅图书表bookborrow字段名称数据类型长度约束属性book_idchar10外键stude nt_idchar10外键borrowdatedatetime8非主属性rreturndatedatetime8非主属性reborrowtimesint4非主属性学生归还图书表bookretu rn字段名称数据类型长度约束属性book_idchar10外键stude nt_idchar10外键returndatedatetime8非主属性finemoney8非主属性五、数据库物理实现1、

17、学生借阅图书时各种异常情况下操作的结果(1)创建插入学生借阅图书信息触发器,可以实现对学生信息和图书信息 的限制,借书时输入的学生学号和图书编号必须是学生信息表、图书信息表中已经存在的,否则给出相应提示该图书号不存在或该学生号不存在。create trigger tr_i nsert on bookborrowfor in sert asdeclare book_id char(10),stude nt_id char(10)select book_id=in serted.book_id,stude nt_id=in serted.stude nt_id from in sertedif b

18、ook_id not in (select book_id from book info)beg in print (该图书号不存在)rollback tran sact ion endelse if stude nt_id not in (select stude nt_id from stude nt) begin print (该学生号不存在)rollback tran sact ion end命令己成功完成Q(2)执行插入学生借阅图书信息存储过程,输入一个学生信息表中不存在 的学生学号,执行结果如下图所示:exec in sert_bookborrow_1 B003,20081046(

19、所影响的行数为E行)悽学生号不存左(3)执行插入学生借阅图书信息存储过程,输入一个图书信息表中不存在 的图书编号,执行结果如下图所示:exec insert bookborrow 1a003,20081043所彫响的行数为8行)陵图书号环存在2、学生正常借阅图书时操作号,(1)创建学生借阅图书存储过程,先查询图书借阅信息表bookborrow是否 存在相同的学号和图书号,判断该学生是否已经借阅此书或是有没有归还。 若是 存在相同学号和图书编号的记录, 表明此学生已经借阅同一本书,则无法进行此 次借阅操作,并给出提示信息。若学生没有借阅此书或是已经归还,将把此次操 作的信息存入学生借阅图书信息表

20、,并提示学生成功借书信息。CREATE P ROCEDURE in sert_bookborrow_1 book_id char(10),stude nt_id char(10)ASif exists(select * from bookborrowwhere stude nt_id=stude nt_id and book_id=book_id)beginprint对不起,此同学已经借阅了同一本图书,故而无法进行此次 借书操作,请核实!endelsebegi nINSERT INTO book.dbo.bookborrow(book_id,stude nt_id,borrowdate,rre

21、turndate)VALUES(book_id,stude nt_id,getdateO ,dateadd(mm,1,getdate()declare n ame varchar(8),book_ name varchar(20), 矽生借书成功信息varchar(200)select n ame=n ame from stude nt where stude nt_id =stude nt_id+date name(year,GETDATE()+年月+date name(day,GETDATE()+日 时+date name(mi nute,GETDATE()+分秒,成功地从图书馆借出+bo

22、ok_name+select book_ name= book_ name from book info where book_id=book_id select 矽生借书成功信息-学号为+student_id+,姓名为+name+ 的 学 生, 于 +date name(mo nth,GETDATE()+ +date name(hour,GETDATE()+ +date name(seco nd,GETDATE()+ 一书!select 学生借书成功信息as学生借书成功信息end GO(2)执行插入学生借阅图书信息存储过程,输入学生借阅图书信息已经存 在的图书编号和学生号,执行结果如下图所示

23、: exec insert bookborrow 1 TP001,20081066对不起,此同学己经借阅了同-郴书,故而无法撕此崩辎年谓触!(3)执行插入学生借阅图书信息存储过程,输入学生借阅图书信息不存在 的图书编号或学生号,执行结果如下图所示:exec in sert_bookborrow_1 IOO7,2OO81O77:学乌皿D1即,龄为m 孵生干:血T 12月3D 3妝的蛰* 4fi轨飙*曬张需需日强学生借阅图书信息bookborrow表借书之前:bscfc id1 studsTkt id11 fitdrr删E;iuD31200310432010-12-292C;0l 2011-1-2

24、5 20; OSroo2200S10432010-12-292C:2l 2011-L-2g 20:200TFOOL200S1077010-12-29i:i Mil-L-2令 1:S0学生借阅图书信息bookborrow表成功借书之后:book Ld1 student id1 borrow date1 ri-fttur ndateIrehorr owtimes IB003200310432010-12-2920:01 2011-1-2S20:00.F002200310432010-12-2320:2; 2011-1-2S20:230TFOOl00310772010-12-291:2; 011-1

25、-2010070310772010-12-3022 :2; 2011-1-3C22:2龙03、学生续借图书续借时先找到bookborrow表相应的记录,根据借(1)创建续借存储过程,书应归还时间判断续借的书是否已经超期,若已经超过还书日期,则不能续借。 若没有超过一次借书应归还时间,还要根据bookborrow表中续借次数来判断续借是否已经超过续借次数3次,若已经超过3次,则无法再续借。若以上条件都 满足,则更新bookborrow表,使借阅时间更新为当前续借时间,续借次数自加 1,并给出续借成功提示信息。create p rocedure reborrow stude nt_id char(

26、1O),book_id char(1O)asdeclare reborrowdate datetime,rretur ndate datetimeset reborrowdate=getdate()set rretur ndate=(select rretur ndate from bookborrowwhere stude nt_id=stude nt_id and book_id=book_id)if reborrowdaterretur ndateprint已经超过还书日期,不能续借!elseif (select reborrowtimes from bookborrowwhere st

27、ude nt_id=stude nt_id and book_id=book_id)3print已经超过续借限制次数,不能续借!elsebegi nup date bookborrowset borrowdate=reborrowdate,reborrowtimes=reborrowtimes+1where stude nt_id=stude nt_id and book_id=book_idprint 续借成功(2)执行续借,输入满足条件的续借信息,即续借当天时间未超过应归还 日期,续借次数也未超过续借次数限制,执行结果如下:exec reborrow 20081066,T P001A縊(所

28、爲响的行数力1行)(所彥响的行数力1行】(所第响的行数力I行 真借成功学生借阅图书信息bookborrow表续借之前相应记录:|tpooi20001066Oia-l2-3O 10.4 20L1-1-3CJ IQi.OS 000010652010-12-30 194: 2C11-1-30 10:09 1学生借阅图书信息bookborrow表续借之后相应记录: -TP001(3) 果如下: riooL 屮将以上续借连续操作多次,即借阅已经超过续借次数的图书,执行结2000106&2010-12-90 19;5; 2OU-1-3C3 10:09 4F经趨过绽借限制次换不能缤倍!4、学生还书号,(1)

29、创建学生还书存储过程,先查询图书借阅信息表bookborrow是否存在 相同的学号和图书号,判断该学生是否借阅过此书。若是不存在相同学号和图书 编号的记录,表明此学生没有借阅这本书,则无法进行此次还书操作,并给出提 示信息。若学生借阅过此书,还要根据借书应归还时间判断续借的书是否已经超 期,若已经超过还书日期,则按超期天数内每天0.1元来计算超期罚款金额,并 将其插入bookreturn表中对应的超期罚款金额列。若没有超过一次借书应归还 时间,则不必插入超期罚款金额列。还书成功,将此次操作的还书信息插入学生 还书信息表bookreturn,同时删除bookborrow表中对应的借书记录,并提示

30、学 生成功还书信息。create p rocedure retur nbookstude nt_id char(10),book_id char(10) asdeclare book_ name char(20),rretur ndate datetime begi nif not exists(select * from bookborrowwhere stude nt_id=stude nt_id and book_id=book_id)begi nprint对不起,你没有借阅此书,故而无法进行此次还书操作,请核实!endelseselect rreturndate=rreturndate

31、 from bookborrowwhere book_id=book_id and student_id=student_idifdatediff(dd,rreturndate,getdate()0begininsert into book.dbo.bookreturn( book_id,student_id,returndate,fine)VALUES( book_id,student_id,getdate(),datediff(dd, rreturndate,getdate()*0.1 )endelsebeginINSERT INTO book.dbo.bookreturn( book_i

32、d,student_id,returndate)VALUES( book_id,student_id,getdate() )select+name+ 的 学 生 于 +datename(year,GETDATE()+ +datename(month,GETDATE()+ 月 +datename(day,GETDATE()+ 日 +datename(hour,GETDATE()+datename(minute,GETDATE()+ 分 +datename(second,GETDATE()+ 成功地向图书馆归还 +book_name+ 一书! select 学生还书成功信息 as 学生还书成功信息

33、 enddelete from bookborrowwhere student_id=student_id and book_id=book_iddeclare name char(8), 学生还书成功信息 varchar(200) select name=name from student where student_id=student_id select book_name=book_name from bookinfo where book_id=book_id时 秒,学 生 还 书 成 功 信 息 = 学 号 为 +student_id+ , 姓 名 为 年go(2)执行还书存储过程

34、,输入满足条件的还书信息,即输入已经借阅的书, 执行结果如下:exec returnbook 20081066,T PO 01柱盹L 表还书之前相应记录:学生还书信息学生借阅图书信息bookborrow表还书之前相应记录:bookborrowboot id1 student id1borr 0*date1rreturndateIreljorroivtini&s:li03I200510432010-12-2Q20:ai 2011-1-2920.0600310432oio-is-2e0:2! 2011-1-2920:200TP 00108cm2010-12-291:2; 2011-1-2921;

35、2300051 we-0l0-l-501日;5; 2QU-1-3QW;旳4b Cl olc i d1 stTident idIre txtm-da t a1 fine1匚0042003lO&O10-12-3020:0:1bookretu rn表还书之后相应记录:学生还书信息学生借阅图书信息bookborrow表还书之后相应记录:be ok L i1 atuderiA i i1 b orr owe1 rr ei-urixAat e|12; ebiDcrroTt i rn zE003200610432010-12-220:01 eoli-i-M 2cro6F00200610432010-12-22

36、0:! 011-1-26 0:260TP 001aOOBlOTT2010-12-2921:2! 2Dll-L-2g 21:2e0bocifc i d1 student i d1 r e tumdate1 fine1匚004TFOOl20osioeaEoosiosa2010-12-302ai0-lE-3020:0! 20:0! 1bookretu rn5、查询一段时间之内各类未归还图书的在借次数输入两个时间点,(1)创建一段时间内各类图书的在借次数的存储过程,对图书类别表、图书信息表、bookborrow表进行内连接查询,统计借书时间在 两个时间点之内的查询结果行数,即可轻松查阅一段时间之内各类未归还图书的 在借次数。create p rocedure class_cj cssj datetime,jssj datetime asselect bookclass.bookcategory,count(*) as次数 from studentinner join bookborrow on stude nt.stude nt_id=bookborrow.stude nt_id inner join book info on book in fo.book_id=book

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论