图书馆管理系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库设计与管理
课程设计报告
题目:图书借阅管理系统
专业:
班级:
姓名:
学号:
指导教师:
学期:
目录
一、概述
1、本课程设计的题目 (2)
2、小组成员 (2)
3、个人分工 (2)
4、本人贡献 (2)
(1)建表 (2)
(2)表的数据维护 (2)
(3)数据完整性 (3)
(4)数据查询 (3)
二、需求分析
1、数据需求 (3)
2、事物需求 (4)
3、系统需求分析结果 (4)
三、数据库概念结构设计
(图书借阅管理系统E-R图) (5)
四、数据库逻辑结构设计
学生借阅图书表bookborrow (6)
学生归还图书表bookreturn (6)
五、数据库物理实现
1、学生借阅图书时各种异常情况下操作的结果 (7)
2、学生正常借阅图书时操作 (7)
3、学生续借图书 (9)
4、学生还书 (10)
5、查询一段时间之内各类未归还图书的在借次数 (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)学生续借信息的查询、修改,包括学生学号、图书编号、借书日期。