图书馆管理系统ER图.docx

上传人:b****6 文档编号:7618766 上传时间:2023-01-25 格式:DOCX 页数:37 大小:517.56KB
下载 相关 举报
图书馆管理系统ER图.docx_第1页
第1页 / 共37页
图书馆管理系统ER图.docx_第2页
第2页 / 共37页
图书馆管理系统ER图.docx_第3页
第3页 / 共37页
图书馆管理系统ER图.docx_第4页
第4页 / 共37页
图书馆管理系统ER图.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

图书馆管理系统ER图.docx

《图书馆管理系统ER图.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统ER图.docx(37页珍藏版)》请在冰豆网上搜索。

图书馆管理系统ER图.docx

图书馆管理系统ER图

^

 

长沙理工大学

《程序设计实践》课程设计报告

图书馆管理系统数据库分析与设计

邹松林

 

学院计通学院专业计算机科学与技术

班级计算机03-05学号27

学生姓名邹松林指导教师卢曼莎

课程成绩完成日期2006年9月20号

 

图书馆管理系统数据库分析与设计

学生姓名:

邹松林指导老师:

卢曼莎

摘要:

图书信息管理系统主要由读者信息管理模块,图书信息管理模块,借阅信息管理模块,系统信息管理模块等组成。

其中又各自分成读者注册,证件修改,用户注销,图书查询,操作记录等子模块。

在设计本系统过程中,我们第一步由自顶而下的需求分析概括设计出系统总模块的数据流图,再设计个子模块的相应数据流图,列出数据流信息及数据字典;第二步概念设计在需求分析基础上用E-R图表示出数据及相互间联系,采用先作子图,再合并成初步E-R图,进行修改和重构后得到基本E-R图;第三步逻辑设计,在SQLServer的设计环境下把图书馆管理系统E-R图转化为成逻辑数据模型表示的逻辑模式,同时实现数据模型的优化和数据模式的规范化;第四步进行物理设计设计数据的内模式,确定数据的存储结构,存取路径,存储空间分配等等,具体形式为表,视图,索引的建立。

关键字:

数据库,SQL语言,MSSQLServer,图书管理

~

1需求分析

用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输入和输出。

收集基本数据,数据结构以及数据处理的流程,为后面的具体设计打下基础。

在仔细分析调查有关图书馆管理信息需求的基础上,我们主要考虑以下几个方面的需求:

1)用户需求:

图书用户要求计算机系统和SQLServer所工作的范围;

2)应用资源:

数据库应用的平台包括物理平台和图书等;

3)应用质量和可靠性要求:

包括操作人员素质和系统的纠错能力等

|

项目名称:

图书馆信息管理系统

项目背景和内容概要

对图书馆管理信息系统进行详细地分析后,我们将系统分为以下几个模块:

借阅管理模块、借书证信息管理模块、图书信息管理模块、系统管理模块。

其主要功能如下:

借阅管理模块主要功能如下:

1).可以为读者办理,修改,注销借书证,输入读者借书证基本信息等,定制读者的借阅权限。

2).可以通过借书证查询图书信息、借出图书信息,借阅图书。

3).通过借书证还书,管理员可以通过对借阅信息的管理对到期还未还的书,通过查询读者的借书证信息查询读者联系方式发出催还通知。

借书证信息管理模块主要功能如下:

~

1).读者基本信息的输入,如:

读者姓名、性别、单位等。

2).读者信息的修改、注销等功能。

3).添加新的读者及其信息等。

图书信息管理模块主要功能如下:

1).定制书籍的各种信息管理,如:

书名、作者、出版信息等。

2).书籍信息的修改,新图书的入库管理和图书的注销等。

系统管理模块主要功能如下:

1).用户登录。

'

2).修改密码。

3).添加用户。

系统备份和数据传输模块主要功能如下:

1).备份数据库数据

2).恢复数据库数据

3).网络数据传输

1.3数据流图

@

数据流总体图示

图1-1数据流总体图

办理借书证

图1-2输借书证流图

借书证修改

$

图1-3借书证修改流图

借书证注销

图1-4借书证注销流图

借书系统

不能借书的原因

图1-5借书系统流图

检索系统

图1-6检索系统流图

还书系统

图1-7还书系统流图

 

<

图书档案管理系统

图1-8档案管理流图

数据字典

参数名

类型

长度

取值范围

别名

意义

图书书名

字符型

11

SM

图书编号

字符型

11

BB00

SH

*

作者

字符型

10

YZ

出版社

字符型

%

20

CBS

单价

数值型

8

:

DJ

借出日期

日期型

yy-mm-dd

JS

