李國紅
摘要:分析與闡述了讀者借閱信息系統(tǒng)的基本工作原理及基于Access的讀者借閱數(shù)據(jù)庫和數(shù)據(jù)表的結構,然后探討了基于Web的讀者借閱信息綜合查詢表單和查詢處理流程,并提供了實現(xiàn)讀者借閱信息綜合查詢功能的ASP程序代碼。
關鍵詞:讀者借閱;信息系統(tǒng);信息查詢處理;系統(tǒng)設計;ASP程序
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2012)07-1478-05
Design and Realization of Comprehensive Information Inquiry Function in Web-based Reader Borrowing Book System
LI Guo-hong
(Department of Management Engineering, Zhengzhou University, Zhengzhou 450001, China)
Abstract: This paper analyzes and expounds the basic principle of Reader Borrowing Book Information System and the Access-based database and its data table structure of the system. Then it discusses the Web-based reader borrowing book information inquiry form and its inquiry processing procedure, with the ASP program code being provided to realize the reader borrowing book comprehensive information inquiry function.
Key words: reader borrowing book; information system; information inquiry processing; system design; ASP program
1讀者借閱信息查詢處理概述
讀者借閱信息查詢是圖書館讀者借閱系統(tǒng)的極為重要的操作之一。其基本工作原理是,反映讀者、圖書、借閱情況的信息分別保存在相應的數(shù)據(jù)表中,各個相關數(shù)據(jù)表構成了一個功能強大的關系數(shù)據(jù)庫,讀者借閱信息查詢就是對關系數(shù)據(jù)庫中各數(shù)據(jù)表的相關數(shù)據(jù)進行綜合查詢。
假設讀者借閱信息保存在以Microsoft Access創(chuàng)建的讀者借閱數(shù)據(jù)庫文件duzhejieyue.mdb中,該數(shù)據(jù)庫中含有分別用于保存讀者、圖書和借閱信息的duzhe表、tushu表、jieyuetushu表(表的結構如表1~表3所示,字段寬度根據(jù)實際情況確定),其中,zhuzhe表中已保存有讀者注冊信息,tushu表中已保存有圖書登記信息,jieyuetushu表中已登記有全部相關的讀者借書信息,凡是duzhe表中不存在的讀者編號都不會出現(xiàn)在jieyuetushu表中,凡是tushu表中不存在的圖書編號也必定不會出現(xiàn)在jieyuetushu表中。
表1 duzhe表的結構
讀者借閱信息查詢操作就是針對這些數(shù)據(jù)表查詢指定讀者的借閱信息,或查詢特定的圖書被哪些讀者所借閱,或查詢指定讀者借閱特定圖書的情況。為實現(xiàn)基于Web的讀者借閱信息的查詢,可首先利用Internet信息服務控制臺將duzhejieyue.mdb所在的目錄設置為別名為jieyue的虛擬目錄,然后設計基于Web的讀者借閱信息查詢界面(表單)和信息處理流程,并在虛擬目錄所對應的文件夾下,創(chuàng)建與信息查詢表單對應的網(wǎng)頁文件和用于處理表單的ASP文件即可。
2綜合查詢表單(zonghechaxun.htm)
為簡化描述和降低查詢處理的復雜性,這里的綜合查詢是指根據(jù)讀者編號或(和)圖書編號,查詢出有關讀者借書情況或圖書被讀者借閱情況的綜合信息。可通過設計綜合查詢表單和綜合查詢處理網(wǎng)頁以實現(xiàn)這種綜合查詢的功能。
表2tushu表的結構
表3 jieyuetushu表的結構
圖1借書綜合查詢
設計讀者借書綜合查詢表單如圖1所示。單擊“查詢”按鈕,由服務器執(zhí)行查詢處理(對應于綜合查詢處理文件zonghechaxun. asp);單擊“重埴”按鈕清空表單的數(shù)據(jù)輸入?yún)^(qū)域。據(jù)此,創(chuàng)建綜合查詢表單文件zonghechaxun.htm,該文件中的網(wǎng)頁代碼如下:
<form action="zonghechaxun.asp" method="post">
<table border=1 align=center>
<caption><font face="隸書" size=5>讀者借書綜合查詢</font></caption>
<tr><td align=right>讀者編號:</td>
<td><input type ="text" name="dzbh"></td></tr>
<tr><td align=right>圖書編號:</td>
<td><input type ="text" name="tsbh"></td></tr>
<table>
<table align=center border=0>
<tr>
<td align=right><input type="submit" value="查詢"></td>
<td><input type="reset" value="重填"></td>
</tr>
</table>
</form>
3綜合查詢處理(zonghechaxun.asp)
3.1綜合查詢處理的程序流程
在讀者借書綜合查詢表單,單擊“查詢”按鈕,由服務器對表單的查詢請求進行處理,處理完成后返回查詢結果,如圖2所示。
圖2借書綜合查詢結果
查詢功能的處理邏輯是:若表單中的讀者編號和圖書編號都為空字符串(即表單中沒有輸入任何數(shù)據(jù)或輸入了僅由空格組成的字符串),則將所有讀者的全部借書信息顯示出來;若讀者編號為非空字符串,而圖書編號為空字符串,則將指定讀者的借書信息全部顯示出來;若沒有輸入讀者編號或只輸入若干空格,但輸入了圖書編號(不為空),則將指定圖書的被借閱信息全部顯示出來。若讀者沒有借書(或圖書沒有被借閱),則在新的頁面提示“無找到相關記錄!”和超鏈接“[請單擊此鏈接返回]”,可單擊此鏈接返回讀者借書綜合查詢表單,繼續(xù)執(zhí)行查詢操作。
綜合查詢的處理結果涉及到duzhe、tushu、jieyuetushu表中的數(shù)據(jù),查詢結果中的字段可根據(jù)實際需要確定。查詢過程中,若jieyuetushu表中的讀者編號(或圖書編號)在duzhe表(或tushu表)中不存在,說明數(shù)據(jù)庫中的數(shù)據(jù)不一致,這可能是由于人工增刪數(shù)據(jù)造成的,程序中應考慮出現(xiàn)這種情況的可能,并以警告或提示的形式指出jieyuetushu表中所包含的duzhe表中不存在的讀者編號(或tushu表中不存在的圖書編號)。讀者借書綜合查詢處理的程序流程如圖3所示。
3.2綜合查詢處理文件zonghechaxun.asp
根據(jù)讀者借書綜合查詢處理的程序流程及設計的查詢處理結果,創(chuàng)建綜合查詢處理文件zonghechaxun.asp,該文件中的網(wǎng)頁代碼如下:
<%
strDzbh=Trim(request("dzbh"))
strTsbh=Trim(request("tsbh"))
set conn=server.createobject("ADODB.Connection")
conn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&_
server.mappath("duzhejieyue.mdb")
set rs1=server.createobject("ADODB.Recordset")
If Len(strDzbh)=0 Then
If Len(strTsbh)=0 Then
strSQL="select * from jieyuetushu"
Else
strSQL="select * from jieyuetushu where tsbh="& strTsbh &""
End If
Else 輸入的待查詢讀者編號不為空字符串
If Len(strTsbh)=0 Then
strSQL="select * from jieyuetushu where dzbh="& strDzbh &""
Else
strSQL="select * from jieyuetushu where dzbh="
strSQL=strSQL+strDzbh+" and tsbh="+strTsbh+""
End If
End If
rs1.open strSQL,conn
If rs1.eof Then
response.write "無找到相關記錄!
"
response.write ""
Else
set rs2=server.createobject("ADODB.Recordset")
set rs3=server.createobject("ADODB.Recordset")
response.write "
讀者編號 | 讀者姓名 | 讀者電話 | "&_圖書編號 | 圖書名稱 | 作者 | "&_定價 | 借閱日期 | "&_歸還日期 | 還書標記 | "
---|---|---|---|---|---|---|---|---|---|
"&rs1("dzbh")&" | ""&rs2("xm")&" | ""&rs2("dhhm")&" | ""&rs1("tsbh")&" | ""&rs3("tsmc")&" | ""&rs3("zz")&" | ""&rs3("dj")&" | ""&rs1("jyrq")&" | ""&rs1("ghrq")&" | ""&rs1("hsbj")&" | "
Set rs3=Nothing
Set rs2=Nothing
response.write "