多功能数据分析器的开发

  • 格式:pdf
  • 大小:180.68 KB
  • 文档页数:4

章丹阳 樊文有 (中国地质大学(武汉)信息工程学院,湖北武汉430074) 

摘要:此次开发的多功能数据分析器,共实现了二种数据分析功能。分别是:①4 ̄lnternet表中数字型数据还原成文本 数据,并进行简单的统计分析;②实现了均值法处理丢失数据。此外,本文还包括了利用sAs系统模拟均值法、回归分析 法和sD方法处理丢失数据的一些总结。 关键词:界面设计;数据转换;丢失数据;时间序列预测 

Multi-purpose Data Analyzer’S Development ZHANG Dan-yang,FAN wen-you (Faculty of Information Engineering,China University of Geosciences,430074) Abstract:This development multi.purpose data analyzer,Altogether has realized two kind of data analysis function.Respectively is:@the Internet table in the digital type number according to the reduction text data,and carries on the simple statistical analysis.②has realized the averaging methoc processing obliterated data.In addition,this article also included has used the SAS system simulation averaging methoc,the return analytic method and S D method processing 

obliterated data some summaries. Keywords:contact surface design;data conversion;processing obliterated data;time series prediction 

l 公共模块 1.1功能介绍 公共模块主要包括一些公共的form。 OisplayTables:继承Form类,包括一个DataGrid,用 于所有表格的显示。其他模块均可引用。每展示一个表 格,则生成一个OisplayTables实例。 

ExplainForm:继承Form类,包括一个ListBox,用于 解释表格内容。主要应用于数据转换模块,生成两个实 例,一个用于展示统计信息,另一个用于跟踪点击的 DisplayTables单元格。 

HelpForm:继承Form类,用于显示版本信息。 BingDia:继承Form类,主要用于显示饼图(最多可显 示12种不同分类信息)。重写了OnPaint方法绘制饼图。在 点击DisplayTables的单元格响应事件中,通过Internet类 (详见数据转换模块)中的方法调用该对象的Refresh0方 法,重绘饼图。 

TimeForm:继承Form类,主要应用于时间序列模块。 提供一个checkedListBox用以选择需要预测的列。 

1.2程序实现 

此公共模块编写时,最大的问题在于,两个类实例之 间的通信问题。即,在转换数据处理时,点击 OisplayTables中的单元格,在ExplainForm的实例中,相 应的条目高亮显示,并且BingDia实例中饼图变化。经过多 次尝试,在Internet类(一个包含所有处理数据转换方法 的类,详见数据转换模块)中的selectInfo方法采用了如 下方式传参: 

P u b l i c v 0 i d S e l e c t I n f 0( System.Windows.Forms.DataGrid.HitTeStInfo hti。 S Y S t e m.W i n d 0 w S.F 0 r m s.L i S t B 0 x l b. System.Windows.Forms.DataGrid dg,BingDia bing) 

在调用的时,在Oi SPla YTa bl e s的M 0u Se O0Wn 响应函数中传入D i S P l a Y T a b l e s中的 System.Windows.Forms.DataGrid.HitTestInfo hti:和 ExplainForm中的listBox。在确定要高亮显示的位置P后, 直接设置listBox的items[p]的selected属性为trueUP可。 

还有一点就是饼图的绘制。笔者开发了一个通用类。 此类可以画出l2种分类以内的饼图。并且还可以移植到其 他类似程序中去。在这个类的OnPaint(PaintEventArgs e )方法中,由于两个需要的参数分类名称和各类所占的总数 是按照两个string型变量储存的,类与类之间用逗号隔 

收穑日期:2008-04-24修回日期:2008—05—18 作者简介:章丹阳(1981一),男,浙江温州人.硕士,研究方向为地理信息系统.搜索引擎技术、计算机网络应用。 

01 

维普资讯 http://www.cqvip.com 中目西部科技 2008年5月(下旬)第O7卷第15期总第140期 开,此方法包括两个循环,用来处理被逗号分开了的字符 串。处理分类名称循环如下: 

while(start(1egend.Length) { end=legend.IndexOf(’,’) tempValue。 end): 

legendarray[1egendindex] 

legend= legend.Length—end) 

