数据库课程 设计报告 名 称: 图书管理系统
时 间:
学 生 姓 名: 邓天顺
学 系: 计算机系
专 业:
指 导 教 师: 樊红芳
目录
1.设计目标····················································································· 1
2.数据组织····················································································· 2
3.关系图························································································· 3
4.详细设计······················································································ 4
5.总结····························································································· 5
6.参考文献······················································································ 5
1. 设计目标
目前图书馆进行信息管理的主要方式是基于手工处理,最多是用计算机的文本系统打印一些清单,信息处理工作量大,容易出错,缺乏系统、规范的信息管理手段。在电脑技术高速发展的今天,迫切需要充分利用计算机实现自动化管理。现在准备建立的图书管理系统,要把图书馆的图书管理、读者管理、图书借阅管理等日常管理工作实行计算机统一管理,以提高工作效率和管理水平。
实现图书管理信息系统的设计。这是一个数据结构的综合使用,涉及的知识面适中, 主要是针对对数据查询语句的使用。
此图书管理设计报告是基于SQL SERVER 2005建立的,可用于各种中小型的图书馆。
2.数据组织
表readers(读者信息表)结构
1
表readers(读者信息表)数据
表borrowinf(借阅信息表)结构
表borrowinf(借阅信息表)数据
表books(图书信息表)结构
表books(图书信息表)数据
2
表readertype(读者类型表)结构
表readertype(读者类型表)数据
3. 关系图
4.详细设计
--1. 查询类型为“学生”的读者信息。
select 编号,类型名称,姓名,限借阅数量,借阅期限 from readertype,readers where 类型编号=读者类型 and 类型名称='学生'
3
--2. 查询书名中含“程序设计”的图书信息。
select * from books where 书名 like '%程序设计%'
--3. 查询图书馆的藏书量。
select count(*) as '藏书量' from books
--4. 查询图书馆的图书总价值。
select sum(定价) as '图书总价值' from books
--5. 查询各个出版社的馆藏图书数量。
select 出版社,count(*) as '图书数量' from books group by 出版社
--6. 查询借期在“2004-1-1”到“2008-5-1”之间的各类读者的借阅数量。
select 类型名称,count(*) as '借阅数量' from readertype,borrowinf,readers where 编号=读者编号 and 读者类型=类型编号 and 借期 between '2004-1-1' and '2008-5-1' group by 类型名称 --7. 查询借期在“2004-1-1”到“2008-5-1”之间“C语言程序设计”一书的借阅情况。 select 读者编号,图书编号,书名,借期,还期 from borrowinf,books where 图书编号=编号 and 书名='C语言程序设计' and 借期 between '2004-1-1' and '2008-5-1'
--8. 查询读者编号、姓名及还可以借阅的图书数量。
select 编号,姓名,限借阅数量-已借数量 as '可借数量' from readers,readertype where 读者类型=类型编号
--9. 查询读者表中编号以‘2004’打头的读者信息。
select * from readers where 编号 like '2004%'
--10. 查询图书编号不以“A-F”打头的图书信息。
select * from books where 编号 not like '[a-f]%'
--11. 查询某日借书的读者的姓名。
select 姓名 from borrowinf,readers where 编号=读者编号 and 借期='2004-9-1' --12. 查询至少有两本相同书名的所有图书的信息,包括编号、书名和作者。
select 书名,编号,作者 from books where 书名 in (select 书名 from books group by 书名 having count(*)>1)
--13. 查询没有借阅图书的读者姓名。
select 姓名 from readers where 编号 not in (select 读者编号 from borrowinf)
--14. 查询借阅了“青山”图书的读者编号和姓名。
select 编号,姓名 from readers where 编号 in (select 读者编号 from borrowinf,books where 图书编号=编号 and 出版社='青山')
--15. 查询书价最低的图书的书名和书价。
select top 1 定价,书名 from books order by 定价
--16. 按书价从高到低排序,列出图书信息。
select * from books order by 定价 desc
--17. 将书名相同的图书按定价从高到低显示,列出图书信息。
select * from books order by 书名 ,定价 desc
--18. 创建借阅期限(JYQX)视图,含编号、借期、借阅期限、应还日期、还期五个字段,其中应还日期=借期+借阅期限。
create view jyqx as select books.编号,借期,借阅期限,借期+借阅期限 as '应还日期',还期
from books,borrowinf,readertype,readers where books.编号=图书编号 and readers.编号=读者编号 and 读者类型=类型编号
go
select * from jyqx
4
--19. 给出借阅超期信息单。
from select 读者编号,姓名,books.编号,书名,借期+借阅期限as '应还日期'
books,borrowinf,readertype,readers where books.编号=图书编号and readers.编号=读者编号and 读者类型=类型编号and (还期is null and 借期+借阅期限<getdate() or 借期+借阅期限<还期)
--20. 查询编号为某某的读者的借阅信息。
select 姓名,类型名称,图书编号,借期,借期+借阅期限 as '应还日期' from
books,borrowinf,readertype,readers where books.编号=图书编号 and readers.编号=读者编号 and 读者类型=类型编号 and readers.编号='2004060002'
5.总结
1)课程设计过程中出现的问题、原因及解决方法:
出现的主要问题是:语法格式不过关
原因:使用聚合函数时,分组语句的搭配不明确,不知道什么时候可有可无。
解决方法:
a. 如果没有group by 子句,select 列表中不允许出现字段与分组函数混用的情况。
b.在带有group by子句的查询语句中,在select列表中指定的列要么是group by 子 句中指定的列,要么包含聚组函数。出现在select列表中的字段,如果不是包含在分组函数 中,那么该字段必须同时出在Group by子句中。
c.group by后面字段的顺序不同分组结果不同。
出现的问题还有,忘记了DATEDIFF相隔时间函数
datediff(day,'2014-1-1',getdate())
2)课程设计的主要收获:
通过这次课程设计,对学过的知识进行了回顾,一些理解的不够深刻的问题,能有机会再次得以解决。从碰到问题,到思考分析问题,从查阅相关书籍看,请同学和老师帮忙,到 真正解决问题,经历了,从疑惑到痛苦再到喜悦的全过程。这次课程设计给予我更多的,还是查询设计的经验与其过程中的酸甜苦辣。同时很感谢帮助过我的同学,更感谢樊老师的悉心教导。
3)对今后课程设计的打算:
熟练掌握基础知识内容,定期回顾旧知识;广泛了解相关知识,;积极发挥思维,敢于尝试勇于创新;勤于动手,多思多问。
6.参考文献
《数据库应用技术——SQL Server 2008 R2》(主编:周慧 施乐军)中国邮电出版社 5
第二篇:数据库应用课程实验报告7
《数据库应用》 实验报告(7) 实验名称:________________ 指导教师:___________ 完成日期:___________
专 业:________________ 班 级:___________ 姓 名:___________