遠程農(nóng)作物病蟲害診斷專家系統(tǒng)的設計與實現(xiàn)教材_第1頁
遠程農(nóng)作物病蟲害診斷專家系統(tǒng)的設計與實現(xiàn)教材_第2頁
遠程農(nóng)作物病蟲害診斷專家系統(tǒng)的設計與實現(xiàn)教材_第3頁
遠程農(nóng)作物病蟲害診斷專家系統(tǒng)的設計與實現(xiàn)教材_第4頁
遠程農(nóng)作物病蟲害診斷專家系統(tǒng)的設計與實現(xiàn)教材_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

摘要本文論述了集成農(nóng)作物種植理論和實用技術、遠程農(nóng)作物病蟲害診斷專家系統(tǒng)的構(gòu)建和實現(xiàn)。在比較國內(nèi)外農(nóng)業(yè)專家系統(tǒng)構(gòu)思的基礎上,論證了本系統(tǒng)實施的方案,實現(xiàn)了農(nóng)作物病蟲害診斷專家系統(tǒng)的網(wǎng)絡化,擴大了農(nóng)作物病蟲害診斷專家系統(tǒng)應用的空間范圍。文中主要以病害診斷為例著重介紹了規(guī)則庫的建立、推理機的設計。論文前半部分首先對農(nóng)作物病蟲害診斷專家系統(tǒng)研究的背景、課題的研究內(nèi)容、農(nóng)業(yè)專家系統(tǒng)在國內(nèi)外的研究、專家系統(tǒng)概況作了較全面的介紹和闡述,說明了本課題的研究目的和意義,接著對本課題專家系統(tǒng)的核心部分——知識表示和推理機的設計進行了闡述。論文后半部分是對于專家系統(tǒng)的總體設計、數(shù)據(jù)庫設計以及界面功能進行了詳細論述,并用其設計專家系統(tǒng)開發(fā)平臺的框架模型。關鍵詞:農(nóng)業(yè)專家系統(tǒng)推理機病蟲害

AbstractThispaperdiscussesthestructureandachievementofthetheoryofintegratedcropplanting,practicaltechnologyandtheexpertsystemofremotecropdiseasesandinsectpestsdiagnosis.Contrastofthedomesticandforeignagriculturalexpertsystemconception,itdemonstratesthesystemoftheimplementationoftheschemethatrealizingthenetworkoftheexpertsystemofremotecropdiseasesandinsectpestsdiagnosisandenlargingthespatialdimension.Itintroducestheestablishmentofrule-baseandthedesignoftheinferenceenginewhichtakesdiseasescreeningasexample.Theprecedinghalfpartofthesisstressesthebackgroundandcontentofexpertsystemofremotecropdiseasesandinsectpestsdiagnosis,alsostatesofresearchbothathomeandbroadandgeneralsituationofexpertsystem.Thenintroducethemainpartthatisthedesignoftheinferenceengine.Thelastpartofthethesisanalyzestheoveralldesignofexpertsystem,basedesignandInterfaceandFunctioninordertoapplytothemodel.Keywords:Agriculturalexpertsystem,inferenceengine,diseasesandpests