1egendindex++; } 方法中还定义了一个Brush类型的一维数组,用来储存 l2种不同的颜色。定义如下:Brush[]colorarry=new Brush[】2]。 

在循环中,用Fil1Pie方法充填扇形区域,在饼图的右 边,用Fi11Rectangle和DrawString方法来绘制说明图例和 说明文字。最后,一个循环,调用l2种比刷的Dispose0方 法,释放资源。 

public abstract DataSet connectDataBase(string sq1)://查询时使用,返回dataset。 

public abstract DataTable 1istAl1Tables 0;//刚 连接时,返回SQL SERVER数据中所有表,返回access和 excel中所有表的情况,返回datatable。 

编写两个实体类继承抽象类ConnectData。其中, SqlConnect专门负责处理连接SQL SERVER数据库的事务。 OleDbConnect用来负责处理连接SQL SERVER以外的所有数 据库处理事务。由于设计者采用sq1connection连接SQL SERVER数据库,使用OleDbConnection连接其他数据库,使 得这种设计方案成为可能。两个类中,都重载了抽象类中 的三个方法。 3 数据转化模块 3.1 Internet数字型数据还原成文本数据 3.1.1功能描述 单击数字型数据表格(在本程序中为 internet—data.xls表)中的任一单元格,获得文本数据表 

格(本程序中为Variablename.xls表)中对应的每列中不 同数据的文本解释。 

该模块实现了从所选择的单元格中,获取相应的文字 信息,让客户能明确直接地了解信息的功能。 

2 数据引入模块 3.1.2程序实现 2.1功能描述 严格来说,数据引入模块,也应该属于公共模块的范 畴,因为,它可以被其他几个数据处理模块共同引用。但 是,因为此模块比较大,代码结构比其他公共模块的成员 复杂,故将之独立出来作为单独的一个模块来开发。 

功能主要包括选择数据库种类,以下以SQL SERVER为 例说明流程。输入服务器名,如果有,还要输入用户名和 密码。读出所有可用的数据库(如果是ACCESS等,则用户 通过OpenFileDialog选择要打开的数据库),选择数据 库,显示所有表格,选择表格,确定,此表格被引入,数 据引入窗体自动关闭。 

2.2程序实现 本次开发的多功能数据处理器共可以连接ACCESS、 EXCEL、SQL SERVER--种数据库。实际上开发的数据引入模 块,还可以连接ORACLE数据库。在上次开发数据聚类分析 系统的第二个版本时,设计者就已经采用了这种设计方 案。即:编写了一个抽象类ConnectData,成员包括字符串 分别为:服务器名server、用户名user、密码password、 数据库名dbName、数据库种类dbType;一个int型变量 connectType用来表示是标准连接,还是信任模式连接。方 法包括一些public类型的set料木方法和三个抽象方法分别 为:public abstract string strCreate0://生成连接 语句。 

02 

本程序采用了一个字符型数组myList[]来存储文本数 据表格Variablename.xls中每列的文本数据。这样能够使 用循环语句在ListBox中输出文本数据结果,程序显得简洁 明了,同时输出结果更直观些。另外,附加了一个文本输 出属性设定: 

this.1 istBox1.ForeColor=Color.Blue,使文本输出 呈现兰色,美观些。 

因为触发事件是用鼠标单击internet—data.xls表中的 单元格,所以程序首先要做的就是要捕获MouseDown事件来 获取单元格的相关信息。程序的具体实现方法是在 MouseDown处理程序中调用HitTest方法。HitTest方法 返回包含所单击区域的行和列的DataGrid.HitTestInfo 对象。其中,hti.Row获得单击单元格的行索引值, hti.ColumnNU是所单击单元格的列索引值,是Internet数 字型数据还原成文本数据的关键参数。 

主要处理事件代码如下:DataGrid tableDataGrid= (DataGrid)sender: 

System.Windows.Forms.DataGrid.HitTestInfo hti: hti=tableDataGrid.HitTest(e.X,e.Y): (其中0 b j e c t s e n d e r, s Y s t e m Wind0WS.Forms.MouseEventArgse为处理事件自带 参数)