99久久99久久精品免费看蜜桃,亚洲国产成人精品青青草原,少妇被粗大的猛烈进出va视频,精品国产不卡一区二区三区,人人人妻人人澡人人爽欧美一区

首頁 > 文章中心 > 正文

Java在線農(nóng)業(yè)輔助分析

前言:本站為你精心整理了Java在線農(nóng)業(yè)輔助分析范文,希望能為你的創(chuàng)作提供參考價(jià)值,我們的客服老師可以幫助你提供個(gè)性化的參考范文,歡迎咨詢。

Java在線農(nóng)業(yè)輔助分析

1問題的提出

隨著信息技術(shù)的飛速發(fā)展,互聯(lián)網(wǎng)已經(jīng)滲透到社會(huì)生產(chǎn)和生活的各個(gè)方面。農(nóng)業(yè)專家系統(tǒng)正是這一背景下的產(chǎn)物,它將農(nóng)業(yè)生產(chǎn)技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)高效結(jié)合,將與農(nóng)業(yè)生產(chǎn)相關(guān)的地質(zhì)情況、土壤類型、肥料配方等數(shù)據(jù)通過互聯(lián)網(wǎng)整合起來,對緩解農(nóng)業(yè)生產(chǎn)技術(shù)的地區(qū)差異、解決農(nóng)業(yè)生產(chǎn)中所遇到的問題和加快科技成果的交流起到了積極作用。java語言是一個(gè)“簡單、強(qiáng)大、面向?qū)ο?、平臺(tái)獨(dú)立、多線程、動(dòng)態(tài)和通用的編程環(huán)境”,它被廣泛采用和迅速普及的核心在于其平臺(tái)的獨(dú)立性[1]。Java語言不僅僅是一個(gè)程序設(shè)計(jì)語言,更是一個(gè)網(wǎng)絡(luò)操作系統(tǒng)。Java語言將從根本上改變網(wǎng)絡(luò)應(yīng)用程序的開發(fā)和使用方式,使它逐漸成為在Internet網(wǎng)絡(luò)以及操作系統(tǒng)等方面的應(yīng)用上最受歡迎的開發(fā)與編程語言之一。筆者將基于土壤信息管理、生產(chǎn)力評價(jià)和肥料配方等幾方面來研究互聯(lián)網(wǎng)環(huán)境下農(nóng)業(yè)專家系統(tǒng)的輔助系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),以期為相關(guān)研究提供借鑒。

2在線農(nóng)業(yè)輔助系統(tǒng)的結(jié)構(gòu)體系

2.1整體結(jié)構(gòu)如圖1所示,因?yàn)橛脩糨^為分散,同時(shí)為了節(jié)約成本,該系統(tǒng)采用基于客戶端/服務(wù)器的B/S結(jié)構(gòu):第1層為客戶端,用戶使用Web瀏覽器進(jìn)行登陸;通過互聯(lián)網(wǎng)與處于第2層的服務(wù)器端進(jìn)行連接;第3層為數(shù)據(jù)庫,實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)與管理。

2.2客戶端模塊客戶端使用JavaApplet來實(shí)現(xiàn),通過在Web頁面中嵌入具有計(jì)算功能的Applet小程序來完成Ap-plet與Servlet的通信,以及將集成有數(shù)據(jù)訪問和計(jì)算功能的類包隨同Web頁面一起下載到客戶端,從而實(shí)現(xiàn)對分布異構(gòu)數(shù)據(jù)的調(diào)用和分布式計(jì)算。如圖2所示,在線農(nóng)業(yè)輔助系統(tǒng)的客戶端有4個(gè)相對獨(dú)立的模塊:土壤信息、生產(chǎn)力信息、肥料名稱和數(shù)量以及配方施肥結(jié)果。

2.3服務(wù)器端模塊服務(wù)器端使用JavaServlet程序?qū)崿F(xiàn),如圖3所示。與客戶端相對應(yīng),同樣有4個(gè)模塊:土壤信息查詢、生產(chǎn)力信息分析、肥料名稱查詢和施肥配方分析。

