数据库课程设计之图书管理系统Word文档下载推荐.docx
《数据库课程设计之图书管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库课程设计之图书管理系统Word文档下载推荐.docx(31页珍藏版)》请在冰豆网上搜索。
如该读者是否有过期未还的图书,是否借阅图书已经超过五本,有上述情况之一则借阅不成功。
否则借阅成功。
读者只可在该本书尚未超期的情况下才可以进行续借,否则借阅不成功。
(4)还书操作
读者把借阅证及要还的图书交给图书管理员,由他进行审核,如该图书有逾期则通知该读者交罚款。
否则,图书交由图书管理员放回书库,并修改图书,读者借书信息表。
第二章系统功能设计
通过通过对上述各项功能的分析、分类、综合,按照模块化程序设计的要求,得到如下图所示的功能模块图。
图2-1系统功能模块图
第三章数据库设计
数据库在一个管理信息系统中占有非常重要的地位,数据库结构的好坏将直接影响到应用系统操作效率已经能否保证数据的一致性、完成性和安全性。
3.1数据库设计
根据图书管理系统的功能要求,通过分析系统要设计的相关实体一集要收集、存储和操纵数据信息,得到如下图1234所示的系统E-R图。
根据系统E-R图得到以下关系模式。
·
读者基本信息(读者号,姓名,性别,借书数量)
图书基本信息(图书号,书名,类型,作者,译者,出版社,内容,馆藏数,已借数)
还书基本信息(读者号,书号,还书数量,还书日期)
借书基本信息(读者号,书号,书名,借书数量,借书时间,应还时间)
图13-1读者E-R图
图23-1图书E-R图
图33-1还书E-R图
图43-1借书E-R图
3.2数据表设计
根据关系模式,确定要建立的数据库和表。
给表中添加说明,并建立主键和外键如下图5678所示:
“读者”表
图5“读者”表
“图书”表:
图6“图书”表
“还书”表
图7“还书”表
“借书”表:
图8“借书”表
然后给图书表中添加数据:
/*向图书表中插入数据*/
USEbookmg
GO
INSERT图书
VALUES('
540541903'
'
子不语壹'
漫画'
夏达'
NULL'
新世纪出版社'
18.00'
6'
’0’)
540541904'
子不语贰'
540541905'
子不语叁'
540541906'
子不语肆'
540541907'
子不语伍'
540541908'
子不语陆'
3.3数据库编程
以下是各个表的创建代码:
/************创建各个表*************************/
CREATETABLE读者
(
readeridvarchar(9)NOTNULLPRIMARYKEY,
readernamevarchar(20)NOTNULL,
readersexvarchar(10)NOTNULL,
booknumSMALLINTCHECK(borrownum>
=0ANDborrownum<
=5)
)
CREATETABLE图书
bookidvarchar(9)NOTNULLPRIMARYKEY,
booknamevarchar(40)NOTNULL,
booktypevarchar(20)NOTNULL,
bookauthervarchar(20)NOTNULL,
booktrslatorvarchar(20)NULL,
bookpressvarchar(20)NOTNULL,
bookcontentvarchar(50)NULL,
bookpricevarchar(10)NOTNULL,
noborrowSMALLINTCHECK(noborrow>
=0),
haveborrowSMALLINTCHECK(haveborrow>
=0)
CREATETABLE还书
readeridvarchar(9)NOTNULL,
bookidvarchar(9)NOTNULL,
booknumSMALLINTCHECK(booknum>
=0ANDbooknum<
=5),
inputdatedatetime,
FOREIGNKEY(readerid)REFERENCES读者(readerid),
FOREIGNKEY(bookid)REFERENCES图书(bookid)
CREATETABLE借书
booknamevarchar(40)NOTNULL,
outputdatedatetimeNULL,
shoulddatedatetimeNULL,
FOREIGNKEY(readerid)REFERENCES读者(readerid),
FOREIGNKEY(bookid)REFERENCES图书(bookid)
第四章功能模块的创建
4.1创建向读者表插入数据的存储过程
/*******创建存储过程向读者表中插入数据************/
GO
CREATEPROCEDUREreader_insert
@elem1varchar(9),
@elem2varchar(20),
@elem3varchar(10),
@elem4smallint
AS
BEGIN
insertinto读者(readerid,readername,readersex,borrownum)
values
@elem1,@elem2,@elem3,@elem4
END
/********读者表中插入实例**********/
EXECreader_insert'
111007131'
吴书敏'
男'
0'
图9读者表中插入实例
4.2创建向图书表中插入数据的存储过程
/***************通过存储过程向图书表中插入数据******************/
CREATEPROCEDUREbook_insert
@elem2varchar(40),
@elem3varchar(20),
@elem4varchar(20),
@elem5varchar(20),
@elem6varchar(20),
@elem7varchar(50),
@elem8varchar(10),
@elem9smallint,
@elem10smallint
insertinto图书(bookid,bookname,booktype,bookauther,booktrslator,bookpress,
bookcontent,bookprice,noborrow,haveborrow)
@elem1,@elem2,@elem3,@elem4,@elem5,@elem6,@elem7,@elem8,@elem9,@elem10
4.3创建实现还书的存储过程
/********************************创建还书存储*******************************/
CREATEPROCEDUREreturn_insert
@elem2varchar(9),
@elem3smallint
INSERTINTO还书(readerid,bookid,booknum)
@elem1,
@elem2,
@elem3
BEGIN
UPDATE还书
SETinputdate=GETDATE()
WHEREreaderid=@elem1;
UPDATE图书
SETnoborrow=noborrow+@elem3
WHEREbookid=@elem2;
SEThaveborrow=haveborrow-@elem3
UPDATE读者
SETborrownum=borrownum-@elem3
SELECT'
还书成功'
/***********还书实例*************/
EXECreturn_insert'
1
图10还书实例
4.4创建实现借书的存储过程
/**************************创建借书存储*****************/
CREATEPROCEDUREborrow_insert
insertinto借书
readerid,bookid,booknum
values
/*这里用了判定是否超期函数judgedate,将返回值赋予判断变量judgement*/
DECLARE@judgementint
SET@judgement=
(SELECTmax(overdays)
FROMjudgedate(@elem1))
/*判定该读者是否有图书超期*/
IF(@judgement<
借书成功'
UPDATE借书
SEToutputdate=GETDATE()
WHEREreaderid=@elem1ANDbookid=@elem2;
SETshoulddate=DATEADD(day,30,getdate())
/*声明一个变量bookname从图书表里读取图书名到借书表里*/
DECLARE@booknamevarchar(40)
SET@bookname=(SELECTbooknameFROM图书
WHEREbookid=@elem2
SETbookname=@bookname
SETnoborrow=noborrow-@elem3
SEThaveborrow=haveborrow+@elem3
SETborrownum=borrownum+@elem3
ELSE
SELECT'
借书失败,有超期未还图书'
/*借书实例*/
EXECborrow_insert'
2
图11借书实例
4.5建立是否超期表值函数
CREATEFUNCTIONjudgedate(@elem1asvarchar(9))
RETURNS@overdateTABLE
overdaysint
INSERT@overdate
SELECTday(GETDATE()-ISNULL(shoulddate,0))
FROM借书
WHEREreaderid=@elem1
RETURN
4.6查询模块
/*****************图书分类查询和分类统计**************/
CREATEPROCEDUREtype_select
@booktypevarchar(20)
SELECTbooktype
FROM图书
WHEREbooktype=@booktype;
DECLARE@booknumint
SET@booknum=(
selectsum(noborrow+haveborrow)
WHEREbooktype=@booktype
SELECT@booktypeAS'
类型'
@booknumAS'
本'
/****图书分类查询实例*********/
EXECtype_select'
图12图书分类查询实例
/*******************图书按书名查询和统计******************/
CREATEPROCEDUREbookname_select
@booknamevarchar(40)
SELECT*
WHEREbookname=@bookname;
WHEREbookname=@bookname
SELECT@booknameAS'
书名'
/****图书书名查询实例*********/
EXECbookname_select'
图13图书书名查询实例
/**********************按作者查询和统计**************************/
CREATEPROCEDUREbookauthor_select
@bookauthorvarchar(20)
WHEREbookauthor=@bookauthor;
WHEREbookauthor=@bookauthor
SELECT@bookauthorAS'
作者'
/***图书作者查询实例******/
EXECbookauthor_select'
图14图书作者查询实例
结束语
当初选课的时候选图书管理,目的就是更好的理解、学习和使用好SQL语言,所以我决定只做后台,这样能更好得理解和应用。
通过一个月的努力,我自主完成了课题要求的所有功能。
觉得收获很大。
很多知识,老师并没有讲过,甚至使用的教材里也没有提到。
但是在实践操作中,必须要用到的时候,自己就会去查去学,这就是所谓的实战吧。
通过,本次课程设计我收获很大,认识到当遇到困难的时候要多和人沟通,并且要冷静得去思考去分析问题出在哪了,怎样才能解决。
总之,我会吸取此次的经验并且在以后不满足所学的局限知识还要推陈创新,一步一步获得更大的收获。
参考文献
[1]数据库原理和技术(SQLServer2005)申事凯戴祖诚余玉梅主编
[2]王珊,萨师煊数据库系统概论[第四版]高等教育出版社
附录:
(附上关键的源程序,5-10页)
/*******通过存储过程向读者表中插入数据************/
/*通过存储过程向图书表中插入数据*/
CREATEPRO