吕秀芹
摘要:基于B/S的网络化考试方式由于其组织方便、节省资源、公正性强,受到各类大中专院校的青睐。为了对教学效果进行评价,同时也方便教师后期进行教学调整,该文提出在ASP. NET中调用OWC组件,使用C#编程语言获得在线考试系统考试班级的成绩统计信息,并得到反馈式统计图表的方法。
关键词:C#;OWC;成绩统计;图表绘制
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)15-3577-02
对于传统的以纸、笔为主要工具的考试方式,教师常在考试结束后把考试班级的成绩创建为EXCEL表格,同时借助于其强大的数据处理功能,得到考试班级的平均分、及格率、最高分、最低分等统计信息,并将不同分数段的人数分布情况绘制成图表,以便教师分析教学情况,进行教学总结和教学调整。
由于EXCLE适用于处理单机的数据,对于网络化的考试方式,要得到数据的统计信息和图表,网站开发人员可利用各种Ac tiveX控件实现图表的页面嵌入和排版,但它不能与数据库进行很好的交互,而且在客户端需进行复杂的设置。市场上也有不少用于ASP.NET环境下商业化的图表绘制代码库,但大都价格昂贵,且界面和操作方法与人们熟悉的EXCEL相差甚远。OWC出现后,这项工作变得简单易行,它可以方便地将交互式电子表格和图表发布到Web页面。
1 OWC组件
OWC即Office Web Components,是一个优秀的服务器端图表引擎,它是微软公司针对WEB开发的随Office提供的绘图控件,具有与MS Excel同样强大的图表绘制能力。OWC具有丰富的数据表达能力,用于为多种控件容器提供交互式的电子数据表模型、数据库报表与数据可视化服务[1]。它不仅能够在WEB上发布交互式的电子数据表格,动态生成EXCEL中几乎所有类型的图表,并且可以在客户端通过IE对数据动态地进行排序、筛选、透视数据等操作,以满足用户的需求。
OWC主要包含电子数据表格、图表、数据透视表和数据源等子控件[2]。前面所述对数据的排序、筛选等操作就是通过电子数据表格子控件实现的。图表控件用于实现以GIF或JPEG格式向WEB页中发布图表的功能。数据源控件用于将其它组件绑定到一个数据源,在线考试系统的成绩表为主要数据源。
OWC创建图表主要运用ChartSpace、ChChart、ChSeries这三个对象。ChartSpace是图表空间,只有创建该对象才能存放图表。ChChart是图表对象,用来表示各种类型的图表,一个图表空间可以包括多个图表对象。ChSeries是图表系列,用来向图表中添加多个系列。图表对象中又包含了ChAxes、ChInteior、ChLengend、ChTitle、ChPlotAre等对象或集合,通过这些对象的相关方法和属性可以设置坐标轴、图表内部的格式、标题栏及绘图区格式等。
2成绩统计功能的设计
根据常规的统计分析数据的需求,对于考试成绩,每个班级需要统计的指标有:最低分、最高分、平均分、总人数、各个分数段人数的分布情况和各个分数段人数占总人数的百分比。通常将分数段分割为10段,分别是0-10分、11-20分、21-30分、31-40分、41-50分、51-60分、61-70分、71-80分、81-90分、91-100分,统计出每个分数段的人数。为了对统计结果有一个形象直观的认识,便于教学管理部门对教学效果进行评价,常需要将统计结果生成柱形图,可以方便地考察考试班级的成绩正态分布情况。
对于使用ASP.NET平台开发的网络考试系统,考试成绩存放在服务器端的数据库内,要想在客户端得到考试班级的成绩统计信息,是通过WEB页动态访问数据库实现的。WEB客户端向服务器发送生成图表的请求,服务器接收到请求后,使用ADO.NET技术与后台数据库建立链接并获得相关的成绩信息,调用OWC控件在WEB服务器上动态创建GIF格式的图表,服务器将图表结果以纯HTML流返回给客户端,由客户端浏览器解释HTML的代码和文本[3]。因此,客户端浏览器只要能够显示GIF动画即可显示统计图表。
3基于OWC成绩统计图表的生成
3.1关键变量
考虑到系统维护、修改的方便性,设计时应考虑减少源代码的修改。系统在设计时引入一些变量,通过变量的值来改变参数,减少阅读、修改源代码的过程,方便了系统的维护和功能扩充。
1)图表尺寸变量Width和Height。为了增加代码的可读性和修改的便捷性,系统设计时引入参数Width、Height分别表示图表的宽和高。当需要调整WEB页面上的图表尺寸时,开发人员不需要修改源代码内的输出文件中图片大小的设置值,只需修改文本文件中Width、Height的赋值来修改图表的尺寸。
2)图表类型变量iType。由于不同的用户会选择不同的图表类型,系统在WEB页面上提供图表类型下拉列表以方便用户的需求。设计时引入变量iType,当用户在WEB页选择不同的图形类型时,实际就是调整文本文件中iType的赋值,而不需改变源代码。根据成绩统计的常规习惯,提供的图表类型包括拆线图、面积图、条形图和柱形图,对应的iType取值分别1、2、3、4。
3.2应用实例
本文以我校举办的技能比赛“插花艺术”比赛项目考试成绩为例,介绍其各分数段人数分布柱形图生成的过程。数据库中以答卷表(answer_index)存放考生的成绩信息,此表主要包括试卷编号(主键),考生编号,考试编号、考生得分、考试状态、阅卷教师等字段。客户端发出图表请求后,通过查询answer表生成临时表mark,并将mark读入数据源子控件內用于生成图表。mark表结构如表1:
下面给出链接数据库获取数据,以及添加系列生成图表的部分代码。本文所述的源代码基于Microsoft SQL Server 2005关系型数库,ASP. NET开发工具,Microsoft Office Web Components 11. 0,使用Visual Studio.net提供的C#语言进行编程设计。代码中所用的变量假设已经定义。
第一部分:连接数据库并获取X、Y分类轴的信息
string strTuLi = "艺术插花教师";
SqlConnection sqlConn = new SqlConnection("Server=(localhost);DataBase=exam;User id=student;Pwd=111");
String strSql = "select分数区间,人数FROM mark_indes";
sqlConn.Open();
SqlDataAdapter sqlDa = new SqlDataAdapter(strSql, sqlConn);
DataSet myds = new DataSet();
sqlDa.Fill(myds);
protected int Width,Height ,iType;
//分别定义宽度、高度、图表类型三个参数便于修改;
string[] MarkSec = new string[10];//存放分数区间
string[] MarkCount = new string[10];//存放各分数段统计人数
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();
}
第二部分:创建图表(此处略去为x,y轴添加分类轴名称和设置图表格式的过程)
ChartSpace onSpace = new ChartSpaceClass();
ChChart InChart = onSpace.Charts.Add(0);
//指定绘制图表的类型。这里iType=4表示柱形图
InChart4.Type = ChartChartTypeEnum.chChartTypeColumnClustered;//柱形图
InChart.HasLegend =true; //为图表添加标题
InChart.Title.Caption = "艺术插花教师试卷";//图表标题名称
InChart.SeriesCollection.Add(0); //添加一个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(".")+ "//CJFBImage.gif","GIF",Width, Height); //输出文件
此次考试成绩结果统计结果如图1所示。
4結束语
图表能够很好的反映数据之间的相对关系,对分析数据、挖掘数据的价值非常有利。目前,很多院校适应教育发展的需求,正在尝试以无纸化的在线考试系统代替传统考试。本文通过使用OWC组件将服务器上的成绩数据信息以图表的形式呈现出来并反馈到客户端,对于分析考试结果,对考试结果作出正确评价非常有效。同时完善了考试系统的功能,简化了考试后的资料整理工作。
参考文献:
[1]丁博剑,杨昆.OWC系列控件的图形化开发与应用[J].计算机时代,2011(1).
[2]张成才.基于OWC的动态图表设计与实现[J].计算机技术与发展,2009(10).
[3]李明.山东中医药大学题库考试系统的设计与实现[D].济南:山东大学,2008:39-49.
[4]林永兴,许小燕.一种基于OWC在WEB页动态绘制图表的方法[J].计算机与现代化,2010(1).