首页 > 范文大全 > 正文

利用ASP技术实现图书目录查询系统

开篇:润墨网以专业的文秘视角,为您筛选了一篇利用ASP技术实现图书目录查询系统范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

(内蒙古大兴安岭林业学校,内蒙古牙克石022150)

摘要:该文首先介绍了开发图书查询系统选用的工具,在介绍了系统的总体设计和总体实现后详细论述了在实现图书查询系统中遇到的问题和解决的方法,并结合实例来说明ASP在图书查询系统中的应用技巧。

关键词:图书;ASP;分页显示;查询

中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)11-2455-02

随着互联网的发展,人们对Web网页的要求越来越多的趋向于动态交互性,而这很大程度上依赖于Web数据库。因为动态交互需要强大的信息系统支持,信息数据以数据库形式表示更容易更新和管理。通过网页如何动态交互的访问数据库成为最关键的问题。ASP技术使得Web开发变得更加简单、快速、高效。基于ASP技术的图书查询系统的设计和实现是利用asp技术访问WEB数据库实现动态交互的具体实例。

1系统开发工具的选择

ASP是一个服务器的脚本环境,内嵌在HTML页面中的脚本程序在这里运行并建立Web服务器应用程序。ASP使用VBScript、JavaScript等简单易懂的脚本语言,脚本语言完全嵌入HTML不仅可快速的完成网站的应用程序,还实现了程序与页面的完美结合,并且ASP使用普通的文本编辑器(如windows的记事本)就可以进行编辑设计。ASP应用程序的实际实现过程中,界面设计和代码的编写实现一种紧密结合,能极大地提高效率。尤其在Adobe Dreamweaver CS3中,良好的界面设计可以极大地优化程序的结构,也具有较好的可读性。基于ASP和Adobe Dreamweaver CS3的这些优点,我们最终选择ASP和Adobe Dreamweaver CS3作为图书查询系统的主要开发工具。

2系统的总体设计

图书查询系统主要实现图书查询功能,用户输入要查找的内容及选定分类信息就可以快速地找到符合条件的图书,并看到查询结果。在本系统中,任何人都有权限使用查询功能,不做任何限制。由于实现的查询功能有多种,如按图书名称、作者等条件进行完全匹配查找和部分匹配的模糊查找,还有按多个条件进行逻辑与或者逻辑或的多条件查找,所以基于这些查询功能以及根据系统的需求分析,设计了3种查询类型,分别是简单查询、普通查询、高级查询。用户可以根据自己的条件自主的选择查询类型,使整个查询系统更具有人性化,也提高了查询效率。

3系统的总体实现

在简单查询、普通查询、高级查询中,查询类型的实现只是在查询语句构成上有区别,其他地方实现的方法都差不多,所以在以下的介绍中只对一种方法的实现进行详细的介绍。以简单查询为例,当用户输入查询条件提交后,提交的动作会自动调用ASP页面,在ASP页面中会执行相应的SQL查询语句,执行SQL查询需要连接数据库,那么ASP会访问WEB数据库,WEB服务器会接受浏览器的请求,通过ODBC或者OLE DB把连接请求发送给数据库服务器,连接数据库。连接数据库后,ASP会根据查询的条件,通过访问组件ADO到数据库中完成相应的查询操作,即执行SQL查询语句,并以结果集的形式返回给定义的记录集对象,记录集以分页的形式显示在界面上,供用户浏览。用户可以在已列出的文献信息上点击已联接的书名,就可看到相应文献的详细信息。

4解决系统实现中遇到的问题并总结心得

我在实现图书查询系统时,遇到了一些问题,在解决后积累了一些心得,并总结了一些在编制ASP应用程序中的技巧。

1)Response是ASP的内置对象,使用Response对象可将输出的信息发送到客户端浏览器,即向用户发送信息。Response对象中的Write方法在直接输出一个由变量表达的字符串时具有重要的作用,甚至它可以作为一种ASP向客户端返回HTML页面的一种主要方式。