{

还书日期

日期型

yy-mm-dd

HS

借书证号

字符型

10

05000000

JSZ

姓名

字符型

20

NAME

是否归还

字符型

20

YN

性别

字符型

2

SEX

单位

字符型

[

20

DW

发证日期

日期型

yy-mm-dd

|

FZ

已借书册数

字符型

2

YNC

^

是否允许借书

字符型

2

YNS

是或否

类别

字符型

20

LB

进册数

数值型

10

$

JC

库存量

数值型

10

CZ

操作员编号

数值型

10

CB

操作员姓名

字符型

10

CNAME

操作员密码

字符型

15

MM

表1数据字典

 

2概念结构设计

~

这一阶段我们将客户的应用需求抽象为信息世界的结构,即对系统的人、物、事和概念进行人为处理,抽取人们所关心的共同特性,同时把这些特性用概念精确的描述。

我们首先根据需求分析的结果(数据流图、数据字典等)对现实世界的数据进行抽象,设计各个局部E-R图,然后合并成初步E-R图,再进行修改与重构。

局部E-R图

图书信息管理系统主要分为以下几个局部E-R图:

1).借书证处理系统ER图:

图2-1借书证处理系统ER图

图中各实体属性如下:

读者档案:

学号,读者姓名,性别,出生日期,借书证号,职业,单位,通讯地址,邮政编码,联系电话

借书证:

借书证号,姓名,性别,办证日期,借阅范围,最大借书量,照片,身份证号

管理员:

管理员编号,管理员姓名,登陆密码

2).借书系统ER图:

图2-2借书系统ER图

}

图中各实体属性如下:

读者:

身份证号,读者姓名,借书证号

借书证:

借书证号,姓名,性别,办证日期(借阅范围,最大借书量,照片,身份证号)

库存信息:

书号,图书编号

借出信息:

图书编号,借书证号,借书日期,归还日期

3).索书系统ER图:

图2-3索书系统ER图

图中各实体属性如下:

读者:

读者姓名,借书证号

图书档案:

图书编号,书号,书名,作者,出版单位,出版日期,单价,藏书册书,类别,入库日期

4).还书系统ER图:

图2-4还书系统ER图

图中各实体属性如下:

读者:

学号,读者姓名,借书证号

借书证:

借书证号,姓名,性别,办证日期

库存信息:

书号,图书编号

'

借出信息:

图书编号,借书证号,借书日期,归还日期

管理员:

操作员编号,管理员姓名,登陆密码

5).图书档案管理系统ER图:

图2-5档案管理系统ER图

图中各实体属性如下:

管理员:

操作员编号,管理员姓名,登陆密码

库存信息:

书号,图书编号

图书档案:

图书编号,书号,书名,作者,出版单位,出版日期,单价,类别,入库日期

入库清单:

入库日期,图书编号,管理员编号,书名

\

6).整体E-R图

图2-6整体ER图

图中各实体属性如下:

<

读者档案:

学号,读者姓名,性别,借书证号,单位

借书证:

借书证号,姓名,性别,办证日期

管理员:

操作员编号,管理员姓名,登陆密码

库存信息:

书号,图书编号

借出信息:

图书编号,借书证号,借书日期,归还日期

图书档案:

书号,书名,作者,出版单位,出版日期,单价,类别,藏书册书,图书编号入库日期

实体描述

说明:

1、由于读者的信息可以在借书证办理档案中查到所以合并为借书证办理档案

2.将借出书库和入库清单分别合并到了借书登记表和图书信息表中

实体名称

借书证

数据库表

借书证信息表

实体说明

读者和借书证信息

>

实体属性列表

借书证号,姓名,性别,办证日期,最大借书量,学号

 

实体名称

管理员

!

数据库表

tz_passwd

实体说明

管理员的信息

实体属性列表

管理员编号,管理员姓名,登陆密码

 

\

实体名称

读者

数据库表

借书登记表

实体说明

图书馆未被借出的图书信息

实体属性列表

书号,图书编号

 

实体名称

读者

数据库表

还书登记表

实体说明

图书馆未被借出的图书信息

实体属性列表

书号,图书编号

 

实体名称

图书档案

数据库表

图书信息表

实体说明

馆藏图书信息

实体属性列表

书号,书名,作者,出版单位,出版日期,版次,单价,类别,图书编号,入库日期

 

表2实体描述

关系描述(已包含在E-R图中)

实体--关系调整(实体描述表中已消除冗余实体和关系)

数据项定义

1).图书库的数据项定义:

名称

别名

类型

长度

其他

图书书名

SM

-

字符型

20

普通索引

书号

SH

数值型

20

主索引

译者

YZ

字符型

10

出版社

CBS

字符型

20

单价

DJ

数值型

8

出版时间

|

