视图化图书智能查询系统设计与实现

时间:2022-08-30 09:28:17

视图化图书智能查询系统设计与实现

摘 要:设计并实现了一个视图化图书智能查询系统,项目采用HTML、CSS和作为开发工具,系统智能搜索引擎具有输入提示和模糊查询功能,可按照书本名称、作者、出版社进行分类检索,并以视图化分页形式呈现查询结果。此外,系统也在查询效率和图书显示样式方面进行了优化和改进。

关键词关键词:图书智能查询;视图化;分页;模糊查询;DataList

DOIDOI:10.11907/rjdk.161557

中图分类号:TP319

文献标识码:A 文章编号:1672-7800(2016)008-0127-03

0 引言

随着网络教育服务的发展与普及,在线图书查询系统日益受到图书管理人员和广大读者的欢迎[1]。通过在线图书查询系统,读者可以预先对计划借阅书籍的阅读量、图书内容简介以及图书存放位置等信息进行查询和了解,从而有效解决了书籍借阅情况不明、寻找书籍困难等问题。目前,各高校图书查询系统大多存在查询效率低下、图书信息显示样式不够美观等问题[2]。对此,本文设计并实现了具有分类搜索提示和模糊查询功能的图书搜索引擎,并以视图化分页形式对图书信息的显示进行了美化。

1 系统总体描述

视图化图书智能查询系统以作为开发工具,采用SQL 2008 R2数据库作为开发平台,并以B/S模式为项目架构。在浏览器端,用户登录验证后,系统会自动识别登录用户身份,包括读者和管理员两种身份。读者登录后直接进入图书查询界面,可按照书本名称、作者、出版社进行分类模糊查询。在服务器端,服务器接收到用户发出的查询请求后,对后台数据库进行查询,并将所得的数据集发送给浏览器端;管理员登录成功后会进入到图书管理界面,可对书籍信息进行更新操作。服务器接收到管理员的更新请求后,对数据库中的信息进行更新。系统流程如图1所示。

2 系统功能设计与实现

2.1 数据库设计

系统采用SQL 2008 R2设计后台数据库,针对用户、书籍、书本类别等数据对象建立相应表单如下:①用户信息表AdminInfo:保存用户的账号、姓名、性别、年龄、电话、登录密码等基本信息,设置账号为主键;②书籍基本信息表BookInfo:记录图书馆现存书籍的编号、名称、作者、出版社、类别编号、图书简介、图书图片地址、查询量、入库时间、存放位置、作者介绍等信息,设置书籍编号为主键;③书籍类别表BookClass:保存书籍的类别编号、书籍类型信息,设置类别编号为主I。其中,系统核心数据表――书籍基本信息表如图2所示。

2.2 用户界面设计

系统的核心模块为图书查询界面,采用DIV、CSS和控件的方法来构造整个界面布局。总体而言,页面自上至下分为6个DIV区域,依次用于填充页面顶部背景、搜索引擎、图书类别标签组、图书信息视图、分页控件和版权声明。页面顶部采用一张百花盛开、绿草油油的草原风景图作为背景,既能给人以清新自然的视觉效果,又可以和整个界面的绿色主题相协调。在搜索引擎区域,左边为一个古书法体的“”字,作为图书查询界面的logo;右边上部为3个单选按钮RadioButton,分别用于选择搜索类别:书本名称、作者、出版社,下部为并排放置的搜索框TextBox和查询按钮Button。在此需注意将搜索框的右边距right-margin和查询按钮的左边距left-margin均设置为0,以保证两者能够无缝连接。下面是图书类别标签组,将书籍类别表BookClass中的类别名称与区域中的超链接按钮LinkButton一一对应,从而保证前后台信息一致,同时还增加了4个LinkButton,以对查询结果进行排序,包括默认排序、查询量排序、出版社排序和出版时间排序。界面主体部分即为图书信息显示区,此区域由若干个图书信息视图组成,每个图书信息视图实际上是一个自定义DataList控件,默认的数据列表控件DataList只可用于显示文本信息,且布局单一、缺乏灵活性和美观效果;而自定义DataList控件可根据显示需要调整布局,设置构成元素类型,包括图片、文本、超链接等,而不仅仅局限于文本[3]。对于读书信息显示视图而言,将自定义DataList控件模版区设计为左边为一个PictureBox控件,用于显示图书图片,右边从上到下依次为书本名称标签、出版信息标签、点击量标签、图书简介文本区和查询详情按钮。界面运行时,图书信息视图会自动填充图书信息显示区。此外,由于图书信息显示区规格有限,而所需显示的图书信息视图可能会溢出,因此需要使用分页控件。系统采用AspNetPager作为分页控件,该控件功能齐全,使用方便且自带跳转首页、上页、下页、尾页以及数字页的功能,还可通过下拉框形式跳转到指定页码。同时,此分页控件与CSS紧密结合,若要实现方块页码显示样式,只需将该控件的PaingButtonLayoutType属性设置为Span即可。另外,当鼠标经过以及点击分页控件时也会有不同的显示效果。最后是网页底部的版权声明,书写格式应为:Copyright [dates] by [author/owner]All Rights Reserved[4]。