目錄1緒論 11.1課題的研究的背景和意義 11.2課題的國內(nèi)外研究現(xiàn)狀 21.3課題的主要研究內(nèi)容 21.4論文的組織結(jié)構(gòu) 32核心機制研究 42.1專家系統(tǒng)的特點 42.2.專家系統(tǒng)的結(jié)構(gòu) 42.3知識庫構(gòu)建 52.3.1知識獲取 52.3.2知識表示 62.3.3規(guī)則示例 82.4推理機的設計 92.4.1推理機的算法設計 103系統(tǒng)總體設計分析 123.1需求分析 123.1.1用戶需求分析 123.1.2初步設計分析 133.2系統(tǒng)功能需求分析 133.2.1系統(tǒng)功能層次模塊圖 133.2.2系統(tǒng)功能需求分析 143.3系統(tǒng)性能需求分析 163.3.1靈活性 163.3.1時間特性要求 164數(shù)據(jù)庫總體設計 174.1數(shù)據(jù)庫E-R圖 174.2數(shù)據(jù)表的詳細設計 184.3數(shù)據(jù)庫表關系圖 225系統(tǒng)實現(xiàn) 245.1界面及功能說明 245.1.1前臺界面模塊 245.2.2病蟲害診斷界面 255.2.3系統(tǒng)后臺界面 265.3示例代碼 275.3.1類庫示例代碼 275.3.2后臺示例代碼 285.3.3實現(xiàn)農(nóng)作物病蟲害診斷示例代碼 296總結(jié)與展望 326.1總結(jié) 326.2展望 32參考文獻 33致謝 341、緒論中國是一個農(nóng)業(yè)大國,種植的農(nóng)作物種類很多,農(nóng)作物病蟲害的診斷對農(nóng)作物的產(chǎn)量提高有著現(xiàn)實意義[1]。農(nóng)作物病蟲害診斷的實質(zhì)是一個故障診斷問題,但是與一般的設備故障診斷相比,由于農(nóng)作物具有生命特征,其病蟲害特征表現(xiàn)比一般設備復雜,難以用確定性、統(tǒng)計性或傳統(tǒng)的方法對它進行直接綜合研究。在現(xiàn)階段水平上,利用計算機技術,結(jié)合多學科定性定量整體結(jié)合法是解決問題的可行方法[2]。專家系統(tǒng)是一個具有大量的專業(yè)知識與經(jīng)驗的程序系統(tǒng),它應用人工智能技術和計算機技術,根據(jù)某領域一個或多個專家提供的知識和經(jīng)驗,進行推理,模擬人類專家的決策過程,以便解決那些需要人類專家處理的復雜問題,農(nóng)業(yè)專家系統(tǒng)是專家系統(tǒng)在農(nóng)業(yè)領域的應用[3]。農(nóng)作物病蟲害診斷是農(nóng)作物種植過程中非常關鍵的環(huán)節(jié),本課題的研究就是把農(nóng)業(yè)專家系統(tǒng)的理論、技術和研究方法應用到農(nóng)作物病蟲害的診斷中去,實現(xiàn)農(nóng)作物病蟲害的自動診斷。本章主要論述課題的背景、目的及意義、重點與難點分析、主要研究內(nèi)容。并說明論文的組織結(jié)構(gòu)。1.1課題的研究的背景和意義21世紀,信息和知識已成為經(jīng)濟和社會發(fā)展的基本要素。信息技術的高速發(fā)展,與世界通訊基礎設施的迅速完善,全面推動了技術、產(chǎn)業(yè)、經(jīng)濟、社會的發(fā)展,同時也引發(fā)了傳統(tǒng)的農(nóng)業(yè)技術思想、觀念的變革和以知識為基礎的農(nóng)業(yè)科學技術與農(nóng)產(chǎn)業(yè)技術的革命,并為傳統(tǒng)農(nóng)業(yè)的改造、實現(xiàn)農(nóng)業(yè)的高速可持續(xù)發(fā)展提供了良好機遇。農(nóng)業(yè)信息化是農(nóng)業(yè)現(xiàn)代化的重要體現(xiàn)和標志,是從傳統(tǒng)農(nóng)業(yè)邁向現(xiàn)代化農(nóng)業(yè)不可跳越的歷史過程。隨著信息的迅猛發(fā)展,農(nóng)業(yè)信息化將是克服傳統(tǒng)農(nóng)業(yè)弱勢的有力武器,而農(nóng)業(yè)專家系統(tǒng)必將是其中最重要的推動力量。農(nóng)業(yè)專家系統(tǒng)就是把人工智能的專家系統(tǒng)技術應用于農(nóng)業(yè)領域的一項新技術;是模擬人類推理過程,集合農(nóng)業(yè)領域知識、農(nóng)業(yè)專家經(jīng)驗、實驗數(shù)據(jù)、及數(shù)學模型等,采用適合的知識載體,為農(nóng)民提供咨詢服務、科學種植、科學用藥等指導,不僅能保存、傳播各類農(nóng)業(yè)信息和知識,而且能綜合各種單項農(nóng)業(yè)技術,實現(xiàn)高層次的農(nóng)業(yè)技術集成。從1990年起,國家科技部等部門把“網(wǎng)絡化實時農(nóng)業(yè)病蟲害遠程診斷模型及交互式平臺關鍵技術的研究”列入了國家863計劃的重點課題,給予了重點支持。在全國開展了針對農(nóng)業(yè)智能化農(nóng)業(yè)專家系統(tǒng)、農(nóng)業(yè)模擬模型及使用農(nóng)業(yè)信息管理系統(tǒng)等方面的研究與推廣應用工作。農(nóng)作物病蟲害種類較多,對其進行分類和鑒定要求農(nóng)作物工作者必須具備牢固的農(nóng)作物保護基礎知識和豐富的實踐經(jīng)驗,僅僅依據(jù)其危害癥狀和粗略的識別就進行防治很難達到理想的效果;如果對要對病蟲害進行準確鑒定,則需要查詢大量的資料,但是大部分農(nóng)業(yè)技術人員無法掌握如此多的病害資料,農(nóng)作物工作者人員有限,不能及時滿足農(nóng)民的需求,對農(nóng)作物病蟲害作出正確診斷及防治措施。農(nóng)作物的種類多,有糧食作物、經(jīng)濟作物、工業(yè)原料作物等,農(nóng)作物的產(chǎn)量在國民經(jīng)濟中占有非常重要的地位,研究農(nóng)作物病蟲害診斷系統(tǒng),對農(nóng)作物的產(chǎn)量提高有著非常重要的意義[4]。如果有一套具有專家的知識和經(jīng)驗的專家診斷系統(tǒng),對農(nóng)作物病蟲害進行科學診斷,并給予有效的防治措施,使每位農(nóng)民都能及時得到專家指導的信息,那么就可以解決農(nóng)作物生產(chǎn)中病蟲害防治技術不到位的問題,使農(nóng)業(yè)專家的知識和經(jīng)驗得到推廣和應用,農(nóng)作物生產(chǎn)水平將會提高一大步,這正是本課題的研究目的,即應用農(nóng)業(yè)專家系統(tǒng)原理和技術,研究農(nóng)作物病蟲害的診斷,是農(nóng)業(yè)專家的知識和經(jīng)驗得到廣泛的應用,這也是本課題的創(chuàng)新之處。1.2課題的國內(nèi)外研究現(xiàn)狀農(nóng)作物病蟲害診斷專家系統(tǒng)的研究起源于1965年E.A.Feigenbaum等所開發(fā)的DENDRAL[5](一個推斷化學分子結(jié)構(gòu)的計算機系統(tǒng))。經(jīng)過接近50年的發(fā)展,專家系統(tǒng)技術由剛發(fā)展時不成熟階段逐漸走向成熟階段,也迅速拓展了它的應用范圍,例化學工程、地質(zhì)勘探、醫(yī)療診斷、金融決策、農(nóng)業(yè)以及軍事等領域。專家系統(tǒng)在農(nóng)作物病蟲害診斷方面,在70年代時,專家系統(tǒng)的研究開始應用于農(nóng)作物病蟲害的診斷,如1978年美國伊利諾斯大學開發(fā)的大豆病蟲害診斷系統(tǒng)PLANT/ds以及1983年日本千葉大學研制的番茄病蟲害診斷專家系統(tǒng)MTCCS等。雖然研究了這么多的農(nóng)作物病蟲害診斷專家系統(tǒng),但是真正實用的寥寥無幾。比如在1990年到2001年的CAB數(shù)據(jù)庫中,以pestdiagnosis為關鍵詞檢索,僅檢索到十幾篇。較為成熟產(chǎn)品中最具有代表性的是澳大利亞昆上蘭大學、國際水稻研究以及浙江大學植保系(程家安等)聯(lián)合開發(fā)的用于水稻病蟲害綜合治理的病蟲害診斷系統(tǒng)(RiceIPM),這個系統(tǒng)的內(nèi)容包括了病蟲害的危害特點、信息、識別特征以及防止措施防范等。在國內(nèi),1997-1999年,浙江大學植保系與澳大利亞昆士蘭大學聯(lián)合開發(fā)的農(nóng)作物檢疫決策系統(tǒng)[6](QPM),該系統(tǒng)由知識庫、LucID子系統(tǒng)包括Player和Builder兩個子系統(tǒng),它以檢查表方式進行分類、鑒定。QPM系統(tǒng)對每個檢疫對象的知識包括分類地位、圖文信息、侵染和傳播途徑、傳播途徑、形態(tài)描述、為害性,生物學特性、檢驗方法以及防止措施、地域分布圖等。農(nóng)業(yè)專家系統(tǒng)技術應用最早的是農(nóng)作物病蟲害診斷系統(tǒng),也是最為活躍的領域,有著良好的基礎和發(fā)展前景。已經(jīng)在農(nóng)作物病蟲害綜合管理中發(fā)揮了重要的輔助決策作用有:蔣平安等的新疆棉花病蟲害管理專家系統(tǒng),莊鐵成等的大豆病蟲害診斷專家系統(tǒng),于艷的黑龍江省水稻病蟲害診斷專家系統(tǒng),陳愷等的安徽水稻病蟲害診斷專家系統(tǒng)等。1.3課題的主要研究內(nèi)容本個系統(tǒng)的主要研究的內(nèi)容是用來解決專家系統(tǒng)中的農(nóng)作物病蟲害診斷系統(tǒng)的構(gòu)建以及關鍵技術。對病蟲害的發(fā)病和癥狀特點進行分析,應用農(nóng)業(yè)專家系統(tǒng)理論和專家推理進行農(nóng)作物病蟲害診斷,主要從以下方面展開了研究:(1)通過咨詢專家以及有經(jīng)驗的農(nóng)民,收集和整理農(nóng)作物病蟲害的發(fā)病和癥狀特點,對這些特征用規(guī)則庫表示,來推理診斷農(nóng)作物病蟲害,并對診斷出的結(jié)果推薦相應的防治措施。(2)結(jié)合農(nóng)作物生長的實際情況和病蟲害的發(fā)病和癥狀特點,總結(jié)出一種產(chǎn)生式和數(shù)據(jù)庫技術相結(jié)合的基于數(shù)據(jù)庫的產(chǎn)生式知識表示方法。(3)研究將已經(jīng)收集到的有關農(nóng)作物病蟲害的信息以及推理機在開發(fā)平臺上設計與實現(xiàn)。1.4論文的組織結(jié)構(gòu)本論文的組織結(jié)構(gòu)如下:第一章:研究課題的背景和意義,對課題的國內(nèi)外研究現(xiàn)狀,課題研究的主要內(nèi)容進行概述第二章:對課題的核心機制進行研究。第三章:講述了系統(tǒng)總體設計分析。第四章:講述了系統(tǒng)的數(shù)據(jù)庫設計,給出數(shù)據(jù)庫E-R圖。第五章:講述了系統(tǒng)實現(xiàn)設計,對界面的功能進行介紹。第六章:結(jié)束語,總結(jié)全文以及對未來的期望。

