自考“計(jì)算機(jī)及應(yīng)用”專業(yè)論文參考范文(26)

字號(hào):

3.2網(wǎng)上圖書館
    網(wǎng)上圖書館將學(xué)校圖書館圖書放到網(wǎng)絡(luò)上供人借閱,這樣不僅方便了校內(nèi)的學(xué)生與教職員工使用圖書館的資源,還為圖書館管理員提供了一種簡便地管理圖書館的方法。
    3.2.1功能
    網(wǎng)上圖書館系統(tǒng)可以進(jìn)行圖書的出借和歸還。還可以在系統(tǒng)中按照多種字段對圖書進(jìn)行查找,還可以瀏覽某個(gè)種類的所有圖書。該應(yīng)用程序也為圖書館管理員提供了一些功能,如添加、編輯以及刪除圖書等,或者在分類層次結(jié)構(gòu)中添加新的種類。
    3.2.2系統(tǒng)的層次結(jié)構(gòu)
    下圖的每個(gè)方框代表校園圖書館網(wǎng)站中的一個(gè)頁面。除了只包含HTML的Search頁面外,其他的均為ASP頁面。因?yàn)槊總€(gè)圖書的頁面都不同,所以大多數(shù)的頁面實(shí)際上都是多頁面。
    3.2.3數(shù)據(jù)庫設(shè)計(jì)
    本系統(tǒng)共使用3個(gè)數(shù)據(jù)表:
    LibBooks表包含與圖書有關(guān)的所有數(shù)據(jù)。該表中的字段內(nèi)容的圖書的通用信息。另外,對于已經(jīng)出借的圖書,該表中還包含借閱該圖書的用戶的ID號(hào),以及圖書的狀態(tài)。
    表視圖如下:
    字段名 意義 字段類型 字段名 意義 字段類型
    bookid 書號(hào)(主鍵) 數(shù)字 (no null) status 狀態(tài) 文本
    title 書名 文本 checkedoutto 用戶id 數(shù)字
    author 著者 文本 reservedby 用戶學(xué)號(hào) 數(shù)字
    Subject 主題 文本 description 描述 文本
    Isbn Isbn號(hào) 文本 keywords 關(guān)鍵字 文本
    LibCategories 表包含Library中的所有類別,在訪問者瀏覽圖書列表時(shí)將會(huì)用到這些類別。每個(gè)類別都可以作為另外類別的父類別。有一個(gè)特殊的類別,Top-Level,沒有出現(xiàn)在類別列表中,但是可以作為其他任何類別的父類別。
    字段名 意義 字段類型
    Categoryname 類別 文本(noll)
    parentcategory 父類別 文本(noll)
    LibEmps表包含可以訪問圖書館網(wǎng)站的用戶信息。該表包含一些通用的信息字段,比如用于進(jìn)入圖書館的用戶密碼等。
    字段名 意義 字段類型 字段名 意義 字段類型
    empid 用戶id (主鍵no null) 數(shù)字 password 用戶密碼 文本
    Empname 用戶姓名 文本 manager 管理員代號(hào) 數(shù)字
    emailaddress 用戶郵箱 文本
    圖書館數(shù)據(jù)庫的數(shù)據(jù)關(guān)系如圖9-22所示。其中表LibEmps和表Lib Categories與表LibBooks之間都是一對多的關(guān)系。每個(gè)雇員都可以借閱多本圖書,每個(gè)類別都可以包含多本圖書。
    3.2.3界面設(shè)計(jì)與重點(diǎn)代碼的設(shè)計(jì)
    網(wǎng)上圖書館系統(tǒng)有兩種用戶,一是管理員。另一種是只允許使用圖書館系統(tǒng),而沒有管理功能的一般用戶。訪問者進(jìn)入網(wǎng)站,首先要進(jìn)行登錄,如下圖所示。登錄頁面(index.asp)
    訪問者輸入E-mail地址和密碼來登錄,然后單擊“登錄”按鈕。輸入的數(shù)據(jù)提交后與數(shù)據(jù)庫中的用戶表進(jìn)行匹配。
    須創(chuàng)建一個(gè)記錄來保存基于訪問者登錄的用戶信息
    set RSFindEmp = conn.Execute(“select EmpID, Manager from LibEmps where ” _
    & “EmailAddress = '” & Request.Form(“EmailAddress”) & “' and ” _
    & “Password = '” & Request.Form(“Password”) & “'”)
    if RSFindEmp.EOF then
    TheMessage = “密碼或email地址不對?!?BR>    else
    Session(“EmpID”) = RSFindEmp(“EmpID”)
    Session(“Manager”) = RSFindEmp(“Manager”)
    Response.Redirect “……/yk.htm”
    end if
    表單域EmailAddress和Password 用于Where了句中來獲取一個(gè)記錄。如果訪問者輸入了一個(gè)無效的用戶名,則記錄集中將不會(huì)返回匹配的記錄。我們可以通過查看EOF標(biāo)記來判斷一個(gè)記錄集是否為空。為空,則訪問者將被拒絕進(jìn)入該系統(tǒng)。不為空,則訪問者的EmpID值和Manager值將從記錄集中返回。寫入Session 變量, 變量將在整個(gè)網(wǎng)站的所有網(wǎng)頁中都是有效的。這些變量的存在與否及其取值將用于確定是否允許進(jìn)入一個(gè)特定的網(wǎng)頁,同時(shí)也用于訪問者進(jìn)行書目的歸還和借閱操作。
    圖書館菜單頁面
    圖書館菜單頁面包含指向其他4個(gè)頁面的鏈接:管理頁面、搜索頁面、圖書列表頁面和主頁面。還有一個(gè)可顯示用戶所借書籍的按紐。如果訪問者是圖書館管理員,則菜單界面如圖所示。如果訪問者不是圖書館管理員,則看到如圖所示的界面。非管理員的訪問者的界面上沒有指向管理員菜單頁面的鏈接。
    實(shí)現(xiàn)辦法:訪問者登錄時(shí)在登錄頁面上的創(chuàng)建的會(huì)話變量Session 用于從數(shù)據(jù)庫中獲取訪問者的有關(guān)信息,表示它是否是管理員。如果值為1,就表明訪問者是一個(gè)管理員,則用如下代碼寫入一個(gè)指向管理員頁面的鏈接:
    <% If Session(“Manager”) = 1 then %>
    管理員菜單
    <% end if %>
    通過按紐B1是否為空來判斷要不要顯示用戶所借圖書,利用一個(gè)記錄集來獲取訪問者已經(jīng)借出了的所有圖書的列表。
    if NOT isempty(Request.Form(“B1”)) then
    set RSBooks = conn.Execute (“select BookID, Title from LibBooks where ” _
    & “CheckedOutTo = ” & Session(“EmpID”))
    end if
    再用循環(huán)語句將所借書以表格形式顯示出來。
    
    <% if NOT isempty(Request.Form(“B1”)) then
    Do Until RSBooks.EOF%>
    
    
    <% RSBooks.MoveNext
    loop
    end if
    %>
    
<% Response.Write RSBooks(“Title”) %>

    循環(huán)將遍歷Rsbooks記錄集中的每個(gè)記錄,直到該記錄集結(jié)束:
    該網(wǎng)站中的所有ASP頁面都會(huì)在訪問者訪問之前對其進(jìn)行登錄檢查。這樣就可以避免訪問者通過輸入某個(gè)頁面地址然后在沒有登錄的情況下直接進(jìn)入該頁面的情況發(fā)生。此外,每個(gè)管理頁面都要確認(rèn)訪問者是管理員。