【摘要】針對(duì)清華大學(xué)研發(fā)的“本科生綜合教務(wù)管理系統(tǒng)”的成績管理模塊中成績錄入只能采用手工輸入,已有數(shù)據(jù)無法直接導(dǎo)入的問題,文中提出了利用客戶端輔助程序?qū)崿F(xiàn)成績的自動(dòng)錄入,并通過VB6.0的示例代碼就程序設(shè)計(jì)中的登錄、加載本地?cái)?shù)據(jù)源、解析html代碼、自動(dòng)填充等環(huán)節(jié)進(jìn)行了詳細(xì)論述。
【關(guān)鍵詞】成績管理,網(wǎng)上成績報(bào)送,表單自動(dòng)填充
【中圖分類號(hào)】G473【文獻(xiàn)標(biāo)識(shí)碼】B 【論文編號(hào)】1009—8097(2007)03—0086—03
隨著校園網(wǎng)的不斷建設(shè)與發(fā)展,網(wǎng)絡(luò)輔助教學(xué)及教學(xué)管理已顯現(xiàn)出了無容置疑的優(yōu)越性。清華大學(xué)研發(fā)的“本科生綜合教務(wù)管理系統(tǒng)”是目前國內(nèi)高校使用較多一個(gè)系統(tǒng),已經(jīng)在大連理工大學(xué)、天津師范大學(xué)、廣州大學(xué)等全國100多所各類高校得到運(yùn)用[1],該系統(tǒng)的使用極大地提高了高校教學(xué)管理工作效率。
一、問題的提出
成績管理是“本科生綜合教務(wù)管理系統(tǒng)”的重要組成模塊。在實(shí)際使用中,成績管理模塊所存在的不足主要是成績完全依賴手工輸入,已上傳的成績也不能以數(shù)據(jù)庫格式下載到本地。
當(dāng)前計(jì)算機(jī)已是教師完成備課、講課、命題、成績統(tǒng)計(jì)分析等日常教學(xué)工作的重要工具。因而在網(wǎng)上報(bào)送成績前,多數(shù)考核成績的數(shù)據(jù)已經(jīng)以數(shù)據(jù)庫文件的形式存在于計(jì)算機(jī)中了。在網(wǎng)上成績報(bào)送時(shí),系統(tǒng)不支持?jǐn)?shù)據(jù)的導(dǎo)入,這些已有的數(shù)據(jù)無法得到充分利用,仍需要教師將成績逐個(gè)輸入;成績上報(bào)后,數(shù)據(jù)也只能通過打印或網(wǎng)頁“另存為”進(jìn)行保存,而不能得到真正意義上的數(shù)據(jù)庫文件。網(wǎng)上成績報(bào)送模塊存在的以上問題,增加了教師重復(fù)勞動(dòng),致使工作效率大打折扣。
二、解決的思路
解決上述問題有兩種途徑:其一,完善服務(wù)器端的程序,增加對(duì)各類數(shù)據(jù)源的轉(zhuǎn)換模塊,提高系統(tǒng)的數(shù)據(jù)兼容性;其二,開發(fā)具有自動(dòng)表單填充功能的客戶端輔助程序,充分利用客戶端已有數(shù)據(jù)。以下就如何利用VB開發(fā)客戶端成績錄入輔助程序進(jìn)行詳細(xì)討論。
三、客戶端輔助程序的開發(fā)
網(wǎng)上成績錄入模塊主要包括登錄頁面,成績錄入頁面及打印頁面。其中成績錄入頁面是一個(gè)垂直拆分的框架網(wǎng)頁,左側(cè)框架名稱為cj_left,用于顯示成績系數(shù),班級(jí)目錄,重新登錄等超鏈接信息;右側(cè)框架名稱為cj_main,用于顯示待填充成績的頁面及打印頁面。
MS Internet control是微軟為方便設(shè)計(jì)Internet應(yīng)用程序所提供的一種控件[2],它是實(shí)現(xiàn)表單自動(dòng)填充的核心控件,在VB6.0中默認(rèn)的名稱為webbrowser。該控件可通過網(wǎng)頁中的標(biāo)記(tag)操作網(wǎng)頁文檔(document)的各個(gè)元件(element),如表單中的文本框。
客戶端成績輔助錄入程序?qū)崿F(xiàn)成績自動(dòng)錄入需進(jìn)行以下四步操作:
(一)登錄
登錄是客戶端獲得操作權(quán)的第一步。程序界面中首先放置webbroswer1控件,并在form_load()中添加以下代碼:
WebBrowser1.Navigate http://*.*.*.*:7777/pls/wwwcjlr/cjlr.loginwindow
在WebBrowser1加載登錄頁面(“http://”之后為成績管理系統(tǒng)的首頁地址)。輸入正確的用戶名及密碼,點(diǎn)擊“登錄”,即可進(jìn)入。同時(shí)webbroswer1中顯示內(nèi)容轉(zhuǎn)到成績錄入框架頁。此步如果利用其它瀏覽器登錄,本程序?qū)⒉荒塬@得后續(xù)填充網(wǎng)頁的操作權(quán)。
(二)加載客戶端數(shù)據(jù)源
客戶端待錄入成績數(shù)據(jù),可能是數(shù)據(jù)庫(常用的包括ACCESS數(shù)據(jù)庫、Excel數(shù)據(jù)庫等),也可能是文本數(shù)據(jù)。如果客戶端的數(shù)據(jù)源為數(shù)據(jù)庫,程序可引用 “Microsoft DAO Object Library”[4],以方便對(duì)數(shù)據(jù)庫的訪問。以下代碼為通過點(diǎn)擊command1按鈕,打開“d:/2005.xls”學(xué)生成績Excel數(shù)據(jù)庫的示例[6]:
Dim db As Database
Dim rs As Recordset
Private Sub Command1__Click()
Set db = OpenDatabase(\"d:/2005.xls\", False, False, \"excel 8.0;HDR=YES\") '打開Excel數(shù)據(jù)庫
Set rs = db.OpenRecordset(db.TableDefs(0).Name)
End sub
如果客戶端數(shù)據(jù)源為文本格式,則可利用文件操作或“復(fù)制/粘貼”操作輸入到一個(gè)文本框中,通過解析字符串,獲取學(xué)號(hào)及成績等信息,并存放于數(shù)組中,以便填充時(shí)使用。
(三)成績錄入頁面的Html代碼
表單自動(dòng)填充程序的設(shè)計(jì)依賴于網(wǎng)頁Html代碼。成績錄入頁面數(shù)據(jù)行有如下:
其對(duì)應(yīng)的Html代碼如下:
<TR >
<TD>1</TD>
<TD>農(nóng)學(xué)1</TD>
<TD>0401154101</TD>
<TD>張三<INPUT name=p_xh type=hidden value=0401144101>
<INPUT name=p_kssj type=hidden value=20051220></TD>
<TD><INPUT maxLength=5 name=p_sycj size=5 ></TD>
<TD><INPUT maxLength=5 name=p_pscj size=5 ></TD>
<TD><INPUT maxLength=5 name=p_qmcj size=5 ></TD>
<TD><INPUT maxLength=5 name=p_kscj size=5 ></TD>
<TD><INPUT maxLength=4 name=p_bz size=5 ></TD>
</TR>
從上述代碼可知,一名學(xué)生的數(shù)據(jù)行中包含七個(gè)INPUT標(biāo)記,以學(xué)號(hào)(p_xh,隱藏域)開頭、之后依次為考試時(shí)間(p_kssj)、實(shí)驗(yàn)成績(p_sycj)、平時(shí)成績(p_pscj)、期末成績(p_qmcj)、總成績(p_kscj)和備注(p_bz)。這些input標(biāo)記及其name是編寫自動(dòng)錄入程序的直接依據(jù)。
(四)成績錄入頁面的填充
因MS Internet control 不易直接操作框架網(wǎng)頁,所以在輔助程序界面中要放置另一個(gè)internet控件,webbrowser2。當(dāng)在webbrowser1的左側(cè)框架中點(diǎn)擊某個(gè)鏈接,且目標(biāo)框架名為“cj_main”時(shí),可利用BeforeNavigate2事件捕獲并將待加載的頁面轉(zhuǎn)至webbrowser2中打開。
Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
If TargetFrameName = \"cj_main\" Then
WebBrowser2.Navigate URL' 在WebBrowser2中打開鏈接
End If
End Sub
成績錄入頁面打開后,即可根據(jù)INPUT標(biāo)記及其name屬性獲取學(xué)號(hào),確定填充位置進(jìn)行填充。將數(shù)據(jù)表中的成績填充到成績錄入頁面的代碼如下:
Private Sub fill_webpage()
Dim cjDoc, cjTag
Dim xh As String
Dim xhn As Integer
Set cjDoc = WebBrowser2.Document' 創(chuàng)建成績錄入頁文檔對(duì)象
For i = 0 To cjDoc.All.length - 1
If UCase(cjDoc.All(i).tagName) = \"INPUT\" Then' 檢測INPUT標(biāo)記
Set cjTag = cjDoc.All(i)' 創(chuàng)建標(biāo)記對(duì)象
If cjTag.Type = \"hidden\" And cjTag.Name = \"p_xh\" Then ' 定位學(xué)號(hào)隱藏域位置
xh = cjTag.Value' 獲取學(xué)號(hào)(10位)
xhn = CInt(Right(xh, 2))' 轉(zhuǎn)換為兩位整形學(xué)號(hào)
End If
'字符串變量Target_textbox用于存放網(wǎng)頁中待填充成績的文本框名稱,值為:\"p_sycj\"、\"p_pscj\"、\"p_qmcj\"或\"p_kscj\",用戶通過option控件數(shù)組選擇填充位置時(shí)進(jìn)行賦值。
If cjTag.Name = Target_textbox Then' 定位網(wǎng)頁中待填充的文本框
flg = False' 置填充標(biāo)志為為“假”
rs.MoveFirst ' 將記錄置于首條
Do While (Not rs.EOF)
If xhn = CInt(rs(\"學(xué)號(hào)\")) Then' 根據(jù)學(xué)號(hào),定位記錄
cjTag.Value = rs(\"成績\") '填充成績至Target_textbox指定
flg = True '的文本框中,填充標(biāo)志置“真”,
Exit Do '退出Do循環(huán)
End If
rs.MoveNext' 移動(dòng)至下一條記錄
Loop
If flg = False Then ' 向用戶提示未填充的相關(guān)信息,并將文本框清空
Msgbox \"學(xué)號(hào):\" xhn \"同學(xué)無可以輸入的成績。\" vbCrLf
cjTag.Value = \"\"
End If
End If
End If
Next I
End SUB
至此,客戶端的學(xué)生成績已填充至成績錄入頁面。對(duì)錄入成績核對(duì)后即可通過網(wǎng)頁中的按鈕進(jìn)行提交,或保存。
參考文獻(xiàn)
[1]清華大學(xué)本科生綜合教務(wù)管理系統(tǒng)介紹[EB/OL],http://www.cic.tsinghua.edu.cn/cicoa/~/~/1097205465990.doc
[2] Reusing the WebBrowser Control[EB/OL],msdn.microsoft.com/workshop/browser/webbrowser/webbrowser.asp
[3] 位元文化編著,CSS/HTML網(wǎng)頁設(shè)計(jì)[M],中國鐵道出版社,2002
[4] 許衛(wèi)林等編著,Visual Basic 程序設(shè)計(jì)[M],北京:電子工業(yè)出版社,1999:162~165
[5] 張宏編著,Visual Basic 5.0 簡明參考手冊[M],第一版,北京:電子工業(yè)出版社,1998
[6] Jeffrey P.McManus 著,趙軍鎖等譯,Visual Basic 6數(shù)據(jù)庫訪問技術(shù)[M],機(jī)械工業(yè)出版社,1999
Developing Client-side Program to Assist Submitting Score on Internet
Guo Jihu
Liberal Arts Sciences College, Shanxi Agriculture University,Taigu,Shanxi,030801
Abstract: In view of the shortcomings existing in score submitting system of Tsinghua Education Automation(THEA), in which the data only can be input manually, but can’t be imported from the existed data file, the client-side program with auto filling function is designed by using VB6.0 to assist submitting score on internet. In this paper, other important steps, such as logging in, loading local data resource, analyzing the HTML code as well as filling data in web page,are also discussed in detail with the VB program code.
Keywords: Score Management, Submitting Score on Internet, Auto Filling Forms