2.3 业务逻辑实现

系统业务逻辑的核心为读者的查询流程。读者用户登录验证后即进入图书查询界面。对一般查询界面而言,为了保证系统的实用性和较好的用户体验,首先应具备强大的搜索引擎,它能够帮助用户快速、准确、全面地查询想了解的信息,同时又能够以美观大方、简洁明了的形式将数据信息呈现出来。对此,系统开发的重点便集中在搜索引擎优化和以分页形式显示视图化图书信息两方面。系统实现了按照书本名称、作者、出版社3种形式进行分类搜索;具有搜索提示功能,即用户在输入框每输入一个汉字或字母,搜索框下方会立刻弹出一个悬浮框,显示库存中书名含有输入汉字或字母的所有书籍,用户点击悬浮框中的某条记录,界面会将该书籍以视图形式显示在图书信息显示区中;可以进行模糊查询,例如用户输入“计算机”,图书信息显示区中会将书名中含有“计算机”的所有书籍以分页视图化形式显示出来,方便读者进一步确认或比较。此外,为方便用户选书,图书查询界面还可按照书籍类型进行过滤和按照点击量、出版时间等进行排序。下面将针对以上主要功能介绍相应的实现方法。

首先对于图书搜索引擎,在实现分类搜索功能方面,定义了一个SQL查询字符串query_book,并将其初始值设置为“Select * From bookInfo where book_ID is not null“,即在初始状态下为遍历数据库所有书籍记录。之后在查询按钮的点击事件中,对搜索框上部的书本名称、作者、出版社3个单选按钮的Checked属性值进行判断,例如若书本名称单选按钮rbt_bname的Checked值为true,则说明搜索框中输入的信息为书本名称,那么SQL查询字符串应按照书本名称字段b_name进行筛选,从而得到按照书本名称查询的结果。同时,在SQL语句中书本名称字段值的前后各加一个“%”即可实现模糊查询效果,“%”表示无、一个或多个字符。如SQL语句“%计算机%”,可包含“计算机应用”、“微型计算机研究”及“计算机”等字符串,数据库则会将它包含的所有信息返回到结果集中。代码示例如下:

//以按照书名进行模糊查询为例

if (rbt_bname.Checked == true)

{

//判断搜索框是否有信息输入

if (!txt_query.Text.Trim().Equals(String.Empty))

//SQL模糊查询语句

query_book = query_book+"Select * and b_name like '%" + txt_query.Text.Trim() + "%' ";

else

query_book = "Select * From bookInfo where book_ID is not null";

//根SQL查询字符串遍历数据库,并将结果保存到数据集中

SqlDataAdapter sda = new SqlDataAdapter(query_book, conn);

DataSet ds = new DataSet();

sda.Fill(ds, "bookInfo");

//将数据集信息同用于显示书籍信息的DataList进行绑定,以视图形式显示

DataList1.DataSource = ds.Tables["bookInfo"].DefaultView;

DataList1.DataBind();

}