CBSJ

日期型

8

表3图书库数据项定义

2).借、还书库的数据项定义:

名称

别名

]

类型

长度

其他

姓名

XSXM

字符型

10

普通索引

&

借书证号

JSZH

数值型

8

主索引

图书书名

SM

字符型

20

图书编号

SH

字符型

20

借书日期

<

JSRQ

日期型

8

还书日期

HSRQ

日期型

8

表4借、还书库数据项定义

3).借书证库的数据项定义:

名称

别名

类型

长度

其他

|

姓名

JSXM

字符型

10

普通索引

借书证号

JSGH

字符型

6

主索引

性别

XB

字符型

4

单位

#

DW

字符型

8

表5借书证库数据项定义

4).操作员库的数据项定义:

名称

别名

类型

长度

其他

操作员编号

CZYYHH

字符型

10

#

操作员用户名

CZYYHM

字符型

10

口令

KL

字符型

10

表6操作员库数据项定义

数据表(库)描述

图书数据库=图书书名+图书编号+著者+出版社+单价+书号+出版时间

借书库=姓名+借书证号++教师姓名+图书名称+借书日期+还书日期

教师数据库=姓名+借书证号+单位

操作员库=操作员用户名+口令

系统功能模块图

软件功能结构图:

工商学院图书信息管理系统

系统管理

基本情况录入

^

借、还书管理

查询、统计

初始化

数据备份

操作员管理

一般用户登陆

-

新图书登记

新期刊登记

借书登记

还书登记

图书库藏查询

借书证库查询

图书查询

借书查询

还书查询

图2-7软件功能结构

系统流程图:

图书管理系统

[

读者查询系统

图书(期刊)库

查询

图2-8系统流程图

3逻辑结构设计

为了能够用计算机和SQLServer实现用户需求,可将概念结构转化为相应的数据模型,即是设计逻辑结构。

即由E-R图建立了适当的表,并按不同的范式的定义,对表进行规范化。

对规范化的表,更据用户需求建立数据库结构。

确定数据依赖

关系名

主要函数依赖

管理员

BCNF

\

管理员编号—→(管理员姓名,登陆密码)

库存信息

BCNF

图书编号—→书名等

借出信息

BCNF

(图书编号)—→(借书日期,借书证号,归还日期)

借书证

/

2NF

借书证号—→(借书证号,姓名,性别,单位,发证日期,已借书册书,是否容许借书)

以后扩展:

身份证号—→(姓名,性别,照片)

图书档案

2NF

图书编号—→(书号,书名,作者,出版单位,出版日期,版次,单价,内容提要,分类号,索书号,所在书库,入库日期)

入库清单

BCNF

图书编号—→(管理员编号,书名,入库日期)

还书信息

BCNF

借书证号—→(姓名,图书编号,书名,借出日期,还书日期)

数据依赖的优化与调整

3.2.1关系模式的优化

·

(1)借书证信息:

借书证(借书证号,姓名,性别,单位,发证日期,已借书册书,是否容许借书)满足BCNF范式

(2)管理员信息:

管理员信息(管理员编号,管理员姓名,登陆密码)满足BCNF范式

(3)库存信息:

库存信息(图书编号,书号)满足BCNF范式

(4)借书信息:

借书信息(图书编号,借书证号,姓名,书名,借书日期,是否归还)满足BCNF范式

(5)还书信息:

还书信息(姓名,图书编号,书名,借出日期,还书日期)满足BCNF范式

(6)图书信息:

图书档案(图书编号,书名,作者,图书类别,单价,出版社,进册书,库存量)均满足BCNF范式

(7)入库清单:

入库清单(图书编号,管理员编号,书名,入库日期)满足BCNF范式

}

3.2.2关系模式的调整

虽然在关系模式的优化中将各种关系满足了BCNF范式的要求,但是对某些数据库的操作却并没有简化,相反导致了数据库查询等数据库操作的效率低下。

于是对‘借书证信息’,和‘图书信息’作出了以下调整。

(1)借书证信息:

借书证(借书证号,姓名,性别,办证日期,单位,已借书册数,借书许可,)(3NF)

(2)图书信息:

图书档案(图书编号,书名,作者,出版单位,单价,图书类别,进册数,入库量)(2NF)

4代码设计

图书管理系统部分源代码

[图书外借情况查询代码]

tempstr=allt"%"+tempstr+"%"

if"借书证号"

select*from借书登记表where借书登记表.借书证号liketempstrintocursortempcursor

if"姓名"

select*from借书登记表where借书登记表.姓名liketempstrintocursortempcursor

if"图书编号"

select*from借书登记表where借书登记表.图书编号liketempstrintocursortempcursor

if"书名"

