图书管理系统项目文档.doc_第1页
图书管理系统项目文档.doc_第2页
图书管理系统项目文档.doc_第3页
图书管理系统项目文档.doc_第4页
图书管理系统项目文档.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图书管理系统项目文档实验人员:08382047 网络工程 黄忠08382044 网络工程 刘光林数据库设计部分是应用系统中非常重要的一个环节,数据库设计的优劣将直接影响应用系统的运行的效率。所以图书管理系统数据库的设计师图书管理系统中首要完成的工作。本系统开发平台Visual Studio 2010,Microsoft SQL Server 2008,Windows 7,编程语言为C#。一、 图书管理系统功能分析图书管理系统可以供学校,书店等的管理员使用,用于日常的读者管理,图书管理,借书,还书等操作,另外还可以供读者查询图书信息及其借阅情况等。本系统主要功能包括登录,图书查询、借阅查询、读者管理、图书管理、借阅管理等功能模块。1、 登录功能图书管理系统可供读者和管理员使用,所以需要设置登录者的身份,并赋予不同身分的登录者以不同的权限,读者只能查看借阅情况和图书馆藏情况,管理员分三类:读者管理员、图书管理员、超级管理员。读者管理员只能进行读者管理操作,图书管理员只能进行图书管理操作,超级管理员可以进行图书查询、借书查询、读者管理、图书管理、借书管理、还书管理、数据备份等操作。2、 读者管理读者主要有借书证号、密码、姓名、性别、出生日期、专业、借书量、照片、联系方式和备注属性。借书证号是唯一的,借书量不能超过10。只有读者管理员和超级管理员才能进行读者管理,包括添加,修改,删除。在修改读者信息时,不能修改借书证号和借书量,删除读者信息时,如果该读者借过书尚未归还则不能删除读者。3、 图书管理图书主要有ISBN、书名、作者、出版社、出版年月、价格、复本量、库存量、分类号、内容提要和封面等属性。每一种图书的ISBN都是唯一的,库存量不能大于复本量。只有图书管理员和超级管理员才能进行图书管理,其操作包括添加图书、修改图书、删除图书。添加新书时,系统自动生成每本图书的ID及在借情况,再借情况默认为否。删除图书时如果该图书已经借出则不允许删除图书记录。4、 图书查询用户可以根据图书ISBN、书名、作者、出版社进行模糊查询,查询结果将分页显示。5、 借书管理借书管理只有超级管理员才能进行。用户可以输入读者的借书证号查看其借书记录,确认读者没有在借相同的ISBN的书,然后输入要借的图书的ISBN、图书ID,判断图书是否存在、是否再借等情况、如果可借则完成结束操作,借书时间登记为系统当前时间,规定还书期限为60天,同时系统自动将读者的借书量加1,图书库存量减1,图书的再借情况为再借。6、 借书查询一读者身份登录系统时,用户点击借书查询模块可以查看自己的借书情况。以管理员身份登录时,用户输入读者的借书证号也可以查看该读者的结束情况。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)否否姓名Char(8)否否性别Bit否否出生日期Datetime否否专业Char(12)否否借书量Int否否照片Varbinary(MAX)否是备注varchar(500)否是联系方式XML否是 同理可得出其他表的表结构: 图书信息表(TBook)结构字段名类型与宽度是否主键是否允许为空ISBNChar(18)是否书名Char(40)否否作者Char(16)否否出版社Char(30)否否出版年月Char(10)否是价格Float否否复本量Int否否库存量Int 否否分类号Char(18)否是内容提要Varchar(200)否是封面照片Varbinary(MAX)否是 借阅表(TLend)结构字段名类型与宽度是否主键是否允许为空借书证号Char(8)否否ISBNChar(18)否否图书IDChar(10)是否借书时间Datetime否否应还时间Datetime否否 还书记录表(HLend)结构字段名类型与宽度是否主键是否允许为空编号Int是否借书证号Char(8)否否ISBNChar(18)否否图书IDChar(10)否否借书时间Datetime否否还书时间Datetime否否 图书在借表(TBLend)结构字段名类型与宽度是否主键是否允许为空图书IDChar(10)是否ISBNChar(18)否否是否在借Bit否否三、 图书管理系统的数据库及表的创键通过以上讨论,现在可以创建图书管理系统所需的数据库及其表,T-SQL语句如下: 创建数据库create database MBOOKonprimary(NAME=MBOOK,FILENAME=D:dataMBOOK.mdf,SIZE=5MB,MAXSIZE=100MB,FILEGROWTH=2MB)LOG ON(NAME=MBOOK_log,FILENAME=D:dataMBOOK_log.ldf,SIZE=1MB,FILEGROWTH=10%); 创建表 创建TReader表use MBOOKgocreate table TReader(借书证号 char(6) not null primary key,密码 varchar(20)not null,姓名 char(8) not null,性别 bit not null,出生时间 datetime not null,专业 char(12) not null,借书量 int not null default 0,照片 varbinary(MAX) null,备注 varchar(200) null,联系方式 xml null) 创建TBook表create table TBook(ISBN char(18) not null primary key,书名 char(40) not null,作译者 char(16) not null,出版社 char(30) not null,出版年月 char(10) null,价格 float not null,复本量 int not null,库存量 int not null,分类号 char(18) null,内容提要 varchar(200) null,封面照片 varbinary(MAX) null) 创建TLend表create table TLend(借书证号 char(8) not null,ISBN char(18) not null,图书ID char(10) not null primary key,借书时间 datetime not null,应还时间 AS 借书时间+5) 创建HLend表create table HLend(编号 int not null identity(1,1) primary key,借书证号 char(6) not null,ISBN char(18) not null,图书ID char(10) not null,借书时间 datetime not null,还书时间 datetime not null) 创建TBLend表create table TBlend(图书ID char(10) not null primary key,ISBN char(18) not null,是否借出 bit not null) 创建Administrator表create table Administrator(角色名 char(20) not null primary key,密码 varchar(20) not null,备注 varchar(100) null)四、 图书管理数据库表数据的完整性约束1、 图书管理数据库列的完整性图书管理数据库列的完整性包括:列的数据类型需要与定义的一致,列的为空性,默认值,列的内容是否符合要求等。解决列的内容是否符合要求使用CHECK约束。在TReader表中,“借书量”的值必须大于等于0小于等于10;TBook表中库存量必须小于等于复本量。如下:use MBOOKgoalter table TReaderadd check(借书量=0 AND 借书量=5)goalter table TBookadd constraint CK_TBook check(库存量0begin insert into TBlend values(firstID,in_ISBN,0)set firstID=firstID+1set count=count-1endend2、 图书借阅功能根据读者的借书证号、图书的ISBN、图书ID,以及实际的图书管理情况向图书管理数据库的TLend添加借书记录,读者的借书量和图书的库存量要相应的变化。思路如下图:命令如下:set out_str=图书库存量为0return 0end/* 判断是否借过该书 */if in_ISBN in(select ISBN from TLend where 借书证号=in_ReaderID)beginset out_str=该读者已经借过该书return 0end/* 判断是否已经被借 */if exists(select* from TLend where 图书ID=in_BookID)beginset out_str=该图书ID存在return 0endbegin tran /*开始一个事务*/*插入借书记录*/INSERT INTO TLend (借书证号,ISBN,图书ID,借书时间)values(in_ReaderID,in_ISBN,in_BookID,GETDATE()if ERROR0beginrollback transet out_str=执行过程中遇到错误return 0end/*修改借书量*/update TReader set 借书量=借书量+1 where 借书证号=in_ReaderIDif ERROR0beginrollback transet out_str=执行过程中遇到错误return 0end/*修改库存量*/update TBook set 库存量=库存量-1 where ISBN=in_ISBNif ERROR0beginrollback transet out_str=执行过程中遇到错误return 0end/*修改图书借出情况*/update TBlend set 是否借出=1 where 图书ID=in_BookIDif ERROR=0begincommit transet out_str=借书成功return 0endelseif ERROR0beginrollback transet out_str=执行过程中遇到错误return 0endend3、 同步删除图书借出情况功能在TBook表中删除一条图书记录时,同时删除TBLend表中与该书相关的记录。该功能使用在TBook表中定义删除触发器的方法实现。触发器名称为Book_delete,触发器类型为DML,在对TBook表进行了DELETE操作后激活。如下:use MBOOKgocreate trigger TBook_delete on TBookafter deleteasdelete from TBlend where ISBN=(select ISBN FROM deleted)4、 图书归还功能当读者归还图书时,即删除借阅表TLend中的一条记录时,读者信息表中该读者的借书量减1,图书信息表中该书的库存量加1,图书在借情况的是否借出为否,还书记录表添加一条该读者的还书记录。该功能用在TLend表定义触发器的方法实现,触发器名称为TLend_delete,触发器类型为DML,在对TLend进行操作后激活。如下:create trigger TLend_delete on TLendafter deleteasbegindeclare ReaderID char(6),ISBN char(18),BookID char(10),LTime datetimedeclare cur_return cursorforselect 借书证号,ISBN,图书ID,借书时间 from deletedopen cur_returnfetch next from cur_return into ReaderId,ISBN,BookID,LTimewhile fetch_status=0beginupdate TReader set 借书量=借书量-1 where 借书证号=ReaderIDupdat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论