图书馆管理系统开发文档.docx
《图书馆管理系统开发文档.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统开发文档.docx(64页珍藏版)》请在冰点文库上搜索。
图书馆管理系统开发文档
图书馆管理系统
摘要
随着网络技术的高速发展,计算机应用的普及,利用计算机对图书馆的日常工作进行管理势在必行。
虽然目前很多大型的图书馆已经有一整套比较完善的管理系统,但是在一些中小型的图书馆中,大部分工作仍需要手工完成,工作起来效率比较低,管理员不能及时了解图书馆内各类图书的借阅情况,读者需要的图书难以在短时间内找到,不便于动态及时地调整图书结构。
本文论述了基于ASP.NET+SQLServer2000的图书馆管理系统的实现思路和开发过程,包括需求分析、系统设计、开发环境、系统实现等方面。
1开发背景
随着现代图书流通市场竞争的愈演愈烈,如何以一种新的管理方式提高图书流通信息的反馈速度,降低库存占用,加快资金周转,提高工作效率,已经成为图书企业提高竞争力的关键。
信息技术的发展给图书企业的管理带来了新的力量,通过图书馆管理系统对图书企业经营运作的全程管理,不仅使企业摆脱了人工管理所固有的一系列弊端和问题,更重要的是提高了工作效率,进而提高了企业的经济效益。
通过管理系统对企业的管理,为企业的发展提供了大量的、关键性的数据,企业根据这些数据,可以及时作出决策,进行调整,使之能够更好地把握市场的销售规律,适应市场变化,在激烈的行业竞争中赢得一席之地。
2需求分析
长期以来,人们使用传统的人工方式管理图书馆的日常业务,其操作流程比较繁琐。
在借书时,读者首先将要借的书好借阅证交给工作人员,然后工作人员将每本书的信息卡片好读者的借阅证放在一个小格栏里,最后在借阅证和每本书贴的借阅条上填写借阅信息。
在还书时,读者首先将要还的书交给工作人员,然后工作人员根据图书信息找到相应的书卡好借阅证,并填写相应的还书信息。
从上述描述中可以发现,传统的手工流程存在着种种不足。
首先处理借书、还书业务流程的效率很低;其次处理能力比较低,一断时间内,所能服务的读者人数只能是很有限的。
为此,图书信息管理系统需要为企业解决上述问题,提供快速的图书信息检索功能及快捷的图书借阅、归还流程。
3系统设计
3.1系统目标
根据图书馆日常图书管理工作的需求好图书借阅的管理流程,该系统实施后,应达到以下目标。
1.界面设计友好、美观,数据存储安全、可靠。
2.基本信息设置保证图书信息好读者信息的分类管理。
3.强大的查询功能,保证数据查询的灵活性。
4.实现对图书借阅、续借、归还过程的全程数据信息跟踪。
5.设置读者借阅和图书借阅排行榜,为图书馆管理提供真实的数据信息。
6.提供借阅到期提醒功能,使管理者可以及时了解已经到期的图书借阅信息。
7.提供管理员修改自己密码的功能,保证系统的安全性。
8.提供灵活、方便的权限设置功能,使整个系统的管理分工明确。
9.采用人机对话的操作方式,方便管理员的日常操作。
10.系统最大限度地实现了易维护性和易操作性。
3.2业务流程图
图书馆管理系统的系统流程如图3-1所示。
图3-1系统流程图
3.3系统功能结构图
根据图书馆管理系统的特点,可以将其分为系统设置、读者管理、图书管理、图书借还、系统查询等5个部分,其中各个部分及其包括的具体功能模块如图3-2所示。
图3-2系统功能结构图
4开发及运行环境
1.网站开发环境
网站开发环境:
MicrosoftVisualS2005集成开发环境
网站开发语言:
ASP.NET+C#
网站后台数据库:
SQLServer2000
开发环境运行平台:
WindowsXP/WindowsServer2003
2.网站运行环境
1)服务器端
操作系统:
WindowsServer2003
Web服务器:
Internet信息服务管理器
数据库服务器:
SQLServer2000
浏览器:
InternetExplorer6.0
网站服务器运行环境:
Microsoft.NETFrameworkSDKv2.0
2)客户端
浏览器:
InternetExplorer6.0
分辨率:
最佳效果1024X768
5数据库设计
本系统采用SQLServer2000数据库,名称为db_tsrj,其中包含9张表。
下面分别说明数据库的概要设计及逻辑设计。
5.1数据库概要设计
通过对本系统进行的需求分析、系统流程设计以及系统功能结构的确定,规划出系统中使用的数据库实体对象,具体说明如下。
只有系统分配的用户才可以操作图书馆管理系统,而用户的权限又各不相同。
管理员权限设置信息实体E-R图如图5-1所示。
图5-1管理员权限设置信息实体E-R图
图书借阅信息实体,用于存储所有图书借阅情况的信息,以准确地记录每本图书的借阅情况。
图书借阅信息实体E-R图如图5-2所示。
图5-2图书借阅信息实体E-R图
图书馆对图书的分类,通常是将不同类型的图书分别放置在相应类型的书架上。
书架信息实体,用于存储图书馆中所有的书架信息。
书架信息实体E-R图如图5-3所示。
图5-3书架信息实体E-R图
不同的图书,会有不同的图书信息。
对这些图书信息进行详细的记录,方便了图书的分类好查询。
图书信息实体,用于存储所有图书的相关信息。
图书信息实体E-R图如图5-4所示。
图5-4图书信息实体E-R图
图书馆中会有不同类型的图书,为了避免图书归类发生混乱,必须建立一个图书类型信息实体,用于存储图书的类型信息。
图书类型信息实体E-R图如图5-5所示。
图5-5图书类型信息实体E-R图
为了记录图书馆的历史背景及其相关的信息,需要建立一个图书馆信息实体,用于存储与图书馆有关的信息。
图书馆信息实体E-R图如图5-6所示。
图5-6图书馆信息实体E-R图
当有读者借阅图书时,要对读者的各项信息进行记录,以方便归还图书和已借阅图书的历史查询。
读者信息实体,用于存储所有借阅图书的读者信息。
读者信息实体E-R图如图5-7所示。
图5-7读者信息实体E-R图
在读者群体中,会有不同的分类,例如借阅图书的读者可能是教师、学生和市民等,所以对读者人群进行有效的分类是至关重要的。
读者类型信息实体,用于存储读者的类型信息。
读者类型信息实体E-R图如图5-8所示。
图5-8读者类型信息实体E-R图
当管理员登录图书馆管理系统时,需要通过登录窗口验证成功后才能进入系统主页。
管理员信息实体,用于存储管理员的登录名称和登录密码。
管理员信息实体E-R图如图5-9所示。
图5-9管理员信息实体E-R图
5.2数据库逻辑结构设计
根据实体E-R图,设计出数据表的结构。
以下是主要数据表的数据结构和用途。
1.tb_admSet(管理员权限设置表)
表tb_admSet用于保存与管理员权限设置相关的信息,该表的结构如表5-1所示。
表5-1管理员权限设置表
字段名
数据类型
长度
主键否
描述
userName
varchar
80
否
管理员名称
systemSet
bit
1
否
系统设置
readerManage
bit
1
否
读者管理
bookManage
bit
1
否
图书管理
bookBorrow
bit
1
否
图书借还
systemSearch
bit
1
否
系统查询
2.tb_bookBorrow(图书借阅表)
tb_bookBorrow用于保存所有已借阅图书的信息,该表的结构如表5-2所示。
表5-2图书借阅表
字段名
数据类型
长度
主键否
描述
bookBarCode
varchar
100
否
图书条形码
bookName
varchar
100
否
图书名称
borrowTime
datetime
8
否
借阅日期
returnTime
datetime
8
否
应还日期
readerBarCode
varchar
50
否
读者条形码
readerName
varchar
20
否
读者姓名
isReturn
bit
1
否
是否归还
3.tb_bookcase(书架信息表)
tb_bookcase用于保存书架的详细信息,该表的结构如表5-3所示。
表5-3书架信息表
字段名
数据类型
长度
主键否
描述
bookcaseID
Int
4
是
书架编号
bookcaseName
varchar
80
否
书架名称
4.tb_bookInfo(图书信息表)
tb_bookInfo用于保存与图书相关的所有信息,该表的结构如表5-4所示。
表5-4图书信息表
字段名
数据类型
长度
主键否
描述
bookBarCode
varchar
100
是
图书条形码
bookName
varchar
100
否
图书名称
bookType
int
4
否
图书类型
Bookcase
int
4
否
书架类别
bookConcern
varchar
100
否
出版社名称
Author
varchar
80
否
作者名称
price
money
8
否
图书价格
borrowSum
int
4
否
借阅次数
5.tb_bookType(图书类型信息表)
表tb_bookType用于保存图书类型信息,该表的结构如表5-5所示。
表5-5图书类型信息表
字段名
数据类型
长度
主键否
描述
typeID
int
4
否
图书类型编号
typeName
varchar
50
否
类型名称
borrowDay
int
4
否
可借天数
6.tb_library(图书馆信息表)
表tb_library用于保存与图书馆相关信息,该表的结构如表5-6所示。
表5-6图书馆信息表
字段名
数据类型
长度
主键否
描述
libraryName
varchar
80
否
图书馆名称
curator
varchar
80
否
馆长名称
tel
varchar
100
否
联系电话
address
varchar
200
否
联系地址
email
varchar
100
否
电子邮件
net
varchar
200
否
网址
upbuildTime
datetime
8
否
建馆时间
remark
varchar
500
否
备注
7.tb_readerInfo(读者信息表)
表tb_readerInfo用于保存所有读者信息,该表的结构如表5-7所示。
表5-7读者信息表
字段名
数据类型
长度
主键否
描述
readerBarCode
varchar
50
是
读者条形码
readerName
varchar
50
否
读者名称
sex
varchar
10
否
读者性别
readerType
varchar
50
否
读者类型
certificateType
varchar
50
否
证件类型
certificate
varchar
50
否
证件号码
tel
varchar
50
否
联系电话
email
varchar
50
否
电子邮件
remark
varchar
500
否
备注
8.tb_readerType(读者类型信息表)
表tb_readerType用于保存所有读者类型信息,该表的结构如表5-8所示。
表5-8读者类型信息表
字段名
数据类型
长度
主键否
描述
id
int
4
是
类型编号
type
varchar
50
否
类型名称
num
varchar
50
否
可借本数
9.tb_user(管理员信息表)
表tb_user用于保存所有管理员信息,该表的结构如表5-9所示。
表5-9管理员信息表
字段名
数据类型
长度
主键否
描述
userId
int
4
是
管理员编号
username
varchar
50
否
管理员名称
userPwd
varchar
50
否
管理员密码
6编码及实现
6.1公共类设计
在开发过程中,经常会用到一些公共模块,如数据库连接及操作的类、字符串处理的类等,因此,在开发系统前首先需要设计这些公共模块。
下面将具体介绍图书馆管理系统中所需要的数据库操作类。
数据库操作类用来完成数据库的连接操作,以及数据库的查询、添加、删除和修改操作。
将这几种操作编写到一个公共类里,可以减少重复代码的编写,有利于代码的维护。
在dataOperate类中一共定义了5个方法,下面分别对这几个方法进行解释。
首先在命名空间区域引用usingSystem.Data.SqlClient命名空间。
代码如下:
usingSystem.Data.SqlClient;
6.1.1createCon方法
createCon方法用来连接数据库,此方法返回的类型为SqlConnection。
代码位置:
\libraryManage\App_Code\dataOperate.cs。
代码如下:
publicstaticSqlConnectioncreateCon()
{
con=newSqlConnection("server=.;database=db_tsrj;uid=sa;pwd=;");
returncon;
}
6.1.2execSQL方法
execSQL(stringsql)方法用来添加、插入和删除数据。
此方法返回一个布尔型值,用来表示添加、插入和删除数据是否成功,执行成功返回true,否则返回false。
调用此方法时应传入一个string类型的参数,此参数表示所要执行的SQL语句。
代码位置:
\libraryManage\App_Code\dataOperate.cs。
代码如下:
publicstaticboolexecSQL(stringsql)
{
SqlConnectioncon=createCon();//创建连接对象
con.Open();
SqlCommandcom=newSqlCommand(sql,con);
try
{
com.ExecuteNonQuery();//执行SQL语句
con.Close();//关闭连接对象
}
catch(Exceptione)
{
con.Close();
returnfalse;//执行失败返回false
}
returntrue;//执行成功返回true
}
6.1.3seleSQL方法
seleSQL(stringsql)方法用来查找数据是否存在。
此方法返回一个整型值,用来表示是否查找到数据,如查找到数据则返回1,否则返回0。
调用此方法时应传入一个string类型的参数,此参数表示所要执行的SQL语句。
代码位置:
\libraryManage\App_Code\dataOperate.cs。
代码如下:
publicstaticintseleSQL(stringsql)
{
inti;
SqlConnectioncon=createCon();//创建连接对象
con.Open();
SqlCommandcom=newSqlCommand(sql,con);
try
{
i=Convert.ToInt32(com.ExecuteScalar());//执行SQL语句后返回第一行第一列的值
con.Close();//关闭连接
}
catch(Exceptione)
{
con.Close();
return0;
}
if(i>0)//判断是否大于0,大于返回1否则返回0
{return1;}
else
{return0;}
}
6.1.4getDataset方法
getDataset(stringsqlstringtable)方法用来查找并返回多行数据。
此方法返回一个DataSet数据集。
在调用此方法时应传入两个string类型的参数,第一个参数表示要执行的SQL语句,第二个参数表示表名。
代码位置:
\libraryManage\App_Code\dataOperate.cs。
代码如下:
publicstaticDataSetgetDataset(stringsql,stringtable)
{
SqlConnectioncon=createCon();//创建数据库连接对象
con.Open();//打开连接
SqlDataAdaptersda=newSqlDataAdapter(sql,con);//执行SQL语句
DataSetds=newDataSet();//创建数据集
sda.Fill(ds,table);//填充数据集
returnds;//返回数据集
}
6.1.5getRow方法
getRow(stringsql)方法用来查找并返回一行数据。
此方法返回一个SqlCommand对象。
在调用此方法时应传入一个string类型的参数,此参数表示所要执行的SQL语句。
代码位置:
\libraryManage\App_Code\dataOperate.cs。
代码如下:
publicstaticSqlDataReadergetRow(stringsql)
{
SqlConnectioncon=createCon();
con.Open();
SqlCommandcom=newSqlCommand(sql,con);
returncom.ExecuteReader();
}
6.2网站首页设计
6.2.1网站首页概述
管理员通过“系统登录”模块验证后,可以登录到图书馆管理系统的主页。
系统主页主要包括Banner信息栏、导航栏、借阅排行榜和版权信息等4部分。
系统登录页面如图6-1所示,网站首页运行效果如图6-2所示。
图6-1系统登录页面
图6-2图书馆管理系统首页
6.2.2网站首页技术分析
在开发网站时,如果使用GridView控件显示信息,为其添加一个自动编号列,是一个比较有用的功能,可以一目了然地看到当前页共有多少条记录。
在图书馆管理系统的首页开发中用到了这一技术,实现按照借阅次数的多少进行排名的功能。
网站首页中主要通过设置GridView控件中第一列的值为当前项目的索引值累加来实现GridView控件的自动编号功能。
在实现自动编号功能时,主要触发了GridView控件的RowDataBound事件,该事件详细说明如下。
RowDataBound事件:
呈现GridView控件之前,该控件中的每一行都必须绑定到数据源中的一条记录。
将某个数据行绑定到GridView控件中的数据以后,将引发RowDataBound事件。
网站首页在实现自动编号功能时,主要是通过在GridView控件的RowDataBound事件中动态修改GridView控件中第一列的值实现的。
GridView控件的RowDataBound事件中实现的代码如下(代码位置:
\libraryManage\index.aspx.cs):
if(e.Row.RowIndex!
=-1)//判断GridView控件中是否有值
{
intid=e.Row.RowIndex+1;//将当前行的索引加上1赋值给变量id
e.Row.Cells[0].Text=id.ToString();
//将变量id的值传给GridView控件的每一行的单元格中
}
说明:
Row指定表示辅助性对象的可能角色的值;RowIndex获取当前绑定控件中行的索引;Cells获取用于填充行的单元格集合。
因为GridView控件中项的索引是从0开始的,所以用当前索引值加1。
6.2.3网站首页实现过程
1.设计步骤
(1)本模块使用的数据表:
tb_bookInfo。
(2)在该网站中新建一个Web窗体,将其命名为index.aspx,用于显示网站首页。
(3)在Web窗体中添加Table表格,用于页面的布局。
(4)在Table表格中添加相关的服务器控件,控件的属性设置及其用途如表6-1所示。
表6-1页面中控件属性设置及用途
控件类型
控件名称
主要属性设置
控件用途
GridView
gbBookTaxis
AutoGenerateColumns属性设置为False(去掉GridView控件自动生成的列)
显示图书借阅排行榜
Web用户控件
header.ascx
默认值
网站导航功能
bottom.ascx
默认值
网站版本信息
2.实现代码
首先导入必要的命名空间usingSystem.Data.SqlClient。
引入命名空间的代码如下:
usingSystem.Data.SqlClient;
在page_load单击事件中,利用Session对象判断用户登录的状态,如果Session中存在的变量为空,说明用户未登录,页面将跳转到登录页面;如用户已登录,则调用bindBookInfo自定义方法。
代码位置:
\libraryManage\index.aspx.cs,代码如下:
protectedvoidPage_Load(objectsender,EventArgse)
{
if(Session["userName"]!
=null)//判断用户是否登录
{
bindBookInfo();//调用自定义方法用来绑定图书借阅排行
}
else
Response.Redirect("entry.aspx");//跳转到登录页面
}
说明:
Response.Redirect方法用来获取或设置重定向URL。
bindBookInfo自定义方法用来显示图书借阅排行榜,在此方法中使用数据库操作类中的getDataset方法,查找出借阅率高的图书信息绑定到GridView控件上。
代码位置:
\libraryManage\index.aspx.cs,代码如下:
protectedvoidbindBookInfo()
{
stringsql="selecttop10*fromtb_bookInfoorderbyborrowSumdesc";//设置SQL语句
gvBookTaxis.DataSource=dataOperate.getDataset(sql,"tb_bookInfo");//获取图书信息数据源
gvBookTaxis.DataBind();//绑定GridView控件
}
图书信息表中,图书类型存储的是类型的编号,为了查看方便将图书类型编号转换为类型名称。
此功能在GridView