呂秀芹
摘要:基于B/S的網(wǎng)絡(luò)化考試方式由于其組織方便、節(jié)省資源、公正性強(qiáng),受到各類大中專院校的青睞。為了對教學(xué)效果進(jìn)行評價(jià),同時(shí)也方便教師后期進(jìn)行教學(xué)調(diào)整,該文提出在ASP. NET中調(diào)用OWC組件,使用C#編程語言獲得在線考試系統(tǒng)考試班級的成績統(tǒng)計(jì)信息,并得到反饋式統(tǒng)計(jì)圖表的方法。
關(guān)鍵詞:C#;OWC;成績統(tǒng)計(jì);圖表繪制
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2012)15-3577-02
對于傳統(tǒng)的以紙、筆為主要工具的考試方式,教師常在考試結(jié)束后把考試班級的成績創(chuàng)建為EXCEL表格,同時(shí)借助于其強(qiáng)大的數(shù)據(jù)處理功能,得到考試班級的平均分、及格率、最高分、最低分等統(tǒng)計(jì)信息,并將不同分?jǐn)?shù)段的人數(shù)分布情況繪制成圖表,以便教師分析教學(xué)情況,進(jìn)行教學(xué)總結(jié)和教學(xué)調(diào)整。
由于EXCLE適用于處理單機(jī)的數(shù)據(jù),對于網(wǎng)絡(luò)化的考試方式,要得到數(shù)據(jù)的統(tǒng)計(jì)信息和圖表,網(wǎng)站開發(fā)人員可利用各種Ac tiveX控件實(shí)現(xiàn)圖表的頁面嵌入和排版,但它不能與數(shù)據(jù)庫進(jìn)行很好的交互,而且在客戶端需進(jìn)行復(fù)雜的設(shè)置。市場上也有不少用于ASP.NET環(huán)境下商業(yè)化的圖表繪制代碼庫,但大都價(jià)格昂貴,且界面和操作方法與人們熟悉的EXCEL相差甚遠(yuǎn)。OWC出現(xiàn)后,這項(xiàng)工作變得簡單易行,它可以方便地將交互式電子表格和圖表發(fā)布到Web頁面。
1 OWC組件
OWC即Office Web Components,是一個(gè)優(yōu)秀的服務(wù)器端圖表引擎,它是微軟公司針對WEB開發(fā)的隨Office提供的繪圖控件,具有與MS Excel同樣強(qiáng)大的圖表繪制能力。OWC具有豐富的數(shù)據(jù)表達(dá)能力,用于為多種控件容器提供交互式的電子數(shù)據(jù)表模型、數(shù)據(jù)庫報(bào)表與數(shù)據(jù)可視化服務(wù)[1]。它不僅能夠在WEB上發(fā)布交互式的電子數(shù)據(jù)表格,動(dòng)態(tài)生成EXCEL中幾乎所有類型的圖表,并且可以在客戶端通過IE對數(shù)據(jù)動(dòng)態(tài)地進(jìn)行排序、篩選、透視數(shù)據(jù)等操作,以滿足用戶的需求。
OWC主要包含電子數(shù)據(jù)表格、圖表、數(shù)據(jù)透視表和數(shù)據(jù)源等子控件[2]。前面所述對數(shù)據(jù)的排序、篩選等操作就是通過電子數(shù)據(jù)表格子控件實(shí)現(xiàn)的。圖表控件用于實(shí)現(xiàn)以GIF或JPEG格式向WEB頁中發(fā)布圖表的功能。數(shù)據(jù)源控件用于將其它組件綁定到一個(gè)數(shù)據(jù)源,在線考試系統(tǒng)的成績表為主要數(shù)據(jù)源。
OWC創(chuàng)建圖表主要運(yùn)用ChartSpace、ChChart、ChSeries這三個(gè)對象。ChartSpace是圖表空間,只有創(chuàng)建該對象才能存放圖表。ChChart是圖表對象,用來表示各種類型的圖表,一個(gè)圖表空間可以包括多個(gè)圖表對象。ChSeries是圖表系列,用來向圖表中添加多個(gè)系列。圖表對象中又包含了ChAxes、ChInteior、ChLengend、ChTitle、ChPlotAre等對象或集合,通過這些對象的相關(guān)方法和屬性可以設(shè)置坐標(biāo)軸、圖表內(nèi)部的格式、標(biāo)題欄及繪圖區(qū)格式等。
2成績統(tǒng)計(jì)功能的設(shè)計(jì)
根據(jù)常規(guī)的統(tǒng)計(jì)分析數(shù)據(jù)的需求,對于考試成績,每個(gè)班級需要統(tǒng)計(jì)的指標(biāo)有:最低分、最高分、平均分、總?cè)藬?shù)、各個(gè)分?jǐn)?shù)段人數(shù)的分布情況和各個(gè)分?jǐn)?shù)段人數(shù)占總?cè)藬?shù)的百分比。通常將分?jǐn)?shù)段分割為10段,分別是0-10分、11-20分、21-30分、31-40分、41-50分、51-60分、61-70分、71-80分、81-90分、91-100分,統(tǒng)計(jì)出每個(gè)分?jǐn)?shù)段的人數(shù)。為了對統(tǒng)計(jì)結(jié)果有一個(gè)形象直觀的認(rèn)識,便于教學(xué)管理部門對教學(xué)效果進(jìn)行評價(jià),常需要將統(tǒng)計(jì)結(jié)果生成柱形圖,可以方便地考察考試班級的成績正態(tài)分布情況。
對于使用ASP.NET平臺(tái)開發(fā)的網(wǎng)絡(luò)考試系統(tǒng),考試成績存放在服務(wù)器端的數(shù)據(jù)庫內(nèi),要想在客戶端得到考試班級的成績統(tǒng)計(jì)信息,是通過WEB頁動(dòng)態(tài)訪問數(shù)據(jù)庫實(shí)現(xiàn)的。WEB客戶端向服務(wù)器發(fā)送生成圖表的請求,服務(wù)器接收到請求后,使用ADO.NET技術(shù)與后臺(tái)數(shù)據(jù)庫建立鏈接并獲得相關(guān)的成績信息,調(diào)用OWC控件在WEB服務(wù)器上動(dòng)態(tài)創(chuàng)建GIF格式的圖表,服務(wù)器將圖表結(jié)果以純HTML流返回給客戶端,由客戶端瀏覽器解釋HTML的代碼和文本[3]。因此,客戶端瀏覽器只要能夠顯示GIF動(dòng)畫即可顯示統(tǒng)計(jì)圖表。
3基于OWC成績統(tǒng)計(jì)圖表的生成
3.1關(guān)鍵變量
考慮到系統(tǒng)維護(hù)、修改的方便性,設(shè)計(jì)時(shí)應(yīng)考慮減少源代碼的修改。系統(tǒng)在設(shè)計(jì)時(shí)引入一些變量,通過變量的值來改變參數(shù),減少閱讀、修改源代碼的過程,方便了系統(tǒng)的維護(hù)和功能擴(kuò)充。
1)圖表尺寸變量Width和Height。為了增加代碼的可讀性和修改的便捷性,系統(tǒng)設(shè)計(jì)時(shí)引入?yún)?shù)Width、Height分別表示圖表的寬和高。當(dāng)需要調(diào)整WEB頁面上的圖表尺寸時(shí),開發(fā)人員不需要修改源代碼內(nèi)的輸出文件中圖片大小的設(shè)置值,只需修改文本文件中Width、Height的賦值來修改圖表的尺寸。
2)圖表類型變量iType。由于不同的用戶會(huì)選擇不同的圖表類型,系統(tǒng)在WEB頁面上提供圖表類型下拉列表以方便用戶的需求。設(shè)計(jì)時(shí)引入變量iType,當(dāng)用戶在WEB頁選擇不同的圖形類型時(shí),實(shí)際就是調(diào)整文本文件中iType的賦值,而不需改變源代碼。根據(jù)成績統(tǒng)計(jì)的常規(guī)習(xí)慣,提供的圖表類型包括拆線圖、面積圖、條形圖和柱形圖,對應(yīng)的iType取值分別1、2、3、4。
3.2應(yīng)用實(shí)例
本文以我校舉辦的技能比賽“插花藝術(shù)”比賽項(xiàng)目考試成績?yōu)槔?,介紹其各分?jǐn)?shù)段人數(shù)分布柱形圖生成的過程。數(shù)據(jù)庫中以答卷表(answer_index)存放考生的成績信息,此表主要包括試卷編號(主鍵),考生編號,考試編號、考生得分、考試狀態(tài)、閱卷教師等字段。客戶端發(fā)出圖表請求后,通過查詢answer表生成臨時(shí)表mark,并將mark讀入數(shù)據(jù)源子控件內(nèi)用于生成圖表。mark表結(jié)構(gòu)如表1:
下面給出鏈接數(shù)據(jù)庫獲取數(shù)據(jù),以及添加系列生成圖表的部分代碼。本文所述的源代碼基于Microsoft SQL Server 2005關(guān)系型數(shù)庫,ASP. NET開發(fā)工具,Microsoft Office Web Components 11. 0,使用Visual Studio.net提供的C#語言進(jìn)行編程設(shè)計(jì)。代碼中所用的變量假設(shè)已經(jīng)定義。
第一部分:連接數(shù)據(jù)庫并獲取X、Y分類軸的信息
string strTuLi = "藝術(shù)插花教師";
SqlConnection sqlConn = new SqlConnection("Server=(localhost);DataBase=exam;User id=student;Pwd=111");
String strSql = "select分?jǐn)?shù)區(qū)間,人數(shù)FROM mark_indes";
sqlConn.Open();
SqlDataAdapter sqlDa = new SqlDataAdapter(strSql, sqlConn);
DataSet myds = new DataSet();
sqlDa.Fill(myds);
protected int Width,Height ,iType;
//分別定義寬度、高度、圖表類型三個(gè)參數(shù)便于修改;
string[] MarkSec = new string[10];//存放分?jǐn)?shù)區(qū)間
string[] MarkCount = new string[10];//存放各分?jǐn)?shù)段統(tǒng)計(jì)人數(shù)
for (int i = 0; i < myds.Tables[0].Rows.Count; i++)
{
MarkSec [i] = myds.Tables[0].Rows[i][0].ToString();
MarkCount [i] = myds.Tables[0].Rows[i][1].ToString();
}
第二部分:創(chuàng)建圖表(此處略去為x,y軸添加分類軸名稱和設(shè)置圖表格式的過程)
ChartSpace onSpace = new ChartSpaceClass();
ChChart InChart = onSpace.Charts.Add(0);
//指定繪制圖表的類型。這里iType=4表示柱形圖
InChart4.Type = ChartChartTypeEnum.chChartTypeColumnClustered;//柱形圖
InChart.HasLegend =true; //為圖表添加標(biāo)題
InChart.Title.Caption = "藝術(shù)插花教師試卷";//圖表標(biāo)題名稱
InChart.SeriesCollection.Add(0); //添加一個(gè)series系列
InChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, + (int)ChartSpecialDataSourcesEnum.chDataLiter?
al, strTuLi); //給定series系列的名字
InChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, + (int)ChartSpecialDataSourcesEnum.chDataLiteral,
Xdata); //給定分類
InChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, Yda?
ta); //給定值
InChart4. ExportPicture(Server.MapPath(".")+ "http://CJFBImage.gif","GIF",Width, Height); //輸出文件
此次考試成績結(jié)果統(tǒng)計(jì)結(jié)果如圖1所示。
4結(jié)束語
圖表能夠很好的反映數(shù)據(jù)之間的相對關(guān)系,對分析數(shù)據(jù)、挖掘數(shù)據(jù)的價(jià)值非常有利。目前,很多院校適應(yīng)教育發(fā)展的需求,正在嘗試以無紙化的在線考試系統(tǒng)代替?zhèn)鹘y(tǒng)考試。本文通過使用OWC組件將服務(wù)器上的成績數(shù)據(jù)信息以圖表的形式呈現(xiàn)出來并反饋到客戶端,對于分析考試結(jié)果,對考試結(jié)果作出正確評價(jià)非常有效。同時(shí)完善了考試系統(tǒng)的功能,簡化了考試后的資料整理工作。
參考文獻(xiàn):
[1]丁博劍,楊昆.OWC系列控件的圖形化開發(fā)與應(yīng)用[J].計(jì)算機(jī)時(shí)代,2011(1).
[2]張成才.基于OWC的動(dòng)態(tài)圖表設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009(10).
[3]李明.山東中醫(yī)藥大學(xué)題庫考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].濟(jì)南:山東大學(xué),2008:39-49.
[4]林永興,許小燕.一種基于OWC在WEB頁動(dòng)態(tài)繪制圖表的方法[J].計(jì)算機(jī)與現(xiàn)代化,2010(1).