基于.Net的地下水污染调查信息系统设计与实现

2015-03-02 12:16王潇媛等
软件导刊 2015年1期
关键词:数据表控件客户端

王潇媛等

摘要:针对当前地下水污染调查信息记录过程中存在的数据录入慢、数据共享难等问题,提出基于B/S模式的地下水污染调查系统的设计思路,并阐述其具体实现过程。系统设计实验采用.Net Framework作为开发平台,C#作为开发语言,SQL Server作为数据库,同时整合了Web GIS技术,设计了地下水水点信息的数据录入、查询、分析、制图、评价和报表等功能。通过实际使用该系统实现了预期目标。

关键词:地下水污染调查;信息系统设计;.Net;数据库设计;GIS

DOIDOI:10.11907/rjdk.143710

中图分类号:TP319

文献标识码:A 文章编号文章编号:16727800(2015)001008004

0 引言

随着现代工农业的发展和人类活动的频繁影响,不同种类的污染物通过各种渠道进入地下水系统,导致地下水水质下降,特别在一些大中型城市,污染源直接威胁人们的正常生活[1]。与此同时,人类对水资源的需求量日趋增长。当前,地下水源已占全国总给水量的20%,西北地区和华北平原某些相对缺水的城市,地下水开发利用比例达到72%和66%[2]。在许多城市,地下水几乎是唯一的供水水源。

地下水污染调查评价是地下水污染防治的基础[3],以准确高效掌握地下水水质和污染情况。本文设计了一个基于.Net的地下水污染调查信息系统,利用现代信息技术,为科研人员进行地下水污染调查研究提供支撑。

1 系统结构设计

1.1 系统设计目标

系统应用GIS技术和空间数据处理技术,建立一个基于.Net Framework框架的B/S 模式结构的Web应用程序[4]。系统在设计和开发过程中遵循软件工程“时效性、易用性、可靠性、扩展性、开发性”相统一的原则[5],采用三层架构作为软件设计框架,为系统功能扩展奠定基础。具体设计路线如图1所示。

图1 地下水污染调查信息系统研究技术路线

1.2 系统开发技术

1.2.1 .Net三层架构

三层架构将整个软件框架分为“表示层—业务逻辑层—数据库访问层”三层,各层分工合作,实现数据交互[6]。其目的在于实现软件开发中所要求的“高内聚、低耦合”,采用“分而治之”的方法,将软件功能划分开来,从而有利于控制、延展和资源分配[7]。

1.2.2 AJAX技术

AJAX(Asynchronous JavaScript and XML)实现浏览器无需刷新整个页面内容,只需要根据用户需求,完成网页中部分控件与服务器之间的交互[8]。AJAX技术的标准化展示主要通过XHTML和CSS实现,同时其动态显示和交互部分主要应用DOM技术完成。异步数据读取时,AJAX通过XMLHttpRequest实现,最后应用JavaScript进行数据绑定[9]。

1.2.3 JQuery技术

JQuery是轻量级JS库[10],不仅兼容CSS3层叠样式表,而且对主流浏览器也可兼容。JQuery能够实现动画效果,使开发人员更为简易地处理HTML Document,快速开发出交互性强、界面友好的Web应用程序[11]。系统采用JQuery和JQuery封装下的Easy UI架构,辅助以ASP.NET技术,可大幅度优化网站的前端显示。访问过程如图2所示。

图2 JQuery前后台处理流程

1.2.4 WebGIS技术

WebGIS技术简化了客户端软件,以浏览器作为客户端应用程序的运转平台,从而形成一个“客户层—应用层—数据库”的三层结构[12]。

与传统的GIS相比,WebGIS具有以下优点[13]:①提高信息共享效率;②保障信息的实时性[14];③多平台的可扩展性;④降低系统成本。

2 数据库设计

地下水污染调查信息系统数据标准依据《地下水污染地质调查评价规范》[2]制定。主要考虑地下水资源量的分布情况、水文地质结构信息以及地下水环境数据等3个方面的数据结构[16]。数据库完成后系统可根据这些数据进一步完成制图及地下水污染评估等工作。

依照《地下水污染地质调查评价规范》[2],将数据库划分为原始资料数据库、综合成果数据库、元数据库和用户信息库。原始资料数据库主要完成数据的整理、修改编辑、汇总入库等;综合成果数据库主要完成空间专题制图等;元数据库主要建立不同需求下的元数据记录等;用户信息库则存储用户的个人信息以及记录导出项等。

(1)原始资料数据表。

原始资料数据表可以分为4大类:综合调查类、动态数据监测类、样品分析测试类和综合施工类。

(2)综合成果数据表。

综合研究成果数据库只含有单一的属性表,以线元及多边形表示。

(3)元数据表。

根据不同需求和工作需要,可以对原始资料数据库和综合成果数据库进行元数据采集,并将采集后的元数据记录保存到元数据表中。

(4)用户信息表。

用户信息表包含三大类:用户登陆信息表、用户详细信息表和用户导出项目表。

3 系统功能设计

系统主要功能模块如图3所示。

图3 系统功能模块

(1)数据管理模块。

包括原始数据录入、修改、存储、查询以及对原有数据进行备份与恢复等功能。

(2)图系制表模块。

依照用户需求,将野外采集数据或综合分析数据,绘制成图表。根据《地下水污染调查评价规范》[2],利用数据库中的数据,制作汇总后的图形化数据,方便用户查看。