|

select*from借书登记表where借书登记表.书名liketempstrintocursortempcursor

if"是否归还"

select*from借书登记表where借书登记表.是否归还liketempstrintocursortempcursor

""

-

[图书外借和归还情况查询代码]

tempstr=allt"%"+tempstr+"%"

if"借书证号"

select*from还书登记表where还书登记表.借书证号liketempstrintocursortempcursor

if"姓名"

#

select*from还书登记表where还书登记表.姓名liketempstrintocursortempcursor

if"图书编号"

select*from还书登记表where还书登记表.图书编号liketempstrintocursortempcursor

if"书名"

select*from还书登记表where还书登记表.书名liketempstrintocursortempcursor

""

[存储过程代码]

procedureridelete

localllretval

llretval=.t.

?

if(isrlocked()and!

deleted())or!

rlock()

llretval=.f.

else

if!

deleted()

delete

ifcursorgetprop('buffering')>1

=tableupdate()

endif

^

llretval=pnerror=0

endifnotalreadydeleted

endif

unlockrecord(recno())

returnllretval

procedureriupdate

lparameterstcfieldname,tcnewvalue,tccascadeparent

localllretval

llretval=.t.

ifisrlocked()or!

rlock()

llretval=.f.

else

ifeval(tcfieldname)<>tcnewvalue

privatepccascadeparent

pccascadeparent=upper(iif(type("tccascadeparent")<>"c","",tccascadeparent))

replace(tcfieldname)withtcnewvalue

ifcursorgetprop('buffering')>1

=tableupdate()

endif

llretval=pnerror=0

endifvaluesdon'talreadymatch

endifit'slockedalready,oriwasabletolockit

unlockrecord(recno())

&

returnllretval

procedurerierror

parameterstnerrno,tcmessage,tccode,tcprogram

locallnerrorrows,lnxx

lnerrorrows=alen(gaerrors,1)

iftype('gaerrors[lnerrorrows,1]')<>"l"

dimensiongaerrors[lnerrorrows+1,alen(gaerrors,2)]

"

lnerrorrows=lnerrorrows+1

endif

gaerrors[lnerrorrows,1]=tnerrno

gaerrors[lnerrorrows,2]=tcmessage

gaerrors[lnerrorrows,3]=tccode

gaerrors[lnerrorrows,4]=""

lnxx=1

dowhile!

empty(program(lnxx))

~

gaerrors[lnerrorrows,4]=gaerrors[lnerrorrows,4]+","+;

program(lnxx)

lnxx=lnxx+1

enddo

gaerrors[lnerrorrows,5]=pcparentdbf

gaerrors[lnerrorrows,6]=pnparentrec

gaerrors[lnerrorrows,7]=pcparentid

gaerrors[lnerrorrows,8]=pcparentexpr

·

gaerrors[lnerrorrows,9]=pcchilddbf

gaerrors[lnerrorrows,10]=pnchildrec

gaerrors[lnerrorrows,11]=pcchildid

gaerrors[lnerrorrows,12]=pcchildexpr

returntnerrno

 

procedureriopen

parameterstctable,tcorder

locallccurwkarea,lcnewwkarea,lninusespot

lninusespot=atc(tctable+"*",pcricursors)

iflninusespot=0

lccurwkarea=select()

select0

lcnewwkarea=select()

ifnotempty(tcorder)

use(tctable)againorder(tcorder);

alias("__ri"+ltrim(str(select())))share

else

use(tctable)againalias("__ri"+ltrim(str(select())))share

endif

ifpnerror=0

pcricursors=pcricursors+upper(tctable)+""+str(select(),5)

else

lcnewwkarea=0

endifsomethingbadhappenedwhileattemptingtoopenthefile

else

lcnewwkarea=val(substr(pcricursors,lninusespot+len(tctable)+1,5))

pcricursors=strtran(pcricursors,upper(tctable)+"*"+str(lcnewwkarea,5),;

upper(tctable)+""+str(lcnewwkarea,5))

ifnotempty(tcorder)

setorderto(tcorder)in(lcnewwkarea)

@

endifsentanorder

ifpnerror<>0

lcnewwkarea=0

endifsomethingbadhappenedwhilesettingorder

endif

return(lcnewwkarea)

procedureriend

parameterstlsuccess

locallnxx,lnspot,lcworkarea

iftlsuccess

endtransaction

else

setdeletedoff

rollback

setdeletedon

endif

$

ifempty(pcriolderror)

onerror

else

onerror&pcriolderror.

endif

forlnxx=1tooccurs("*",pcricursors)

lnspot=atc("*",pcricursors,lnxx)+1

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

当前位置:首页 > 经管营销 > 经济市场

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

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