2、核心機制研究專家系統(tǒng)是人工智能應用研究方面的一個重要分支,專家系統(tǒng)的開發(fā)在70年代中期取得成功,專家系統(tǒng)在80年代在全世界得到迅速發(fā)展和廣泛應用。就像費根鮑姆(專家系統(tǒng)的先驅(qū))所說的:專家系統(tǒng)的力量是從它處理的知識中產(chǎn)生的,而不是從某種形式主義及其使用的參考模式中產(chǎn)生的[7]。這正體現(xiàn)了一句名言:知識就是力量。計算機程序最能體現(xiàn)專家系統(tǒng)的實質(zhì),它能夠用人類專家的水平完成某一專業(yè)領域中最困難的任務。在分析設計專家系統(tǒng)時,設計師的任務就是使計算機盡可能模擬人類專家運用他們所知道的知識和經(jīng)驗來解決實際問題的方法、技巧和步驟。2.1專家系統(tǒng)的特點專家系統(tǒng)具有以下特點:(1)啟發(fā)性專家系統(tǒng)能運用專家的知識與經(jīng)驗進行推理,對問題進行判斷和決策。(2)透明性專家系統(tǒng)能夠解釋推理過程和回答用戶提出的問題,用戶無需了解推理過程,就能從專家系統(tǒng)獲得問題的結(jié)論,提高對專家系統(tǒng)的信賴感。如一個農(nóng)作物病蟲害專家診斷某種農(nóng)作物患有青蟲,而且必須使用某種殺蟲劑治療,就像一位農(nóng)業(yè)專家對農(nóng)民詳細解釋農(nóng)作物病情,并給予建議防治措施一樣。專家系統(tǒng)是如何實現(xiàn)這些問題的解釋對用戶也是透明的。(3)靈活性專家系統(tǒng)能夠不斷地獲取新的知識,修改原有的知識。不斷更新。因為這一特點,使得專家系統(tǒng)具有十分廣泛的應用領域。2.2.專家系統(tǒng)的結(jié)構(gòu)選擇什么結(jié)構(gòu)最為合適,要根據(jù)應用環(huán)境和所要做的任務來確定。選擇恰當與否的系統(tǒng)結(jié)構(gòu),與專家系統(tǒng)的適用性和效率緊密相連。專家系統(tǒng)的基本結(jié)構(gòu)[8]包括知識庫、推理機、全局數(shù)據(jù)庫、人機接口、解釋器這五個部分(如圖2-1)。它們的功能如下:圖2-1專家系統(tǒng)結(jié)構(gòu)圖(1)知識庫知識庫是用來存儲領域?qū)<业闹R。要建立知識庫之前,要先從專家那里獲取知識和知識用計算機能理解的形式表示。(2)推理機從知識庫中選擇匹配的規(guī)則,來對問題進行推理、分析和求解。(3)全局數(shù)據(jù)庫全局數(shù)據(jù)庫(GlobalDatabase)用于存儲問題求解的信息,推理過程和求解結(jié)果的數(shù)據(jù)。(4)人機接口人機接口(Interface)是系統(tǒng)與用戶進行對話的界面。用戶通過人機接口輸入數(shù)據(jù)、提出問題和得到推理結(jié)果及系統(tǒng)給出解釋。系統(tǒng)通過人機接口來規(guī)定用戶要回答系統(tǒng)提出的問題。(5)解釋器解釋器用于對求解過程進行解釋,做到讓用戶相信對問題的求解是正確的。2.3知識庫構(gòu)建知識庫的構(gòu)建是專家系統(tǒng)的核心問題之一,所謂“知識庫”包括兩個方面的問題,一是從什么地方獲取知識,二是用什么方法來組織、表示知識。知識庫主要用來存儲專家的知識,知識庫中的知識為推理機提供問題求解的知識。2.3.1知識獲取知識獲取是一個與領域?qū)<?、知識工程師以及專家系統(tǒng)自身都密切相關的復雜問題,由于各方面的原因,至今仍然是一件相當困難的工作,被公認是專家系統(tǒng)建造中的一個“瓶頸”問題[9]。知識獲取是指將從專家和資料中那里獲得的知識,按照合適的知識表示方法將它們存入知識庫中。知識獲取的目的是為專家系統(tǒng)獲取知識,建立健全、完善、有效的知識庫,做到可以對知識庫進行更行與修改,維護知識庫的完善。知識的獲取有兩類:被動式或主動式。被動式知識獲取是工程師用知識編輯器,把收集到的知識整理好,以正確的形式交給知識處理系統(tǒng)。由于專家掌握的知識和能存儲于計算機的知識形式之間存在很大的差異,所以工程師與專家要多次交換意見、密碼配合才能做到使知識庫正確的表達專家知識。主動式知識獲取是知識處理系統(tǒng)根據(jù)專家自己的知識和經(jīng)驗,用歸納工具直接自動獲取或產(chǎn)生知識,再存入知識庫。這種方法要求專家按照對話界面的要求輸入知識。知識獲取需要完成的工作如圖2-2所示:圖2-2知識獲取工作圖2.3.2知識表示合適的知識表示方法能夠使問題更容易解決,是一個專家系統(tǒng)成功的關鍵。到現(xiàn)在比較經(jīng)常使用的知識表示方法有:框架表示法、一階謂詞邏輯表示法、語義網(wǎng)絡表示法、產(chǎn)生式表示法、面向?qū)ο蟊硎痉?。農(nóng)作物病蟲害診斷系統(tǒng)是農(nóng)業(yè)專家系統(tǒng)中最常見的,每一種農(nóng)作物病蟲害都有它特定的病狀,而且多種病蟲害有共同的一條病狀,所以病蟲害與病狀之間形成了一個復雜的網(wǎng)狀關系。本系統(tǒng)中將農(nóng)作物病蟲害的所有癥狀都進行細化分類和歸納總結(jié),形成知識庫,存放入數(shù)據(jù)庫的表中。將知識存儲在數(shù)據(jù)庫中有利于知識庫后期的維護,可以及時對規(guī)則進行增刪改查,使系統(tǒng)擁有完善、準確的知識庫。知識存入數(shù)據(jù)庫的流程圖如2-3所示:圖2-3存儲知識流程圖結(jié)合農(nóng)作物病蟲害的癥狀特點,采用目前比較常使用的產(chǎn)生式規(guī)則表示法。產(chǎn)生式規(guī)則表示法通常用于表示具有因果關系的知識,它的基本形似是[10]:IF<條件1,條件2,……,條件N>THEN<表達式>其中<條件1,條件2,……,條件N>是產(chǎn)生式的前提條件,用于指出該產(chǎn)生式是否為可用的條件;<表達式>是產(chǎn)生式的后件,是一組結(jié)論獲操作。用于指出當條件滿足時,可用得出的結(jié)論或應該執(zhí)行的操作。多個產(chǎn)生式在一起,可以互相利用,這個產(chǎn)生式的結(jié)論可以作為另一個產(chǎn)生式的條件使用。產(chǎn)生式由規(guī)則庫、綜合數(shù)據(jù)庫和推理機組成。將收集到的知識整理成一條條有前提條件和結(jié)論的規(guī)則,存入綜合數(shù)據(jù)庫中,推理機對事實與結(jié)論進行匹配推理。產(chǎn)生式表示法主要有以下優(yōu)點[11]:①自然性產(chǎn)生式表示法用“if……then……”的形式表示知識,這是人們常用的一種表達事物英國關系的知識表示形式,它可以直觀、自然、方便地進行推理。這就是在人工智能系統(tǒng)中常用產(chǎn)生式表示法來表示知識的原因。②模塊性產(chǎn)生式是規(guī)則庫中最基本的部分,規(guī)則庫與推理機分開,而且每條規(guī)則都有一樣的表示形式,這就方便用于增、刪、改、查,為規(guī)則庫模塊化處理帶來方便。③有效性產(chǎn)生式可以把從專家那里收集到的知識用相同的知識表示方法有效地表示。④清晰性本系統(tǒng)的產(chǎn)生式的規(guī)則中的事實與事實、事實與結(jié)論間都用逗號隔開,結(jié)論統(tǒng)一放在最后面,這可以清晰的表示規(guī)則,還可以保證規(guī)則的正確性。2.3.3規(guī)則示例例如,在農(nóng)作物病蟲害診斷系統(tǒng)中有這樣一些規(guī)則:If先部分葉黃化后萎蔫Then軟腐病If通光體無毛,葉表面蠟質(zhì)層,老熟幼蟲化成蛹Then美洲斑潛蠅If白色粉狀霉斑,葉片焦枯變脆Then白粉病If葉黃化萎蔫,根部軟化腐爛,外臭溢汁液Then軟腐病If病株矮化,葉脈現(xiàn)黃斑,提早干枯死亡Then黃化病If斑駁花葉或嚴重皺縮花葉,植株斑駁或矮化Then花葉病毒病If貯藏時呈水漬狀或灰色霉狀物,逐漸爛腐Then胡蘿卜灰霉病If肉質(zhì)根縱向開裂Then胡蘿卜裂根If根頸部長出白色菌絲,灰白色至黃褐色小菌核Then胡蘿卜白絹病If根系產(chǎn)生褐斑,后期整個肉質(zhì)根腐爛,病株萎蔫Then胡蘿卜根腐這些規(guī)則then前面部分表示前提條件,then后面部分表示結(jié)論,當前提條件都滿足時,才可以推出結(jié)論。規(guī)則中的每個事實用逗號隔開存入數(shù)據(jù)庫中,在推理前,先創(chuàng)建事實庫,從數(shù)據(jù)庫獲取規(guī)則,并初始化原始規(guī)則。原始規(guī)則中前提和結(jié)論結(jié)合在一起,這就得初始化規(guī)則庫,使每個用逗號隔開的事實用字符串數(shù)組的集合表示。這時就該對規(guī)則庫中事實進行初始化字典,去除重復值,并對輸入的事實進行檢查,如果新輸入的事實在字典中有存在,則合法寫入事實庫中,不存在則去除該事實。處理事實流程圖如下所示:圖2-4事實處理流程圖2.4推理機的設計推理機是專家系統(tǒng)的推理執(zhí)行部件,它也是專家系統(tǒng)的核心部件之一,推理機制的優(yōu)越程度關系到整個系統(tǒng)的成敗。推理機工作的原理是根據(jù)用戶輸入的事實,從數(shù)據(jù)庫中讀取相關數(shù)據(jù)源,按一定的推理方法和控制策略進行推理,最后將結(jié)果返回用戶,推理機的工作原理如圖2-5所示。圖中的動態(tài)數(shù)據(jù)庫是存儲用戶輸入的事實,讓推理機用輸入的事實和知識庫中的規(guī)則條件進行匹配,從而得出結(jié)論;規(guī)則庫是存儲從專家領域那里得出的知識,經(jīng)過整理的規(guī)則;推理控制機是推理機的核心部分,主要職責是將動態(tài)數(shù)據(jù)庫中的事實與規(guī)則庫中的規(guī)則進行匹配以得出結(jié)論。圖2-5推理機工作原理示意圖系統(tǒng)的推理機模型有正向推理、反向推理和雙向推理三種典型策略。正向推理是從已知的事實開始,在知識庫中找到匹配的事實,構(gòu)成事實庫,再按照某種策略從事實庫中選取事實進行推理,并將新事實假如到事實庫中,作為下一步推理的已知事實,然后從知識庫中選出有效的事實進行推理,反復進行這些過程,直至得到所要的知識。反向推理也叫目標驅(qū)動,是本系統(tǒng)采用的推理策略。反向推理的基本思想是:首先選定一個假設目標,然后尋找支持該假設的證據(jù),若所需的證據(jù)都能找到,則說明原假設是成立的;若無論如何都找不到所需要的證據(jù),則說明原假設不成立,此時需要另外選定新的假設[12]。反向推理流程如下圖2-6所示。雙向推理就是正、反向推理的混合使用。圖2-6反向推理流程圖2.4.1推理機的算法設計推理機制的主要部分就是推理方法[13]。本系統(tǒng)所用的反向推理,反向推理是正向推理的逆過程,本系統(tǒng)推理的基本實現(xiàn)是:首先假設結(jié)論為某一種病蟲害的結(jié)論為推理網(wǎng)絡中的某個頂層節(jié)點,放入假設堆棧,然后從規(guī)則庫中找出其結(jié)論部分能與假設相匹配的所有規(guī)則,得出一個可用事實庫,從可用事實其中選取一條事實驗證其前提部分。如果這條規(guī)則中的所有前提條件都和用戶輸入的事實匹配,則這條事實推理成功,在界面上輸出結(jié)論;如果這條規(guī)則中的某個前提條件和用戶輸入的事實不符,則該推理不成功,繼續(xù)執(zhí)行下一條推理。在本系統(tǒng)中的推理過程如圖2-4、2-5所示,其中i為待推理事實中的字段序號,j為知識庫中的規(guī)則序號,I為待推理事實中的記錄總數(shù),J為規(guī)則庫中的規(guī)則總數(shù)。圖2-4推理過程圖a整個推理過程就像一個遞歸搜索過程,在知識庫中已經(jīng)有了較為嚴格規(guī)定的規(guī)則,所以推理時只需查找到推理的事實與結(jié)論部分相符合的規(guī)則,就可以成功推理。

