ImageVerifierCode 换一换
格式:DOC , 页数:11 ,大小:168.54KB ,
资源ID:4283291      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4283291.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(设计并实现一个简单的学校图书馆数据库系统.doc)为本站上传会员【丰****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

设计并实现一个简单的学校图书馆数据库系统.doc

1、实验题目:设计并实现一个简单的学校图书馆数据库系统实验报告:一、需求分析1、 E-R图2、 建立基本表1)图书(书号,书名,作者,出版社,定价,类别,借阅次数,总借阅时间,总册数,剩余册书)2)学生读者(学号,姓名,所在系,性别,可借书量,是否有书逾期)3)学生借阅(书号,学号,姓名,书名,借书日期,应还日期,实还日期)4)教师读者(教师号,姓名,单位,性别,可借书量,是否有书逾期)5)教师借阅(书号,教师号,姓名,书名,借书日期,应还日期,实还日期,是否续借)2、关系图二、查询功能的实现1、判断某位读者是否有逾期的图书(以学生读者为例)CREATE PROCEDURE 判断某位学生读者是否有

2、逾期的图书 (学号_1 char(5)ASIF(SELECT COUNT (书号)FROM 学生借阅WHERE (DATEDIFF(day,(SELECT 应还日期 FROM 学生借阅 WHERE 学号=学号_1),getdate()0) AND (学号=学号_1)=0) /*计算是否逾期*/BEGINprint该读者无逾期的书UPDATE 学生读者 SET是否有书逾期=1WHERE 学号=学号_1ENDELSE print该读者有逾期的书GO功能:该存储过程通过对输入的读者号所对应的预期借阅信息进行统计,若结果集非空则通知逾期,同时将是否有书逾期置为1,否则通知逾期。(教师读者查询同理,此处

3、不再赘述)2、图书按借阅量排序CREATE PROCEDURE 图书按借阅量排序 ASSELECT 图书.书号,图书.书名,(图书.总册数-图书.剩余册数) as 借出量FROM 图书ORDER BY 图书.借出量 ASC /*按借出量升序排序*/GO功能:该存储过程通过图书属性中总册数与剩余册数作差作为借出量,并在结果集中按升序排列。3、查询已全部借出的书CREATE PROCEDURE 查询已全部借出的书 ASSELECT 图书.书号,图书.书名FROM 图书WHERE 图书.剩余册数=0GO功能:该存储过程通过对剩余册书是否为零的判断实现对是否全部借出的判断。4、查询未借出的书CREAT

4、E PROCEDURE 查询未借出的书 ASSELECT 图书.书号,图书.书名,图书.剩余册数FROM 图书WHERE 图书.总册数=图书.剩余册数GO功能:该存储过程通过对总册数与剩余册数的比较实现对未借出的图书的判断。5图书按类统计CREATE PROCEDURE 图书按类统计 ASSELECT 类别,sum(剩余册数) as 馆藏册数,(sum(总册数)-sum(剩余册数) as 借出册数,(sum(总借阅时间) as 总借阅时间FROM 图书GROUP BY 类别GO功能:该存储过程通过分组统计函数实现对基本属性的运算,并在结果集中以新属性名列出。三、存储过程和触发器1、 存储过程1

5、)新增图书信息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,

6、 定价_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,

7、是否有书逾期_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)

8、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)插入教师借阅

9、信息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 教师借阅数据更

10、新(书号_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 学

11、生还书 学号_1 char(5), 书号_1 char(5), 实还日期_1 datetime, 是否丢失 int ASDECLARE 罚金 floatDECLARE 借期_1 intDECLARE 超期_2 intBEGINSET 借期_1=DATEDIFF(day, /*计算借期并用变量借期_1表示*/(SELECT 借书日期 FROM 学生借阅 WHERE 学号=学号_1 AND 书号=书号_1),实还日期_1)SET 超期_2=DATEDIFF(day, /*计算超期并用变量超期_2表示*/(SELECT 应还日期 FROM 学生借阅 WHERE 学号=学号_1 AND 书号=书号_1

12、),实还日期_1)IF (超期_20) /*计算超期罚金并打印结果*/SET 罚金=超期_2*0.05PRINT 超期罚款+CAST(罚金 AS char(5)IF (是否丢失=1) /*计算丢书罚金并打印结果*/SET 罚金= 2*(SELECT 定价 FROM 图书 WHERE 书号_1=书号 )PRINT 丢书罚款+CAST(罚金 AS char(5)UPDATE 图书 SET /*对对应图书信息进行更新*/剩余册数=剩余册数+1, 总借阅时间=总借阅时间+借期_1WHERE 书号=书号_1UPDATE 学生借阅 SET /*对对应学生借阅信息进行更新*/实还日期=实还日期_1WHERE

13、 学号=学号_1UPDATE 学生读者 SET /*对对应学生读者信息进行更新*/可借书量=可借书量+1WHERE 学号=学号_1DELETE /*删除该借阅信息,实现还书功能*/FROM 学生借阅 WHERE 学号=学号_1 AND 书号=书号_1ENDGO说明:该存储过程主要根据输入信息实现还书、计算并打印罚款(包括超期和丢书)的功能,同时对其他表中相关信息作出更新,最后删除该借阅信息。在实验过程中本想用触发器实现,但遇到了一系列问题,最后选择用存储过程实现,并成功地实现了以上各功能。8)教师还书(注释、说明与上一存储过程类似,不再赘述)CREATE PROCEDURE dbo.教师还书

14、教师号_1 char(5), 书号_1 char(5), 实还日期_1 datetime, 是否丢失 int ASDECLARE 罚金 floatDECLARE 借期_1 intDECLARE 超期_2 intBEGINSET 借期_1=DATEDIFF(day,(SELECT 借书日期 FROM 教师借阅 WHERE 教师号=教师号_1 AND 书号=书号_1),实还日期_1)SET 超期_2=DATEDIFF(day,(SELECT 应还日期 FROM 教师借阅 WHERE 教师号=教师号_1 AND 书号=书号_1),实还日期_1)IF (超期_20)SET 罚金=超期_2*0.05PR

15、INT 超期罚款+CAST(罚金 AS char(5)IF (是否丢失=1)SET 罚金= 2*(SELECT 定价 FROM 图书 WHERE 书号_1=书号 )PRINT 丢书罚款+CAST(罚金 AS char(5)UPDATE 图书 SET 剩余册数=剩余册数+1,图书.总借阅时间=图书.总借阅时间+借期_1WHERE 图书.书号=书号_1UPDATE 教师借阅 SET实还日期=实还日期_1WHERE 教师号=教师号_1UPDATE 教师读者 SET可借书量=可借书量+1WHERE 教师号=教师号_1DELETE FROM 教师借阅 WHERE 教师号=教师号_1 AND 书号=书号_

16、1ENDGO2、 触发器1)Tri_学生借阅CREATE TRIGGER Tri_学生借阅 ON 学生借阅 FOR INSERT ASIF /*借书要求,有逾期、借书量满或借同一本书不可借,回滚INSERT操作*/(SELECT 学生读者.是否有书逾期 FROM 学生读者,Inserted WHERE 学生读者.学号=Inserted.学号)=1) /*有逾期*/OR(SELECT 学生读者.可借书量 FROM 学生读者,Inserted WHERE 学生读者.学号=Inserted.学号)=0) /*借书量满*/OR(SELECT 学生借阅.书号FROM 学生借阅,Inserted WHER

17、E 学生借阅.书号=Inserted.书号 AND 学生借阅. 学号=Inserted.学号)!=NULL) /*借同一本书*/ROLLBACK TRANSACTIONBEGIN /*符合借书要求,执行以下操作,对相关表的相关属性值进行更新*/UPDATE 图书 SET图书.借阅次数=图书.借阅次数+1,图书.剩余册数=图书.剩余册数-1FROM 图书,InsertedWHERE 图书.书号=Inserted.书号UPDATE 学生读者 SET学生读者.可借书量=学生读者.可借书量-1FROM 学生读者,InsertedWHERE 学生读者.学号=Inserted.学号UPDATE 学生借阅

18、SET学生借阅.应还日期=DATEADD(day,60,学生借阅.借书日期)FROM 学生借阅,InsertedWHERE 学生借阅.书号=Inserted.书号END说明:该触发器建立在INSERT操作之上,即在插入新的借阅信息时触发器动作,先对读者的借阅条件进行检查,若不符合要求回滚INSERT操作,即借阅失败,否则即实现插入新的借阅信息,借阅成功。之后,触发器对相关联的表中的某些属性值进行更新,比如图书的“剩余册数”、读者的“可借书量”等等实现自动修改,使其符合实际要求。2)Tri_教师借阅(注释、说明与上一触发器类似,不再赘述)CREATE TRIGGER Tri_教师借阅 ON 教师

