


免费预览已结束,剩余12页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库设计与管理课程设计报告题目:图书借阅管理系统 专 业: 班 级: 姓 名: 学 号: 指导教师: 学 期:目录一、概述1、本课程设计的题目 22、小组成员 23、个人分工 24、本人贡献 2(1)建表 2(2)表的数据维护 2(3)数据完整性 3(4)数据查询 3二、需求分析1、数据需求 32、事物需求 43、系统需求分析结果 4三、数据库概念结构设计(图书借阅管理系统E-R图) 5四、数据库逻辑结构设计学生借阅图书表bookborrow 6学生归还图书表bookreturn 6五、数据库物理实现1、学生借阅图书时各种异常情况下操作的结果 72、学生正常借阅图书时操作 73、学生续借图书 94、学生还书 105、查询一段时间之内各类未归还图书的在借次数 12六、心得体会一、概述1、本课程设计的题目是:图书借阅管理系统。2、小组成员有:于菲菲、吴维、王菲菲。3、个人分工:于菲菲负责student表,吴维负责bookborrow和bookreturn表,王菲菲负责bookinfo表和bookclass表。4、本人贡献:(1)建立学生借阅图书信息表(bookborrow)和学生归还图书信息表(bookreturn):根据图书借阅管理信息的需要,除了需要保存学生信息的学生信息表,保存图书信息的图书信息表、类别表之外,在学生借阅图书时,为了准确记录借阅、归还的学生号、图书编号、时间,还必须创建一个借阅表,为了简化借阅信息的查询,直接显示未归还和已归还的图书借阅,我分别创建了学生借阅图书信息表(bookborrow)和学生归还图书信息表(bookreturn), 学生借阅图书信息表用来存储借书学生的学号、所借图书的图书编号、借书时间、应归还日期、续借次数,学生归还图书信息表用来存储还书学生的学号、所还图书的图书编号、还书时间、超期罚款金额。(2)表的数据维护:a. bookborrow表数据插入:bookborrow表中借书学生的学号、所借图书的图书编号、借书时间、应归还日期都是由借书存储过程insert_bookborrow_1来插入的,借书学生的学号、所借图书的图书编号由存储过程的参数设定,借书时间则是利用系统函数getdate()获取当天时间来赋值,规定学生一次性借书时间不能超过一个月,所以应归还日期在借书日期的基础上加一个月。b. bookborrow表数据更新:续借次数则涉及到续借存储过程,续借时首先根据续借当天日期和bookborrow表中的应归还日期判断是否超过一次性借书时间限制,超过应归还日期则不能续借,在没有超过续借日期的前提下,还对学生可续借次数进行了限制,超过次数限制的话,仍然无法续借,若满足以上两个续借条件,此次续借可正常进行,并且更新bookborrow表中的结束日期为此次续借日期,续借次数自加1。c. bookreturn表数据插入、bookborrow表数据删除:在学生归还图书时,先根据bookborrow表的记录判断还书输入参数信息是否存在,若不存在则表明没有对应的借书行为,不能进行还书的操作。bookreturn表中还书学生的学号、所还图书的图书编号、还书时间、超期罚款金额都是由还书存储过程returnbook来插入的,还书书学生的学号、所借图书的图书编号由存储过程的参数设定,还书时间利用系统函数getdate()获取当天时间来赋值。根据bookborrow中的应归还日期来判断归还图书时是否超过还书期限,若超期,则按超期天数内每天0.1元来计算超期罚款金额,并将其插入bookreturn表中对应的超期罚款金额列。还书成功的同时删除bookborrow表中对应的借书记录。(3)数据完整性:a.使用默认约束实施数据完整性,为了实现续借次数的自加,为bookborrow表的续借次数列定义了一个默认约束,在学生借书时,没有指定该列的值,使用默认值“0”。b.使用外键约束实施数据完整性:因为bookborrow表中的学生学号必须是学生信息表中已经注册过的学生号,图书编号也必须是图书信息表中存在的图书号。所以为bookborrow表的学生学号和图书编号两列分别定义外键约束来实施数据完整性。从而限定了bookborrow表中这两列的取值范围,并设置打开级联更新,关闭级联删除。设置级联更新的作用是,在图书信息表和学生信息表相应的信息改变,不需要再对bookborrow表的对应列一一修改,学生学号和图书编号自动修改为新值。关闭级联删除的作用是,若某学生成功借出了某本书后,要想删除这个学生或者本书的信息,在bookborrow表中还存在相应记录的情况下(即学生还未还书,还没有删除bookborrow中的借书记录),则无法操作成功,SQL Server将报错,并回滚该删除操作。(4)数据查询:将学生借阅图书信息和学生归还图书信息分开存储,这样的设计思想可以简化很多查询操作。对图书管理最重要的部分莫过于管理未归还图书,还书同学的相应借书记录都直接从bookborrow表中删除,这样的话,bookborrow表就能直接显示为归还的学生、图书信息。查询一段时间之内各类未归还图书的在借次数时,输入两个时间点,对图书类别表、图书信息表、bookborrow表进行内连接查询,统计借书时间在两个时间点之内的查询结果行数,即可轻松查阅一段时间之内各类未归还图书的在借次数。通过以上表和功能的各种设计,最终形成的学生借阅图书信息表(bookborrow)和学生归还图书信息表(bookreturn)不仅能系统的记录记录每次发生的借阅事件,还书事件,轻松实现借书、续借、还书的操作,而且对于各种限制约束也全面考虑,维护数据完整性,并给出各种提示信息,从而实现人性化的操作界面。二、需求分析1、数据需求图书馆图书管理系统需要完成功能主要有:(1)学生基本信息的输入,包括学生学号、学生姓名、学生性别等。(2)学生基本信息的查询、修改,包括学生学号、学生姓名、学生性别等。(3)图书类别标准的制定、类别信息的输入,包括图书分类号、类别名称。(4)图书类别信息的查询、修改,包括图书分类号、类别名称。(5)图书信息的输入,包括图书编号、图书名称、作者姓名、出版社名称、出版日期、定价、图书总量、图书余量。(6)图书信息的查询、修改,包括图书编号、图书名称、作者姓名、出版社名称、出版日期、定价、图书总量、图书余量。(7)学生借书信息的输入,包括学生学号、学生姓名、图书名称、借书日期。(8)学生借书信息的查询、修改,包括学生学号、学生姓名、图书编号、图书名称、借书日期、应归还日期等。(9)学生续借信息的输入,包括学生学号、图书编号、借书日期。(10)学生续借信息的查询、修改,包括学生学号、图书编号、借书日期。(11)学生还书信息的输入,包括学生学号、图书编号、还书日期。 (12)学生还书信息的查询、修改,包括还书学生学号、学生姓名、图书编号、图书名称、借书日期、还书日期等。(13)超期还书罚款输入,还书超出期限包括超出期限还书的学生学号、图书编号、罚款金额、还书日期。(14)超期还书罚款查询、修改、删除,包括学生学号、学生姓名、图书编号、图书名称、罚款金额等。2、事物需求(1)在学生信息管理部分,要求:a.可以查询学生信息。b.可以对学生信息进行添加及删除的操作。(2)在图书信息管理部分,要求:a.可以浏览图书信息。b.可以对图书信息进行维护,包括添加及删除的操作。(3)在借阅信息管理部分,要求:a.可以浏览借阅信息。b.可以对借阅信息进行维护操作。(4)在续借信息管理部分,要求: a.可以记录续借信息。b.可以对借阅信息进行维护操作。(5)在归还信息管理部分,要求:a.可以浏览归还信息。b.对归还信息可修改维护操作。(6)在罚款信息管理部分,要求:a.可以浏览罚款信息。b.对罚款信息可以更新。3、系统需求分析结果学生从图书馆频繁借书、还书是一种经常性的行为,基于以上对问题的分析,利用计算机代替传统人工给我们提供信息,及时地调整学校图书馆图书结构,并且对学生们的借阅过程形成一整套动态的管理就十分必要了。学校图书馆规模相对于商业图书馆小,但要有着完善的图书信息,对每一册书要有详细的记录信息,功能上对系统的需求是全面的。因此对用户的需求可分为四个方面:一方面是图书馆工作人员通过计算机来管理各类图书,分类编号,调整图书结构,增加图书库存,适应学生的需求;二方面是学生们能通过计算机来查询浏览图书馆中的图书,来确定自己需要的书籍,为借阅做好准备;三方面是工作人员对学生们的借书证发放;四方面也是图书馆的核心工作,对图书的借阅管理。这四个方面形成了学校图书馆一个工作整体,采用计算机自动化信息处理,可方便快捷地共享信息、交流信息,高效地协同工作。三、数据库概念结构设计本图书馆管理系统根据实际需求创建如下五个数据表:bookinf(图书信息表),bookclass(图书类别表),student(学生信息表),bookborrow(学生借阅图书信息表),bookreturn(学生还书信息表)。这些数据表可以单独存储学生、图书的信息,再结合它们之间的相互关系,相互操作即实现了普通图书馆的三大基本功能:即学生借阅图书、学生续借图书、学生归还图书。图书借阅管理系统E-R图:图书编号出版日期定价书名作者图书总量图书m图书余量出版社罚金归还日期学生借阅借阅日期续借次数n年龄电话性别姓名学号学生E-mail学院专业班级四、数据库逻辑结构设计由于概念设计的结果是E-R图,DBMS一般采用关系模型,因此数据库的逻辑设计过程就是把ER图转化为关系模式的过程。由于关系模型所具有的优点,逻辑设计可以充分运用关系数据库规范化理论,使设计过程形式化地进行。设计结果是一组关系模式的定义。将E-R图转化成关系模型,转化的关系模式进行优化,最终达到第三范式。将E-R图转化为关系模式:(1)bookinfo(book_id,book_name,book_author,book_press,pressdate,price,booktotal,bookremain)(2)student(student_id,name,sex,age,department,major,class,birth_date,tel ephone,E-mail)(3)bookclass(book_id,bookclass_id,bookcategory)(4)bookborrow(book_id,student_id,borrownum,borrowdate,rreturndate,newdate ,reborrowdate)(5)bookreturn(book_id,student_id,returndate,fine)学生借阅图书表bookborrow字段名称 数据类型 长度 约束 属性book_id char 10 外键student_id char 10 外键borrowdate datetime 8 非主属性rreturndate datetime 8 非主属性reborrowtimes int 4 非主属性学生归还图书表bookreturn字段名称 数据类型 长度 约束 属性book_id char 10 外键student_id char 10 外键returndate datetime 8 非主属性fine money 8 非主属性五、数据库物理实现1、学生借阅图书时各种异常情况下操作的结果(1)创建插入学生借阅图书信息触发器,可以实现对学生信息和图书信息的限制,借书时输入的学生学号和图书编号必须是学生信息表、图书信息表中已经存在的,否则给出相应提示该图书号不存在或该学生号不存在。create trigger tr_insert on bookborrow for insert as declare book_id char(10),student_id char(10)select book_id=inserted.book_id,student_id=inserted.student_idfrom insertedif book_id not in (select book_id from bookinfo)begin print (该图书号不存在)rollback transaction endelse if student_id not in (select student_id from student)begin print (该学生号不存在)rollback transaction end(2)执行插入学生借阅图书信息存储过程,输入一个学生信息表中不存在的学生学号,执行结果如下图所示:exec insert_bookborrow_1 B003,20081046(3)执行插入学生借阅图书信息存储过程,输入一个图书信息表中不存在的图书编号,执行结果如下图所示:exec insert_bookborrow_1 a003,200810432、学生正常借阅图书时操作(1)创建学生借阅图书存储过程,先查询图书借阅信息表bookborrow是否存在相同的学号和图书号,判断该学生是否已经借阅此书或是有没有归还。若是存在相同学号和图书编号的记录,表明此学生已经借阅同一本书,则无法进行此次借阅操作,并给出提示信息。若学生没有借阅此书或是已经归还,将把此次操作的信息存入学生借阅图书信息表,并提示学生成功借书信息。CREATE PROCEDURE insert_bookborrow_1 book_id char(10), student_id char(10)AS if exists(select * from bookborrow where student_id=student_id and book_id=book_id)beginprint对不起,此同学已经借阅了同一本图书,故而无法进行此次借书操作,请核实!endelsebeginINSERT INTO book.dbo.bookborrow ( book_id, student_id, borrowdate, rreturndate)VALUES ( book_id, student_id, getdate() , dateadd(mm,1,getdate()declare name varchar(8),book_name varchar(20),学生借书成功信息 varchar(200) select name=name from student where student_id =student_id select book_name= book_name from bookinfo where book_id=book_id select 学生借书成功信息=学号为 +student_id+,姓名为 +name+的学生,于 +datename(year,GETDATE()+ 年 +datename(month,GETDATE()+ 月 +datename(day,GETDATE()+ 日 +datename(hour,GETDATE()+ 时 +datename(minute,GETDATE()+ 分 +datename(second,GETDATE()+ 秒,成功地从图书馆借出+book_name+一书! select 学生借书成功信息 as 学生借书成功信息endGO(2)执行插入学生借阅图书信息存储过程,输入学生借阅图书信息已经存在的图书编号和学生号,执行结果如下图所示:exec insert_bookborrow_1 TP001,20081066(3)执行插入学生借阅图书信息存储过程,输入学生借阅图书信息不存在的图书编号或学生号,执行结果如下图所示:exec insert_bookborrow_1 I007,20081077学生借阅图书信息bookborrow表借书之前:学生借阅图书信息bookborrow表成功借书之后:3、学生续借图书(1)创建续借存储过程,续借时先找到bookborrow表相应的记录,根据借书应归还时间判断续借的书是否已经超期,若已经超过还书日期,则不能续借。若没有超过一次借书应归还时间,还要根据bookborrow表中续借次数来判断续借是否已经超过续借次数3次,若已经超过3次,则无法再续借。若以上条件都满足,则更新bookborrow表,使借阅时间更新为当前续借时间,续借次数自加1,并给出续借成功提示信息。create procedure reborrow student_id char(10),book_id char(10)as declare reborrowdate datetime,rreturndate datetimeset reborrowdate=getdate()set rreturndate=(select rreturndate from bookborrow where student_id=student_id and book_id=book_id)if reborrowdaterreturndateprint 已经超过还书日期,不能续借!elseif (select reborrowtimes from bookborrow where student_id=student_id and book_id=book_id)3 print 已经超过续借限制次数,不能续借!elsebeginupdate bookborrow set borrowdate=reborrowdate,reborrowtimes=reborrowtimes+1where student_id=student_id and book_id=book_idprint 续借成功end(2)执行续借,输入满足条件的续借信息,即续借当天时间未超过应归还日期,续借次数也未超过续借次数限制,执行结果如下:exec reborrow 20081066,TP001学生借阅图书信息bookborrow表续借之前相应记录:学生借阅图书信息bookborrow表续借之后相应记录:(3)将以上续借连续操作多次,即借阅已经超过续借次数的图书,执行结果如下:4、学生还书(1)创建学生还书存储过程,先查询图书借阅信息表bookborrow是否存在相同的学号和图书号,判断该学生是否借阅过此书。若是不存在相同学号和图书编号的记录,表明此学生没有借阅这本书,则无法进行此次还书操作,并给出提示信息。若学生借阅过此书,还要根据借书应归还时间判断续借的书是否已经超期,若已经超过还书日期,则按超期天数内每天0.1元来计算超期罚款金额,并将其插入bookreturn表中对应的超期罚款金额列。若没有超过一次借书应归还时间,则不必插入超期罚款金额列。还书成功,将此次操作的还书信息插入学生还书信息表bookreturn,同时删除bookborrow表中对应的借书记录,并提示学生成功还书信息。create procedure returnbookstudent_id char(10),book_id char(10)asdeclare book_name char(20),rreturndate datetimebegin if not exists(select * from bookborrow where student_id=student_id and book_id=book_id)beginprint对不起,你没有借阅此书,故而无法进行此次还书操作,请核实!end else select rreturndate=rreturndate from bookborrow where book_id=book_id and student_id=student_id if datediff(dd,rreturndate,getdate()0 begin insert into book.dbo.bookreturn ( book_id, student_id, returndate, fine) VALUES ( book_id, student_id, getdate(), datediff(dd, rreturndate,getdate()*0.1 ) end else begin INSERT INTO book.dbo.bookreturn ( book_id, student_id, returndate) VALUES ( book_id, student_id, getdate() ) declare 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 select 学生还书成功信息=学号为 +student_id+,姓名为 +name+的学生于 +datename(year,GETDATE()+ 年 +datename(month,GETDATE()+ 月 +datename(day,GETDATE()+ 日 +datename(hour,GETDATE()+ 时 +datename(minute,GETDATE()+ 分 +datename(second,GETDATE()+ 秒,成功地向图书馆归还+book_name+一书! select 学生还书成功信息 as 学生还书成功信息 end delete from bookborrow where student_id=student_id and book_id=book_idendgo(2)执行还书存储过程,输入满足条件的还书信息,即输入已经借阅的书,执行结果如下:exec returnbook 20081066,TP001学生借阅图书信息bookborrow表还书之前相应记录:bookborrow学生还书信息bookreturn表还书之前相应记录:学生借阅图书信息bookborrow表还书之后相应记录:学生还书信息bookreturn表还书之后相应记录:5、查询一段时间之内各类未归还图书的在借次数(1)创建一段时间内各类图书的在借次数的存储过程,输入两个时间点,对图书类别表、图书信息表、bookborrow表进行内连接查询,统计借书时间在两个时间点之内的查询结果行数,即可轻松查阅一段时间之内各类未归还图书的在借次数。create procedure class_cj cssj datetime,jssj datetime asselect bookclass.bookcategory,count(*) as 次数from student inner join bookborrow on student.student_id=bookborrow.student_idinner join bookinfo on bookinfo.book_id=bookborrow.book_idinner join bookclass on bookclass.book_id=bookinfo.book_idwhere bookborrow.b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上海市医师资格考试口腔执业助理医师复习题库及答案
- 安防无人机驾驶员转正考核试卷及答案
- 城市管理网格员质量追溯知识考核试卷及答案
- 选矿过滤脱水工知识考核试卷及答案
- 熟食技工考试试题及答案
- 车床厂招聘考试题及答案
- 2025年河北对口机械考试题及答案
- 个人信息保护合规管理员工艺创新考核试卷及答案
- 2025年车辆交通安全守则知识考察试题及答案解析
- 三基康复考试题库及答案2025年
- 模具凸凹模工艺文件工序卡
- 储备店长培训工作流程-课件
- 药品效期管理
- GB 42590-2023民用无人驾驶航空器系统安全要求
- 《精神科护理学》练习题及答案
- 压水堆核电厂二回路系统与设备介绍
- 护士执业注册体检表
- 外科学 胃十二指肠疾病
- 2021北京昌平初二(上)期中数学(A)(教师版)
- LY/T 1180-2006脲醛预缩液
- GB/T 35162-2017道路基层用缓凝硅酸盐水泥
评论
0/150
提交评论