3、系統(tǒng)總體設計分析3.1需求分析需求分析是系統(tǒng)開發(fā)過程的第一步,需求分析的優(yōu)劣會影響到系統(tǒng)開發(fā)的效率,所以越詳細的需求工作越好[14]。需求分析一般包括了解本系統(tǒng)開發(fā)的背景,在信息收集的基礎上確定系統(tǒng)開發(fā)的可行性,進行業(yè)務調(diào)查和分析,了解工作流程和用戶的功能需求,確定系統(tǒng)開發(fā)的總體方案,明確目標系統(tǒng)要達到的目標和系統(tǒng)開發(fā)的總體思路及開發(fā)所需的時間等。農(nóng)作物病蟲害診斷系統(tǒng)重點是開發(fā)專門的應用系統(tǒng),提高辦公自動化程度;開發(fā)農(nóng)作物病蟲害診斷系統(tǒng),實現(xiàn)病蟲害診斷電子化管理,促進病蟲害信息收集整理的標準化、規(guī)范化和系統(tǒng)化;構(gòu)建農(nóng)作物病蟲害診斷系統(tǒng),滿足廣大農(nóng)民的需求,形成病蟲害診斷現(xiàn)代化信息系統(tǒng)。3.1.1用戶需求分析本系統(tǒng)適用于各類人員,如農(nóng)民、農(nóng)業(yè)專家等。不用的用戶對系統(tǒng)的需求有所不同。農(nóng)民本系統(tǒng)的直接受益方,農(nóng)民主要是種植農(nóng)作物,擁有豐富的種植經(jīng)驗,但有些農(nóng)民十分缺乏對于病蟲害的診斷和防治。因此他們需要有一個容易操作的人機界面系統(tǒng)來診斷農(nóng)作物病蟲害,并得到相應的防治信息。如用例圖所示:圖3-1農(nóng)民用例②農(nóng)業(yè)專家本系統(tǒng)的農(nóng)業(yè)知識大部分都來自農(nóng)業(yè)專家提供的,他們擁有豐富的農(nóng)作物病蟲害診斷經(jīng)驗,他們對系統(tǒng)的構(gòu)建起到監(jiān)督作用,因此他們需要構(gòu)建出來的系統(tǒng)是一個具有完善、準確的系統(tǒng)來診斷農(nóng)作物病蟲害。圖3-2農(nóng)業(yè)專家用例3.1.2初步設計分析系統(tǒng)的目標是構(gòu)建一個能夠準確診斷農(nóng)作物病蟲害及提供相應防治方法的專家系統(tǒng),使用戶能夠及時的通過專家系統(tǒng)的人機界面診斷農(nóng)作物病蟲害,并做治療處理。本系統(tǒng)提供準確、完整的農(nóng)作物信息,管理員登錄到系統(tǒng)后臺,在可用的時間內(nèi)可以對農(nóng)作物信息進行增刪改查。以統(tǒng)一規(guī)劃、分布實施的思想為指導,遵循的設計原則有:系統(tǒng)性原則、信息集成原則、信息通用原則、面向業(yè)務原則、開放性原則、安全性原則、可伸縮性原則、高可靠性原則、易操作性原則、體系結(jié)構(gòu)延展性原則。3.2系統(tǒng)功能需求分析3.2.1系統(tǒng)功能層次模塊圖圖:3-4系統(tǒng)功能模塊圖3.2.2系統(tǒng)功能需求分析本系統(tǒng)主要分為六大功能模塊:農(nóng)作物信息管理、病害信息管理、蟲害信息管理、病蟲害診斷、在線留言、知識庫管理。農(nóng)作物信息管理:主要是完成農(nóng)作物基本信息的一些操作,包括對農(nóng)作物信息的增加、修改以及查詢功能。圖3-5農(nóng)作物信息管理需求圖病害信息管理:根據(jù)不同農(nóng)作物對應的病害信息進行添加、修改、刪除和查詢。圖3-6病害信息管理需求圖蟲害信息管理:與不同農(nóng)作物對應的蟲體的形狀、為害特點進行蟲害信息的添加、修改、刪除和查詢。圖3-7蟲害信息管理需求圖病蟲害診斷:主要是通過輸入的事實,完成病蟲害的診斷。圖3-8病蟲害診斷需求圖在線留言:訪問者可以在線留言,管理者進入后臺,可以恢復留言、刪除留言。圖3-9在線留言需求圖知識庫管理:主要功能是對規(guī)則進行增加、修改、刪除。圖3-10知識庫管理需求圖3.3系統(tǒng)性能需求分析3.3.1靈活性系統(tǒng)應具有較靈活的更新操作,對操作后數(shù)據(jù)庫的內(nèi)容進行有選擇地添加、修改和刪除,必要時對數(shù)據(jù)庫系統(tǒng)的部分信息進行初始化。3.3.1時間特性要求說明對于該系統(tǒng)的時間特性要求,如下:①響應時間:視網(wǎng)絡情況,等待時間不超過5秒;②更新處理時間:不超過10秒;③數(shù)據(jù)的轉(zhuǎn)換和傳送時間:不超過5秒。

