基于Java的马铃薯窖藏环境监控系统的设计与实现

2018-04-09 05:47刘瑞瑞王福平
江苏农业科学 2018年5期
关键词:马铃薯监控数据库

刘瑞瑞, 王福平

(1.北方民族大学计算机科学与工程学院,宁夏银川 750021; 2.北方民族大学创新创业学院,宁夏银川 750021)

马铃薯是仅次于小麦、玉米、水稻的第四大粮食作物,世界超过2/3的国家都在种植,我国年产量为8 000万t,居世界前列[1]。随着我国马铃薯主粮化战略的推进和智慧农业的兴起,将获取的海量农业信息进行采集、分析、融合及处理,同时通过智能化操作终端实现科学管理和全程实时监控和服务成为新型农业发展的一大趋势。本研究将传感器采集数据、无线网络、GPRS移动通信等硬件技术与Java软件技术相结合,通过对窖中各个节点的实时监测,以及系统自动和手动2种模式,来确保窖中的适宜环境。管理平台以Java技术为基础,采用B/S结构实现Web程序开发,并在此基础上运用了成熟稳定的框架技术SSH(Struts,Spring,Hibernate)等,同时嵌入友好的人机交互接口,来实现系统的各个功能模块。

1 Java及相关技术和系统需求分析

1.1 Java及相关技术

Java是由sun公司推出的跨越多平台、移植性最高的一种面向对象的编程语言,非常适用于企业网络和Internet环境,比目前常用的C++更简洁、可靠、安全,除去最大的程序错误根源,有广泛的应用系统开发领域,如桌面应用、嵌入式、交互式、分布式、web应用等[2]。该系统是建立在广域网的web访问,因此选用B/S结构,通过星型拓扑结构构建内部通信网络及Internet虚拟专网,无需专门的硬件环境,不受地域限制,安全、快捷、准确,节约成本,用户界面完全可以通过www浏览器实现。

采用一种面向对象设计的框架模式MVC,核心思想是将程序分成模型层、视图层、控制层,这3层既相对独立又能一起工作。处理过程是用户通过视图层向控制器发出请求;控制器接收用户的请求并将其映射到相应的模型,该模型处理用户的请求,然后模型处理业务逻辑,并返回数据;最后控制器将处理的结果传递给相应的视图,处理后的结果在视图层显示。MVC主要依靠Struts框架中的Servlet和JSP技术实现,Struts支持一套完善的规范和基础类库,在很大程度上减少程序员开发程序的工作量,使系统具有较强的扩展性[3]。Spring是一个开源的轻量级分层架构,可以将简单的组件配置组合成复杂的应用,其模块化的特性更符合开发的需要,且便于管理、修改及扩展。Hibernate是一个开源代码的对象关系框架,将对象及其属性映射到数据库中的表及表的字段中,通过对象的编辑可以实现对数据库的操作,可以对JDBC对象轻量级封装,同时提供了数据获取以及查询的方法[4],从而解决了面向对象编程与关系数据库不适配问题,大大降低了编写SQL和JDBC的时间。

1.2 系统需求分析

系统需求分析在整个系统开发的生命周期中起着至关重要的作用,主要用于提前了解到用户需求、明确开发的目标、系统功能及信息处理的方式,本研究将从功能、非功能、可行性3个角度进行需求分析[5]。

系统平台可以通过浏览器输入网址或通过下载手机APP进入操作界面,进行可靠控制和管理,功能主要包括用户信息管理、检测数据查询、智能监控、设备管理和平台中心等。在非功能性需求方面,系统在具兼容性、安全性、可扩展性的同时尽量缩短系统响应时间。系统在开发中所应用的Java、数据库等技术已经非常成熟,并且得以广泛推广。马铃薯智能监测系统及时准确监控窖内的情况,降低了因环境变化造成的经济损失,与开发所用成本相比,是可行的。

2 窖藏环境监控系统的设计

