卓志
摘 要:傳統(tǒng)的考試模式,從出卷、打印、監(jiān)考、評(píng)分、試卷分析、成績(jī)統(tǒng)計(jì)等一系列操作過(guò)程都需要由人工完成,耗時(shí)長(zhǎng),過(guò)程繁瑣。本論文的主要內(nèi)容是設(shè)計(jì)一套網(wǎng)絡(luò)考試系統(tǒng),在服務(wù)器端,數(shù)據(jù)庫(kù)采用SQL2000,采用ASP語(yǔ)言實(shí)現(xiàn)用戶層設(shè)計(jì),在功能上,實(shí)現(xiàn)動(dòng)態(tài)生成試卷、自動(dòng)打分,以大幅提升辦公自動(dòng)化水平。
關(guān)鍵詞:網(wǎng)絡(luò)考試系統(tǒng);動(dòng)態(tài)生成;辦公自動(dòng)化
1 開(kāi)發(fā)環(huán)境及技術(shù)介紹
1.1 開(kāi)發(fā)環(huán)境配置
本考試系統(tǒng)的開(kāi)發(fā)環(huán)境如下:(1)信息服務(wù)器:Internet Information Service(IIS)。(2)開(kāi)發(fā)技術(shù):ASP技術(shù),Ajax技術(shù)。(3)開(kāi)發(fā)工具:Macromedia Dreamweaver 8、Adobe Photoshop CS。(4)數(shù)據(jù)庫(kù):SQL Server 2000。(5)瀏覽器:IE瀏覽器。(6)服務(wù)器操作系統(tǒng):開(kāi)發(fā)過(guò)程采用Windows XP Professional操作系統(tǒng)。
1.2 Browser/Server(瀏覽器/服務(wù)器)
B/S結(jié)構(gòu)采用了瀏覽器、Web服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器三層分布結(jié)構(gòu)。用戶的所有操作均通過(guò)瀏覽器進(jìn)行,并且對(duì)系統(tǒng)的改進(jìn)只需要在Web服務(wù)器上進(jìn)行相應(yīng)改動(dòng)即可。這種模式下,Web服務(wù)器是系統(tǒng)的核心,它負(fù)責(zé)接收并處理來(lái)自瀏覽器的數(shù)據(jù)請(qǐng)求,將數(shù)據(jù)請(qǐng)求通過(guò)數(shù)據(jù)庫(kù)接口程序轉(zhuǎn)換成數(shù)據(jù)庫(kù)服務(wù)器能夠接受的形式后,送到數(shù)據(jù)庫(kù)服務(wù)器。數(shù)據(jù)庫(kù)服務(wù)器負(fù)責(zé)執(zhí)行相應(yīng)的數(shù)據(jù)庫(kù)操作,并將結(jié)果通過(guò)轉(zhuǎn)換送回Web服務(wù)器。Web服務(wù)器將結(jié)果處理成瀏覽器能夠接受的形式后,送回發(fā)出請(qǐng)求的瀏覽器,顯示結(jié)果。
1.3 Ajax技術(shù)
Ajax是一個(gè)結(jié)合了Java技術(shù)、XML、以及JavaScript的Web開(kāi)發(fā)模式,可以構(gòu)建基于Java技術(shù)的Web應(yīng)用。Ajax技術(shù)可以僅向服務(wù)器發(fā)送并取回必需的數(shù)據(jù),它相當(dāng)于在客戶端和服務(wù)器之間加了一個(gè)中間層,即Ajax引擎。并不是所有的用戶請(qǐng)求都提交給服務(wù)器,一些數(shù)據(jù)的驗(yàn)證和處理由Ajax自己來(lái)做,只有確實(shí)需要從服務(wù)器讀取新數(shù)據(jù)時(shí),才由客戶端通過(guò)JavaScript調(diào)用Ajax引擎向服務(wù)器端發(fā)出Http請(qǐng)求,當(dāng)服務(wù)端的數(shù)據(jù)以XML形式返回時(shí),Ajax引擎接收數(shù)據(jù),并指定JavaScript函數(shù)來(lái)完成相應(yīng)的處理或頁(yè)面的更新,而不是刷新整個(gè)頁(yè)面,從而實(shí)現(xiàn)用戶操作與服務(wù)器響應(yīng)的異步化。
2 功能設(shè)計(jì)
2.1 登錄模塊
登錄模塊主要是保證系統(tǒng)的安全性,允許合法的用戶(管理員和考生)使用考試系統(tǒng)。在登錄界面按要求輸入用戶名和密碼,如果是合法用戶,則登錄成功進(jìn)入主界面;如果是非法用戶或密碼不正確,則返回錯(cuò)誤信息,返回登錄界面。
2.2 管理員模塊
管理員模塊主要功能是對(duì)系統(tǒng)用戶、權(quán)限進(jìn)行管理。此模塊可由用戶管理模塊和試題管理模塊組成。
2.2.1 用戶管理模塊:完成考試系統(tǒng)用戶的管理,包括添加/刪除用戶,修改用戶密碼等。
2.2.2 試題管理模塊:可按部門(mén)、課程、套題等不同的參數(shù)進(jìn)行添加、修改、刪除操作。
2.3 考生模塊
考生模塊的主要功能是實(shí)現(xiàn)學(xué)生在線考試、在線練習(xí)及成績(jī)查詢。此模塊由在線考試子模塊、在線練習(xí)子模塊和成績(jī)查詢模塊組成。
2.3.1 在線考試子模塊
此模塊主要負(fù)責(zé)學(xué)生從開(kāi)始考試到考試結(jié)束的全過(guò)程,其中包括在線練習(xí)、在線考試、考試計(jì)時(shí)、交卷保存等功能。其具體功能如下:(1)在線考試:在規(guī)定的時(shí)間內(nèi),選擇考試的課程,進(jìn)入考試??荚嚱Y(jié)束后,提交給服務(wù)器予以保存并評(píng)分。另外,在考試過(guò)程中系統(tǒng)會(huì)自動(dòng)定時(shí)對(duì)考生的答案進(jìn)行保存,以便于考試中斷以后能夠讓考生繼續(xù)考試。(2)考試計(jì)時(shí):當(dāng)學(xué)生開(kāi)始考試時(shí),計(jì)時(shí)器由預(yù)先設(shè)定的考試時(shí)間開(kāi)始倒計(jì)時(shí)。(3)保存試卷:當(dāng)學(xué)生按下“交卷”按鈕時(shí),系統(tǒng)保存試卷并對(duì)客觀題進(jìn)行自動(dòng)閱卷評(píng)分,對(duì)客觀題通過(guò)查找是否含有關(guān)鍵字,來(lái)決定是否有必要進(jìn)行人工閱卷的標(biāo)志存入數(shù)據(jù)庫(kù)中,并返回客觀題部分的得分。當(dāng)計(jì)時(shí)器顯示時(shí)間為零時(shí),系統(tǒng)強(qiáng)行交卷、保存試卷,并顯示考試完畢。
2.3.2 在線練習(xí)子模塊
(1)在線練習(xí):學(xué)生可以根據(jù)自己的需要選擇練習(xí)題的課程、類型、難度、章節(jié)、題目數(shù)等,由系統(tǒng)從試題庫(kù)中隨機(jī)抽取相應(yīng)的客觀題供學(xué)生練習(xí)。練習(xí)過(guò)程中可自動(dòng)計(jì)時(shí),但不限定時(shí),練習(xí)結(jié)果不予保存。(2)自動(dòng)評(píng)分:練習(xí)結(jié)束時(shí)系統(tǒng)可自動(dòng)評(píng)分,并顯示正確答案。
2.3.3 成績(jī)查詢子模塊
此模塊主要功能是供已登錄的用戶查詢成績(jī)。其具體功能如下:輸入用戶名和密碼,正確登錄后,可選擇查看所有人參加考試課程的成績(jī)。
2.4 SQL2000數(shù)據(jù)庫(kù)設(shè)計(jì)
在本課題中,為了獲得有效的數(shù)據(jù)庫(kù)設(shè)計(jì),應(yīng)遵循規(guī)范化規(guī)則,即:
2.4.1 使數(shù)據(jù)冗余(即重復(fù))最少。
2.4.2 使數(shù)據(jù)重構(gòu)或重建模最少。
2.4.3 通過(guò)減少事務(wù)處理大小使I/O最少。
3 關(guān)鍵算法實(shí)現(xiàn)
3.1 連接數(shù)據(jù)庫(kù)
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); //隨機(jī)組卷
for (int tID1 = 1; tID1 <= DataList1.Items.Count; tID1++) //生成單選題題號(hào)
{
Label lblSelect = (Label)DataList1.Items[tID1 -1].FindControl("Label2");
lblSelect.Text = tID1.ToString() + "、";
}
3.3 核對(duì)單選題答案
foreach (DataRow answer1 in row1)//利用foreach進(jìn)行遍歷
{
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;//計(jì)算單選題成績(jī)
}
this.lblSel.Text = "單選題:" + (int_row1Point) + "分";
Label lblAnswer1 = (Label)DataList1.Items[int_row1 - 1].FindControl("Label26");
lblAnswer1.Text = "正確答案:" + answer1["que_answer"].ToString();//顯示正確答案
}
3.4 將考試結(jié)果寫(xiě)入數(shù)據(jù)庫(kù)
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 + "')");
總結(jié)
本網(wǎng)絡(luò)考試平臺(tái)采用了ASP技術(shù)、Ajax頁(yè)面局部刷新技術(shù),實(shí)現(xiàn)了自動(dòng)組卷、自動(dòng)評(píng)分等一系列功能,并使用SQL2000作為系統(tǒng)數(shù)據(jù)庫(kù),實(shí)現(xiàn)了成績(jī)查詢、用戶搜索等功能,完成了設(shè)定的目標(biāo)功能,投入使用后,可大幅提升辦公自動(dòng)化水平。
參考文獻(xiàn)
[1]吳靜霞.基于ASP/ADO在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].沙洲職業(yè)工學(xué)院學(xué)報(bào),2008,11(1):1.
[2]謝駿.數(shù)值分析在線考試系統(tǒng).學(xué)士學(xué)位論文,西南石油大學(xué),2007:1-2.