2.4數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫的內(nèi)容和數(shù)據(jù)的組織形式,是系統(tǒng)各功能之間數(shù)據(jù)共享的基礎(chǔ)。該系統(tǒng)數(shù)據(jù)庫采用SQLServer2005,它的主要內(nèi)容包括土壤信息(土壤養(yǎng)分、土壤環(huán)境和土壤類型)和肥料信息(有機(jī)肥和化肥)。數(shù)據(jù)庫的主要操作流程為:讀取土壤信息和肥料信息,傳給Applet供用戶選擇使用,也可以為施肥配方分析提供依據(jù)。

2.5系統(tǒng)功能用戶依據(jù)土壤信息、生產(chǎn)力情況和選擇施用的肥料,通過該在線系統(tǒng)制定農(nóng)作物在每個(gè)生長時(shí)期的科學(xué)施肥方案,從而提高作物產(chǎn)量,具體功能有8個(gè)。①用戶給出土壤養(yǎng)分及環(huán)境條件,系統(tǒng)根據(jù)土壤生產(chǎn)潛力模型預(yù)估土地單位面積產(chǎn)量。②利用土地的歷年平均產(chǎn)量得到目標(biāo)年該土地的推薦目標(biāo)產(chǎn)量。③根據(jù)土壤的氮、磷含量和土地目標(biāo)產(chǎn)量進(jìn)行目標(biāo)產(chǎn)量與土壤養(yǎng)分的有效性檢驗(yàn)。④利用氮、磷素肥建立數(shù)學(xué)模型,根據(jù)土壤養(yǎng)分和目標(biāo)產(chǎn)量求出土壤所需純氮、磷量。⑤用戶輸入所需有機(jī)肥的數(shù)量和種類。⑥通過模型計(jì)算用戶選擇施用的有機(jī)肥的純氮、磷含量。⑦根據(jù)土壤所需純氮、磷量和用戶施用有機(jī)肥的純氮、磷量,得到土壤所需化肥的純氮、磷量。⑧根據(jù)土壤所需化肥純氮、磷量和施肥配比模型,得到每個(gè)生育期的肥料計(jì)劃。施肥量的計(jì)算模型為:施肥量=(作物單位產(chǎn)量養(yǎng)分吸收量×目標(biāo)產(chǎn)量-土壤測試值×0•15×土壤養(yǎng)分校正系數(shù))/(肥料中養(yǎng)分含量×肥料當(dāng)季利用率)[2]。其中,土壤養(yǎng)分校正系數(shù)=(無肥區(qū)產(chǎn)量×作物單位產(chǎn)量養(yǎng)分吸收量)/(土壤養(yǎng)分測定值×0.15)。

3實(shí)現(xiàn)系統(tǒng)的關(guān)鍵環(huán)節(jié)

3.1JavaServlet技術(shù)主要利用JavaServlet技術(shù)來實(shí)現(xiàn)該系統(tǒng)[3]。JavaServlet程序運(yùn)行在服務(wù)器端,與傳統(tǒng)的CGI技術(shù)相比,JavaServlet效率高、容易使用,具有強(qiáng)大的功能,可移植性更強(qiáng),有利于節(jié)約資金。JavaServlet的運(yùn)行機(jī)制為:客戶建立一個(gè)Web服務(wù)請求,命名一個(gè)Serverle,t就如同URL的一部分,Web服務(wù)器向由Servlet類對象所定位的Servlet引擎發(fā)送一個(gè)請求,Servlet引擎調(diào)用一個(gè)Servlet服務(wù)方法。即:瀏覽器(客戶)←URL請求→Web服務(wù)器←→Servlet對象(應(yīng)用程序服務(wù)器)。

