当前位置:文档之家› SQL_Server_2005图书管理系统课程设计

SQL_Server_2005图书管理系统课程设计

2005》《SQL Server2005

课程设计

目录

一,系统需求分析 (3)

二,数据库分析 (3)

三,数据库设计部分 (3)

(1)实体、联系、属性及E_R图。 (3)

1,实体、联系 (3)

2,图书管理系统E-R图模型 (4)

3,关系模式 (4)

(2)表设计及表结构 (5)

(3)用T-SQL语句创建数据库、创建表以及添加数据。 (6)

1,创建数据库代码: (6)

2,创建表代码: (7)

3,添加数据代码: (8)

(5)实现各种查询功能 (13)

(6)触发器设计部分 (14)

1,用T-SQL语言实现借阅图书和归还图书功能。 (14)

①借阅书籍触发器。 (14)

②归还书籍触发器。 (15)

2,Update触发器 (15)

(7)视图的设计部分 (15)

(8)默认值约束的建立 (16)

(9)函数的设计部分 (16)

)存储过程创建部分 (16)

(1010)存储过程创建部分

四,实训心得 (16)

一,系统需求分析

图书管理工作繁琐,借阅频繁,包含大量的信息数据,因此

就需要一个完善的图书管理系统来实现对这些数据的有效管理。

本系统主要任务就是对图书、读者、员工、借阅信息、查询进行

统一管理,满足各类用户的需求。本系统在功能上要实现借阅图

书、续借图书、归还图书、催还图书、信息查询等功能。

二,数据库分析

图书管理系统就是要求图书管理人员通过该系统对图书、读

者、员工、借阅信息等进行统一管理,从而实现功能上的借阅图书、

续借图书、归还图书、催还图书以及信息查询。这就要求管理人员

能够对数据库进行熟练操作而简单的表查询、触发器的建立、存储

过程的建立以及用户自定义函数的建立等等这些管理数据库的方法

都能对图书馆里系统的管理起到事半功倍的效果。

三,数据库设计部分

(1)实体、联系、属性及E_R图。

根据数据库分析,确定实体及实体间联系,及各个实体和联系的属性并设计出E-R图。

1,实体、联系

实体:图书信息,借阅书籍,归还书籍,借阅人,员工

联系:借阅信息,管理信息

图书信息与借阅书籍、归还书籍及借阅人之间的联系是借阅信息。

图书信息与员工之间的联系是管理信息。

2,图书管理系统E-R图模型

图书管理系统E_R图模型

3,关系模式(带下划线的为主码,带波浪线的为外码):

员工(员工编号,姓名,性别,值日时间,联系方式)(2)表设计及表结构

借阅信息表,,借阅人表

图书信息表,,借阅信息表

借阅人表,,借阅需要的表有::图书信息表

1,需要的表有

书籍表,归还书籍表,管理信息表,员工表。

2,以下为各表的表结构

图书信息表结构

借阅信息表结构

借阅人表结构

借阅书籍表结构

归还书籍表结构

管理信息表结构

员工表结构

(3)用T-SQL语句创建数据库

、创建表以及添加数据。

语句创建数据库、

1,创建数据库代码:

create database图书管理系统

on primary

(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)

log on

(name=tsgl_log,

filename='f:\张雨娇\数据库\tsgl_log.ldf',

size=5mb,

maxsize=10mb,

filegrowth=1mb)

go

2,创建表代码:

create table图书信息

(图书编号char(6)not null primary key,

书名nvarchar(50)not null,

书号char(6)not null,

类别char(8)not null,

定价money null,

入库时间smalldatetime null,

库存量tinyint not null default'10',

)

go

create table借阅信息

(借书时间smalldatetime not null primary key,

应还时间smalldatetime not null,

图书编号char(6)not null constraint fk_tsbh1references图书信息(图书编号),

是否续借char(2)not null default'否',

)

go

create table借阅人

(图书证号nvarchar(50)not null primary key,

姓名nvarchar(50)not null,

电话nvarchar(50)not null,

已借书数目tinyint not null,

能否借书char(4)null default'能',

单位名称nvarchar(50)null,

)

go

create table管理信息

(图书编号char(6)not null constraint fk_tsbh references图书信息(图书编号),

图书证号nvarchar(50)not null constraint fk_tszh references借阅人(图书证号),

登记借书日期smalldatetime not null constraint fk_jsrq references借阅信息(借书时间),

是否在库char(2)null default'是',

存放位置char(12)not null,

)

go

create table员工

(员工编号char(6)not null primary key,

姓名char(8)not null,

性别char(2)null default'女',

值日时间char(4)not null,

联系方式nvarchar(50)not null,

)

go

create table借阅书籍

(图书编号char(6)not null constraint fk_bh references图书信息(图书编号),图书证号nvarchar(50)not null constraint fk_zh references借阅人(图书证号),

书名nvarchar(50)not null,

)

go

create table归还书籍

