图书管理系统.docx
- 文档编号:29883007
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:17
- 大小:23.17KB
图书管理系统.docx
《图书管理系统.docx》由会员分享,可在线阅读,更多相关《图书管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
图书管理系统
图书管理系统
1.1开发背景
随着现代图书流通市场竞争愈演愈烈,如何以一种新的管理方式提高图书流通信息的反馈速度,降低库存占用,加快资金周转,提高工作效率,已经成为图书企业提高竞争力的关键。
信息技术的发展给图书企业的管理带来了新的力量,通过图书管理系统对图书企业营运的全程管理,不仅使企业摆脱了人工管理所固有的一系列弊端和问题,更重要的是提高了工作效率,进而提高了企业的经济效益。
通过管理系统对企业的管理,为企业的发展提供了大量的、关键性的数据,企业根据这些数据,可以及时的做出决定,进行调整,使之能够更好的把握市场销售规率,适应市场变化,在激烈的行业竞争中赢得一席之地。
1.2需求分析
长期以来,人们使用传统的人工方式管理图书的日常业务,其操作流程比较复杂繁琐。
在借书时,读者首先将要借的书和借阅的证交给工作人员,工作人员然后将每本书的信息卡片和读者的借阅证放在一个小格栏里,最后在借阅证和每本书贴的借阅条上填写借阅信息。
在还书时,读者首先将要还的书交给工作人员,工作人员然后根据图书信息找到相应的书和借阅证,并填写相应的还书信息。
从上述描述中可以发现,传统的手工流程存在着种种不足。
首先处理借书,还书业务流程的效率很低;其次处理能力比较低,一段时间内,所能服务的读者人数只能是很有限的。
为此,图书信息管理系统需要为企业解决上述问题,提供快速的图书信息检索功能及快捷的图书借阅、归还流程。
1.3系统设计
1.31系统目标
根据图书馆日常图书管理工作的需求和图书借阅的管理流程,该系统实施后,应达到以下目标。
界面设计友好、美观、数据安全、可靠。
基本信息设置保证图书信息和读者信息的分类管理。
强大的查询功能,保证数据查询的灵活性。
实现对图书的借阅、续借、归琮过程的全程数据信息跟踪。
设置读者借阅和图书借阅排行榜,为图书管理提供真实的数据信息。
提供借阅到期提醒功能,使管理者可以及时了解已经到期的图书借阅信息。
提供管理修改自己密码的功能,保证系统的安全性。
提供灵活、方便的树根设置功能,使整个系统的管理分工明确。
采用人机对话的操作方式,方便管理员的日常操作。
系统最大限度地实现了易维护性和易操作性。
1.3.2业务流程图
图书管理系统的系统流程图
1.3.3系统功能结构
根据图书馆管理系统的特点,可以将其分为系统设置、读者管理、图书管理、图书借还、系统查询等5个部分,其中各个部分及其包括的具体功能模块如图
1.3.4系统预览
为使读者对图书管管理系统有个初步的了解,下面给出系统中的几个页面
1.3.5构建开发环境
1.网站的开发环境
网站的开发环境:
MicrosoftVisualStudio2005集成开发环境。
网站开发语言:
ASP.NET+C#
网站后台数据库:
SQKServer2000
开发环境运行平台:
WindowsXP(SP2)/Windows2000(SP4)Windows2003(SP1)
2.服务器端
操作系统:
WindowsServer2003(SP1)
Web服务器:
Internet信息服务管理器
数据库服务器:
SQLServer2000
浏览器:
IE6.0
网站服务器运行环境:
Microsoft.NETFrameworkSDKv2.0
3.客户端
浏览器:
IE6.0
分辨率:
最佳效果1024X768像素
1.3.6数据库设计
本系统采用SQLServer2000数据库,名称为db_tsrj,其中包含9个数据表。
下面分别给出数据表概要说明、数据表E-R图及主要数据表的结构。
1.数据库概要说明
从读者角度出发,为了使读者对本系统的数据库中的数据表有一个更清晰的认识。
2.数据库概念设计
通过对本系统进行的需求分析,系统流程设计以及系统功能结构的确定,规划出系统中使用的数据库实体对象,具体说明如下。
1.4公共类设计
在开发过程中,经常会用到一些公共模块,如数据库连接及操作类、字符串处理的类等,因此,在开发系统前首先需要设计这些公共模块。
下面将具体介绍图书馆管理系统中所需要的数据库操作类。
数据库操作类用来完成数据库的连接操作,以及数据库的查询、添加、删除和修改操作。
将这几种操作编写到一个公共类里,可以减少重复代码的编写,有利于代码的维护。
在dataOperate类中一共定义了5个方法,下面分别对这几个方法进行讲解。
首先在命名空间区域引用usingSystem.Data.SqlClient命名空间。
代码如下:
usingSystem.Data.SqlClient;
createCon()方法用来连接数据库,此方法返回的类型为SqlConnection.代码如下:
execSQL方法
execSQL方法(stringsql)方法用来添加、插入和删除数据。
此方法返回一个布乐型值,用来表示添加、插入和删除数据是否成功,执行成功返回true,否则返回false。
调用此方法时应传入一个string类型的参数,此参数表示所示要执行的SQL语句。
代码如下:
seleSQL方法
seleSQL(stringsql)方法用来查找数据是否存在。
此方法返回一个布尔型值,用来表示是否查找到数据,如查找到数据则返回true,否者返回false。
调用此方法时应传入一个string类型的参数,此参数表示所要执行的SQL语句。
getDataset(stringsqlstringtable)方法用来查找并返回多行数据。
此方法返回一个DataSet数据集。
在调用此方法时应传入两个string类型的参数,第一个参数表示要执行的SQL语句,第二个参数表示表名。
getRow方法
getRow(stringsql)方法用来查找并返回一行数据。
此方法返回一个sqlCommand对象。
在调用此方法时应传入一个string类型的参数,此参数表示所要执行的SQL语句。
1.5网站首页设计
1.5.1网站首页概述
管理员通过“系统登录”模块的验证后,可以登录到图书馆管理系统的主页。
系统主页主要包括Banner信息栏,导航栏,借阅排行榜和版权信息等4部分。
网站首页运行土效果如图。
1.5.2网站首页技术分析
在开发网站时,如果使用GridView控件显示信息,为其添加一个自动编号列,是一个比较有用的功能,可以一目了然地看到当前页共有多少条记录,在图书馆管理系统的首页开发中用了这一技术,实现按照借阅次数的多少进行排名的功能。
网站首页中主要通过设置GridView控件中第一列的值为当前项目的索引值累加来实现GridView控件的自动编号功能,在实现自动编号功能时,主要触发GridView控件的RowDataBound事件,该事件详细说明如下。
RowDataBound事件:
呈现GridView控件之前,该控件中的每一行都必须绑定到数据源中的一条记录。
将某个数据行绑定到GridView控件中的数据以后,将引发RowDataBound事件.
网站首页在实现自动编号功能时,主要是通过在GridView控件的RowDataBound事件中动态修改,GridView控件控件中第一列的值实现的。
GridView控件的RowDataBound事件实现代码如下:
1.5.3网站首页实现过程
1.设计步骤
(1)在该网站中新建一个WEB窗体,将其命名为index.aspx,用于显示网站首页。
(2)在WEB窗体中添加Table表格,用天页面的布局。
(3)在Tabel表格中添加相关的服务器控件,控件的属性设置及其用途如表
2.实现代码
首先导入必要的命名空间usingSsytem.Data.SqlClinent.引入命名空间的代码如下:
usingSsytem.Data.SqlClinent.
在page_load单击事件中,利用Session对象判断用户登录的状态,如果Session中存在的变量为空,说明用户未登录,页面将跳转到登录页面;用户已登录,则调用bindBookinfo自定义的方法。
bindBookinfo自定义方法用来显示图书馆借阅排行榜,在此方法中使用数据库操作类中的getDataset方法,查找出借阅率高的图书信息绑定到GridView控件上。
实现代码如下
在图书信息表中,图书类型存储的是类型的编号,为了查看方便将图书类型编号转换为类型名称,此功能在GridView控件的RowDatabound事件中实现,在此事件中先获取图书类型的编号,通过编号在图书类型表中获取类型名称,将类型名称绑定到图书类型列中。
实现代码如下
1.6管理员设置模块
1.6.1管理员设置模块概述
管理员设置模块主要包括查看管理列表、添加管理员、管理员权限设置和删除管理员4个功能。
选择“系统设置”/“管理员设置”命令,进入到管理员设置页面。
在此页面中将显示所有管理员的名称和管理员拥有的权限。
管理员设置页面如图
单击“添加管理员”链接按钮将弹出添加管理员网页对话框,在此对话框中可以添加新的管理员,新添加的管理员默认拥有图书借还权限和系统查询权限。
如图
单击“权限设置”链接按钮将弹出管理员权限网页对话框,在此对话框中可以设置某一下管理员所拥有的权限。
例如某个管理员不拥有系统设置权限,则“系统设置”一栏的所有功能将不能使用,如图
1.6.2管理员设置模块技术分析
在添加的管理员时,在管理员权限设置表中也应该将新管理员添加到其中。
此功能主要利用触发器来实现。
触发器在应用程序中可以代替繁琐的程序代码,完成相应的功能。
由于触发器可以查询其它表,而且可以包含复杂的Transact-SQL语句,所以可以实现强制性的、复杂的业务规则或要求。
触发器实质是一种特殊的存储过程,但是它与表却是紧密联系的,离开了表它将不复存在。
触发器又不像存储过程那样需要调用才能执行,而是在对表中数据进行增、删、改操作时被触发而执行。
触发器可以包含复杂的Transact-SQL语句。
在触发器内设置回滚,可以将触发它的语句所在的事全部回滚,这样检测到错误时可以回滚事务以撤销错误。
在MicrosoftSQLServer中使用触发器的优点可概括如下:
(1)触发器可以实现外键约束的功能,实现对表的级联修改。
(2)触发器可以实现核查约束的功能,而且其功能更为强大。
(3)如果对表中数据进行了增,删,改的操作,使用触发器可以根据修改前后的差异,采取对应的对策。
(4)允许在一个表中针对不同的增,删,改的操作设置多个触发器,以完成各类不同的任务。
触发器在SQLServer中的基本应用可大体概括为Insert型触发器、Update型触发器、Delete型触发器、嵌套型触发器和递归型触发器.
添加管理员模块使用的是Insert型触发器,下面介绍触发器的创建。
创建Insert型触发器:
需要用到两个表,一个表为管理员信息表tb_user,用来存储新添加的管理员信息;另一个表为管理员权限设置表tb_admSet,用来存储每个管理员的管理权限。
在管理员信息表中添加一个新的管理员信息的同时,也应将新添加的管理员名称添加到管理员权限设置表中。
在查询分析器里建立Insert触发器语法如下:
1.6.3查看管理员信息页的实现过程
1.设计步骤
(1)在该网站中新建一个Web窗体,将其命名为userManage.aspx,用于显示管理员信息。
(2)在Web窗体中添加Table表格,用于页面的布局。
(3)在Table表格中添加相关的服务器控件,控件的属性设置及其用途如表
GridView控件的前台代码:
2实现代码
在页面的加载事件中,首先判断用户是否登录,如果用户已登录,则判断此用户是否拥有管理此页面的权限,拥权限将调用bindUerManage自定义方法显示所有管理员信息。
实现代码如下
在bindUerManage自定义方法中,调用数据库操作类中的getDataset方法获取所有管理员信息。
实现代码如下:
getSet自定义方法用来判断此用户是否拥有管理此页面的权限,此方法返回一个布尔类型的值。
当此值为True时表示用户拥有管理此页面的权限,为False时则没有管理此页面的权限。
实现代码如下
删除管理员功能通过GridView控件中的RowDeleting事件来实现,在此事件中获取该管理员的登录名称,通过登录名称使用数据库操作类中的execSQL方法将此管理员删除,最后需要重新绑定管理员信息,代码如下
1.6.4管理员权限设置页的实现过程
1.设计步骤
(1)在该网站中新建一个Web窗体,将其命名为admSet.aspx,用于设置管理员权限。
(2)在Web窗体中添加Table表格,用于页面的布局。
(3)在Table表格中添加相关的服务器控件,控件的属性设置及其用途如表
2.实现代码
在页面加载事件中判断页面是否是首次加载,如果是首次加载,则调用bindUser自定义方法显示当前用户拥有的权限。
代码如下:
在bindUser自定义方法中通过查看管理页面转入的管理员登录名,在数据库中读取此管理员当前拥有的权限并将权限信息显示出来。
代码如下:
当修改完当前管理员的权限后将管理员权限信息更新到管理员权限设置表中,此操作是在“保存”按钮的Click事件中实现的。
在此事件中获取当前设置的管理员权限信息,使用数据库操作类中的execSQL方法将数据库中的权限信息更新。
代码如下
1.6.5单元测试
在获取管理员某项权限时,使用CheckBox控件的Checked属性获取一个布尔类型值,此值表示当前控件的选中状态。
如果使用此值更新管理员权限设置表会出现如下错误:
1.7图书档案管理模块设计
1.7.1图书档案管理模块概述
图书档案管理模块主要包括查看图书详细信息、添加图书信息、修改图书信息、删除图书信息和打印图书详细信息5个功能。
选择“图书管理”/“图书档案管理”命令,进入到图书档案管理页面。
页面运行效果如图
单击"添加图书信息"或“修改图书信息”链接按钮,将弹出添加或修改图书信息的网页对话框,如下
1.7.2图书档案管理模块技术分析
在打印图书详细信息时用到SQLServer2000的视图功能。
视图是在一种常用的数据库对象,它将查询的结果以虚拟表形式存储在数据库中。
视图并不在数据库中以存储数据集的形式存在。
视图的结构和内容是建立在对表的查询基础之上的,和表一样包括行和列。
视图中的内容是由查询定义来的,并且视图和查询都是通过SQL语句定义的,它们有着许多相同之处,但又存在很不不同之处。
存储:
视图存储为数据库设计的一部分,面查询则不是。
视图可以禁止所有用户访问数据库中的基表,而要示用户只能通过视图操作数据。
这种方法可以保护用户和应用程序不受某些数据库修改的影响,同样也可以保护数据表的安全性。
排序:
可以排序任何查询结果,但是只有当视图包括TOP子句才能排序视图。
加密:
可以加密视图,但不能加密查询。
视图可以使用Transact-SQL创建,使用CREATEVIEW语句,如下
View_name:
视图名称。
Column:
定义视图中的字段名。
如果没有指定,则视图字段将获得与SELECT语句中的字段相同的名称。
但以下情况比须指定字段名:
视图是从多个表中产生的,对于表中有数据列重名时。
当列是从算术表达式、函数或常量派生得到的。
当视图中的某列不同于源表中列的名称时。
WITH
其中
ENCRYPTION:
表示对视图文本进行加密
SCHEMAVINDING:
将视图绑定到架构上,指定SCHEMAVINDING时,select_statement必须包含所引用的表、视图或用户定义函数的两部分名称。
VIEW_METADATA:
表示如果某一查询中引用该视图且要求返回浏览模式的元数据时,那么SQLServer将向DBLIB和OLBDBAPIS返回视图的元数信息,而不是一个基本表或表。
AS:
视图要执行的操作。
Select_statement:
定义视图的查询语句。
该语句可以引用多个表或其他视图。
在CREATEVIEW语句中,对于查询语句有以下的限制。
不能包含COMPUTE或COMPUTEBY子句
不能包含ORDERBY子句,除非SELECT语句的选择列表中也有一个TOP子句。
不能包含INTO关键字。
不能引用临时表或变量
WITHCHECKOPTION:
规定在视图上执行的所有数据修改语句都必须符合由select_statement设置的准则。
通过视图修改记录,WITHCHECKOPTION可以确保提交修改后,仍可通过视图看到修改的数据。
使用CERATEVIEW语句创建视图时,只要在查询分析器中写入相应的SELECT语句即可,本程序中的创建视图是为将图书信息表中的图书类型编号和书架编号替换成相应的文本,代码如下:
1.7.3查看图书详细信息页面的实现过程
1.设计步骤
(1)在该网站中新建一个Web窗体,将其命名为bookInfoManage.aspx,用于显示图书详细信息。
(2)在Web窗体中添加Tabel表格,用于页面的布局。
(3)在Tabel表格中添加相关的服务器控件,控件的属性设置及用途如表:
GridView控件的设置,在此给出GridView控件的前台代码。
2.在页面的加载事件中,判断用户是否登录,如果用户已登录,则判断用户是否拥有管理此页面的权限,有此权限将调用自定义bindBook方法显示所有图书详细信息。
代码如下
在自定义bindBook方法中调用数据库操作类中的getDataset方法获取图书详细信息。
将GridView控件的数据库设置为getDataset方法返回的值并设置主键字段,代码如下
在GridView控件的RowDataBound事件中,将图书类型编号和书架编号替换成文本。
此事件中获取图书类型和书架的编号,通过编号在数据库中找到相应的名称。
代码如下
删除图书信息在GridView控件的RowDeleting事件中实现,在此事件中获取该行图书信息的条形码,根据此条码删除此条图书信息。
代码如下
getSet自定义方法用来判断此用户是否拥有管理此页面的权限,此方法返回一个布尔型的值。
当此值为True时表示用户拥有管理此页面的权限,为False则没有管理权限,代码如下:
为了方便图书信息的查看的页面性能的提高,使用了GridView控件自带分页功能,此功能需要设置AllowPaging属性为True,并在GridView控件的PageIndexChanging事件中设置当前页面的索引。
代码如下
1.7.4添加和修改图书信息页面的实现过程
1.设计步骤
(1)在该网站中新建一个Web窗体,将其命名为addBookInfo.aspx,用于添加或修改图书信息。
(2)在Web窗体中添加Tabel表格,用于页面的布局。
(3)在Tabel表格中添加相关的服务器控件,控件的属性设置及用途如表
:
2.代码实现
在页面的加载事件中根据图书管理页面传入的值,来判断当前对图书信息的操作,如果添加新图书信息将传入的值为add,如果对图信息进行修改将传入的值为图书的条形码信息。
判断出对图书信息的操作后根据相应的操作实现不同的功能,添加新图书信息操作将调用自定义barcode方法生成新的图书条形码,修改图书信息操作则调用自定义bindBookInfo方法显示图书详细信息,代码如下
自定义bindBookInfo方法根据图书管理页面传入的条形码,查找出此图书信息并在页面中显示出来,代码如下:
自定义bindBookType方法和自定义bindBookcase方法是将图书类型信息各书架信息绑定到DropDownList控件上,由于自定义方法代码类似,这里只给出自定义bindBookType方法的代码。
代码如下:
自定义barcode方法用来生成一个13位的条形码,在此方法中当前日期中的年、月、日、小时、分钟用来表示条形码。
代码如下:
在“保存”按钮Click事件中判断对图书信息的操作来修改不同的SQL语句,添加新图书操作将编写插入的SQL语句,修改图书操作将编写更新的SQL语句。
代码如下:
1.8图书借还模块设计
1.8.1图书借还模块概述
图书借还模块主要包括图书借阅、图书续借和图书归还3个功能。
选择“图书借还”/“图书借阅”命令,进入到图书借阅页面。
在此页面中管理员输入读者需要借阅的条形码,显示出读者信息和图书信息,单击图书信息中“借阅”链接按钮实现借阅功能。
图书借阅页面运行效果如图:
选择选择“图书借还”/“图书续借”命令,进入到图书续借页面,在此页面中根据管理员输入的读者条形码,显示读者信息和读者借阅未还的图书信息。
输入读者需要续借图书的条形码,将显示此书信息。
单击此书信息中“续借”链接按钮实现图书续借功能。
选择选择“图书借还”/“图书归还”命令,进入到图书归还页面。
在此页面中根据管理员输入的读者条形码,显示读者信息各读者借阅未还的图书信息。
输入读者需要归还图书的条形码,将显示此书信息。
单击此书信息中的“归还”链接按钮实现图书归还功能。
1.8.2图书借还模块技术分析
图书应还时间是在当前的基础上,加上该图书可以借阅的天数获得的。
此技术先通过使用DataTime对象中Now属性获得当前的时间。
Now属性表示获取一个DataTime对象,该对象设置为此计算机上的当前日期和时间。
1.8.3图书借阅页面实现过程
1.设计步骤
(1)在该网站中新建一个Web窗体,将其命名为BookBorrow.aspx,用于图书借阅。
(2)在Web窗体中添加Tabel表格,用于页面的布局。
(3)在Tabel表格中添加相关的服务器控件,控件的属性设置及用途如表
2.实现代码
在图书借阅页面加载事件中,判断管理员是否登录,如果登录将判断当前管理员是否拥有使用此功能的权限,如不拥有管理此页面的权限将给出提示并跳转到首页。
代码如下
将读者的条形码输入后,单击“查找读者”按钮将读者信息显示出来,在“查找读者”按钮的Click事件中调用自定义bindReaderInfo方法。
在自定义bindReaderInfo方法中,利用读者条形码查找读者信息并显示出来;读者当前可借阅数量信息,根据读者的类型获取到读者可借阅图书总数,将总数减去当前读者已借阅还未归还图书的数量的会得到读者当前可借阅的数量。
代码如下
将读者需要借阅图书的条形码输入后,单击“查找图书”按钮将此图书的信息显示出来。
在“查找图书”的Click事件中先判断当前用户是否还可以借阅图书,如果可以借阅判断用户是否输入图书的条形码,如果输入图书的条形码根据条形码将此图书信息查找出来并通过GridView控件显示出。
代码如下:
由于图书信息表中图书类型存放的是编号,为了方便看需要将图书类型编号转换为图书类型名称,此功能可以在GridView控件的RowDataBound事件中实现。
代码如下
单击图书信息中“借阅”链接按钮将图书借阅信息存储到图书借阅表中,此功能使用了GridView控件的SelectedIndexChanging事件,在此事件中获取当前选择图书的条形码,根据条形码查询图书的详细信息,将图书信息各读者信息添
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统