2)对同一表单内的元素可以用Request.QueryString()或Request.Form()方法获得当前表单内的元素值。但Request.QueryString()方法很容易实现页面间的传值。这在实际编程中具有极大的便利。甚至在两个相邻的页面间也能顺利传值。其中Request也是ASP的内置对象,可以直接被调用。Request对象在HTTP请求期间,检索客户端浏览器传递给服务器的值,即获取用户信息。

3)在开发Web数据库应用程序时,由于ASP模型主要是基于服务器端的,只有当用户单击了一个ASP调用(如〈form method="get" action="jiandancheck.asp"〉)的超链接或表单的提交按钮后才能工作,否则无法对客户的输入做出实时响应。如一个检查各个输入域是否为空的操作,就必须数据传送到服务器端后,才能做出判断。表现在具体编程中,就是判断的代码必须放在下一个页面中。由于VBScript和JavaScript是基于客户端的脚本语言,所以这种检查可以通过在ASP中内嵌VBScript或JavaScript脚本来完成。实际上,一个成功的ASP应用程序经常是ASP模型与VBScript或JavaScript脚本紧密结合的产物。

4)ASP中实现分页显示的方法

对于数据量较小的数据表而言,一次显示所有的数据是没有问题的,但数据库中可能有成千上万条记录,如果一次都显示出来的话消耗的时间太多,而且不方便用户筛选信息。为解决此问题在本系统中采用了分页显示的方法,我们可以将数据分割成数页,每页显示若干记录数据,并提供上、下页的查询方式,这样可以大幅度减少系统的负荷。该方法是用手工建立RecordSet对象,利用其PageSize(每页指定显示记录数),PageCount(总页码数)和Absolutepage(当前页码数)属性来控制分页的输出。当我们设置PageSize的值之后,数据库对象会自动将RecordSet的大小分为若干个Page,例如每页要显示10条记录则ASP语法如下:rs.PageSize=10(其中rs为一个记录集)

在设置页面输出记录的多少以后,另外必须设置AbsolutePage的值,让数据库的指针自动移至对应的记录。AbsolutePage的写法如下:

rs.AbsolutePage=1(设置目前处理范围(页数))。

RecordSet在设置AbsolutePage属性的值以后,数据库第一条记录数据的地址,将自动被改变,它的计算公式如下:第一条记录数据地址=(AbsolutePage-1)*PageSize+1公式(1)。

当所有的准备工作完成之后接下来就可以处理指定页面的数据了。

为了方便在线用户的浏览查阅和对系统功能进行测试,我将系统设计为每页显示3条记录,并在每页上方提供目前页数、总页数、总记录数、上一页、下一页、首页、尾页的功能。

为了完成上述的功能,我们在ASP中以Page变量记录目前的页数,Page变量的处理规则如下:

页面为0时的处理:当Page

页面数大于实际页数:Page>PageCount时,将Page设为PageCount。

上面的处理原则对于上、下页浏览是特别有用的,可避免不可预料的情况发生,导致错误的情形发生。

在HTML的语法中,我们可以让网页自己调用自己,网页递归程序写法如下:

至于上、下、首、尾页数的控制,我们使用Page变量为参数,利用HTML参数传递方式,并以递归调用方式来简化程序的复杂度,页数控制如下:

对于下一页的超级连接,将Page页数加1,然后调用自己来处理。设Pages.asp为分页查询的ASP程序。

代码为:>下一页。其具体实现过程为:当点击下一页的连接后,系统会自动调用执行当前页,并在页面上显示对应的记录,而正确显示对应的记录是关键,显示的记录数仍由PageSize来决定,但显示的记录位置是由上述的公式(1)来计算的,显示的记录为除去前面所有页的记录总和的前PageSize条记录。

对于上一页的连接,将Page页数减1,利用Pages.asp(查询分页显示的ASP程序)达到调用自己的目的。

代码为:>上一页。

同理对于首页的超级连接,将Page页数赋值为1,然后调用自己来处理。对于尾页的超级连接,将Page页数赋值为rs.PageCount,后递归调用自己来处理。

