河南理工大学课程设计.docx
- 文档编号:8760430
- 上传时间:2023-05-14
- 格式:DOCX
- 页数:12
- 大小:56.20KB
河南理工大学课程设计.docx
《河南理工大学课程设计.docx》由会员分享,可在线阅读,更多相关《河南理工大学课程设计.docx(12页珍藏版)》请在冰点文库上搜索。
河南理工大学课程设计
河南理工大学课程设计
河南理工大学
软件学院
实训报告说明书
2010—2011学年第二学期
课程名称关系数据库基础实训
设计题目图书管理系统
学生姓名郭艳明
学号411020040131
专业班级计应10-2
排版
实体
E-R图
关系
数据表
成绩
2011年6月17日
一,系统需求分析
图书管理工作繁琐,借阅频繁,包含大量的信息数据,因此
就需要一个完善的图书管理系统来实现对这些数据的有效管理。
本系统主要任务就是对图书、读者、、借阅信息、查询进行
统一管理,满足各类用户的需求。
本系统在功能上要实现借阅图
书、续借图书、归还图书、催还图书、信息查询等功能。
二,数据库分析
图书管理系统就是要求图书管理人员通过该系统对图书、读
者、借阅信息等进行统一管理,从而实现功能上的借阅图书、
续借图书、归还图书、催还图书以及信息查询。
这就要求管理人员
能够对数据库进行熟练操作而简单的表查询、触发器的建立、存储
过程的建立以及用户自定义函数的建立等等这些管理数据库的方法
都能对图书馆里系统的管理起到事半功倍的效果。
三,数据库设计部分
(1)实体、联系、属性及E_R图。
根据数据库分析,确定实体及实体间联系,及各个实体和联系的属性并设计出E-R图。
1,实体、联系
图书信息(图书编号,书名,书号,类别,定价,入库时间,库存量)
借阅信息(借书时间,应还时间,图书编号,是否续借)
借阅人(图书证号,姓名,电话,已借书数目,能否借书,单位名称)
借阅书籍(图书编号,图书证号,书名)
归还书籍(图书编号,图书证号,书名)
管理信息(图书编号,图书证号,登记借书日期,是否在库,存放位置)
员工(员工编号,姓名,性别,值日时间,联系方式)
(2)表设计及表结构
1,需要的表有:
图书信息表,借阅信息表,借阅人表,借阅书籍表,归还书籍表,管理信息表,员工表。
2,以下为各表的表结构
图书信息表结构
列名
数据类型
长度
是否允许为空
默认值
说明
图书编号
char
6
×
无
主键
书名
nvarchar
50
×
无
书号
char
6
√
无
类别
char
8
×
无
定价
money
8
×
无
入库时间
smalldatetime
4
√
无
库存量
tingyint
1
√
10
借阅信息表结构
列名
数据类型
长度
是否允许为空
默认值
说明
借书时间
smalldatetime
4
×
无
主键
应还时间
smalldatetime
4
×
无
图书编号
char
6
×
无
外键
是否续借
char
2
×
否
借阅人表结构
列名
数据类型
长度
是否允许为空
默认值
说明
图书证号
nvarchar
50
×
无
主键
姓名
nvarchar
50
×
无
电话
nvarchar
50
√
无
已借书数目
tinyint
1
×
无
能否续借
char
8
×
无
单位名称
nvarchar
4
√
无
借阅书籍表结构
列名
数据类型
长度
是否允许为空
默认值
说明
图书编号
char
6
×
无
外键
图书证号
nvarchar
50
×
无
外键
书名
nvarchar
50
×
无
归还书籍表结构
列名
数据类型
长度
是否允许为空
默认值
说明
图书编号
char
6
×
无
外键
图书证号
nvarchar
50
×
无
外键
书名
nvarchar
50
×
无
管理信息表结构
列名
数据类型
长度
是否允许为空
默认值
说明
图书编号
char
6
×
无
外键
图书证号
nvarchar
50
×
无
外键
登记借书日期
smalldatetime
4
×
无
外键
是否在库
char
2
√
是
存放位置
char
12
×
无
员工表结构
列名
数据类型
长度
是否允许为空
默认值
说明
员工编号
char
6
×
无
主键
姓名
char
8
×
无
性别
char
2
√
女
值日时间
char
4
×
无
联系方式
nvarchar
50
√
无
(3)用T-SQL语句创建数据库、创建表以及添加数据。
1,创建数据库代码:
createdatabase图书管理系统
onprimary
(name=tsgl_dat,
filename='f:
\张雨娇\数据库\tsgl_dat.mdf',
size=10mb,
maxsize=20mb,
filegrowth=2mb),
filegroup图书管理系统
(name=tsgl_data,
filename='f:
\张雨娇\数据库\tsgl_data.ndf',
size=5mb,
maxsize=10mb,
filegrowth=1mb)
logon
(name=tsgl_log,
filename='f:
\张雨娇\数据库\tsgl_log.ldf',
size=5mb,
maxsize=10mb,
filegrowth=1mb)
go
2,创建表代码:
createtable图书信息
(图书编号char(6)notnullprimarykey,
书名nvarchar(50)notnull,
书号char(6)notnull,
类别char(8)notnull,
定价moneynull,
入库时间smalldatetimenull,
库存量tinyintnotnulldefault'10',
)
go
createtable借阅信息
(借书时间smalldatetimenotnullprimarykey,
应还时间smalldatetimenotnull,
图书编号char(6)notnullconstraintfk_tsbh1references图书信息(图书编号),
是否续借char
(2)notnulldefault'否',
)
go
createtable借阅人
(图书证号nvarchar(50)notnullprimarykey,
姓名nvarchar(50)notnull,
电话nvarchar(50)notnull,
已借书数目tinyintnotnull,
能否借书char(4)nulldefault'能',
单位名称nvarchar(50)null,
)
go
createtable管理信息
(图书编号char(6)notnullconstraintfk_tsbhreferences图书信息(图书
编号),
图书证号nvarchar(50)notnullconstraintfk_tszhreferences借阅人(图书证号),
登记借书日期smalldatetimenotnullconstraintfk_jsrqreferences借阅信息(借书时间),
是否在库char
(2)nulldefault'是',
存放位置char(12)notnull,
)
go
(5)实现各种查询功能
1,能根据图书编号或者图书名称查询此书在图书馆中是否存在以及此书的书目类别、存在的位置、数量等等。
代码如下:
select是否在库,类别,存放位置,库存量
from图书信息,管理信息
where图书信息.图书编号=管理信息.图书编号and图书信息.图书编号='000010'
go
2,个人借阅信息查询。
输入借阅人编号后,能查出该借阅人的所有信息。
代码如下:
select*
from借阅人
where图书证号='200946'
go
3,催还数目查询。
查询出所有已到期、过期、尚未归还的书目信息。
代码如下:
select图书信息.*
from图书信息,管理信息,借阅信息
where图书信息.图书编号=管理信息.图书编号and管理信息.登记借书日期=借阅信息.借书时间and(getdate()-借书时间>=30)or(getdate()-借书时间<30)
go
(6)触发器设计部分
1,用T-SQL语言实现借阅图书和归还图书功能。
1借阅书籍触发器。
要求同时最多只能借5本,并且能用触发器来实现,若超过5本,就不能再借图书,并且提示已经达到了借阅的最大数量。
代码如下:
createtriggertr_借阅图书
on借阅书籍
forinsert
as
begin
ifexists(select*from借阅人,insertedwhere借阅人.图书证号=inserted.图书证号and已借书数目=5)
begin
print'已经达到了借阅的最大数量'
rollbacktransaction
end
end
②归还书籍触发器。
当输入归还书籍的图书编号时,若其图书编号与图书证号不与外键约束冲突的话,将该条记录插入归还书籍表中,同时将借阅书籍表中与之相同的记录删除。
代码如下:
createtriggertr_归还书籍
on归还书籍
forinsert
as
begin
declare@tsbhchar(6),@tszhnvarchar(50)
select@tsbh=图书编号frominserted
select@tszh=图书证号frominserted
ifexists(select*from借阅书籍where借阅书籍.图书编号=@tsbhand借阅书籍.图书证号=@tszh)
deletefrom借阅书籍where借阅书籍.图书编号=@tsbhand借阅书籍.图书证号=@tszh
end
2,Update触发器
在数据库中创建一个update触发器,当用户更新图书名称时,提示用户不能修改图书名称。
代码如下:
createtriggertr_sm
on图书信息
forupdate
as
ifupdate(书名)
begin
print'用户不能修改图书名称'
rollbacktransaction
end
go
update图书信息
set书名='冰心语录'
where图书编号='000007'
go
(7)存储过程创建部分
创建一个存储过程,它带有一个参数,用于接收借阅人编号,显示该借阅人的借书情况。
代码如下:
createprocproc_tszh@tszhchar(12)
as
select已借书数目,能否借书,书名,借书时间
from借阅人,管理信息,图书信息,借阅信息
where借阅人.图书证号=管理信息.图书证号and管理信息.图书编号=图书信息.图书编号
and借阅信息.借书时间=管理信息.登记借书日期and借阅人.图书证号=@tszh
go
execproc_tszh'200946'
go
四,实训心得
通过本次的课程设计,让我又熟悉了一次教材。
这次的实训将整个大一下学期的SQLServer2005所学内容都融汇到了里面。
而实训的大纲仅仅只是老师提供了一个轮廓,整体的设计都要求同学们独立完成,更是培养了同学们独立思考的好习惯。
这样的实训我更愿意称之为“复习实训”,因为它综合了SQLServer2005的数据库、表、视图、触发器、存储过程及函数的创建与应用,以及数据的增、删、改的简单操作,让我真真切切地感觉学到了些东西。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 河南 理工大学 课程设计