(3)综合分析模块。

综合分析模块分为地下水质量评价和地下水污染综合评价两个子模块。地下水质量评价方法一般采用水质模糊评价方法[17],水质评价标准采用《地下水质量标准》[18]。地下水污染综合评价方法国内目前还没有统一标准[19]。

首先通过原始资料数据表查找符合条件的数据记录;然后根据地下水污染调查评价规范,对已查数据进行进一步分析;最后将综合成果记录、存储到元数据表中。

(4)数据统计模块。

数据统计模块主要用于统计和整合原始数据表和元数据表中的所有数据。使用.Net Framework平台的COM组件来实现统计功能[20],将数据以Excel文件的形式发送到客户端。

(5)用户模块。

将所有用户分为两组:普通用户组和管理员用户组。普通用户可以使用系统的大部分功能,包括对原始数据的录入、查询、修改、备份、恢复以及对数据进行分析和制图等,但不能查看其他用户录入的数据。

管理员组除了普通用户组的功能之外,还可以查看所有用户录入的数据,并且负责对整个数据库进行维护。管理员可限定普通用户的操作权限。

综合上述思路,系统整体框架图如图4所示。

图4 地下水污染调查信息系统整体框架设计

4 系统功能实现

本系统中最主要的部分是客户端同服务器端、服务器端同数据库的交互,需要使用大量的数据库操作。同时为了优化用户体验,提高输入输出效率,还在系统中加入了文件导入导出技术和查询时的模糊查找功能。

4.1 读取Excel文件数据

系统采用OLE DB的方式将Excel中的数据读取到DataTable。首先设定连接字符串:

StringConnString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=; Extended Properties=Excel 8.0; HDR=No;IMEX=1;"。

完成设定后,使用OleDbConnection打开数据连接,用GetOleDbSchemaTable获取Excel文件中的数据,最后通过OleDbDataAdapter.Fill将数据填充Dataset。具体代码部分,如下:

con = new OleDbConnection(ConnString);

schemaTable =con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

stringtableName = schemaTable.Rows[0][2].ToString().Trim();

cmd = new OleDbCommand(@"select * from [" + tableName + "]", con);

da = new OleDbDataAdapter();

da.SelectCommand = cmd;

da.Fill(dsModel);

con.Close();

4.2 文件导出功能

针对信息分析统计的导出功能,按照用户要求,将数据库中的数据进行整合,然后以Excel文件的形式导出到用户本地。具体实现代码如下:

Application excel = new Application();

_Workbook xBk;

_Worksheet xSt;

excel= new ApplicationClass();

xBk = excel.Workbooks.Add(true);

xSt = (_Worksheet)xBk.ActiveSheet;

foreach(DataColumn col in dv.Table.Columns)

{

colIndex++;

excel.Cells[4,colIndex] = col.ColumnName;

}

foreach(DataRowView row in dv)

{

rowIndex ++;

colIndex = 1;

foreach(DataColumn col in dv.Table.Columns)

{

colIndex ++;

}

}

xBk.SaveCopyAs(Server.MapPath(".")+""+this.xlfile.Text+".xls");

ds = null;

xBk.Close(false, null,null);

excel.Quit();

4.3 文本框自动填充功能

本文采用JQuery的AutoComplete控件。其中前后台的交互机制,将使用ASP.NET的CallBack机制。通常,一个完整的回调过程包含以下几个部分:①客户端发出回调请求;②服务器端接收客户端回调请求;③服务器端处理请求并回复请求给客户端;④客户端接收服务器的反馈结果并更新HTML。

触发回调机制,首先需要在前端页面编写一个JavaScript函数触发回调请求,具体语法结构如下:

any_script_function(arg, context)

{

<%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;

}

利用GetCallbackEventReference(this,”arg”,”ReceiveServerData”)函数,根据传入的参数,来调用实际的前台脚本。其中this表示回调操作的控件处于当前页面。同时,该页面需要实现ICallbackEventHandler接口。此外,this参数也可以表示该页面上某个Web控件,此时该控件需实现ICallbackEventHandler接口;Arg用来表示将要传递给RaiseCallbackEvernt的参数值;ReceiveServerData指前端页面在回调之后将要执行的前台脚本。

回调机制完成之后,页面将把数据库中存储的数据转化为JSON格式并赋值到AutoComplete控件,具体语法如下:

autocomplete(url or data,[options])。

$(function () {

$("#" + "<%=this.控件ID%>").autocomplete({

source: function (request, response) {

$.ajax({

url: "Handler1.ashx",dataType: "jsonp",

jsonp: "callback",

data: "p1=" + escape(request.term) + "&callback= ",

success: function (data) {

response($.map(data, binditem));

}

});

},

}

5 结语

本文使用.Net Framework 作为开发平台,C#作为开发语言,利用计算机网络技术和WebGIS技术,提出设计思路和实现方案。依托.Net Framework作为系统平台,有效提高了系统的稳定性,使信息交互和维护更加便捷。本文系统设计开发对于其它类似信息系统的开发,具有一定借鉴意义。

猜你喜欢
数据表控件客户端
基于列控工程数据表建立线路拓扑关系的研究
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
图表
ASP.NET服务器端验证控件的使用
基于VSL的动态数据表应用研究
客户端空间数据缓存策略
Spreadsheet控件在Delphi数据库系统中的编程与应用