图书管理系统项目文档Word格式文档下载.docx

上传人:b****6 文档编号:19877092 上传时间:2023-01-11 格式:DOCX 页数:18 大小:3.82MB
下载 相关 举报
图书管理系统项目文档Word格式文档下载.docx_第1页
第1页 / 共18页
图书管理系统项目文档Word格式文档下载.docx_第2页
第2页 / 共18页
图书管理系统项目文档Word格式文档下载.docx_第3页
第3页 / 共18页
图书管理系统项目文档Word格式文档下载.docx_第4页
第4页 / 共18页
图书管理系统项目文档Word格式文档下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

图书管理系统项目文档Word格式文档下载.docx

《图书管理系统项目文档Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《图书管理系统项目文档Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。

图书管理系统项目文档Word格式文档下载.docx

7、还书管理

还书操作只能由超级管理员来进行。

输入读者的借书证号即可查看读者的现有的借书记录。

用户输入图书ID后单击还书按钮即可进行还书操作,与此同时,系统自动将读者的借书量减1,图书库存量加1,图书在借情况为否,并根据删除的图书记录自动生成一条还书记录。

8、数据备份

超级管理员可以指定一个后缀名为.bak的备份文件,然后将图书管理数据库的所有数据备份为该文件。

二、图书管理系统数据库设计

通过以上的功能分析,现阶段可以进行图书管理数据库的设计。

1、图书管理数据库的E-R模型

通过理解图书管理系统所要实现的功能,可以得出图书管理数据库包括以下实体:

管理员、读者、图书、在借情况。

✧管理员的属性:

角色名、密码、备注;

✧读者的属性:

借书证号、密码、姓名、性别、出生日期、专业、借书量、照片、备注、联系方式;

✧图书的属性:

ISBN、书名、作者、出版社、出版年月、价格、复本量、库存量、分类号、内容提要、封面照片;

✧在借情况的属性:

图书ID、是否在借。

其E-R模型如下图:

2、图书管理数据库的逻辑结构设计

在图书管理的各个实体中,管理员命名为Administrator,主码为“角色名”,读者命名为TReader,主码为“借书证号”,图书命名为TBook,主码为“ISBN”,在借情况命名为TBLend,主码为“图书ID”。

实体集“读者”和“图书”之间通过联系“借阅(命名为TLend)”表示借阅关系,通过联系“归还(命名为HLend)”表示归还关系。

所以由以上E-R模型可得到如下关系模式:

Administrator(角色名,密码,备注)

TReader(借书证号、密码、姓名、性别、出生日期、专业、借书量、照片、备注、联系方式)

TBook(ISBN、书名、作者、出版社、出版年月、价格、复本量、库存量、分类号、内容提要、封面照片)

TBLend(图书ID,ISBN,是否借出)

TLend(借书证号,ISBN,图书ID,借出时间,应还时间)

HLend(编号,借书证号,ISBN,图书ID,借书时间,还书时间)

3、图书管理数据库的物理结构设计

从以上关于图书管理数据库的逻辑结构设计的讨论可知,可以在图书管理数据库中创建读者信息表TReader,其包含的字段有:

借书证号、密码、姓名、性别、出生日期、专业、借书量、照片、备注、联系方式。

其中,“借书证号”可以用学号表示,是8位定长字符型数据,使用char(8);

“密码”记录读者的登录密码,可以是20位不定长字符型数据,吃用varchar(20);

“姓名”一般不超过4个中文字符,所以可以是8位定长字符型数据,使用char(8);

“性别”只有“男”、“女”两个值,所以可以使用bit类型,1表示“男”,0表示“女”;

“出生日期”是日期时间类型数据,使用date;

“专业”使用12位定长字符型数据,使用char(12);

“借书量”是整形数据,使用int;

“照片”存储读者的照片信息,使用varbinary(MAX);

“备注”记录读者的额外信息,使用varchar(500);

“联系方式”记录读者的E-mail、电话、住址等信息,使用XML片段的方式存储。

综上分析可得TReader表结构:

读者信息表(TReader)结构

字段名

类型与宽度

是否主键

是否允许为空

借书证号

Char(8)

密码

Varchar(20)

姓名

性别

Bit

出生日期

Datetime

专业

Char(12)

借书量

Int

照片

Varbinary(MAX)

备注

varchar(500)

联系方式

XML

同理可得出其他表的表结构:

图书信息表(TBook)结构

ISBN

Char(18)

书名

Char(40)

作者

Char(16)

出版社

Char(30)

出版年月

Char(10)

价格

Float

复本量

库存量

Int

分类号

内容提要

Varchar(200)

封面照片

借阅表(TLend)结构

图书ID

借书时间

应还时间

还书记录表(HLend)结构

编号

还书时间

图书在借表(TBLend)结构

是否在借

三、图书管理系统的数据库及表的创键

通过以上讨论,现在可以创建图书管理系统所需的数据库及其表,T-SQL语句如下:

✧创建数据库

createdatabaseMBOOK

on

primary

NAME='

MBOOK'

FILENAME='

D:

\data\MBOOK.mdf'

SIZE=5MB,

MAXSIZE=100MB,

FILEGROWTH=2MB

LOGON

MBOOK_log'

\data\MBOOK_log.ldf'

SIZE=1MB,

FILEGROWTH=10%

);

✧创建表

✓创建TReader表

useMBOOK

go

createtableTReader

借书证号char(6)notnullprimarykey,

密码varchar(20)notnull,

姓名char(8)notnull,

性别bitnotnull,

出生时间datetimenotnull,

专业char(12)notnull,

借书量intnotnulldefault0,

照片varbinary(MAX)null,

备注varchar(200)null,

联系方式xmlnull

✓创建TBook表

createtableTBook

ISBNchar(18)notnullprimarykey,

书名char(40)notnull,

作译者char(16)notnull,

出版社char(30)notnull,

出版年月char(10)null,

价格floatnotnull,

复本量intnotnull,

库存量intnotnull,

分类号char(18)null,

内容提要varchar(200)null,

封面照片varbinary(MAX)null

✓创建TLend表

createtableTLend

借书证号char(8)notnull,

ISBNchar(18)notnull,

图书IDchar(10)notnullprimarykey,

借书时间datetimenotnull,

应还时间AS借书时间+5

✓创建HLend表

createtableHLend

编号intnotnullidentity(1,1)primarykey,

借书证号char(6)notnull,

图书IDchar(10)notnull,

还书时间datetimenotnull

✓创建TBLend表

createtableTBlend

是否借出bitnotnull

✓创建Administrator表

createtableAdministrator

角色名char(20)notnullprimarykey,

密码varchar(20)notnull,

备注varchar(100)null

四、图书管理数据库表数据的完整性约束

1、图书管理数据库列的完整性

图书管理数据库列的完整性包括:

列的数据类型需要与定义的一致,列的为空性,默认值,列的内容是否符合要求等。

解决列的内容是否符合要求使用CHECK约束。

在TReader表中,“借书量”的值必须大于等于0小于等于10;

TBook表中库存量必须小于等于复本量。

如下:

altertableTReader

addcheck(借书量>

=0AND借书量<

=5)

altertableTBook

addconstraintCK_TBookcheck(库存量<

=复本量)

2、图书管理数据库行的完整性

图书管理数据库中的数据行也需要进行完整性约束,比如,借书证号应该是唯一的,数据库系统不允许存在两个或两个以上具有相同的借书证号的读者记录。

图书管理数据库行的完整性可以通过索引、主键、唯一键、或者IDENTITY属性来实现。

在设计表的时候已经定义过主键、索引和IDENTITY属性,为了使图书管理数据库更完善,规定读者的密码在表中也必须是唯一的,所以需要在读者信息表的“密码”列创建一个UNIQUE约束。

USEMBOOK

GO

ALTERTABLETReader

ADDUNIQUENONCLUSTERED(密码)

3、图书管理数据库表的完整性

在图书管理数据库中,图书借阅表TLend通过“借书证号”与读者信息表TReader相关联,通过“ISBN”与图书信息表相关联。

所以需要通过图书管理数据库表的完整性实现的功能是:

当向TLend插入借书记录时,借书证号在TReader表中必须存在,ISBN在TBook中也必须存在。

当删除Treader表中读者记录或者TBook表中图书记录时,存在借阅记录的话,则不能删除该读者或图书记录。

通过定义TLend表和TReader、TBook表间的参照关系来实现图书管理数据库表的完整性。

TReader表和TBook是主表,TLend是从表。

altertableTLend

addforeignkey(借书证号)

referencesTReader(借书证号)

addforeignkey(ISBN)

referencesTBook(ISBN)