(图书编号char(6)not null constraint fk_bh1references图书信息(图书编号),

图书证号nvarchar(50)not null constraint fk_zh1references借阅人(图书证号),

书名nvarchar(50)not null,

)

go

3,添加数据代码:

insert into图书信息

values('000001','计算机专业英语','110011','计算机类

','56.5','2005-9-1','10')

go

insert into图书信息

values('000002','SQL Server2005','110012','计算机类

','29.5','2005-9-1','10')

go

insert into图书信息

values('000003','飘','110013','文学','20','2005-9-1','10')

go

insert into图书信息

values('000004','红楼梦','110014','计算机类','89','2005-9-1','10') go

insert into图书信息

values('000005','市场营销','110015','经济学','36.9','2005-9-1','10') go

insert into图书信息

values('000006','概率论与数据统计','110016','统计学

','25.7','2005-9-1','10')

go

insert into图书信息

values('000007','商务英语','110017','语言','56.5','2005-9-1','10') go

insert into图书信息

values('000008','知识产权','110018','经济学','29.5','2005-9-1','10') go

insert into图书信息

values('000009','西游记','110019','文学','65','2005-9-1','10')

go

insert into图书信息

values('000010','水浒传','110020','计算机类','89','2005-9-1','10') go

insert into图书信息

values('000011','中国近现代史','110021','历史学

','27.5','2005-9-1','10')

go

insert into图书信息

values('000012','高等数学','110022','数学','20.4','2005-9-1','10') go

insert into借阅人

values('200941','王峰','133********','软件班','4','能')

go

insert into借阅人

values('200946','严红','159********','信管班','3','能')

go

insert into借阅人

values('200949','王长林','131********','通讯班','2','能')

go

insert into借阅人

values('200987','张晓辉','189********','光电班','2','能')

go

insert into借阅人

values('200964','萧清','138********','文秘班','5','否')

go

insert into借阅人

values('200948','刘敏','134********','游戏班','3','能')

go

insert into借阅人

values('200992','李明','139********','应用班','1','能')

go

insert into借阅人

values('200937','张琴','131********','软件班','4','能')

go

insert into借阅人

values('200955','刘萌','189********','会计班','2','能')

go

insert into借阅人

values('200926','李卿','189********','市场营销班','5','否') go

insert into员工

values('114521','张盼','女','周一','131********')

go

insert into员工

values('114522','王宏','女','周二','159********')

go

insert into员工

values('114523','秦臻','男','周三','157********')

go

insert into员工

values('114524','李蓉','女','周四','189********')

go

insert into员工

values('114525','肖音','女','周五','133********')

go

insert into员工

values('114526','赵宜','女','周五','133********')

go

insert into借阅信息

values('2010-9-13','2010-10-13','2010-10-5','000001','否') go

insert into借阅信息

values('2010-11-3','2010-12-3','2010-11-20','000002','是')

go

insert into借阅信息

values('2010-9-24','2010-10-24','2010-11-7','000004','否') go

insert into借阅信息

values('2010-5-16','2010-6-15','2010-6-8','000005','是') go

insert into借阅信息

values('2010-4-7','2010-5-7','2010-6-15','000007','否')

go

insert into借阅信息

values('2010-3-9','2010-4-8','2010-4-1','000008','否')

go

insert into借阅信息

values('2010-6-2','2010-7-2','2010-6-23','000010','否')

go

insert into借阅信息

values('2010-10-8','2010-11-7','2010-12-6','000012','否') go

insert into管理信息

values('000001','200941','2010-9-13','是','三楼')

go

insert into管理信息

values('000002','200946','2010-9-13','是','三楼')

go

insert into管理信息

values('000003','200949','2010-9-13','是','一楼')

go

insert into管理信息

values('000004','200987','2010-9-13','是','二楼')

go

insert into管理信息

values('000005','200964','2010-9-13','是','四楼')

go

insert into管理信息

values('000006','200948','2010-9-13','是','二楼')

go

insert into管理信息

values('000007','200992','2010-9-13','是','一楼')

go

insert into管理信息

values('000008','200937','2010-9-13','是','五楼')

go

insert into管理信息

values('000009','200955','2010-9-13','是','一楼') go

insert into管理信息

values('000001','200926','2010-9-13','是','一楼') go

insert into借阅书籍

values('000001','200926','计算机专业英语')

go

insert into借阅书籍

values('000002','200926','SQL Server2005')

go

insert into借阅书籍

values('000005','200926','市场营销')

go

insert into借阅书籍

values('000006','200926','概率论与数据统计')

go

insert into借阅书籍

values('000012','200926','高等数学')

go

insert into借阅书籍

values('000003','200937','飘')

go

insert into借阅书籍

values('000001','200941','计算机专业英语')

go

insert into借阅书籍

values('000003','200941','飘')

go

insert into借阅书籍

values('000010','200946','水浒传')

go

insert into借阅书籍

values('000007','200946','商务英语')

go

insert into借阅书籍

values('000008','200946','知识产权')

go

insert into借阅书籍

values('000005','200948','飘')

go

insert into借阅书籍

values('000007','200948','商务英语')

go

insert into借阅书籍

values('000005','200948','市场营销')

go

insert into借阅书籍

values('000011','200949','中国近现代史')

go

insert into借阅书籍

values('000012','200949','高等数学')

go

insert into借阅书籍

values('000008','200955','知识产权')

go

insert into借阅书籍

values('000004','200955','红楼梦')

go

insert into借阅书籍

values('000011','200964','水浒传')

go

insert into借阅书籍

values('000006','200987','概率论与数据统计') go

insert into借阅书籍

values('000009','200987','西游记')

go

insert into借阅书籍

values('000012','200992','高等数学')

go

insert into归还书籍

values('000004','200926','红楼梦')

go

insert into归还书籍

values('00008','200926','知识产权')

go

insert into归还书籍

values('000009','200946','西游记')

go

insert into归还书籍

values('000004','200946','红楼梦')

go

insert into归还书籍

values('000006','200955','概率论与数据统计') go

insert into归还书籍

values('000011','200964','中国近现代史')

go

insert into归还书籍

values ('000002','200992','SQL Server 2005')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 T-SQL语言实现借阅图书和归还图书功能。

语言实现借阅图书和归还图书功能。借阅书籍触发器。

要求同时最多只能借5本,并且能用触发器来实现,若超过5本,就不能再

借图书,并且提示已经达到了借阅的最大数量。代码如下:

create trigger tr_借阅图书on 借阅书籍for insert as begin

if exists(select*from借阅人,inserted where借阅人.图书证号=inserted.图书证号and已借书数目=5)

begin

print'已经达到了借阅的最大数量'

rollback transaction

end

end

②归还书籍触发器。

当输入归还书籍的图书编号时,若其图书编号与图书证号不与外键约束冲突的话,将该条记录插入归还书籍表中,同时将借阅书籍表中与之相同的记录删除。代码如下:

create trigger tr_归还书籍

on归还书籍

for insert

as

begin

declare@tsbh char(6),@tszh nvarchar(50)

select@tsbh=图书编号from inserted

select@tszh=图书证号from inserted

if exists(select*from借阅书籍where借阅书籍.图书编号=@tsbh and借阅书籍.图书证号=@tszh)

delete from借阅书籍where借阅书籍.图书编号=@tsbh and借阅书籍.图书证号

=@tszh

end

触发器

pdate触发器

2,U pdate

在数据库中创建一个update触发器,当用户更新图书名称时,提示用户不能修改图书名称。代码如下:

create trigger tr_sm

on图书信息

for update

as

if update(书名)

begin

print'用户不能修改图书名称'

rollback transaction

end

go

update图书信息

set书名='冰心语录'

where图书编号='000007'

go

(7)视图的设计部分

创建一个视图,存放每个读者的编号,姓名,单位名称及所借书籍的名称

和数量。代码如下:

create view v_借阅人信息

as

select借阅书籍.图书证号,姓名,单位名称,已借书数目,借阅书籍.书名

from借阅人,借阅书籍

where借阅人.图书证号=借阅书籍.图书证号

go

(8)默认值约束的建立

在图书信息表上,为书名字段创建一个默认值约束。代码如下:alter table图书信息

add constraint df_fm default'Delphi7'for书名

go

(9)函数的设计部分

编写一个函数,该函数,可以通过输入借书时间来判断是否到期,当借阅时间大于30天,返回已经过期;否则返回还未到期。代码如下:

create function fun_jysj(@jysj smalldatetime)

returns char(16)

begin

declare@ret char(8)

if(getdate()-@jysj)>30

set@ret='已经过期'

else

set@ret='还未到期'

return@ret

end

(10

10))存储过程创建部分

创建一个存储过程,它带有一个参数,用于接收借阅人编号,显示该借阅人的借书情况。代码如下:

create proc proc_tszh@tszh char(12)

as

select已借书数目,能否借书,书名,借书时间

from借阅人,管理信息,图书信息,借阅信息

where借阅人.图书证号=管理信息.图书证号and管理信息.图书编号=图书信息.图书编号

and借阅信息.借书时间=管理信息.登记借书日期and借阅人.图书证号=@tszh go

exec proc_tszh'200946'

go

四,实训心得

通过本次的课程设计,让我又熟悉了一次教材。这次的实训将整个大二上学期的SQL Server2005所学内容都融汇到了里面。而实训的大纲仅仅只是老师提供了一个轮廓,整体的设计都要求同学们独立完成,更是培养了同学们独立思考的好习惯。这样的实训我更愿意称之为“复习实训”,因为它综合了SQL Server2005的数据库、表、视图、触发器、存储过程及函数的创建与应用,以及数据的增、删、改的简单操作,让我真真切切地感觉学到了些东西。

相关主题
文本预览
相关文档 最新文档