|
《軟件報(bào)》 2007年3月26日 第13期
兩個(gè)Excel文件開發(fā)的網(wǎng)絡(luò)版開放式選擇題考試系統(tǒng) 在信息技術(shù)課中給學(xué)生做些選擇題的測驗(yàn),本人通過excel的VBA功能,兩個(gè)excel文件也能輕松實(shí)現(xiàn)自動(dòng)改卷和網(wǎng)絡(luò)交卷及自動(dòng)登記學(xué)生成績的功能,并且如更換選擇題后也只要更改答案及其他的一些簡單設(shè)置即可完成測驗(yàn)任務(wù)。 1、服務(wù)器端文件的準(zhǔn)備: 新建一個(gè)excel文件命名為server.xls,此文件主要用來登記學(xué)生的成績和學(xué)生的答案,學(xué)生的答案主要可以用來考后分析題目的正確率等。打開server.xls后第一行可寫上班級(jí)、學(xué)號(hào)、姓名、總分、題目1、題目2……。如圖1,為了能讓多個(gè)學(xué)生在提交總分和答案信息時(shí)都能打開這個(gè)文件,因此還要把這個(gè)文件設(shè)置為‘保護(hù)并共享工作簿’,具體在菜單‘工具’——‘保護(hù)’——‘保護(hù)并共享工作簿’中,還必須在‘以追蹤修訂方式共享’前打鉤,也可設(shè)置密碼保護(hù)。服務(wù)器端文件完成后,在服務(wù)器上建立一個(gè)kaoshi的文件夾,把server.xls文件放在這個(gè)文件夾里面,再設(shè)置kaoshi文件夾完全共享為kaoshi$。 2、學(xué)生端考試文件的準(zhǔn)備: 再新建一個(gè)excel文件命名為student.xls,把要考試的題目全部放在工作表sheet2中。在工作表sheet1上設(shè)計(jì)一張答題卷版面(如圖2),班級(jí)、學(xué)號(hào)、姓名由學(xué)生自己輸入,強(qiáng)調(diào)學(xué)號(hào)一欄必須輸入1~n的數(shù)字(寫入server.xls要用到)。除了答案和學(xué)生自己輸入信息的三個(gè)單元格可編輯之外其它都可以設(shè)置工作表密碼保護(hù)。 在工作表sheet1和sheet2中間可插入一個(gè)命名為set的工作表,主要用來存放標(biāo)準(zhǔn)答案和系統(tǒng)其他的一些設(shè)置(如圖3),這個(gè)工作表最后要設(shè)置隱藏和工作簿保護(hù)。題號(hào)和標(biāo)準(zhǔn)答案老師先設(shè)置好,而學(xué)生答案一欄引用sheet1上的學(xué)生做的答案,而每題分?jǐn)?shù)通過公式(=IF(B2=C2,F$2,0))來批改每個(gè)題目的得分情況,再由老師設(shè)置好‘總題目數(shù)’,‘每題分值’,‘服務(wù)器IP’,‘總分’一欄放每題分?jǐn)?shù)的求和,即在set工作表中就完成判分和計(jì)算總分工作。設(shè)置好后把set工作表隱藏,并設(shè)置‘工具’——‘保護(hù)’——‘保護(hù)工作簿’,‘結(jié)構(gòu)’前打鉤加密碼即可。 最后,在‘考試結(jié)束 提交答案’按鈕的內(nèi)部編程為: Private Sub CommandButton1_Click() a = MsgBox("你確定要交卷嗎?考生注意只能交一次!", 257, "提示對(duì)話框") If a = 1 Then Sheets("sheet1").Select ‘把班級(jí)、學(xué)號(hào)、姓名的值賦值給變量bj,xh,xm 。 bj = Sheets("sheet1").Range("g5").Value xh = Sheets("sheet1").Range("g6").Value xM = Sheets("sheet1").Range("g7").Value ‘定義數(shù)組answer( ),把set工作表中e2單元格的題目數(shù)賦值給變量tishu,再通過循環(huán)語句把學(xué)生的答案賦值給數(shù)組answer( )。 Dim answer(200) tishu = Sheets("set").Range("e2").Value For i = 1 To tishu answer(i) = Sheets("sheet1").Range("B" & (i + 1)).Value Next ‘把set工作表中的總分,服務(wù)器IP賦值給變量zongfen,ip。 zongfen = Sheets("set").Range("g2").Value tishu = Sheets("set").Range("e2").Value ip = Sheets("set").Range("h2").Value ‘把excel的運(yùn)行轉(zhuǎn)入后臺(tái),打開服務(wù)器上的共享文件server.xls。 Excel.Application.Visible = False Workbooks.Open Filename:="\\" & ip & "\kaoshi$\server.xls" Sheets("sheet1").Select ‘判斷server.xls工作表姓名列,學(xué)號(hào)+1欄有無數(shù)據(jù),若無即把個(gè)變量的值賦值給單元格。 If Sheets("Sheet1").Range("C" & (xh + 1)).Value = "" Then Sheets("Sheet1").Range("A" & (xh + 1)).Value = bj Sheets("Sheet1").Range("B" & (xh + 1)).Value = xh Sheets("Sheet1").Range("C" & (xh + 1)).Value = xM Sheets("Sheet1").Range("D" & (xh + 1)).Value = zongfen L = 5 For i = 1 To tishu Sheets("Sheet1").Cells((xh + 1), L) = answer(i) L = L + 1 Next ‘保存工作表server.xls并退出,把excel轉(zhuǎn)入前臺(tái),交卷按鈕設(shè)置為不能用 Workbooks("server.xls").Close savechanges:=True Excel.Application.Visible = True CommandButton1.Enabled = False Sheets("sheet1").Select MsgBox ("提交答案完成,點(diǎn)確定關(guān)閉該文件") Workbooks("student.xls").Close savechanges:=True Else MsgBox ("請(qǐng)檢查你自己輸入的學(xué)號(hào),并立即和老師聯(lián)系") Workbooks("server.xls").Close savechanges:=True Excel.Application.Visible = True End If End If End Sub 最后在考試時(shí),只要把student.xls文件通過網(wǎng)絡(luò)教室系統(tǒng)發(fā)給每個(gè)同學(xué)即可開始考試,一個(gè)班的成績?cè)诳荚嚱Y(jié)束后都在server.xls文件中,換另一個(gè)班級(jí)只要再換個(gè)server.xls即可。 注意事項(xiàng): 1)在set工作表中學(xué)生答案,每題分?jǐn)?shù),總分等這幾項(xiàng)數(shù)據(jù)引用及公式一定要準(zhǔn)確。 2)如遇到兩個(gè)學(xué)生輸入相同學(xué)號(hào)而引起交卷問題時(shí),老師可讓后交那個(gè)學(xué)生更改學(xué)號(hào)為其他同學(xué)沒有的號(hào)碼。 3)系統(tǒng)中設(shè)置學(xué)生交卷只能一次,也是為了防止學(xué)生用其他學(xué)號(hào)多次交卷產(chǎn)生問題。 |
|
|