4、數(shù)據(jù)庫總體設計數(shù)據(jù)庫設計的設計是指在需求分析的基礎上,設計出各個表結(jié)構(gòu)的設計,包括各個表保存的信息、各個表的結(jié)構(gòu)以及各個表之間的關系 [15]。4.1數(shù)據(jù)庫E-R圖圖4-1為數(shù)據(jù)庫E-R圖,圖中給出了農(nóng)作物、農(nóng)作物病害、農(nóng)作物蟲害、規(guī)則等表的E-R圖,也根據(jù)系統(tǒng)實現(xiàn)的需要,定義這些表所包含的信息。其中農(nóng)作物病害、農(nóng)作物蟲害、規(guī)則表都有一個統(tǒng)一的外鍵“農(nóng)作物編號”。一種農(nóng)作物可以有多條規(guī)則,但是一條規(guī)則只能對應一種農(nóng)作物;一種農(nóng)作物會患多種病害,一種病害也可以對應多種農(nóng)作物;一個農(nóng)作物會患有多種蟲害,一種蟲害也可以在多種農(nóng)作物上生長。圖4-1數(shù)據(jù)庫E-R圖4.2數(shù)據(jù)表的詳細設計本系統(tǒng)的數(shù)據(jù)庫關系模式如下:農(nóng)作物信息表(農(nóng)作物編號、農(nóng)作物名稱、類別、描述、狀態(tài)、圖片名稱),主鍵:農(nóng)作物編號;農(nóng)作物病害表(病害編號、病害名稱、農(nóng)作物編號、發(fā)病時期、發(fā)病部位、癥狀、發(fā)病原因、防治措施、病害圖、狀態(tài)),主鍵:病害編號,外鍵:農(nóng)作物編號;留言表(編號、留言人名稱、留言時間、留言內(nèi)容、是否有回復、回復內(nèi)容)主鍵:編號;鏈接表(編號、名稱、鏈接地址、logo圖標),主鍵:編號;用戶信息表(編號、用戶名、密碼)主鍵:編號;農(nóng)作物蟲害信息表(蟲害編號、蟲害名稱、農(nóng)作物編號、蟲體形狀、為害特點、生活習性、防治措施、蟲害圖、狀態(tài))主鍵:蟲害編號,外鍵:農(nóng)作物編號;病蟲害規(guī)則表(編號、農(nóng)作物編號、類別、規(guī)則、結(jié)論),主鍵:編號,外鍵:農(nóng)作物編號。根據(jù)數(shù)據(jù)E-R圖和關系模式設計數(shù)據(jù)庫,數(shù)據(jù)庫表的詳細設計如下表4-1Crops(農(nóng)作物信息表)是否主鍵名稱字段類型是否為空是否唯一長度默認值備注MERGEFIELDAtt.PKTrueMERGEFIELDAtt.NameCropIDMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullTrueMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length20MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes農(nóng)作物編號MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameCropNameMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length20MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes農(nóng)作物名稱MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameCategoryMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length30MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes類別MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameDescriptionMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length2000MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes描述MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameStateMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length50MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes是否為可用MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameImageMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length50MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes圖片名稱表4-2Disease(病害信息表)是否主鍵名稱字段類型是否為空是否唯一長度默認值備注MERGEFIELDAtt.PKTrueMERGEFIELDAtt.NameDIDMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullTrueMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length20MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes病害編號MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameDiseaseNameMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length20MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes病害名MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameCropIDMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length20MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes農(nóng)作物編號MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameGetsickTimeMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length50MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes發(fā)病時期MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameGetsickPlaceMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length50MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes發(fā)病部位MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameSymptomMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length2000MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes癥狀MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameGetsickReasonMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length2000MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes發(fā)病原因MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameCureMeasureMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length2000MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes防治措施MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameDiseaseImageMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length50MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes病害圖MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameStateMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length10MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes是否為可用表4-3Lianjie(友情鏈接表)是否主鍵名稱字段類型是否為空是否唯一長度默認值備注MERGEFIELDAtt.PKTrueMERGEFIELDAtt.NameIDMERGEFIELDAtt.TypeintMERGEFIELDAtt.NotNullTrueMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.LengthMERGEFIELDAtt.Default1MERGEFIELDAtt.Notes編號MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameMingchengMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length50MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes名稱MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameLianjieMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length100MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes鏈接MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameLogoMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length50MERGEFIELDAtt.DefaultMERGEFIELDAtt.NotesLogo圖表4-4Login(用戶表)是否主鍵名稱字段類型是否為空是否唯一長度默認值備注MERGEFIELDAtt.PKTrueMERGEFIELDAtt.NameIDMERGEFIELDAtt.TypeintMERGEFIELDAtt.NotNullTrueMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.LengthMERGEFIELDAtt.Default1MERGEFIELDAtt.Notes編號MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameUserNameMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length10MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes用戶名MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameUserPasswordMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length10MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes密碼表4-5Pest(蟲害信息表)是否主鍵名稱字段類型是否為空是否唯一長度默認值備注MERGEFIELDAtt.PKTrueMERGEFIELDAtt.NamePIDMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullTrueMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length20MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes編號MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NamePestNameMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length50MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes蟲害名MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameCropIDMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length20MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes農(nóng)作物編號MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameWormShapeMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length500MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes蟲狀MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameInjuryCharactersMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length2000MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes為害特點MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameLifeHabitMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length500MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes生活習性MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameCureMeasureMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length2000MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes防治措施MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NamePestImageMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length50MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes蟲害圖名MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameStateMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length10MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes是否可用表4-6Rules(規(guī)則表)是否主鍵名稱字段類型是否為空是否唯一長度默認值備注MERGEFIELDAtt.PKTrueMERGEFIELDAtt.NameRIDMERGEFIELDAtt.TypeintMERGEFIELDAtt.NotNullTrueMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.LengthMERGEFIELDAtt.Default1MERGEFIELDAtt.Notes編號MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameCropIDMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length20MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes農(nóng)作物編號MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameClassMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length10MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes類型MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameRulesMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length2000MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes規(guī)則MERGEFIELDAtt.NotNullFalseResultMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.NotNullFalse50結(jié)論表4-7gestbook(留言本表)是否主鍵名稱字段類型是否為空是否唯一長度默認值備注MERGEFIELDAtt.PKTrueMERGEFIELDAtt.NameIDMERGEFIELDAtt.TypeintMERGEFIELDAtt.NotNullTrueMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.LengthMERGEFIELDAtt.Default1MERGEFIELDAtt.Notes編號MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameusernameMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length50MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes留言人名稱MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NamePostTimeMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length50MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes留言時間MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NamemessageMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length2000MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes留言內(nèi)容MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NameisrepliedMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length50MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes有無回復MERGEFIELDAtt.PKFalseMERGEFIELDAtt.NamereplyMERGEFIELDAtt.TypevarcharMERGEFIELDAtt.NotNullFalseMERGEFIELDAtt.UniqueFalseMERGEFIELDAtt.Length2000MERGEFIELDAtt.DefaultMERGEFIELDAtt.Notes回復內(nèi)容4.3數(shù)據(jù)庫表關系圖本系統(tǒng)的數(shù)據(jù)表Crops是關于農(nóng)作物的基本信息,Disease是病害信息表,Pest是蟲害信息表,Rules是規(guī)則表,病害表、蟲害表、規(guī)則表的外鍵都是農(nóng)作物信息表的編號(CropID)。此外還有用戶表(Login)、留言板表(gestbook)、友情鏈接表(Lianjie),它們都是獨立的,沒有跟其他表有主外鍵關聯(lián)。數(shù)據(jù)庫表的關系圖如下:圖4-2數(shù)據(jù)庫表關系圖a圖4-3數(shù)據(jù)庫表關系圖b

