李志義 吳創(chuàng)城
摘 要:本文以程序設(shè)計與編碼為重點,探討了如何采用ASP 結(jié)合Access數(shù)據(jù)庫與SQL查詢語言設(shè)計中小學(xué)成績查詢系統(tǒng)。文章重點介紹了該系統(tǒng)的實現(xiàn)過程,包括系統(tǒng)分析、功能設(shè)計、數(shù)據(jù)庫設(shè)計、系統(tǒng)實現(xiàn)、系統(tǒng)測試等。
關(guān)鍵詞:ASP;查詢系統(tǒng);設(shè)計
中圖分類號:TP393文獻標(biāo)識碼:B 文章編號:1673-8454(2008)22-0062-03
一、問題的提出
計算機、通信和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展與廣泛應(yīng)用,對全球經(jīng)濟、政治、文化等領(lǐng)域產(chǎn)生了越來越深刻的影響。作為教育和科研前沿的高校和中小學(xué)校,顯然正經(jīng)歷全新的網(wǎng)絡(luò)與信息化洗禮,數(shù)字化、信息化逐漸走進校園的方方面面。正是在這種網(wǎng)絡(luò)化、數(shù)字化的大環(huán)境下,許多高校已紛紛建設(shè)了數(shù)字化校園,但對于中小學(xué)校而言,卻并未普及。因此研究中小學(xué)校的信息化與數(shù)字化、研究中小學(xué)的各類信息管理系統(tǒng)成為必要?;诖?,本文試圖開發(fā)一套適合大眾的、兼容性好的中小學(xué)學(xué)生成績查詢系統(tǒng),以方便教師對學(xué)生成績進行管理以及學(xué)生對成績進行查詢,為中小學(xué)校提供教務(wù)信息的網(wǎng)絡(luò)化管理,滿足教師計算機辦公要求。
本系統(tǒng)采用ASP網(wǎng)頁編程技術(shù)+Access數(shù)據(jù)庫+SQL查詢語言實現(xiàn)其功能。文章重點是介紹學(xué)生成績管理系統(tǒng)的實現(xiàn)過程,包括系統(tǒng)分析、功能設(shè)計、數(shù)據(jù)庫設(shè)計、程序編寫與實現(xiàn)、系統(tǒng)測試和調(diào)試等,略去了系統(tǒng)需求分析與可行性分析。
二、系統(tǒng)調(diào)試與運行環(huán)境
本系統(tǒng)的代碼編寫環(huán)境為:Dreamweaver8、Microsoft Visual Studio 2005。調(diào)試運行程序的環(huán)境為:Microsoft Windows XP的Internet Information Service(IIS5.1)。它同時適用于Windows ME/NT/2000/2003等系統(tǒng)環(huán)境。
三、系統(tǒng)功能與模塊設(shè)計
1.系統(tǒng)功能描述
考慮到中小學(xué)的教學(xué)管理需要及其特點,本系統(tǒng)的功能簡單而實用,系統(tǒng)功能主要包括用戶登錄、成績管理(添加、刪除、修改)、成績查詢等。
(1)用戶登錄
根據(jù)用戶所屬的不同角色(教師、學(xué)生)顯示不同的操作界面。學(xué)生登錄頁面只能憑學(xué)號和密碼登錄并只能查詢到個人成績。教師登錄頁面不僅可以查詢?nèi)我鈱W(xué)生的成績,還可以對全班全級的成績進行批量的管理,包括成績修改、添加和刪除。
(2)成績管理
主要供教師和管理員使用,其功能包括添加數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)。即對學(xué)生成績進行添加、修改和刪除等操作。
(3)成績查詢
主要有學(xué)生查詢和教師查詢,學(xué)生可按學(xué)號查詢個人成績;而教師在賬號、密碼登錄正確后可進行個人成績查詢、班級成績查詢和班級統(tǒng)計查詢等。
2.系統(tǒng)功能模塊設(shè)計
系統(tǒng)整體上可以劃分為數(shù)據(jù)庫、數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層。其中,數(shù)據(jù)庫存在于系統(tǒng)最底層,它存儲系統(tǒng)的所有數(shù)據(jù)。數(shù)據(jù)訪問層建立在數(shù)據(jù)庫之上,應(yīng)用程序通過該層訪問數(shù)據(jù)庫。數(shù)據(jù)訪問層一般封裝數(shù)據(jù)庫的選擇、添加、更新和刪除等操作,同時還為業(yè)務(wù)邏輯層提供訪問數(shù)據(jù)庫的接口或函數(shù)等。該層直接與數(shù)據(jù)庫相關(guān)聯(lián),同時又為業(yè)務(wù)邏輯層服務(wù),所以數(shù)據(jù)訪問層設(shè)計的好壞關(guān)系到整個系統(tǒng)的成敗。業(yè)務(wù)邏輯層包括成績查詢、成績管理等業(yè)務(wù)邏輯,它一般由Web頁面實現(xiàn),如教師登錄頁面login.asp、學(xué)生管理頁面studentlogin.asp、查詢頁面search.asp頁面。成績管理系統(tǒng)的結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)功能模塊
圖2 管理模塊流程圖
(1)用戶登錄模塊
如圖2所示,用戶登錄模塊主要用于對用戶的身份驗證,這些信息保存在數(shù)據(jù)庫里,當(dāng)用戶輸入正確的賬戶密碼時,數(shù)據(jù)庫會返回對應(yīng)的數(shù)據(jù)供用戶瀏覽,當(dāng)用戶輸入錯誤的賬號密碼時,系統(tǒng)返回錯誤提示。
(2)數(shù)據(jù)管理模塊
數(shù)據(jù)管理模塊由教師登錄后進行數(shù)據(jù)管理。它包含了添加數(shù)據(jù)、修改數(shù)據(jù)和刪除數(shù)據(jù)三大主要功能,還包括數(shù)據(jù)統(tǒng)計、排序等次要功能。數(shù)據(jù)管理模塊是整個學(xué)生成績管理系統(tǒng)的核心功能之一,一個系統(tǒng)的好壞主要體現(xiàn)在數(shù)據(jù)管理模塊中。
(3)數(shù)據(jù)查詢模塊
數(shù)據(jù)查詢模塊分為學(xué)生查詢和教師查詢。學(xué)生只能以個人賬號、密碼登錄并查詢本人成績。教師登錄后不僅能夠查詢某一個人的成績,而且可以以班級為單位進行查詢。
四、數(shù)據(jù)庫設(shè)計
1.總體設(shè)計
本系統(tǒng)所使用的數(shù)據(jù)庫采用Access進行設(shè)計,同時利用MD5加密技術(shù)對用戶密碼進行加密,提高了系統(tǒng)安全性。本數(shù)據(jù)庫包含三張表,分別為教師賬戶表(admin)、分?jǐn)?shù)表(scores)、學(xué)生賬戶表(student),表的設(shè)計視圖因篇幅所限只列出了教師賬戶表(如表1)。
圖3 表scores與表student關(guān)系設(shè)計圖
2.表的關(guān)系設(shè)計
由于登錄頁面可直接從數(shù)據(jù)庫中讀取數(shù)據(jù)然后連接至所在頁面,查詢數(shù)據(jù)頁面必須通過表scores和表student以學(xué)號連接,從而讀取查詢數(shù)據(jù),具體關(guān)系設(shè)計圖如圖3所示。
五、程序編寫與實現(xiàn)
本系統(tǒng)涉及的文件較多,以下只列出其中的部分代碼,其中MD5加密技術(shù)是本系統(tǒng)的特色之一,所以“程序編寫與實現(xiàn)”部分特給出MD5加密實現(xiàn)的核心代碼。此外,限于篇幅只列出了成績查詢的部分代碼。
1. MD5加密部分代碼
<%
Private Const BITS_TO_A_BYTE = 8
Private Const BYTES_TO_A_WORD = 4
Private Const BITS_TO_A_WORD = 32
Private m_lOnBits(30)
Private m_l2Power(30)
Private Function LShift(lvalue, iShiftBits)
If iShiftBits = 0 Then
LShift = lvalue
Exit Function
ElseIf iShiftBits = 31 Then
If lvalue And 1 Then
LShift = &H80000000
Else
LShift = 0
End If
Exit Function
ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
Err.Raise 6
End If
If (lvalue And m_l2Power(31 - iShiftBits)) Then
LShift = ((lvalue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) Or &H80000000
Else
LShift = ((lvalue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
End If
End Function
Private Function RShift(lvalue, iShiftBits)
If iShiftBits = 0 Then
RShift = lvalue
Exit Function
ElseIf iShiftBits = 31 Then
If lvalue And &H80000000 Then
RShift = 1
Else
RShift = 0
End If
Exit Function
ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
Err.Raise 6
End If
RShift = (lvalue And &H7FFFFFFE) m_l2Power(iShiftBits)
If (lvalue And &H80000000) Then
RShift = (RShift Or (&H40000000 m_l2Power(iShiftBits - 1)))
End If
End Function
Private Function RotateLeft(lvalue, iShiftBits)
RotateLeft = LShift(lvalue, iShiftBits) Or RShift(lvalue, (32 - iShiftBits))
End Function
……
%>
2.成績查詢部分代碼
<% testnumber=request.form("testnumber")
if testnumber="" then response.write"<script>alert('對不起,請輸入檢索關(guān)鍵字');history.back(-1);</ script>" end if
dim rs
dim sql
set rs = server.createobject("adodb.recordset")
sql = "select*from scores where testnumber like '%"&testnumber&"%'"
rs.Open sql,conn,1
if rs.eof then
response.write"對不起,沒有相關(guān)數(shù)據(jù)"
else
do while not rs.eof
%><br>
六、系統(tǒng)調(diào)試與運行<br>
該系統(tǒng)在Microsoft Windows XP的Internet Information Service5.1下調(diào)試并運行正常,它同時適用于Windows NT/2000/2003等操作系統(tǒng)。有關(guān)數(shù)據(jù)庫的設(shè)計和ASP程序的編寫是其核心。由于存儲的學(xué)生信息較為簡單,在數(shù)據(jù)庫的設(shè)計上允許有一些數(shù)據(jù)項不是最小的數(shù)據(jù)單位,以便于相對地降低代碼的復(fù)雜程度以及服務(wù)器端程序的編寫??傮w而言,系統(tǒng)功能已得到實現(xiàn),試運行正常,符合設(shè)計要求與設(shè)計目標(biāo)。<br><br>參考文獻:<br>[1]利用ASP開發(fā)Web應(yīng)用[DB/OL].http://www.programbbs.com/doc/1287.htm.<br>[2]屈喜龍,李正庚.ASP+Access開發(fā)動態(tài)網(wǎng)站實例薈萃[M].北京:機械工業(yè)出版社,2006:99-238.<br>[3]ASP技術(shù)訪問Web數(shù)據(jù)庫[DB/OL]. http://www.programbbs.com/doc/1236.htm<br>[4]李志義,黃成業(yè).網(wǎng)上論壇的一種設(shè)計與實現(xiàn)[J].現(xiàn)代圖書情報技術(shù),2004(1):88-90.<br>[5]李志義,潘振杰.站內(nèi)搜索引擎的一種設(shè)計與實現(xiàn)[J].情報雜志,2006(7):27-28.<br>[6]李志義,李瑞輝.電子政務(wù)查詢系統(tǒng)的設(shè)計與實現(xiàn)[J].情報雜志,2007(10):42-47.<br>