2.1 系统总体设计

马铃薯窖藏环境监测系统是由数据采集层、网络传输层、上位机3大部分组成。上位机部分主要包括数据库、服务器以及客户端。网络传输层为ZigBee无线传感器网络、GPRS等数传设备。数据采集层部分包括温湿度传感器、二氧化碳传感器、摄像头等硬件设备。整体的运作过程是由温湿度、二氧化碳传感器对马铃薯窖的不同节点的数据进行检测,由摄像头对地窖内情况进行实时视频监控,由数据采集器采集田间各节点的传感器参数,经过ZigBee无线通信发送给传输基站至参数程序,经过数据处理后存入数据库,经GPRS无线通信发送给服务器,客户端可以通过访问服务器来获得数据,客户可以用Google浏览器来操作查询数据的客户终端,即登录远程监控平台来了解窖中情况。马铃薯贮藏智能监控系统总体设计框图见图1。

马铃薯贮藏环境远程监测系统的网站平台是整个设计的灵魂;不仅是数据处理的重要环节,也是用最直观的方式和友好的交互界面实现功能;在满足用户要求的前提下,还应该便于管理员对信息的管理及监控。以模块化的思想设计界面,不仅在开发过程中便于代码的编写、修改与扩展,在网站的界面上也能清晰地展示出各个功能,便于用户查询与操作。根据对监控系统的需求分析,整个系统的功能结构框图见图2。

2.2 系统上位机软件的设计

系统的上位机软件部分是在装有Windows操作系统的PC上采用B/S的系统模式,自下而上分为3层:数据访问层(DAL)、业务逻辑层(BLL)、表示层。数据访问层用于实现系统对数据库的操作,实现业务流程对数据库中数据的插入、更新、修改、删除、查询等,设计关键在于合理设计处理参数的方法同时保证数据库的完整性。业务逻辑层是系统实现的核心,用于对上下层之间的交互数据做逻辑处理以实现数据业务流程,重点在于设计通用业务接口,独特的业务流程可对BLL层中相关类进行继承和重载,包括指令发布以及数据的接收、采集、管理、录入、汇总、校对、上报、导入、导出等[6]。业务层数据通信模块代码如下:

Public class Purchase ApplicationBLL