5、系統(tǒng)實現(xiàn)5.1界面及功能說明5.1.1前臺界面模塊本系統(tǒng)的主界面(如圖5-2):系統(tǒng)的首頁主要是顯示各個模塊的部分信息,如顯示農(nóng)作物的名稱、圖片,病害和蟲害名稱。將部分大家都經(jīng)常訪問的網(wǎng)址做成友情鏈接、小型的天氣預報,方便用戶使用。圖5-1訪問前臺界面流程圖5-1系統(tǒng)主界面圖5.2.2病蟲害診斷界面本頁是用來診斷農(nóng)作物病蟲害的信息的,用戶在界面上選擇農(nóng)作物的品種、病害或者蟲害,再根據(jù)提供的所有事實,從中抽取合適的作為診斷的事實,每個事實間用“,”分隔,最后點擊“開始診斷”即可診斷出病/蟲害。圖5-2病蟲害診斷圖5.2.3系統(tǒng)后臺界面后臺界面:通過后臺可以對系統(tǒng)管理者、農(nóng)作物、病害信息、蟲害信息、友情鏈接、留言本、規(guī)則庫等進行管理,如增加、修改、刪除等操作。界面的右上角有一個用session做成的,當哪個管理員登錄后臺,就顯示用戶名,下面是進入系統(tǒng)前臺界面的超級鏈接。圖5-3系統(tǒng)后臺界面流程圖圖5-4后臺主頁5.3示例代碼5.3.1類庫示例代碼本段類庫代碼包含了創(chuàng)建數(shù)據(jù)庫連接、打開連接、建立dataset存儲記錄集合、異常處理、關閉連接。將數(shù)據(jù)庫連接語句寫在類庫里面,編程時就可以直接引用,不用每個地方都得編寫數(shù)據(jù)庫連接語句。本段代碼主要用在數(shù)據(jù)集合中,當需要將數(shù)據(jù)填充到表中,用本段可以快速地的編寫。///<summary>///返回個DataTable///</summary>///<paramname="strSql"></param>///<returns>DataTable</returns>publicDataTableExecuteTable(stringstrSql){//創(chuàng)建一個數(shù)據(jù)庫連接stringconnStr=System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ToString();SqlConnectionconn=newSqlConnection(connStr);try{conn.Open();//打開連接SqlDataAdapteradapter=newSqlDataAdapter(strSql,conn);//請求一個記錄集合DataSetds=newDataSet();//建立DataSet對象adapter.Fill(ds);//把記錄集合暫存到DataSet中DataTabledt=ds.Tables[0];returndt;}catch(Exceptionex){throwex;//異常處理}finally{conn.Dispose();//關閉連接}}5.3.2后臺示例代碼本段代碼主要用于添加新規(guī)則時的重要代碼,點擊添加按鈕時,如果文本框是空白的,會彈出對話框提示“信息不能為空”。如果規(guī)則已經(jīng)存在,則重新返回本界面。代碼中出現(xiàn)的“helper.ExecuteScalar”在類庫代碼中已經(jīng)封裝好類了,這樣可以方便后期開發(fā),節(jié)省時間。///<summary>///添加新規(guī)則///</summary>///<paramname="sender"></param>///<paramname="e"></param>protectedvoidbtnAdd_Click(objectsender,EventArgse){if(txtRule.Text==""){Response.Write("<scriptlanguage='javascript'>alert('信息不能為空');window.history.back()</script>");}else{stringstrSql=string.Format(@"selectcount(*)fromRuleswhereRules='{0}'",txtRule.Text);if(Convert.ToInt32(helper.ExecuteScalar(strSql))>0){Response.Write("<scriptlanguage='javascript'>alert('規(guī)則已存在');window.history.back()</script>");}else{strSql=string.Format(@"insertintoRules(CropID,Rules)values('{0}','{1}')",DDLName.Text,txtRule.Text);helper.ExecuteSQL(strSql);Response.Write("<scriptlanguage='javascript'>alert('添加新規(guī)則成功');location.href='RuleManage.aspx'</script>");}}}5.3.3實現(xiàn)農(nóng)作物病蟲害診斷示例代碼本段代碼是主要描述點擊開始診斷按鈕事件的代碼,①判斷文本框的值是否為空,為空則返回該界面;②將用戶輸入的事實用逗號分隔開,并加入事實庫中;③提取規(guī)則庫中的的結(jié)論部分,放入數(shù)組中,然后使用foreach進行循環(huán),根據(jù)每個結(jié)論進行逆向推理。④將診斷結(jié)果顯示出來publicvoidbtnDiagnose_Click(objectsender,EventArgse){if(txtFact.Text==""){Response.Write("<scriptlanguage='javascript'>alert('信息不能為空');window.history.back()</script>");}else{//將輸入事實用逗號分隔開,并加入事實庫stringshishi=txtFact.Text;string[]str=shishi.Split(',');foreach(stringtempinstr){machine.AddFact(temp);}//先把病蟲害寫在數(shù)組中。然后使用foreach進行循環(huán),根據(jù)每個病蟲害用逆向推理。machine.AddFact(shishi);stringstrSql=string.Format(@"selectResultfromRuleswhereCropID='"+DDLCrop.SelectedValue+"'andClass='"+DDLClass.SelectedValue+"'");DataTabledt=helper.ExecuteTable(strSql);for(inti=0;i<dt.Rows.Count;i++){conslu.Add(dt.Rows[i][0].ToString());}foreach(stringresultinconslu){boolb=machine.CallMachine(result);if(true==b){if(DDLClass.Sel

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論