論文導讀::本文主要采用基于WEB的動態(tài)網(wǎng)頁的制作技術,針對我校成績管理軟件功能上存在的缺陷,在減少軟件再次開發(fā)的投入、提高辦事效率、方便學生查詢等原則的指導下,根據(jù)本人研究方向,對原有我校的《宿遷電大大中專成績處理軟件》最終產(chǎn)生的原始成績數(shù)據(jù)通過ASP開發(fā)環(huán)境實現(xiàn)了網(wǎng)上的在線查詢功能。
關鍵詞:原始數(shù)據(jù),在線成績查詢,WEB,ASP,ODBC數(shù)據(jù)源
一、問題的產(chǎn)生:
作者所在的學校是一所具有本、專科教育與中專教育并舉、全日制教育與開放教育、遠程教育(奧鵬學習中心)協(xié)調(diào)發(fā)展的多層次辦學的地方高等學校;下轄三所縣級電大,在校生總數(shù)達1萬多人。在教務學籍管理中比較煩瑣但又非常重要的一個環(huán)節(jié)便是每學期的期末考試成績處理了。在歷年操作過程中,由于都是手工作業(yè),因此出現(xiàn)了諸如抄錯、算錯、漏算、人情分、統(tǒng)計不準確等各種問題。
為了提高教務處的工作效率,減少錯誤和因錯誤帶來的不必要的麻煩,我校于2002年組織一批教師自主開發(fā)了學生成績處理軟件ODBC數(shù)據(jù)源,所使用主要工具為VFP發(fā)表論文。它主要針對我校不同的辦學層次和課程不同的評價標準進行最后的成績處理,本軟件具體功能有學生花名冊生成、所開課程庫的生成、錄分、合算、打印輸出成績單等,成績單一式三份,一份報省校備案、一份留市校,一份下發(fā)給縣;虬嘀魅。在實際使用過程中,確實提高了教務處工作的效率,同時也減少了一些人為的錯誤。但隨著我校辦學模式主體的轉移以及學生對于獲取信息途徑的改變,由原來的到班主任處查成績到迫切希望在網(wǎng)上查成績,很顯然,原有的軟件根本不可能滿足要求。
二、分析問題:
針對以上問題的出現(xiàn),本人采用目前比較流行的軟件開發(fā)模式---B/S模式,借助ASP+ACCESS
開發(fā)技術實現(xiàn)這一功能。
原有軟件最終產(chǎn)生的是一個數(shù)據(jù)庫文件--成績.dbc,其中有幾個主要的數(shù)據(jù)表如下:
表名 |
含義 |
User |
記錄用戶信息表 |
Init |
記錄年度學期表 |
Course |
記錄所開課程信息表 |
Sele_course |
記錄所選開課程信息表 |
class_x(其中X代表不同班組編號) |
記錄不同班級成績庫 |
原有軟件的內(nèi)部執(zhí)行流程是這樣的:
將本學期所開課程全部錄入course表中;
創(chuàng)建所有班級ODBC數(shù)據(jù)源,其中包括學號、姓名、所開課程;這里尤其要說明的一點是,[所開課程]字段均為代號,和course表中產(chǎn)生的課程代號相同,這樣就給后面的成績查詢帶來一定的困難;
錄入學員花名冊并開始錄分;
進行成績合算并打印報表上報省校、備案和下發(fā)到班主任。
而目前我們需要做的就是在原有軟件的基礎上,將其產(chǎn)生的成績數(shù)據(jù)庫文件發(fā)布到網(wǎng)上,讓學員只需簡單的選擇和錄入姓名、學號提交后便可在線生成某位學員的成績單。
實現(xiàn)后最終的頁面如下兩幅圖所示:
![]() |
![]() |
||
圖1 考生選擇年度后的界面圖2 學員錄入學號提交后的界面
三、問題的具體解決方法:
本軟件具體的操作以及軟件運行流程:
針對以上的操作運行流程來看,第①、③、④、⑥四個功能模塊實現(xiàn)起來比較簡單,頁面上顯示的數(shù)據(jù)來源不是很復雜,只有功能模塊②和⑤實現(xiàn)起來比較復雜,其間涉及到代號與實名的轉換問題。
由于在原成績處理軟件的開發(fā)過程中,最終產(chǎn)生的關系表中所使用的字段均是代號,比如在00計算機(五年制)班級表中字段關系:
class_0501(XH C(12),XM C(8)ODBC數(shù)據(jù)源,A01N(5,1),B22 N(5,1),F(xiàn)23 N(5,1))
如不加以轉換而直接輸出到瀏覽器中,相信誰也不知道是代表什么意思,由于每個班級所對應的字段均不一樣(因為所開課程是不盡統(tǒng)一的),這就要求進行靈活轉換,而且具有一定的通用性發(fā)表論文。
轉換思想:首先將所選班級的代表課程的相關字段放入一數(shù)組中,然后將其與課程表對應的課程代號進行比較,將找到相對應的課程名稱再放入相對應的數(shù)據(jù)中,即可實現(xiàn)課程代號與相對應課程名稱的轉換。
在進行調(diào)試運行此軟件時,必須要事先進行ODBC的數(shù)據(jù)源配置,在這里就不詳細介紹,我這里配置了一個數(shù)據(jù)源名稱為“成績”,它對應的數(shù)據(jù)庫即為前面提到的” 成績.dbc”數(shù)據(jù)庫文件。
關鍵性的代碼摘錄如下(一些相關的HTML標識符均被去掉)ODBC數(shù)據(jù)源,并有相應的注釋:
主程序chafen.asp:
<formaction="chfen_2.asp" method="post"name="form1">
<%dim db
setdb=Server.Createobject("ADODB.Connection")
db.Open"成績"
setrs=db.Execute("select * from bjk ")
'以下顯示所有班級數(shù)據(jù)庫的內(nèi)容即班級名稱
%>
<SELECTsize=6 name="班級名稱">
<%dowhile not rs.eof %>
<OPTION ><%=rs("bjmc")%></OPTION>
<%rs.movenext
loop
%>
</SELECT>
<hr><font size=3 >第二步:請輸入你的姓名或學號</font> <br><br>
姓名(或學號):<inputtype=text name="xh"> <br><br>
<input type="submit" value=" 查詢成績 "name=submit1>
<input type="reset" value=" 重新查詢 " name=submit2>
</form>
子程序chafen_2.asp:
<% dim xh
xh=request("xh")
if xh="" then
Response.Write("對不起,姓名或學號不能為空")
Response.End
end if
dimdb
setdb=Server.Createobject("ADODB.Connection")
db.Open"成績"
dimrs
setrs=db.Execute("select * from bjk ")
'以下顯示數(shù)據(jù)庫記錄
'將所選中的班級名稱存入變量bjname中,以備后面使用
dim bjname
bjname=request("班級名稱")
if bjname="" then
Response.Write ("你沒有選擇所在的班級!")
Response.End
end if
%>
<formaction="" method="post" name="form2">
<%dim rs1,strsql,rs2,strsql2,temp,fcount
'查找滿足所選課程名稱的記錄并將該班級的課程庫存入變量temp中
strsql="selectbjk from bjk where bjmc=" & "'" & bjname&"'"
set rs1=db.Execute(strsql)
temp=rs1("bjk")
'將所選班級對應的庫打開并將所有記錄集放入對象rs2中,并將字段總數(shù)放入變量fcount中
strsql2="select * from " & temp & "where 姓名='" & xh& "'" & "or 學號='"& xh & "'"
setrs2=db.Execute(strsql2)
ifrs2.eof and rs2.bof then
Response.Write("不存在此考生,請與我們聯(lián)系:4369677(教務處)")
Response.End
end if
fcount=rs2.fields.count
dim k,h,arr(12)
'將所有成績的課程代號送入數(shù)組arr中
for k=1 to (fcount-2)/2
arr(k)=rs2(k+1).name
next
dim strsql3,rs3,a,b(12)
for a=1to (fcount-2)/2
strsql3="select kcmc from 課程 where kcdm='" & Lcase(arr(a)) &"'"
set rs3=db.Execute(strsql3)
if not rs3.eof then
b(a)=rs3("kcmc")
endif
next%>
<tableborder="1" width="100%">
<tr>
<td>學號</td>
<td>姓名</td>
<%'將所有字段顯示在表格中
for h=1 to (fcount-2)/2+2
%>
<td><%=b(h)%></td>
<%next%>
</tr>
<%dim j,ss
do while not rs2.eof%>
<tr>
<%for j=0 to (fcount-2)/2+1
if j>1 then
‘如果成績不及格,用紅色表示
ifcint(rs2.fields(j))<60 then %>
<td><fontcolor=#ff44ff><b><%=rs2.fields(j)%>
</b></font></td>
<%else%>
<td ><%=rs2.fields(j)%></td>
<%end if %>
<%else%>
<td ><%=rs2.fields(j)%></td>
<%endif %>
<%next %>
<%rs2.movenext
loop%>
</tr>
</table>
</form>
四、結束語:
本文是一篇應用型文章,通過對一個軟件平臺的長升遷及功能上的擴展,詳細講解了如何通過ASP+ACCESS技術來開發(fā)基于WEB的動態(tài)網(wǎng)頁的制作過程,對于軟件開發(fā)的初學者有一定的借鑒之處。當然,在具體的分析和實現(xiàn)過程中,可能有些不當或是不夠精簡之處,敬請各位專家和同行批評指正。
【參考資料】
1.尚俊杰,網(wǎng)絡程序設計-ASP(第二版)[M],北方交通大學出版社,2004.2
2.陳孟建,沈美莉等,ASP技術與動態(tài)網(wǎng)頁設計[M],清華大學出版社,2007.3
3.劉瑞新等,Visual Basic程序設計教程(第3版)[M],電子工業(yè)出版社,2010.7
4.李存斌,樊建平,ASP高級編程及其項目應用開發(fā)[M],中國水利水電出版社,2003.4
5.張鈺彥,朱海華等,網(wǎng)站編程手冊(服務器端)[M],中國水利水電出版社,2001.6
6.張峰,淺談基于WEB的交互式網(wǎng)頁的制作過程[J],湖南醫(yī)科大學學報(社會科學版),2003年第3期
7.張紅榮,淺談基于WEB應用軟件開發(fā)的制作過程[J],電氣電子教學學報,2004年第5期