五、图书管理数据库的功能实现

1、生成图书在借情况的功能

当向图书信息表TBook添加一种新书时,需要在图书在借情况表中生成该图书的每本书的图书ID和在借情况。

此功能用存储功能来实现,存储过程名称为BookID_Generate,参数为ISBN,count(复本量)、firstID。

使用循环想TBLend中插入count条记录,图书ID的起始值为firstID,之后每增加一条记录图书ID值加1.如下:

createprocedureBookID_Generate@in_ISBNchar(18),@countint,@firstIDchar(10)

as

begin

while@count>

begin

insertintoTBlendvalues(@firstID,@in_ISBN,0)

set@firstID=@firstID+1

set@count=@count-1

end

2、图书借阅功能

根据读者的借书证号、图书的ISBN、图书ID,以及实际的图书管理情况向图书管理数据库的TLend添加借书记录,读者的借书量和图书的库存量要相应的变化。

思路如下图:

命令如下:

set@out_str='

图书库存量为0'

return0

/*判断是否借过该书*/

if@in_ISBNin(selectISBNfromTLendwhere借书证号=@in_ReaderID)

该读者已经借过该书'

/*判断是否已经被借*/

ifexists(select*fromTLendwhere图书ID=@in_BookID)

该图书ID存在'

begintran/*开始一个事务*/

/*插入借书记录*/

INSERTINTOTLend(借书证号,ISBN,图书ID,借书时间)

values(@in_ReaderID,@in_ISBN,@in_BookID,GETDATE())

if@@ERROR>

rollbacktran

执行过程中遇到错误'

/*修改借书量*/

updateTReaderset借书量=借书量+1where借书证号=@in_ReaderID

/*修改库存量*/

updateTBookset库存量=库存量-1whereISBN=@in_ISBN

/*修改图书借出情况*/

updateTBlendset是否借出=1where图书ID=@in_BookID

if@@ERROR=0

committran

借书成功'

else

3、同步删除图书借出情况功能

在TBook表中删除一条图书记录时,同时删除TBLend表中与该书相关的记录。

该功能使用在TBook表中定义删除触发器的方法实现。

触发器名称为Book_delete,触发器类型为DML,在对TBook表进行了DELETE操作后激活。

createtriggerTBook_deleteonTBook

afterdelete

deletefromTBlendwhereISBN=(selectISBNFROMdeleted)

4、图书归还功能

当读者归还图书时,即删除借阅表TLend中的一条记录时,读者信息表中该读者的借书量减1,图书信息表中该书的库存量加1,图书在借情况的是否借出为否,还书记录表添加一条该读者的还书记录。

该功能用在TLend表定义触发器的方法实现,触发器名称为TLend_delete,触发器类型为DML,在对TLend进行操作后激活。

createtriggerTLend_deleteonTLend

declare@ReaderIDchar(6),@ISBNchar(18),@BookIDchar(10),@LTimedatetime

declarecur_returncursor

for

select借书证号,ISBN,图书ID,借书时间fromdeleted

opencur_return

fetchnextfromcur_returninto@ReaderId,@ISBN,@BookID,@LTime

while@@fetch_status=0

updateTReaderset借书量=借书量-1where借书证号=@ReaderID

updateTBookset库存量=库存量+1whereISBN=@ISBN

updateTBlendset是否借出=0where图书ID=@BookID

insertintoHLend(借书证号,ISBN,图书ID,借书时间,还书时间)

values(@ReaderID,@ISBN,@BookID,@LTime,getdate())

fetchnextfromcur_returninto@ReaderID,@ISBN,@BookID,@LTime

closecur_return

deallocatecur_return

5、统计借书次数功能

图书管理员输入读者的借书证号,可以统计读者总共借过多少次书,包括借过归还和在借的。

使用用户自定义的函数实现,函数名为L_count。

使用借书证号作为参数,名称为ReaderID,通过查询借阅表TLend和还书记录表HLend得到借书次数总数。

createfunctionL_count(@ReaderIDchar(6))

returnsint

declare@count1int,@count2int,@sum_countint

select@count1=count(借书证号)

fromTLend

where借书证号=@ReaderID

select@count2=count(借书证号)

fromHLend

set@sum_count=@count1+@count2

return@sum_count

六、界面截图:

登录界面:

图书查询:

借书查询:

借书管理:

还书管理:

读者管理:

图书管理:

数据备份:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1