图书馆数据库课程设计.docx
《图书馆数据库课程设计.docx》由会员分享,可在线阅读,更多相关《图书馆数据库课程设计.docx(19页珍藏版)》请在冰点文库上搜索。
图书馆数据库课程设计
数据库
课程设计
设计题目:
图书馆管理系统
组长姓名:
刘之远
组长学号:
122101208
专业班级:
14级计算机应用技术2班
指导老师:
黄影
数据库课程设计任务及成绩
院(系):
信息工程学院教研室:
13#607
课程设计题目
课程设计任务分配
1:
数据库的创建以及表的创建及操作和触发器
2:
数据的录入以及视图的创建查询
3:
画E—R图及功能模块图和存储过程
4:
简单查询和嵌套查询
5:
模糊查询及连接查询
6:
WORD整理及E-R图及功能模块图
小组成员
姓名
学号
组长否
1
1432101208
是
2
142101213
否
3
1432101223
否
4
1432101217
否
5
1432101224
否
6
1432101238
否
指导老师:
刘书影
2014年12月18日
摘要
数据库技术和Interne的飞速发展,使他们已经成为现代信息技术的重要组成部分,是现在计算机信息系统和计算机应用系统的基础和核心。
对于拥有庞大人员的学校的管理来讲,数据的有效使用是一个学校能否进行有效管理的一个关键。
学校作为一个学习的地方,一定会有一个图书馆。
有图书馆就必定要有管理,这样学校图书管理系统就显得更为重要。
学校图书管理系统适应于绝大多数的学校图书馆的管理。
应用此系统可以将众多的学生信息和图书信息进行有效的管理,提高学校的效率。
第一章需求分析
1.1读者登记处
学生或教师需要通过办理图书证之后才能进行图书借阅。
图书证包括借书证号,姓名,读者类型,借书人单位等信息。
在读者登记处,需要把读者的有关信息添加到信息系统中保存,当读者信息发生改变时,需要对计算机里的内容进行相应的修改。
当读者办理退证手续时,需要删除相应的读者信息。
另外,生成超过期限未还书的读者信息表,通知读者应尽快还书等。
1.2图书总管部门
1.2.1图书管理部门负责书籍和出版社等的信息管理,具体如下:
(1)图书信息管理。
完成图书的录入、修改、删除和查询功能。
在查询图书信息时,可随时查询书库中现有书籍的类型、书号、书名、作者、数量等信息。
所有书籍都可由书号唯一标识。
(2)为了方便业务往来,需保存出版社相关信息。
这些信息包括出版社编号、名称、电话、邮编、地址、联系人等。
1.3图书借还处
2.3.1图书借还处负责图书的借阅和归还工作。
具体如下:
(1)读者借书管理。
读者可以根据图书类别和书名查找自己要借阅的图书,在图书借阅登记中,借阅日期是自动填写的(当前系统日期)。
(2)还书管理。
在办理还书业务时,系统判断是否过期,若过期,则首先查看是否已经交了罚款。
若未交,则生成一张罚款通知单。
(3)完成图书在库数量的查询。
此外,对于书籍、读者和出版社等信息,系统管理员可以做添加、修改、删除和查询操作。
普通读者只能查询。
3业务流程分析
第二章概念结构设计
通常,把每一类数据对象的个体称为实体,而每一类对象的集合称为“实体集”。
而E—R模型的主要成分是实体、联系和属性。
如果用矩形框表示实体集,用带半圆的矩形表示属性,用线段连接实体集与属性,当一个属性或属性组合指定为主码时,在属性后加#键加以区别,则可以表示实体集及每个实体集涉及的属性,实体集之间存在各种关系,通常把这种关系称为“联系”。
联系有三类:
一对一的联系(1:
1);一对多的联系(1:
n);多对多的联系(m:
n)。
所以,此图书管理系统中实体集与实体集的联系,E—R模型如下:
2.1图书管理系统实体集的子E-R图
本系统所涉及书籍实体有如下属性:
书号,种类,数量,存放位置,书名,出版年,出版社编号,作者。
其所对应的E-R图如下
读者实体犹如下属性:
借书证号,姓名,性别,借书人单位,读者类型|。
其所对应的E-R图如下
读者身份实体的属性如下:
读者类型,可借阅的天数,可借阅的数量。
其所对应的E-R图如下:
2.2宿舍信息管理系统总E—R图
第三章逻辑结构及物理结构设计
3.1将E—R图转化为关系模式
转换原则:
1:
1不单独对应一个关系模式,将一端实体的主码及联系的属性,加入另一端实体所对应的关系模式,且不影响其主码。
1:
n不单独对应一个关系模式,将一端实体的主码及联系的属性,加入到N端实体的所对应的关系模式,且不影响其主码。
m:
n必须单独对应一个关系,由两端实体的主码及联系的属性为其属性,两端实体主码的组合为其主码。
实体1:
书籍【种类、数量、存放位置、书号、书名、出版年、作者、出版社编号、价格】
实体2:
读者【借书证号、姓名、性别、借书人单位、读者类型】
实体3:
出版社【出版社编号、出版社名、电话、邮编、地址】
实体4:
借还情况【借书证号、书号、借书日期、还书日期】
实体5:
读者身份【读者类型、可借阅天数、可借阅数量】
3.2物理结构设计
由以上的分析,得出上述5个表格结构如下:
读者表:
创建此表所需要的字段名是:
姓名、借书证号、性别、借书人单位读者类型,其中借书证号设为主键。
字段名
字段类型
字段宽度
约束
借书证号
char
20
PK
姓名
char
10
性别
char
2
借书人单位
char
30
读者类型
char
4
FK
出版社表:
用于记录书籍出版社信息,所需要的字段名是:
出版社编号、出版社名、电话、邮编、地址,其中出版社编号是主键。
字段名
字段类型
字段宽度
约束
出版社编号
tinyint
PK
出版社名
char
30
电话
char
50
邮编
char
30
地址
char
50
书籍表:
用于记录书籍信息,所需要的字段名是:
书号、书名、数量、类型、出版年、作者、出版社编号、存放位置。
主键是书号。
字段名
字段类型
字段宽度
约束
书号
char
10
PK
书名
char
50
数量
tinyint
类型
char
30
出版年
tinyint
作者
char
10
出版社编号
tinyint
FK
存放位置
char
30
读者身份表:
用于记录读者类型信息,是学生还是老师。
所需要的字段名是:
读者类型、可借阅天数、可借阅数量。
主键是读者类型。
字段名
字段类型
字段宽度
约束
读者类型
char
4
PK
可借阅天数
tinyint
非空
可借阅数量
tinyint
非空
借还情况表:
用于记录读者借还图书的情况。
所需要的字段名是:
借书证号、书号、借书日期、还书日期。
主键是借书证号、书号。
字段名
字段类型
字段宽度
约束
借书证号
char
20
PK
书号
char
10
PK
借书日期
datetime
8
还书日期
datetime
8
第四章数据库的实现
4.1数据库的创建
1建立数据库
createdatabase图书馆
on
(name=library,
filename='d:
\database\图书馆_data.mdf',
size=10,maxsize=50,
filegrowth=5)
logon
(name=library_log,
filename='d:
\database\图书馆_data.ldf',
size=5,maxsize=25,
filegrowth=5)
2建表
(1)读者身份
createtable读者身份
(读者类型char(4)
check(读者类型in('教师','学生'))primarykey,
可借阅天数tinyintnotnull,
可借阅数量tinyintnotnull
)
(2)读者
createtable读者
(借书证号char(20)primarykey,
姓名char(10)notnull,
性别char
(2)check(性别='男'or性别='女'),
借书人单位char(30),
读者类型char(4)
foreignkeyreferences读者身份(读者类型)
)
(3)出版社
createtable出版社
(出版社编号char(30)primarykey,
出版社名char(30)notnull,
电话char(50),
邮编char(30),
地址char(50)
)
(4)书籍
createtable书籍
(书号char(10)primarykey,
书名char(50)notnull,
数量tinyintnotnull,
类型char(30),
出版年char(10),
作者char(10),
出版社编号char(30)
foreignkeyreferences出版社(出版社编号),
存放位置char(30)
)
(5)借还情况
createtable借还情况
(借书证号char(20)
foreignkeyreferences读者(借书证号),
书号char(10)
foreignkeyreferences书籍(书号),
借书日期datetimedefaultgetdate(),
还书日期datetime,
primarykey(借书证号,书号)
)
第五章表的T-SQL语句
5.1.1简单查询
1)查询读者表中读者证号和姓名。
代码如下:
select借书证号,姓名from读者
运行结果:
(2)查询出版社表中出版社名、出版社编号和电话等信息。
代码如下:
select出版社名,出版社编号,电话from出版社
运行结果:
5.1.2模糊查询
(1)查询书籍表中书名含'背影'的书号,出版年,书名和作者等信息。
代码如下:
select出版年,作者,书名,书号from书籍where书名like'%背影%'
运行结果:
(2)查询来出版社表中出版社名中有‘海洋’字的信息。
代码如下:
select出版社编号,电话,邮编,出版社名,地址from出版社表
where出版社名like'%海洋%'
运行结果:
5.1.3连接查询
(1)查询书籍的书号,书名,数量,类型,出版年,作者,借书日期,还书日期如下:
select书籍.书号,书名,数量,类型,出版年,作者,借书日期,还书日期from书籍,借还情况
where书籍.书号=借还情况.书号
运行结果:
5.2.1存储过程
在SQLServer中,存储过程是数据库对象之一,它有执行速度快、确保数据库的安全和自动完成需要预先执行的任务等优点,本设计创建一个存储过程,功能是通过借书证号查看该读者的借书信息:
姓名,借书人单位,书名,作者,借书日期,还书日期。
存储过程的创建和调用如下:
createprocprcsed
@nochar(10)
as
select姓名,借书人单位,书名,作者,借书日期,还书日期from读者,借还情况,书籍
where读者.借书证号=借还情况.借书证号and借还情况.书号=书籍.书号
例如:
execprcsed'32080090011'
5.2.2视图
视图是由一个或多个基本表(或视图)导出的数据信息,可根据用户的不同建立不同的视图。
5.2.3视图的创建
createviewvw1
5.2.4视图的T-SQL语句
select借书证号,借还情况.书号,出版社.出版社编号from出版社,书籍,借还情况where出版社.出版社编号=书籍.出版社编号
and书籍.书号=借还情况.书号
运行结果如下:
5.2.5触发器
触发器是一类特殊的存储过程。
触发器与表的关系密切,可用于维护表中的数据。
当有数据影响到触发器维护的数据时,触发器自动执行。
创建该触发器可以
createtriggertrgin
on借还情况forupdate,insert
as
begin
declare@nochar(6),@ntinyint
select@no=借书证号frominserted
select@n=count(*)from借还情况where借书证号=@no
if@n>10
begin
rollback
print'已超出上限!
'
end
end
第六章总结
这次课程设计下来,学到了不少东西,以前对SQL,只能按书上按部就班的写,写SQL语句是会了,但数据逻辑和方法方面,一点都不够到位,没有对以前的知识进行系统的了解,没有把各个部分知识整合在一起,通过这次学生宿舍管理系统课程设计,使我对数据库设计的各个方面都加深了理解,了解到数据库是一环扣一环的,中途不能有办点马虎,也体会到把知识应用于实践是不容易的,同时也学到课本中所没有的东西,一些问题也只有真正做设计的时候才会出现。
由于时间比较紧,因此我们所做的课程设计肯定还存在许多的不足之处,程序中也存在许多小错误。
这将激励我们在以后的学习当中职累更多的经验,努力减少错误的发生。
(注:
可编辑下载,若有不当之处,请指正,谢谢!
)