5)ASP应用程序中如何解决页面间的传值是个关键的问题。在系统中没有实现页面间传值时,每次显示只能显示第一页的记录,分页显示无法正确的进行。经过老师的指导和同学的讨论,最终在本系统中采用了以下的方法,解决了分页显示这一难题:

对于在多个页面之间的传值,最适合的方法是利用Request.querystring属性。即在表单的Action或页面元素的超链接中,可以添加关于Request.querystring的引用。当用户按下“查询”按钮后,网页根据HTML中标记内的Action设置,调用Pages.asp,执行多页查询的功能。具体如下:

在Pages.asp中,可以通过Request.querystring(“chaxunneirong”)来取得chaxunneirong的值,并可以采用同样的方法把这个值再传送下去。

要想正确的实现分页查询,则对于上、下页及首、尾页的数据查询,也须配合参数的传递而做相应的调整,其调整方式主要是针对上、下页及首、尾页的超级连接,只要在超级连接处加入需要传递的参数变量即可。例如:对于上一页超级连接的代码修改如下:

&chaxunneirong=>上一页。

接下来就要创建表格,用于显示查询结果。首先要用一个循环显示表格头,接下来用一个二重循环输出记录集中所有的记录,第一层循环控制本页记录集中记录数,第二层循环控制记录集中记录的字段数,在这层循环中要逐一显示记录的字段。在第一重循环中要用到这样一个语法:rs.movenext()。当数据库被打开时,rs对象定位在数据库表的第一条记录上,输出第一条记录的内容,要想输出第二条记录,必须执行rs.movenext()指令,让它移动到下一条记录。还要用到一个语法是:rs.Bof(记录开头)和rs.Eof(记录结尾),这两条指令判断记录指针是否移动到最前面和最后面,Bof的位置是在第一条记录之前,Eof是在最后一条记录之后。如果rs指针在最后一条记录上,再执行一次movenext()时,rs.Eof为真。

6)分页显示后,如果用户想查看某本书的详细内容,可以点击该书的书名就可连接到该书的详细信息页面。具体实现方法如下:

分页显示所查记录集的字段时如果显示的字段是书名就在书名上加上一个超级连接,所用代码如下:

" target=’_blank’>。

然后在detail.asp中获取所传条码参数,并以该条码为查询依据对数据库进行查询,则可以查到在上一页点击的书,再把该书的详细信息显示。所用主要代码如下:

用strno=Request("条码")(1)读取出传递的条码参数后,连接数据库并对数据表进行查询:

strsql="select * from图书表where条码=’"&(strno)&"’"。

rs=conn.Execute(strsql)。

以上方法很重要的一点是,在给书名加超级连接时传递的参数一定是条码,而不是书名。因为条码对于每一本书都是唯一的,而且类型是数字型的字符串。书名的类型是字符串型的,不同的书可以有相同的书名。如果以书名作为传递参数,点击一般书名是可以正确显示的,但是一遇到书名中有”+”号时就不能正确显示了。

5结束语

与一般源代码编写不同的是:ASP应用程序的重点不在HTML代码的编写上,IIS只对〈%…%〉标记内的代码进行解释和运行。〈%…%〉标记内的代码具有相对完整性,可以认为它与一般HTML语言是互不影响的。VBScript是在客户端运行的脚本,利用它可以很方便的与客户交互,如显示一个对话框,而这是ASP模型不具备的。两者的紧密结合使得客户端脚本的灵活性和服务器端脚本的安全性、可靠性都得到了充分的体现。在以后的图书查询系统的设计和改进中,还要结合系统特点遵循实用性、先进性、开放性、可靠性、兼容性等原则,使系统开发的更完善。

参考文献:

[1]启明工作室.ASP网络应用系统实用开发技术[M].北京:人民邮电出版,2004.

[2]石志国,王志良,薛为民.ASP精解案例教程[M].北京:清华大学出版社,北方交通大学出版社,2004.

[3]丁贵广,郭宝龙.ASP动态网站建设实例与技巧[M].西安:西安电子科技大学出版社,2001.

[4]李晓黎,张巍.ASP+SQL Server网络应用系统开发与实例[M].北京:人民邮电出版社,2004.