林萬泉
摘 要:現在學校的電腦室基本上都組成了局域網,通過網絡平臺自己建立一個練習與考試的平臺,既方便于學生學習,也提高了學生對信息技術這門課的興趣。本文將詳細談談如何借助NET平臺平臺實現學生的無紙化練習和考試。
關鍵詞:算法;NET平臺;數據庫;Visual Basic;控件
中圖分類號:G63 文獻標識碼:A 文章編號:1673-9132(2016)26-0237-02
DOI:10.16657/j.cnki.issn1673-9132.2016.26.154
現在學校的電腦室基本上都組成了局域網,通過局域網可以讓學生平時練習和考試中實現自動化、無紙化。我校電腦室通過.NET平臺組成了一個簡單的無紙化練習、考試程序,現將具體流程表述出來,以期給其他學校提供一些借鑒。
一、 算法思路
我自行編寫的這個程序的設計思路是用B/S模式來實現的,首先把學生的習題放在數據庫中,每位學生練習或測試時使用隨機抽題方式。學生題庫的錄入與取出均用HTML來表示,因為HTML可以在B/S模式中實現圖文排版等富媒體形式。
在這程序中,數據庫是中心位置,是我們存放題目、查看學生成績的場所。數據庫表結構如下圖:
下面我僅以選擇題為例進行分析。
表km有兩個字段:kmid與km分別用來存放科目序號與科目名稱。
表kstable為選擇題,ksid為題目序號,kmid為該題目所對應學科,kstm為題目內容,sela-d為A、B、C、D四個選擇內容,answer為正確答案。如下圖所示:
而這程序中算法核心的是抽題的算法,我的算法是這樣實現的(以選擇題20題為例):
1.如果庫中題目不多于20題,則全部抽取。
2.如果庫中題目多于20題,則先算出庫中該科題目的記錄數,然后生成從1到記錄數的隨機20個數值,分配給20個數組。其算法表述如下:
先建立一個N(數據庫記錄個數)的數組,然后從0—(N-1)依次賦值,最后在數組里選,每選出一個,該數組后的依次前移一位,最后再在N-M(循環次數)個里選,這樣循環,直到選到你滿意的個數。
依據這一算法思想,我列其程序代碼如下:
如何讓錄入的數據以HTML格式保存呢?而Visual Studio 2008帶的Textbox控件顯然沒有所見即所得功能,在這我選用一款免費的.Net Framework控件——Free Textbox,它的下載網址:http://www.freetextbox.com。通過Free Textbox我們可以象用Front Page一樣輸入題庫。而對于Free Textbox控件輸入的內容的獲取與Textbox控件一樣,用text屬性獲取或給予。例如:
Dim kmstring as string
kmstring = freetextbox1.text
二、程序編寫
在微軟操作系統下,沒有什么比Visual Studio .net更適合于。Net編程的了,我使用Visual Basic 2008編寫。
1.界面編寫:
在Visual Studio 2008中綁定數據的控件中常用的有三種:GridView,DataList,Repeater。這三種數據控件各有優缺點。GridView功能強大,數據綁定簡單但自主性差,主要用于數據表格的顯示、編輯、刪除等操作。DataList用來混合顯示一些參雜的數據,如產品的圖文混合顯示等。Repeater功能最弱,但自主性很強,顯示的形式最為靈活,只要有數據集你想顯示成什么樣就顯示成什么樣,所以本例選用Repeater控件。由于題目是從數據庫中取出,而且題數不確定,因而我選用在代碼中手動添加控件及用<% %>數據綁定的方法來實現。
代碼如下:
題目:<%#DataBinder.Eval(Container.DataItem, "kstm")%> |
A:<%#DataBinder.Eval(Container.DataItem, "sela")%> |
B:<%#DataBinder.Eval(Container.DataItem, "selb")%> |
C:<%#DataBinder.Eval(Container.DataItem, "selc")%> |
D:<%#DataBinder.Eval(Container.DataItem, "seld")%> |
其界面如下圖:
2.編寫代碼:
分析好了需求,設計好算法與流程圖,又用編好ASP.NET界面,接下來就是編寫程序的代碼了,這樣才能讓這個WEB Form成為一個真正意義上的程序。程序最關鍵是在N個數中隨機抽取M個不重復的數,這一算法在前面已給出算法,這里不重復講述了,下面就是如何把題目從出數據庫出取出并顯示出來了。
代碼如下:
在教學中,通過.NET平臺編寫一個練習、考試用的軟件平臺,既可以讓學生多一個好的學習平臺,又在教學中加深了學生對這門課的學習興趣。當然,本人在文中還有許多不足之處,還請廣大同仁給予指正。
[責任編輯 趙景霞]