图形化的成绩分析系统设计与实现
2014-11-17李如桃许乐清
李如桃 许乐清
摘 要:圖形化的成绩分析系统,试图采用PHP语言及JpGraph类库实现学生课业成绩在WEB页面中的图形化展示。将数据经过汇总分析,进行横向、纵向比对,以图表的表式简洁、直观、清晰地展现出来,为教学实施提供指导依据。研究PHP语言在行业数据发布与展示系统中的应用,JpGraph类库数据填图的技术实现。
关键词:PHP;JpGraph;图形;数据
引言
教师在教学实施中累积了大量的数据,反映了学生在每一阶段的学习状态,可作为形成性考核成绩的一部分。目前这些数据表现大都是离散的、滞后的,如何通过系统的分析,将数据以可视化的图表展现出来,简洁易懂、一目了然,为后续的教学实施提供参考。这是本论文研究的重点。
为了实现对教学过程数据的快速查询、汇总及图形化显示,设计开发了图形化的成绩分析系统。采用浏览器/ 服务器(B/S)模式,Apache+ PHP+MySQL框架。图形显示模块的实现,是利用基于PHP 语言的JpGraph类库进行数据填图,实现代码简单,大大缩短了软件代码开发过程。文章围绕JpGraph图像生成技术展开。
1 系统的设计方案
图形化的成绩分析系统的设计理念是将学生形成性考核中,每阶段的作业情况,与课程对应的岗位能力需求就行匹配,展示差距,明确后阶段学习的重点方向。考虑到各岗位对具体能力的不同需求,成绩不再是一个笼统的分数,而是根据能力细分为若干个指标。
如图1所示,柱状图表示学生需要达到的岗位最低要求,折线为学生现有水平,可以清晰地反映出,其中两项能力,同学们己经达到岗位要求,另外四项岗位能力,需要在后续课程中加强训练。
图1
图形化的展示模块是本系统开发的重点,主要设计以下几个类型图表:
(1)汇总数据分析图,反映学生平均水平与各岗位能力需求的对比。将所有考评成绩按考核指标求平均,与各岗位需求数值比较作图,对应不同的岗位,系统生成不同的图形。
(2)学情动态图,反映学生个体、整体的学业情况,各学习阶段成绩纵向比较。如:给定学生姓名和岗位能力,以图形显示其在这项指标上的进步情况。
(3)岗位匹配图,综合学生多次考核数据,与各岗位需求对比,以确定学生是否能胜任对应工作岗位。
2 JpGraph库介绍
JpGraph类库是基于PHP 语言编写的面向对象的图形类库,其绘图组件能根据用户的需求生成多种类型的图表,包括折线图、柱状图和饼状图等。图片可以在网页上直接显示,也可保存为多种格式的图片。首先从数据库中取得统计数据,定义标题、图表类型等,然后通过PHP 中的JpGraph类库, 便可在统计数据的基础上完成各类统计图。
JpGraph可在http://jpgraph.net网站下载,目前常用的版本是jpgraph-3.5.0b1.tar.gz。下载完JpGraph类库后解压缩至PHP存放类库的地方,为其文件夹命名为jpgraph,这样使用JpGraph时可以通过以下语句调用该库。
<?php
require_once('jpgraph/jpgraph.php');
?>
JpGraph是基于GD 库设计的,系统中一定要支持GD库。需要编辑php.ini配置文件,将“extension=php_gd2.dll”一行前面的分号去掉,确保启用GD扩展。
3 图形处理实现
在WEB 页面上创建和使用JpGraph图片的主要步骤为:
(1)创建脚本,获得数据。
(2)生成图片,指定图片如何构建、图形大小、颜色、字体以及要在图片上展示的其他内容。
(3)在Web页面上以img标签显示图像。
3.1 获取数据
为与一般办公软件兼容,成绩数据初始文件为excel电子表格,以csv格式保存,可通过本系统导入到mySQL数据库中,主要代码为:
<?php
mysql_query("LOAD DATA INFILE 'import.csv' INTO TABLE `score1` character set gbk FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;") or die ('Error: '.mysql_error ());
?>
上段代码中,character set gbk参数是关键,用于将csv编码格式与mySQL中表格编码格式相匹配,确保中英文字符的正确导入。
3.2 生成图片
以图1所示岗位达标图为例,以下为主要代码。生成的图片反映了学生平均水平与指定岗位之间的对比,图表由柱状图与折线图二部分组成,填图部分代码如下所示。
<?php
require_once ('..\jpgraph\src\jpgraph.php');
require_once ('..\jpgraph\src\jpgraph_bar.php');
require_once ('..\jpgraph\src\jpgraph_line.php');
//生成图表
$graph = new Graph(450,220,'auto');
$graph->SetScale("textlin");
$graph->yaxis->SetTickPositions(array(0,2,4,6,8,10,12,14,16,18,20), array(1,3,5,7,9,11,13,15,17,19));
$graph->SetBox(false);
$graph->ygrid->SetFill(false);
$graph->xaxis->SetTickLabels(array('layout','integrity','details','color','norm','innovation'));
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);
//创建柱状图
$b1plot = new BarPlot($datay);
$graph->Add($b1plot);
$b1plot->SetColor("white");
$b1plot->SetFillGradient("#4B0082","white",GRAD_LEFT_REFLECTION);
$b1plot->SetWidth(22);
//创建折线图
$p1 = new LinePlot($standardline);
$graph->Add($p1);
$p1->SetColor("#55bbdd");
$p1->mark->SetType(MARK_FILLEDCIRCLE,'',1.0);
$p1->mark->SetColor('#55bbdd');
$p1->mark->SetFillColor('#55bbdd');
$p1->SetCenter();
// 显示图片,生成图片文件。
$myfile = "picture-01.png";
if (file_exists($myfile)) {
$result=unlink ($myfile);
}
$graph->Stroke('picture-01.png');
?>
3.3 在Web页上显示图表
嵌入SQL语句,从数据库中读入成绩数据,并传递给填图文件,生成的图片在页面中显示。
<?php
require('connect.php');
//获取柱状图的数据,datay
$str_sql="select avg(layout),avg(integrity),avg(details),avg(color),avg(norm),avg(innovation) from score1";
$result=$conn->query($str_sql);
$datay=$result->fetch_row();
//獲取折线图的数据,standardline
$str_sql="select layout,integrity,details,color,norm,innovation from standard where worknamelike '%一类岗位%'";
$result=$conn->query($str_sql);
$standardline=$result->fetch_row();
//调用图表生成模块
require("picture.php" );
?>
4 结束语
本系统针对课业成绩数据的分析汇总,设计各类直观的图表格式。通过研究JpGraph在WAMP架构网站下的绘图模板及绘图函数调用,方便快捷地实现了折线图、柱状图、饼状图、雷达图等数据图形的自动生成。协助教师直观得了解学生的学习状态,把控教学进度;帮助学生了解各项知识技能的掌握情况,明确学习目标。系统具用一定的实用价值。
参考文献
[1]徐章韬.图表:构建知识网络的一种可视化工具[J].中国数学教育,2013.
[2]赵利平.使用PHP技术构造Web服务器日志分析软件[D].天津大学,2007.
[3]魏丹丹.论基于B/S结构的DAQ数据库信息查询与图形显示系统的研究与实现[D].郑州大学,2010.
[4]张金区.面向统计数据的三位一体可视化关联分析[J].计算机工程,2012.