3.2系統(tǒng)運(yùn)行環(huán)境系統(tǒng)采用基于B/S結(jié)構(gòu)的3層網(wǎng)絡(luò)結(jié)構(gòu),因此客戶端需要擁有支持JavaApplet的瀏覽器、支持JavaServlet的服務(wù)器和能運(yùn)行相關(guān)的數(shù)據(jù)庫,并且客戶端的瀏覽器需要支持Java虛擬機(jī)[4]。服務(wù)器端的應(yīng)用程序要運(yùn)行在一個(gè)支持JavaServlet的Web服務(wù)器上,或者在現(xiàn)有的Web服務(wù)器上安裝Servlet軟件包。該系統(tǒng)采用的是Sun的JavaWebServer。該服務(wù)器用Java語言寫成。實(shí)現(xiàn)該系統(tǒng)時(shí),主要涉及以下幾個(gè)關(guān)鍵技術(shù):客戶端Ja-vaApplet與服務(wù)器端JavaServlet的通信;服務(wù)器端對數(shù)據(jù)庫的操作??蛻舳撕头?wù)器端可以通過Http協(xié)議的Get和Post進(jìn)行交互,客戶端必須打開一個(gè)到指定服務(wù)器端的URL連接;一旦建立了此連接,客戶端就可以從服務(wù)器端得到一個(gè)OutputStream或InputStream對象。實(shí)現(xiàn)客戶端與服務(wù)器通信的關(guān)鍵代碼為://Applet與Servlet通訊的連接URLurl=newURL(serverURL);URLConnectionuc=ur.lopenConnection();//輸出流DataOutputStreamFlush=newDataOutputStream(uc.getOutputStream());Flush.writeBytes(querystring);Flush.flush();Flush.close();//接受流InputStreamReadinFlush=newInputStreamReader(uc.getInputStream());服務(wù)器通過Servlet中的getParameter來獲取客戶端請求,通過ServletOutputStream將服務(wù)器響應(yīng)流輸出,相應(yīng)程序片段為://服務(wù)器端獲取請求和響應(yīng)StringSQL=new(req.getParamenter(“param”);//響應(yīng)ServletOutputStreamservletout=res.getOutputStream();…servletou.tprintln(responsel);

3.3JavaServlet與數(shù)據(jù)庫的連接首先使用Connection對象的createStatement()方法創(chuàng)建一個(gè)可以有查詢的State-ment類的對象。然后使用該類的executiveQuery()方法,它的參數(shù)是包含SQL語句的字符串,并且會(huì)返回?cái)?shù)據(jù)庫中的所有內(nèi)容,并把它作為ResultSet類的對象,然后使用ResultSet類的geMtetaData()方法,返回一個(gè)ResultSeMtetaData類的對象。

3.4數(shù)據(jù)處理在數(shù)據(jù)庫訪問的基礎(chǔ)上,可將所獲數(shù)據(jù)傳遞給相應(yīng)Applet進(jìn)行計(jì)算分析。由于數(shù)據(jù)庫訪問過程中采用字符串的數(shù)據(jù)格式讀出數(shù)據(jù),所以在涉及計(jì)算的應(yīng)用中,所獲數(shù)據(jù)不能直接進(jìn)行計(jì)算,還需進(jìn)一步將數(shù)據(jù)流轉(zhuǎn)化為雙精度格式。完成相應(yīng)數(shù)據(jù)讀取和數(shù)據(jù)轉(zhuǎn)換格式的程序?yàn)?//讀取數(shù)據(jù)do{Stringreturninfo=rs.getString();Listtable1.add(returninfo);Seclections0=listtable1.getItems();for(intloopIndex=0;loopIndex<selection0.lengtn();loopIndex++){al[loopIndex]=Double.parseDouble(selection0[loopIn-dex];}}while(rs.next())

3.5關(guān)閉數(shù)據(jù)庫連接當(dāng)訪問完某個(gè)數(shù)據(jù)庫時(shí),應(yīng)該關(guān)閉數(shù)據(jù)連接,釋放與連接有關(guān)的資源。具體方法為:依次調(diào)用Result類、SetStatement類和Connection類的close()方法。另外,在程序中,使用繼承方法,實(shí)現(xiàn)了帶有有效性檢驗(yàn)的浮點(diǎn)型單行編輯器,并可自定義小數(shù)進(jìn)行四舍五入的運(yùn)算。同時(shí)可以運(yùn)用多態(tài)方法,使控件對象的使用更具靈活性。

4結(jié)論與討論

采用Java技術(shù),設(shè)計(jì)和實(shí)現(xiàn)了在線農(nóng)業(yè)輔助系統(tǒng),即由客戶端通過瀏覽器訪問服務(wù)器,下載集成有計(jì)算分析功能的Applet小程序,通過Applet和Servlet通訊,調(diào)用和處理服務(wù)器與客戶端本地?cái)?shù)據(jù),再利用客戶端的計(jì)算資源實(shí)現(xiàn)計(jì)算。在未來的工作中,將研究如何將分布式網(wǎng)絡(luò)用于該系統(tǒng)中,以便更好地利用網(wǎng)絡(luò)資源。