{public static<返回参数>业务功能1()

{//业务功能1实现代码}

public static<返回参数>业务功能 n()

{//业务功能n实现代码}

界面层根据用户绑定的不同控件通过GET和SET操作代码完成实体类属性操作并将其值绑定至对应控件属性上,从而提供友好的人机交互界面和操作结果的展示。界面上通常显示查询、添加、删除、修改、打印、审核等以及首页、上一页、下一页、最后一页等功能。

2.3 系统数据库的设计

数据库模块是系统设计中的一个关键要素。农业生产实践因素的复杂性和多变性导致数据库设计的复杂性,因此,数据库选择决定了系统质量的好坏以及今后运营及维护的成本。鉴于稳定性、安全机制、可扩展性等几个方面,且支持B/S 3层模式,本设计选用SQL Server来创建系统的数据库,建立了农户信息表、地窖信息表、气象信息表、传感器信息表、设备信息表、历史操作表等。在清楚分析数据库间关系的同时应该选择合适的数据库连接方式,Microsoft公司推出一款定义数据库访问API的规范ODBC,适用于不同的DBMS及编程语言。采用JDBC提供Java程序连结与存取数据库的套件,即应用程序通过JDBC驱动程序与数据库管理系统沟通[7],JDBC的应用过程见图3。

主要的代码如下:

Connection con=DriverManager(jdbc:mysql://localhost/sample,username,password);

//连接MySQL

String username;//登录MySQL数据库的用户名

String password;//登录数据库密码

Connection con=DriverManager.getConnection(“url”,“username”,password);

Statement stmt=con.createStatement();//创建一个语句对象

ResultSet rs =statement.executeQuery(“SELECT sno,sname FROM student”);

//执行select类型的SQL语句

int num = statement.executeQuery(“INSERT INTO farmer valus(‘10001’,‘zhangsan’,‘男’)”);

登录模块的部分实现代码如下:

publicvoid loginCheck() throws ChecksException

{

/**验证用户名密码 */

if(!checkNamePassword()thrownewChecksException(“userNameOrPassword~error”);

if(theloginer.getState()==null||theloginer.getState()!=1) thrownew ChecksException(“error_authorizationerror”);

if(!systemBegin())thrownew ChecksException(“error_initialization”);

/**当前登陆用户信息存入session*/

if(WebContextMaker.getRequest()!=null){

WebContextMaker.getRequest().getSession(true);

WebContextMaker.getRequest().getSession().setAttribute(“t_user”,theloginer);

}else

WebContextMaker.getSession().put(“t_user”,theloginer); LogMaker.loger(“0”,theloginer.getLoginName(),“success_login”,theloginer.toXml(),“login”,“LoginAction”,6);

/**当前登录用户信息存入登录队列*/

LoginInfo temper=new LoginInfo(theloginer.getLoginName(),

,WebContextMaker.getSession().toString(),WebContextMaker.getRequest().getRemoteAddr(),new Date(),new Date(),new Date(),new Date());

SystemParms.loginUserMap.put(theloginer.getLoginName(),temper);

}

3 窖藏环境监控系统的实现

各级用户可以选择谷歌浏览器访问网址进入登录页面,输入正确的登录账号进入平台,通过一定的权限认证进行登录,在自己的权限内进行平台管理操作。网页的登录界面见图4。

控制平台主页面分为个人中心、智能监控、设备管理、区域管理、平台中心5个功能模块(图5)。

以最核心的智能监控模块为例,包括视频、实时数据、统计数据以及最新的统计数据折线图。在历史数据栏打开区域列表,在当前登录用户有权限去操作的区域列表右侧选择需要展示的数据时间段,点击查询,下方即可生成数据的折线图。首先输入开始时间与结束时间(图6),观察在此时间段所有的温度变化曲线见图7,湿度变化曲线见图8,二氧化碳含量变化曲线见图9。

4 结论

笔者着重介绍了基于Java的马铃薯窖贮藏监控系统软件的设计与开发过程,实现了系统需求分析中各个功能模块的设计工作。此系统突破了传统对地域的限制,只要有网络的地方就能登录此系统,实现对马铃薯窖内环境的远程监测和控制,降低了生产成本和环境突变造成的损失,使宁夏偏远地区向智慧农业迈进。

参考文献:

[1]李壁成,安韶山. 黄土高原马铃薯产业化开发的潜力、市场与对策[J]. 水土保持研究,2005,12(3):151-153.

[2]赵洛育. Java从入门到精通[M]. 3版. 北京:清华大学出版社,2012.

[3]穆胜德. 基于SSH多层框架web应用系统的研究与设计[D]. 沈阳:沈阳工业大学,2007:6-7.

[4]Bauer C,King G. Java persistence with hibernate[M]. Greenwich:Manning Publications Co.,2006:35.

[5]郑申茂. 基于JavaEE与Android的农业信息服务平台设计与开发[D]. 武汉:华中师范大学,2014:20-23.

[6]李军. 数据采集系统整体设计与开发[M]. 北京:北京航空航天大学出版社,2014.

[7]王福平,刘芳,冯盼盼. 基于Java的农田节水灌溉监控系统的设计与实现[J]. 微型机与应用,2013(22):83-84.

猜你喜欢
马铃薯监控数据库
马铃薯有功劳
The Great Barrier Reef shows coral comeback
你被监控了吗?
Zabbix在ATS系统集中监控中的应用
定边马铃薯
胖胖的马铃薯
PDCA循环法在多重耐药菌感染监控中的应用
秋马铃薯栽培技术