19、借阅 FOR INSERT ASIF(SELECT 教师读者.是否有书逾期 FROM 教师读者,Inserted WHERE 教师读者.教师号=Inserted.教师号)=1)OR(SELECT 教师读者.可借书量 FROM 教师读者,Inserted WHERE 教师读者.教师号=Inserted.教师号)=0)OR(SELECT 教师借阅.书号 FROM 教师借阅,Inserted WHERE 教师借阅.书号=Inserted.书号 AND 教师借阅. 教师号=Inserted.教师号)!=NULL)ROLLBACK TRANSACTIONBEGINUPDATE 图书 SET图书.借阅次数

20、=图书.借阅次数+1,图书.剩余册数=图书.剩余册数-1FROM 图书,InsertedWHERE 图书.书号=Inserted.书号UPDATE 教师读者 SET教师读者.可借书量=教师读者.可借书量-1FROM 教师读者,InsertedWHERE 教师读者.教师号=Inserted.教师号UPDATE 教师借阅 SET教师借阅.应还日期=DATEADD(day,90,教师借阅.借书日期)FROM 教师借阅,InsertedWHERE 教师借阅.书号=Inserted.书号END四、实验分析与总结管理规则的实现1) 只有本校师生才能借书利用学号、教师号定义时的CHECK约束(学号LIKE“

21、PB0-90-90-9”,教师号LIKE“T0-90-90-9”),对其进行限制,防止其他结构的读者证号插入数据库中。2) 每人同一本书只能借一本书在触发器Tri_学生借阅、Tri_教师借阅中查询是否已有该读者对该本书的借阅信息,若以有则回滚插入操作,从而实现该约束。3) 借期、续借及超期罚金通过(实还日期-借书日期)来标记“是否逾期”,从而判断逾期情况,对逾期读者计算超期罚金并打印,另外利用单独的存储过程进行教师读者的续借处理。4) 限制逾期读者借书在触发器Tri_学生借阅、Tri_教师借阅中查询该读者的借阅信息中是否有逾期标记,若以有则回滚插入操作,从而实现该约束。5)丢书罚金在“学生还书

22、”、“教师还书”的存储过程中,判断输入“是否丢失”的值,若为“1”,即丢失,则计算并打印出丢书罚金,否则不操作。6)统计每本图书的借出次数及借阅时间利用存储过程进行统计:CREATE PROCEDURE 统计次数时间 ASSELECT 书名,借阅次数,总借阅时间FROM 图书GO由于基本表中已有所要求的属性值,所以只需进行最简单的SELECT查询即可。7) 统计各类图书的馆藏册数、借出册数和平均借阅时间利用存储过程进行统计:CREATE PROCEDURE 图书按类统计ASSELECT 类别,sum(剩余册数) as 馆藏册数,(sum(总册数)-sum(剩余册数) as 借出册数,(sum(总借阅时间)/sum(借阅次数) as 平均借阅时间FROM 图书GROUP BY 类别GO该存储过程中利用了按类别分组以及统计函数,并将统计结果以新列名在结果集中列出。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服