卓志
摘 要:傳統的考試模式,從出卷、打印、監考、評分、試卷分析、成績統計等一系列操作過程都需要由人工完成,耗時長,過程繁瑣。本論文的主要內容是設計一套網絡考試系統,在服務器端,數據庫采用SQL2000,采用ASP語言實現用戶層設計,在功能上,實現動態生成試卷、自動打分,以大幅提升辦公自動化水平。
關鍵詞:網絡考試系統;動態生成;辦公自動化
1 開發環境及技術介紹
1.1 開發環境配置
本考試系統的開發環境如下:(1)信息服務器:Internet Information Service(IIS)。(2)開發技術:ASP技術,Ajax技術。(3)開發工具:Macromedia Dreamweaver 8、Adobe Photoshop CS。(4)數據庫:SQL Server 2000。(5)瀏覽器:IE瀏覽器。(6)服務器操作系統:開發過程采用Windows XP Professional操作系統。
1.2 Browser/Server(瀏覽器/服務器)
B/S結構采用了瀏覽器、Web服務器、數據庫服務器三層分布結構。用戶的所有操作均通過瀏覽器進行,并且對系統的改進只需要在Web服務器上進行相應改動即可。這種模式下,Web服務器是系統的核心,它負責接收并處理來自瀏覽器的數據請求,將數據請求通過數據庫接口程序轉換成數據庫服務器能夠接受的形式后,送到數據庫服務器。數據庫服務器負責執行相應的數據庫操作,并將結果通過轉換送回Web服務器。Web服務器將結果處理成瀏覽器能夠接受的形式后,送回發出請求的瀏覽器,顯示結果。
1.3 Ajax技術
Ajax是一個結合了Java技術、XML、以及JavaScript的Web開發模式,可以構建基于Java技術的Web應用。Ajax技術可以僅向服務器發送并取回必需的數據,它相當于在客戶端和服務器之間加了一個中間層,即Ajax引擎。并不是所有的用戶請求都提交給服務器,一些數據的驗證和處理由Ajax自己來做,只有確實需要從服務器讀取新數據時,才由客戶端通過JavaScript調用Ajax引擎向服務器端發出Http請求,當服務端的數據以XML形式返回時,Ajax引擎接收數據,并指定JavaScript函數來完成相應的處理或頁面的更新,而不是刷新整個頁面,從而實現用戶操作與服務器響應的異步化。
2 功能設計
2.1 登錄模塊
登錄模塊主要是保證系統的安全性,允許合法的用戶(管理員和考生)使用考試系統。在登錄界面按要求輸入用戶名和密碼,如果是合法用戶,則登錄成功進入主界面;如果是非法用戶或密碼不正確,則返回錯誤信息,返回登錄界面。
2.2 管理員模塊
管理員模塊主要功能是對系統用戶、權限進行管理。此模塊可由用戶管理模塊和試題管理模塊組成。
2.2.1 用戶管理模塊:完成考試系統用戶的管理,包括添加/刪除用戶,修改用戶密碼等。
2.2.2 試題管理模塊:可按部門、課程、套題等不同的參數進行添加、修改、刪除操作。
2.3 考生模塊
考生模塊的主要功能是實現學生在線考試、在線練習及成績查詢。此模塊由在線考試子模塊、在線練習子模塊和成績查詢模塊組成。
2.3.1 在線考試子模塊
此模塊主要負責學生從開始考試到考試結束的全過程,其中包括在線練習、在線考試、考試計時、交卷保存等功能。其具體功能如下:(1)在線考試:在規定的時間內,選擇考試的課程,進入考試。考試結束后,提交給服務器予以保存并評分。另外,在考試過程中系統會自動定時對考生的答案進行保存,以便于考試中斷以后能夠讓考生繼續考試。(2)考試計時:當學生開始考試時,計時器由預先設定的考試時間開始倒計時。(3)保存試卷:當學生按下“交卷”按鈕時,系統保存試卷并對客觀題進行自動閱卷評分,對客觀題通過查找是否含有關鍵字,來決定是否有必要進行人工閱卷的標志存入數據庫中,并返回客觀題部分的得分。當計時器顯示時間為零時,系統強行交卷、保存試卷,并顯示考試完畢。
2.3.2 在線練習子模塊
(1)在線練習:學生可以根據自己的需要選擇練習題的課程、類型、難度、章節、題目數等,由系統從試題庫中隨機抽取相應的客觀題供學生練習。練習過程中可自動計時,但不限定時,練習結果不予保存。(2)自動評分:練習結束時系統可自動評分,并顯示正確答案。
2.3.3 成績查詢子模塊
此模塊主要功能是供已登錄的用戶查詢成績。其具體功能如下:輸入用戶名和密碼,正確登錄后,可選擇查看所有人參加考試課程的成績。
2.4 SQL2000數據庫設計
在本課題中,為了獲得有效的數據庫設計,應遵循規范化規則,即:
2.4.1 使數據冗余(即重復)最少。
2.4.2 使數據重構或重建模最少。
2.4.3 通過減少事務處理大小使I/O最少。
3 關鍵算法實現
3.1 連接數據庫
public SqlConnection getcon()
{
string strCon = "Data Source=(local);DataBase=db_Examination;User ID=sa;PWD=sa";
SqlConnection sqlCon = new SqlConnection(strCon);
return sqlCon;
}
3.2 生成單選題
SqlDataAdapter myadapter1 = new SqlDataAdapter("select top 60 * "
+"from tb_Questions where que_type='單選題'and que_lessonid='"
+ dd1 + "'and que_taotiid='" + dd2 + "'order by newid()", con); //隨機組卷
for (int tID1 = 1; tID1 <= DataList1.Items.Count; tID1++) //生成單選題題號
{
Label lblSelect = (Label)DataList1.Items[tID1 -1].FindControl("Label2");
lblSelect.Text = tID1.ToString() + "、";
}
3.3 核對單選題答案
foreach (DataRow answer1 in row1)//利用foreach進行遍歷
{
int_row1 += 1;
RadioButtonList rbl = (RadioButtonList)(DataList1.Items[int_row1 - 1].FindControl("RadioButtonList1"));
if (answer1["que_answer"].ToString().Trim() == rbl.SelectedValue.ToString().Trim())
{
int_row1Point += 60 / DataList1.Items.Count;//計算單選題成績
}
this.lblSel.Text = "單選題:" + (int_row1Point) + "分";
Label lblAnswer1 = (Label)DataList1.Items[int_row1 - 1].FindControl("Label26");
lblAnswer1.Text = "正確答案:" + answer1["que_answer"].ToString();//顯示正確答案
}
3.4 將考試結果寫入數據庫
dataconn.eccom("insert into tb_StuResult"
+"(stu_id,which_lesson,taotiid,taotiname,res_single,res_more)"
+"values('" + lblStuID.Text + "','" + lblSubject.Text + "','"
+ dd2 + "','" + lblQuestion.Text + "','" + int_row1Point + "','" + int_row2Point + "')");
總結
本網絡考試平臺采用了ASP技術、Ajax頁面局部刷新技術,實現了自動組卷、自動評分等一系列功能,并使用SQL2000作為系統數據庫,實現了成績查詢、用戶搜索等功能,完成了設定的目標功能,投入使用后,可大幅提升辦公自動化水平。
參考文獻
[1]吳靜霞.基于ASP/ADO在線考試系統的設計與實現[J].沙洲職業工學院學報,2008,11(1):1.
[2]謝駿.數值分析在線考試系統.學士學位論文,西南石油大學,2007:1-2.