图书共享的设计.docx
- 文档编号:5227175
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:19
- 大小:630.74KB
图书共享的设计.docx
《图书共享的设计.docx》由会员分享,可在线阅读,更多相关《图书共享的设计.docx(19页珍藏版)》请在冰豆网上搜索。
图书共享的设计
图书共享的设计
图书共享的设计
一.需求分析
为了能够使学生通过书本了解更多的知识,丰富自己的知识储备,我们班建立一个图书角供学生们互相交换图书进行阅览。
图书角的书籍来源是学生的捐赠,捐赠的书籍需要根据内容进行分类,借阅书籍需要进行相关的记录,借阅的同学必须按时归还书籍,安排图书角管理员,保证图书角能够正常开放。
该数据库的主要是实现图书捐赠,图书管理,图书借阅信息的功能。
1.班级图书共享的图书为班级同学的捐赠,捐赠时管理员记录捐赠人的姓名,学号,性别,联系方式,捐书时间,捐书姓名,捐书数量,书的好坏程度的情况。
2.每位同学每次只能借一本书,借阅时间为一个月,到期允许续借,期限也为一个月,每本书只有一次可以续借的机会。
如果超过借书期限,每天收费0.1元,如有破损则借书者按照损坏程度进行赔偿。
3.管理员需要记录下借阅学生的姓名,学号,性别,联系方式,借书时间和借阅书籍的名字。
还要负责将同学们捐来的书籍进行分类,防止同名书的混淆,并给书目编号。
4.统计出捐书数目最多的人,奖励一本书籍。
二,概念结构设计
1.书籍
2.学生
3.整体结构
三、逻辑结构设计
学生(姓名,学号,性别,联系方式)
图书(书名,图书编号,作者,数量,类别,污损情况)
捐赠表(捐书者的学号,捐赠图书的编号,捐书的时间)
书籍借阅(图书编号,借阅者的学号,借阅时间,归还时间,续借情况,罚款记录)
四、物理结构设计
数据库名:
classbookcorner
数据库物理文件初始大小:
10MB
是否允许自动增长:
是
自动增长方式:
每次增加5MB
最大数据容量:
不受限
是否自动收缩:
是
是否是只读数据库:
否
事务日志文件位置:
f:
\classbookcorner
事务日志文件初始大小:
1MB
事务日志文件最大数据容量:
20MB
创建如下数据表:
学生表
表名
student
作用
学生信息
列名
数据类型
长度
是否允许为空
字段说明
sno
varchar
20
否
主键,学号
sname
varchar
50
否
学生姓名
ssex
char
10
否
性别
spnum
varchar
20
否
联系电话
图书表
表名
book
作用
图书信息
列名
数据类型
长度
是否允许为空
字段说明
bno
varchar
20
否
主键,图书标号
bname
varchar
50
否
书名
bauthor
varchar
50
否
作者
bsl
Int
4
否
数量
btype
varchar
50
否
图书类型
bsituation
varchar
100
否
污损情况
brenew
bit
1
否
续借情况,1(可续借),0(不可续借)
借阅表
表名
borrow
作用
借阅信息
列名
数据类型
长度
是否允许为空
字段说明
bnumber
varchar
20
否
外键,引用book表中的主键bno
Bnumber与snumber共同为主键
snumber
varchar
20
否
外键,引用student表中主键sno
btime
datetime
8
否
借阅时间
brtime
datetime
8
否
归还时间
bqk
float
8
否
超过归还时间,每天0.1元,欠款为1,
不欠款为0
bxj
int
4
否
续借次数
bkj
bit
1
否
是否可借(1为可借。
0为不可借)
捐书表
表名
donate
作用
捐书信息
列名
数据类型
长度
是否允许为空
字段说明
dsno
varchar
20
否
外键,引用student表中的主键sno
dbno
varchar
20
否
外键,引用book表中主键bno
dsno和dbno共同为主键
dtime
datetime
8
否
捐书时间
查询
1.查询学号为’20130105’的学生姓名和联系电话。
Selectsname,spnum
Fromstudent
Wheresno=’20130105’
2.查询捐了书的编号为’007’学生姓名
selectsname
fromstudent,donate
wherestudent.sno=donate.dsno
3.查询孙菲捐书的书的编号
Selectdbno
Fromdonate
Wheredno=(selectsno
Fromstudent
Wheresname=’孙菲’)
4.查询孙菲借书的书名
Selectbname
Frombook
Wherebno=(selectbnumber
Fromborrow
Wheresnumber=(selectsno
Fromstudent
Wheresname=’孙菲’))
5.查询捐了三本书的学生的姓名
Selectsname
Fromstudent
Wheresno=(selectdsno
Fromdonate
Groupby
Havingcount(‘20130101’)=3)
创建视图
(1)视图名称:
借书信息;显示:
图书编号,图书名,借书者学号,借书者姓名。
Createview借书信息
As
Selectbnoas'图书编号',bnameas'图书名称',snoas'借书人学号',snameas'借书人姓名'
Fromborrowinnerjoinbookonbno=bnumberinnerjoinstudentonsno=snumber
(2)视图名称:
捐书信息,显示:
图书编号,图书名,捐书人学号,捐书人姓名和捐书时间
createview捐书信息
as
selectdsnoas'捐书人学号',dbnoas'捐书的编号',dtimeas'捐书时间',snameas'捐书人姓名',bnameas'书籍名称'
fromdonateinnerjoinstudentondsno=snoinnerjoinbookondbno=bno
(3)视图名称:
图书污损情况,显示:
损坏书籍的编号,书名,捐献者和书籍类型
createview图书污损情况
as
selectbnoas'图书编号',bnameas'图书名称',btypeas'书籍类型'
frombook
wherebsituation='污损'
(4)视图名称:
每个学生捐书的数量显示;学生姓名,捐书总数
createview每个学生捐书的数量
as
selectdsnoas'学生学号',count(*)as'捐书总数'
fromdonate
groupbydsno
存储过程
(1)创建存储过程‘借阅情况’,输入学号可以查询该学生借书的书名,借书时间,归还时间,是否可借。
createproc借阅情况(@numberchar(50))
as
begin
selectbnameas'书名',btimeas'借书时间',brtimeas'还书时间',bkjas'是否可借'
fromborrowinnerjoinbookonbnumber=bnoinnerjoinstudentonsnumber=sno
where@number=snumber
end
go
Exec借阅情况‘20130101’
(2)创建一个存储过程’jsxx’,输入书的名称可以查询出该书的编号,捐书人的姓名和捐书时间。
createprocjsxx(@bnumberchar(50))
as
begin
selectbnoas'图书编号',snameas'捐书人的姓名',dtime'捐书时间'
fromdonateinnerjoinbookondbno=bnoinnerjoinstudentondsno=sno
where@bnumber=bno
end
Execjsxx’0001’
触发器
(1)创建一个触发器‘借书学生欠费通知’,若学生欠费则提示你已欠费,没有欠费则提示借书成功
createtrigger借书学生欠费通知onborrow
forinsert
as
begin
declare@qffloat(8)
select@qf=(selectbqkfrominserted)
if@qf='1'
print'你已经欠款!
'
else
print'借书成功!
!
'
end
insert
intoborrow
values('0004','20130102','2013-6-26','2013-7-26','1','0','0')
(2)在student表上创建一个删除类型的触发器studelete,当在student表中删除某一条记录后,在borrow和donate表中删除与此学号对应的记录。
createtriggerstudeleteonstudent
fordelete
as
begin
print'studelete触发器开始执行……'
declare@stunumchar(10)
print'把在student中删除记录的学号赋值给@stunum'
select@stunum=sno
fromdeleted
print'开始查找并删除borrow中的相关记录……'
deletefromborrow
wheresnumber=@stunum
print'删除了borrow中学号为'+rtrim(@stunum)+'的记录'
print'studelete触发器开始执行……'
declare@stunum1char(10)
print'把在student中删除记录的学号赋值给@stunum'
select@stunum1=sno
fromdeleted
print'开始查找并删除donate中的相关记录……'
deletefromdonate
wheredsno=@stunum1
print'删除了donate中学号为'+rtrim(@stunum1)+'的记录'
end
deletestudent
wheresno='20130101'
(3)创建一个触发器,实现捐赠一本书,剩余库存加1
createtriggertsslondonate
forinsert
as
begin
declare@numberaschar(20)
select@number=(selectdbnofrominserted)
updatebooksetbxl=bxl+1
wherebno=@number
end
insert
intodonate
values('20130102','0006','2013-6-26')
函数
(1)查询学生的读书时间
createfunctionsturetime(@bnochar(20),@snochar(20))
returnsint
as
begin
declare@timeasint
declare@brtimeaschar(20)
declare@btimeaschar(20)
select@brtime=brtime,@btime=btime
fromborrow
wherebnumber=@bnoandsnumber=@sno
ifmonth(@brtime)=month(@btime)
set@time=(day(@brtime)-day(@btime))
else
set@time=(day(@brtime)+30-day(@btime))
return@time
end
print'该学生的读书时间为'+cast(dbo.sturetime('0001','20130101')aschar(20))
(2)输入图书编号,查询该书的书名,借书时间
createfunctionsj(@bnochar(10))
returnstable
return(selectbname,btime
frombookinnerjoinborrowonbno=bnumber
wherebno=@bno)
select*
fromdbo.sj('0003')
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 共享 设计