实验题目:设计并实现一个简单的学校图书馆数据库系统
DNS服务器未响应是什么意思>CAD工程制图实验报告:
一、需求分析三战三北
1、E-R图
2、建立基本表
1〕图书〔书号,书名,作者,出版社,定价,类别,借阅次数,总借阅时间,总册数,剩余册书〕
2〕学生读者〔学号,,所在系,性别,可借书量,是否有书逾期〕
3〕学生借阅〔书号,学号,,书名,借书日期,应还日期,实还日期〕
4〕教师读者〔教师号,,单位,性别,可借书量,是否有书逾期〕
5〕教师借阅〔书号,教师号,,书名,借书日期,应还日期,实还日期,是否续借〕
2、关系图
二、查询功能的实现
办理进出口权1、判断某位读者是否有逾期的图书〔以学生读者为例〕
CREATE PROCEDURE [判断某位学生读者是否有逾期的图书]
(@学号_1 char(5))
AS
IF((SELECT COUNT (书号)
FROM 学生借阅
WHERE ((DATEDIFF(day,(SELECT 应还日期 FROM 学生借阅 WHERE 学号=@学号_1),getdate()))>0) AND (学号=@学号_1))=0) /*计算是否逾期*/
BEGIN
print'该读者无逾期的书'
UPDATE 学生读者
SET是否有书逾期=1
WHERE 学号=@学号_1
END
我不管
ELSE
print'该读者有逾期的书'
GO
功能:该存储过程通过对输入的读者号所对应的预期借阅信息进行统计,假设结果集非空则通知逾期,同时将‘是否有书逾期’置为‘1’,否则通知逾期。〔教师读者查询同理,此处不再赘述〕
2、图书按借阅量排序
CREATE PROCEDURE [图书按借阅量排序] AS
SELECT 图书.书号,图书.书名,(图书.总册数-图书.剩余册数) as 借出量
FROM 图书
ORDER BY 图书.借出量 ASC /*按借出量升序排序*/
GO
功能:该存储过程通过图书属性中总册数与剩余册数作差作为借出量,并在结果集中按升序排列。
3、查询已全部借出的书
CREATE PROCEDURE [查询已全部借出的书] AS
FROM 图书
WHERE 图书.剩余册数=0
GO
功能:该存储过程通过对剩余册书是否为零的判断实现对是否全部借出的判断。
4、查询未借出的书
CREATE PROCEDURE [查询未借出的书] AS
FROM 图书
GO
功能:该存储过程通过对总册数与剩余册数的比较实现对未借出的图书的判断。
5图书按类统计
CREATE PROCEDURE [图书按类统计]
AS
SELECT 类别,sum(剩余册数) as 馆藏册数,(sum(总册数)-sum(剩余册数)) as 借出册数,(sum(总借阅时间)) as 总借阅时间
FROM 图书
GROUP BY 类别
GO
功能:该存储过程通过分组统计函数实现对基本属性的运算,并在结果集中以新属性名列出。
三、存储过程和触发器
1、存储过程
1〕新增图书信息
CREATE PROCEDURE [新增图书信息]
(@书号_1 [char](10),
@书名_2 [varchar](50),
@作者_3 [varchar](50),
@出版社_4 [varchar](50),
@定价_5 [float],
@类别_6 [varchar](50),
@借阅次数_7 [int],
@总借阅时间_8 [int],
@总册数_9 [int],
@剩余册数_10 [int])
AS INSERT INTO [PB08210172 宫永超].[dbo].[图书]
( [书号],
[书名],
[作者],
[出版社],
[定价],
[类别],
[借阅次数],
[总借阅时间],
[总册数],
[剩余册数])
VALUES
( @书号_1,
@书名_2,
@作者_3,
@出版社_4,
@定价_5,
@类别_6,
@借阅次数_7,
@总借阅时间_8,
@总册数_9,
@剩余册数_10)
GO
说明:该存储过程实现新图书信息向图书表中的添加,每次只能添加一个元组。
2〕新增学生读者信息
CREATE PROCEDURE [新增学生读者信息]
(@学号_1 [char](10),
@_2 [varchar](10),
@所在系_3 [char](3),
@性别_4 [char](2),
@可借书量_5 [int],
@是否有书逾期_6 [bit])
AS INSERT INTO 学生读者
( [学号],
[],
[所在系],
[性别],
[可借书量],
[是否有书逾期])
VALUES
( @学号_1,
@_2,
@所在系_3,
@性别_4,
@可借书量_5,
@是否有书逾期_6)
GO
说明:该存储过程实现新学生读者信息向学生读者表中的添加,每次只能添加一个元组。
3〕新增教师读者信息手机简笔画
CREATE PROCEDURE [新增教师读者信息]
(@教师号_1 [char](10),
@_2 [varchar](50),
@单位_3 [varchar](50),
@性别_4 [char](2),
@可借书量_5 [int],
@是否有书逾期_6 [bit])
AS INSERT INTO [PB08210172 宫永超].[dbo].[教师读者]
( [教师号],
[],
[单位],
[性别],
[可借书量],
[是否有书逾期])
VALUES
( @教师号_1,
@_2,
@单位_3,红豆功效
@性别_4,
@可借书量_5,
@是否有书逾期_6)
GO
说明:该存储过程实现新教师读者信息向教师读者表中的添加,每次只能添加一个元组。
4〕插入学生借阅信息
CREATE PROCEDURE [插入学生借阅信息]
(@书号_1 [char](10),
@学号_2 [char](5),
@_3 [varchar](10),
@书名_4 [varchar](10),
@借书日期_5 [datetime])
AS INSERT INTO [学生借阅]
( [书号],
[学号],
[],
[书名],
[借书日期])
VALUES
( @书号_1,
@学号_2,
@_3,
@书名_4,
@借书日期_5)
GO
说明:该存储过程将输入信息在教师借阅表中产生一个新的元组,即插入新的借阅信息,从而实现借书功能。
5〕插入教师借阅信息
CREATE PROCEDURE [插入教师借阅信息]
(@书号_1 [char](10),
@教师号_2 [char](4),
@_3 [varchar](10),
@书名_4 [varchar](10),
@借书日期_5 [datetime])
AS INSERT INTO [PB08210172 宫永超].[dbo].[教师借阅]
( [书号],
[教师号],
[],
[书名],
[借书日期])
VALUES
( @书号_1,
春联纸 @教师号_2,
@_3,
@书名_4,
@借书日期_5)
GO
说明:该存储过程将输入信息在教师借阅表中产生一个新的元组,即插入新的借阅信息,从而实现借书功能。
6)教师借阅数据更新
CREATE PROCEDURE [教师借阅数据更新]
(@书号_1 [char],
@教师号_2 [char],
@是否续借_6 [int])
AS
UPDATE 教师借阅
SET [是否续借] = @是否续借_6 /*“是否续借”置为“1”*/
WHERE ( [书号] = @书号_1 AND [教师号] = @教师号_2)
IF( @是否续借_6=1)
UPDATE 教师借阅 SET
应还日期=DATEADD(day,30,教师借阅.应还日期) /*将应还日期推迟一个月*/
FROM 教师借阅
GO
说明:该存储过程通过输入的教师号和书号找到对应的借阅信息后对其进行更新,将标记信息“是否续借”置为“1”,并将应还日期推迟一个月,从而实现续借功能。
7〕学生还书
CREATE PROCEDURE [学生还书]