下面要实现搜索提示功能,需引入ASP的AutoCompleteExtender控件,将此控件的TargetControlID属性设置为搜索框名称txt_query,从而实现对搜索框文本变化的监听。之后,需在Web服务中定义监听响应事件GetBookList(string inputText),即根据搜索类型,将文本中输入的信息inputText添加到SQL查询条件中,进而对数据库进行遍历,并将查询结果数据集的相关字段保存在字符串数组中。AutoCompleteExtender控件则根据获取到的字符串数组,自动在搜索框下方弹出一个分条显示搜索提示信息的悬浮窗。系统搜索引擎查询效果如图3所示。

在视图化图书信息显示方面,需使用DataList的模版编辑功能进行视图样式的个性化定制。进入模版编辑界面后,首先按照上文用户界面设计所述的布局拖放相应控件,将每个控件与数据库的相应字段绑定,以实现DataList模版与后台数据源的连接。用户点击查询按钮后,系统会按照搜索框的内容对Datalist的数据源进行过滤,并将每个符合要求的图书信息记录实例化为一个Datalist视图,填充在界面的图书信息显示区中。另一方面,为对这些DataList视图进行分页控制,需使用AspNetPager控件,且分页事件需包含于查询按钮的点击事件中。每次触发查询点击事件,都要先将查询结果集的记录个数赋值给AspNetPager的RecordCount属性,以确定所需显示的DataList视图总数;AspNetPager对象会自动除以其页面大小属性PageSize得到分页总数,之后还要将分页控件当前页码属性CurrentPageIndex的值设置为0,即默认首先显示第一页。最后将分页控件数据源PagedDataSource对象同自定义DataList的数据源DataSource进行绑定,即实现了分页控制效果,如图4所示。

最后,其实书籍类别功能和查询排序的实现方法在本质上是一样的。两者都是在遍历书籍信息表的基本SQL语句上添加过滤条件,从而对图书显示内容进行整理和归类。一方面,根据选择的书籍类别,如军事类,则选择书籍

表中所有类别字段为军事类的记录即可;另一方面,通过SQL的ORDER BY语句可实现对书籍的排序。其中需要注意的是,在对出版时间进行排序时,需通过定义标志字来实现对升序和降序功能的控制。

3 项目成果与分析

综合以上步骤,以360安全浏览器作为界面显示平成了项目的开发和测试。同参考文献示例[5]等所述的其它图书查询系统相比,本系统的搜索引擎具有搜索提示、分类查询以及模糊搜索功能,方便用户快速准确地查询所需书籍。同时利用自定义数据列表实现对书籍信息的视图化显示,对布局规划和显示样式作了进一步规整和美化,并实现了分页管理效果。

4 结语

视图化图书智能查询系统分别采用HTML、CSS和进行界面的布局规划、样式调整以及业务逻辑设计,并以SQL 2008 R2为数据平台,在360安全浏览器上对系统显示效果与信息查询的实时性和准确性进行了验证。由于本阶段系统仅实现了对图书简介的预览功能,且查询的书籍均为图书馆中的纸质版书籍,尚欠缺图书在线试读和电子图书查询功能,这将是下一阶段研究和开发的重点。

参考文献:

[1] 胡俊松.新时期图书馆信息化管理探究[J].软件导刊,2014,13(7):11-12.

[2] 胡慧晶.中山市三乡理工学校图书馆管理信息系统的设计与实现[M].北京:电子科技大学出版社,2014.

[3] 吴志祥.高级Web程序设计[M].北京:科学出版社,2013.

[4] 李原.网页版权研究[M].长沙:湖南大学出版社,2007.

[5] 李霞,张鹏.用ASP技术实现在线图书查询系统[J].阴山学刊,2003(2):46-47.

上一篇:毕业设计管理信息系统设计与实现 下一篇:基于特征向量自动选取的谱聚类算法