无码任你躁久久久久久久-激情亚洲一区国产精品-超碰97久久国产精品牛牛-久久se精品一区精品二区国产

首頁 > 文章中心 > 正文

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

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

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

1問題的提出

隨著信息技術(shù)的飛速發(fā)展,互聯(lián)網(wǎng)已經(jīng)滲透到社會生產(chǎn)和生活的各個方面。農(nóng)業(yè)專家系統(tǒng)正是這一背景下的產(chǎn)物,它將農(nóng)業(yè)生產(chǎn)技術(shù)和計算機網(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語言是一個“簡單、強大、面向?qū)ο蟆⑵脚_獨立、多線程、動態(tài)和通用的編程環(huán)境”,它被廣泛采用和迅速普及的核心在于其平臺的獨立性[1]。Java語言不僅僅是一個程序設(shè)計語言,更是一個網(wǎng)絡(luò)操作系統(tǒng)。Java語言將從根本上改變網(wǎng)絡(luò)應(yīng)用程序的開發(fā)和使用方式,使它逐漸成為在Internet網(wǎng)絡(luò)以及操作系統(tǒng)等方面的應(yīng)用上最受歡迎的開發(fā)與編程語言之一。筆者將基于土壤信息管理、生產(chǎn)力評價和肥料配方等幾方面來研究互聯(lián)網(wǎng)環(huán)境下農(nóng)業(yè)專家系統(tǒng)的輔助系統(tǒng)的設(shè)計與實現(xiàn),以期為相關(guān)研究提供借鑒。

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

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

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

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

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

2.5系統(tǒng)功能用戶依據(jù)土壤信息、生產(chǎn)力情況和選擇施用的肥料,通過該在線系統(tǒng)制定農(nóng)作物在每個生長時期的科學(xué)施肥方案,從而提高作物產(chǎn)量,具體功能有8個。①用戶給出土壤養(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)量進行目標(biāo)產(chǎn)量與土壤養(yǎng)分的有效性檢驗。④利用氮、磷素肥建立數(shù)學(xué)模型,根據(jù)土壤養(yǎng)分和目標(biāo)產(chǎn)量求出土壤所需純氮、磷量。⑤用戶輸入所需有機肥的數(shù)量和種類。⑥通過模型計算用戶選擇施用的有機肥的純氮、磷含量。⑦根據(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實現(xiàn)系統(tǒng)的關(guān)鍵環(huán)節(jié)

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

3.2系統(tǒng)運行環(huán)境系統(tǒng)采用基于B/S結(jié)構(gòu)的3層網(wǎng)絡(luò)結(jié)構(gòu),因此客戶端需要擁有支持JavaApplet的瀏覽器、支持JavaServlet的服務(wù)器和能運行相關(guān)的數(shù)據(jù)庫,并且客戶端的瀏覽器需要支持Java虛擬機[4]。服務(wù)器端的應(yīng)用程序要運行在一個支持JavaServlet的Web服務(wù)器上,或者在現(xiàn)有的Web服務(wù)器上安裝Servlet軟件包。該系統(tǒng)采用的是Sun的JavaWebServer。該服務(wù)器用Java語言寫成。實現(xiàn)該系統(tǒng)時,主要涉及以下幾個關(guān)鍵技術(shù):客戶端Ja-vaApplet與服務(wù)器端JavaServlet的通信;服務(wù)器端對數(shù)據(jù)庫的操作??蛻舳撕头?wù)器端可以通過Http協(xié)議的Get和Post進行交互,客戶端必須打開一個到指定服務(wù)器端的URL連接;一旦建立了此連接,客戶端就可以從服務(wù)器端得到一個OutputStream或InputStream對象。實現(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)建一個可以有查詢的State-ment類的對象。然后使用該類的executiveQuery()方法,它的參數(shù)是包含SQL語句的字符串,并且會返回數(shù)據(jù)庫中的所有內(nèi)容,并把它作為ResultSet類的對象,然后使用ResultSet類的geMtetaData()方法,返回一個ResultSeMtetaData類的對象。

3.4數(shù)據(jù)處理在數(shù)據(jù)庫訪問的基礎(chǔ)上,可將所獲數(shù)據(jù)傳遞給相應(yīng)Applet進行計算分析。由于數(shù)據(jù)庫訪問過程中采用字符串的數(shù)據(jù)格式讀出數(shù)據(jù),所以在涉及計算的應(yīng)用中,所獲數(shù)據(jù)不能直接進行計算,還需進一步將數(shù)據(jù)流轉(zhuǎn)化為雙精度格式。完成相應(yīng)數(shù)據(jù)讀取和數(shù)據(jù)轉(zhuǎ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)訪問完某個數(shù)據(jù)庫時,應(yīng)該關(guān)閉數(shù)據(jù)連接,釋放與連接有關(guān)的資源。具體方法為:依次調(diào)用Result類、SetStatement類和Connection類的close()方法。另外,在程序中,使用繼承方法,實現(xiàn)了帶有有效性檢驗的浮點型單行編輯器,并可自定義小數(shù)進行四舍五入的運算。同時可以運用多態(tài)方法,使控件對象的使用更具靈活性。

4結(jié)論與討論

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

主站蜘蛛池模板: 宣武区| 来凤县| 桃江县| 柘城县| 古蔺县| 巴林左旗| 南充市| 上饶县| 鄂伦春自治旗| 安宁市| 潮州市| 嘉祥县| 体育| 永嘉县| 涿州市| 东辽县| 抚州市| 息烽县| 平度市| 桃源县| 白玉县| 革吉县| 黔西| 土默特左旗| 乌审旗| 阿鲁科尔沁旗| 永定县| 济阳县| 洪洞县| 隆尧县| 社会| 乳源| 香港 | 芦溪县| 磐安县| 彭泽县| 松桃| 同仁县| 旬阳县| 尼木县| 陇南市|