版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 河北農(nóng)業(yè)大學(xué)信息學(xué)院</p><p><b> 本科畢業(yè)論文</b></p><p> 題 目: 中國棗病蟲害診斷系統(tǒng) </p><p> 學(xué) 院: 信息科學(xué)與技術(shù)學(xué)院 </p><p> 專業(yè)班級: 計算機科學(xué)與技術(shù)0902班 </p&
2、gt;<p> 學(xué) 號: 2009234010216 </p><p> 學(xué)生姓名: 張平 </p><p> 指導(dǎo)教師姓名: 周桂紅 </p><p> 指導(dǎo)教師職稱: 教授 </p><p&
3、gt; 二O一三 年 五 月 二十八 日</p><p><b> 摘 要</b></p><p> Android手機的普及使得一些應(yīng)用軟件得到了很好的推廣,通常一些專家診斷系統(tǒng)都是通過電腦來實現(xiàn),一些偏遠(yuǎn)的地區(qū)互聯(lián)網(wǎng)并沒有被覆蓋,所以這就使得一些棗樹病害得不到及時的治療和防御,本文所研究的棗病蟲害診斷系統(tǒng)是基于以往病蟲害信息和全國專家經(jīng)驗為一體的跨平臺
4、系統(tǒng),android平臺是市場最普及的應(yīng)用平臺,現(xiàn)代手機的高普及率,易用。該系統(tǒng)應(yīng)用于android平臺實現(xiàn)了棗病蟲害診斷能夠隨時掌控,更方便了查詢各種病態(tài)信息。</p><p> 本系統(tǒng)通過嵌入式數(shù)據(jù)庫SQLite存放病蟲害相關(guān)信息,使用java技術(shù)實現(xiàn)本系統(tǒng)兩大功能模塊。在研究本項目之前,首先要搜集相關(guān)病蟲害資料然后進(jìn)一步整理;然后進(jìn)行系統(tǒng)框架圖,系統(tǒng)流程圖的設(shè)計;然后編寫代碼實現(xiàn)每一模塊功能;最后調(diào)試程序
5、,撰寫論文。</p><p> 由于棗病蟲害診斷系統(tǒng)是基于android平臺開發(fā)的單擊系統(tǒng),數(shù)據(jù)庫里邊的病蟲害信息量受到一定的限制。但是對于一些常見的棗病蟲害,此系統(tǒng)可以輕松的診斷此棗樹的病害情況,方便工作人員進(jìn)一步預(yù)防,提高棗的產(chǎn)量。</p><p> 該系統(tǒng)實現(xiàn)了按危害部位和危害時期兩種棗病蟲害診斷功能。</p><p> 關(guān)鍵字:棗病蟲害,專家診斷系統(tǒng)、
6、SQLite數(shù)據(jù)庫、java技術(shù).</p><p><b> Abstract</b></p><p> Due to the popularity of Android mobile phone application software is very good promotion, usually some expert diagnosis system is
7、 realized by computer, some remote areas are not covered by the Internet, so it makes a number of jujube diseases without treatment and defense timely, jujube diseases and insect pest diagnosis system in this paper is th
8、e cross platform system the pest information and the experience of experts as one based on the Android application platform, platform is the most popu</p><p> The system through the SQLite embedded database
9、 to storage pests and diseases related information, the use of Java technology to realize the system are two big function module. Before the study, first of all to collect related plant diseases and insect pests data and
10、 then further consolidation; then the system frame diagram, design the flow chart of the system; and then write code to implement each function module; finally, debugging, writing papers.</p><p> The jujube
11、 Pests Diagnosis System is click system development platform based on Android database inside, the pest information limited. But for some common jujube diseases and insect pest, the jujube disease diagnosis of this syste
12、m can easily, convenient staff to prevent further, improve the yield of jujube.</p><p> The system realizes according to the damage location and damage of two kinds of jujube diseases and Insect Pests Diagn
13、osis function.</p><p> Keywords: jujube diseases and insect pest diagnosis expert system, SQLite, database, Java technology.</p><p><b> 目 錄</b></p><p><b> 1.
14、緒論1</b></p><p><b> 1.1 前言1</b></p><p> 1.2 課題研究的背景及意義1</p><p> 1.3 國內(nèi)外研究概況與發(fā)展趨勢1</p><p> 1.4 設(shè)計的主要工作2</p><p> 1.5 論文組織2</p&
15、gt;<p> 2.開發(fā)環(huán)境和開發(fā)技術(shù)3</p><p> 2.1工具環(huán)境介紹3</p><p> 2.1.1 開發(fā)環(huán)境的選擇3</p><p><b> 2.2開發(fā)技術(shù)3</b></p><p> 2.2.2 java語言簡介3</p><p> 2.2.3
16、SQLite簡介3</p><p><b> 3.需求分析5</b></p><p> 3.1 設(shè)計思想5</p><p> 3.2 可行性分析5</p><p> 3.2.1 操作可行性5</p><p> 3.2.2 技術(shù)可行性6</p><p>
17、 3.2.3 經(jīng)濟可行性6</p><p> 3.3 功能需求6</p><p> 3.3.1 基本功能需求6</p><p> 3.3.2 用戶界面需求7</p><p><b> 4.系統(tǒng)設(shè)計8</b></p><p> 4.1 總體結(jié)構(gòu)設(shè)計8</p>&
18、lt;p> 4.1.1 系統(tǒng)設(shè)計基礎(chǔ)8</p><p> 4.1.2 模塊設(shè)計8</p><p> 4.1.3 系統(tǒng)結(jié)構(gòu)設(shè)計10</p><p> 4.1.4系統(tǒng)邏輯設(shè)計11</p><p> 4.1.5系統(tǒng)流程12</p><p> 4.2 數(shù)據(jù)庫設(shè)計12</p><
19、p> 4.2.1 數(shù)據(jù)庫簡介12</p><p> 4.2.2 物理結(jié)構(gòu)設(shè)計13</p><p><b> 5.系統(tǒng)實現(xiàn)14</b></p><p> 5.1設(shè)計主界面14</p><p> 5.2系統(tǒng)各個模塊功能14</p><p> 5.2.1果樹成長時期診斷14
20、</p><p> 6.系統(tǒng)綜合測試21</p><p> 6.1按發(fā)生蟲害部位測試21</p><p><b> 7.結(jié)束語25</b></p><p><b> 7.1 總結(jié)25</b></p><p> 7.2 心得體會25</p>&
21、lt;p><b> 致謝26</b></p><p><b> 參考文獻(xiàn)27</b></p><p><b> 1.緒論</b></p><p><b> 1.1 前言</b></p><p> 棗樹病蟲害的增加,使得大棗的產(chǎn)量逐年降低
22、,為了解決這一現(xiàn)象研發(fā)的基于android平臺的棗病蟲害診斷系統(tǒng)可以輕松的掌握病害信息,及時的診斷棗樹的病害情況。以往病蟲害防治主要依靠農(nóng)業(yè)專家和農(nóng)技人員的現(xiàn)場指導(dǎo),但生產(chǎn)實踐中棗農(nóng)的知識需求與專家的知識供給之間存在技術(shù)斷層,互聯(lián)網(wǎng)的接入在一些偏遠(yuǎn)的山區(qū)農(nóng)村還沒有普及,基于Web的棗病蟲害診斷專家系統(tǒng)使用受到了限制??紤]到現(xiàn)代手機的高普及率易用,將棗病蟲害診斷專家系統(tǒng)應(yīng)用于android平臺之上,該設(shè)計實現(xiàn)了棗病蟲害診斷能夠隨時掌控。&
23、lt;/p><p> 1.2 課題研究的背景及意義</p><p> 基于web的棗病蟲害診斷系統(tǒng)的適用范圍是已經(jīng)接入互聯(lián)網(wǎng)的地方,而中國山區(qū)比較多,互聯(lián)網(wǎng)的覆蓋范圍還為涉及到一偏遠(yuǎn)的山區(qū),這種情況下就使得很多務(wù)農(nóng)因為無法確診棗樹病蟲害信息而耽誤了其診斷的時機,最后導(dǎo)致棗的產(chǎn)量和品質(zhì)降低,每年給農(nóng)民帶來巨大的經(jīng)濟損失。為了能夠及時的了解棗樹的病害信息,將手機作為棗病蟲害診斷系統(tǒng)研發(fā)的平臺,
24、手機是人們?nèi)粘I钪胁豢苫蛉钡囊粯庸ぞ撸强紤]到現(xiàn)代手機的高普及率易用,將棗病蟲害診斷專家系統(tǒng)應(yīng)用于android平臺之上,該設(shè)計實現(xiàn)了棗病蟲害診斷能夠隨時掌控。</p><p> 雖然說大學(xué)四年點點滴滴的積累,對于我來說不是很滿足,但是通過此次設(shè)計我們得到的不僅僅是一張畢業(yè)證,此次設(shè)計是我們四年的結(jié)晶,四年理論知識的積累讓我們對未來不是很明確,此次設(shè)計正是我們從校園理論到社會實踐的過渡階段。</p&g
25、t;<p> 通過畢業(yè)設(shè)計,不僅使我對棗病蟲害有一定的了解,而且還鞏固、擴大、加深了以前所學(xué)的知識,培養(yǎng)綜合運用已有知識獨立解決問題的能力。</p><p> 1.3 國內(nèi)外研究概況與發(fā)展趨勢</p><p> 將信息技術(shù)廣泛應(yīng)用為基礎(chǔ)的現(xiàn)代農(nóng)業(yè),在美國,日本等許多發(fā)達(dá)國家已取得長足發(fā)展。目前國際上有好多農(nóng)業(yè)專家系統(tǒng),廣泛應(yīng)用與生產(chǎn)管理,品種選擇,畜禽飼料配方,灌溉,施
26、肥,水土保持等眾多方面,設(shè)計對象主要是農(nóng)民,農(nóng)業(yè)技術(shù)人員和農(nóng)業(yè)管理人員。我國農(nóng)業(yè)專家系統(tǒng)的開發(fā)及應(yīng)用相比較國外起步比較晚,但發(fā)展速度較快,一些種植業(yè)有關(guān)的農(nóng)業(yè)專家系統(tǒng)已經(jīng)在農(nóng)業(yè)生產(chǎn)實際中得到應(yīng)用。我國應(yīng)用與農(nóng)業(yè)的許多害蟲防治系統(tǒng)已經(jīng)初步形成。</p><p> 1.4 設(shè)計的主要工作</p><p> 本系統(tǒng)包括兩個模塊:按時期診斷;按部位診斷。</p><p>
27、; 在手機終端選擇診斷方式,系統(tǒng)會顯示相應(yīng)的典型特征供用戶選擇,并提交,在診斷的過程中,為了解決棗病蟲害得并發(fā)癥問題,先后對病害庫和蟲害庫進(jìn)行操作。檢索出所有可能的病蟲害,用戶可以通過病蟲害詳細(xì)信息進(jìn)一步驗證。</p><p> 1.5 論文組織 </p><p> 論文全文共分為七章:</p><p> 第一章 緒論 。 主要介紹了論文選題的引言、對課題
28、研究的背景及意義進(jìn)行了分析,同時也對國內(nèi)外研究狀況及發(fā)展趨勢進(jìn)行了介紹。</p><p> 第二章 開發(fā)環(huán)境和開發(fā)技術(shù)。介紹了系統(tǒng)的開發(fā)模式、開發(fā)環(huán)境等基礎(chǔ)知識。</p><p> 第三章 需求分析。主要介紹了系統(tǒng)設(shè)計思想、可行性分析、功能和性能需求。</p><p> 第四章 系統(tǒng)設(shè)計。主要介紹了系統(tǒng)的總體結(jié)構(gòu)設(shè)計和系統(tǒng)的數(shù)據(jù)庫設(shè)計,其中數(shù)據(jù)庫的設(shè)計包括了概
29、念設(shè)計、邏輯設(shè)計和物理設(shè)計。</p><p> 第五章 系統(tǒng)實現(xiàn)。介紹了該系統(tǒng)的倆個模塊和它具有的功能。</p><p> 第六章 系統(tǒng)測試。選取具有代表性的診斷方式進(jìn)行診斷,測試結(jié)果是否正常顯示。</p><p> 第七章 結(jié)束語。對整個系統(tǒng)的編寫過程做一個詳細(xì)的總結(jié)。</p><p> 2.開發(fā)環(huán)境和開發(fā)技術(shù)</p>
30、<p><b> 2.1工具環(huán)境介紹</b></p><p> 2.1.1 開發(fā)環(huán)境的選擇</p><p> 本系統(tǒng)開發(fā)與運行環(huán)境如下:</p><p> ?開發(fā)環(huán)境:Windows 7</p><p> 運行環(huán)境:android</p><p> ?開發(fā)工具:Ecli
31、pse</p><p> ?數(shù)據(jù)庫管理系統(tǒng):SQLite</p><p> 本系統(tǒng)主要采用java與Sqlite相結(jié)合的技術(shù)。利用Eclipse軟件來完成系統(tǒng)的整個編寫過程。</p><p><b> 2.2開發(fā)技術(shù)</b></p><p> 2.2.2 java語言簡介</p><p>
32、; Java編程語言的風(fēng)格十分接近C、C++語言。Java是一個純粹的面向?qū)ο蟮某绦蛟O(shè)計語言,它繼承了 C++語言面向?qū)ο蠹夹g(shù)的核心。Java舍棄了C語言中容易引起錯誤的指針(以引用取代)、運算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔(dān)憂。在 Java 1.5 版本中,Java 又引入了泛型編程(Gene
33、ric Programming)、類型安全的枚舉、不定長參數(shù)和自動裝/拆箱等語言特性。</p><p> Java不同于一般的編譯執(zhí)行計算機語言和解釋執(zhí)行計算機語言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴各種不同平臺上的虛擬機來解釋執(zhí)行字節(jié)碼。從而實現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺特性。不過,每次的執(zhí)行編譯后的字節(jié)碼需要消耗一定的時間,這同時也在一定程度上降低了 Java 程序的運行效
34、率。</p><p> 2.2.3 SQLite簡介</p><p> SQLite是一個嵌入式數(shù)據(jù)庫引擎,針對內(nèi)存等資源有限的設(shè)備(如手機,PDA,MP3)提供的一種高效的數(shù)據(jù)庫引擎。</p><p> SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,
35、在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。</p><p> Sqlite數(shù)據(jù)庫不像其他的數(shù)據(jù)庫(如Oracle),它沒有服務(wù)器進(jìn)程。所有的內(nèi)容包含在同
36、一個單文件中。該文件時跨平臺的,可以自由復(fù)制?;谄渥陨淼南忍靸?yōu)勢,Sqlite在嵌入式領(lǐng)域得到了廣泛應(yīng)用。Android也沒有重復(fù)發(fā)明“輪子”,而是直接使用SQLite數(shù)據(jù)庫。</p><p><b> 3.需求分析</b></p><p><b> 3.1 設(shè)計思想</b></p><p> 第一步整合病蟲害信息
37、庫資源,第二步使用Elicpse完成該系統(tǒng)的開發(fā)。</p><p> 首先將病蟲害資源分類,分為病害資源庫和蟲害資源庫;然后將整個系統(tǒng)的流程圖和系統(tǒng)邏輯圖設(shè)計出來,按照系統(tǒng)邏輯圖的思路編寫代碼。</p><p> 該系統(tǒng)的開發(fā)平臺設(shè)在android上使得更多的用戶能夠及時的診斷棗樹的病害情況。為了更確切的診斷病蟲害信息,該系統(tǒng)采用兩種診斷模式,用戶可以選擇兩種診斷模式進(jìn)行診斷。<
38、/p><p><b> 3.2 可行性分析</b></p><p> 可行性分析法是對工程項目進(jìn)行系統(tǒng)技術(shù)經(jīng)濟論證,經(jīng)濟合理性綜合分析的方法。其目的是通過對技術(shù)先進(jìn)程度,經(jīng)濟合理性和條件可能性的分析論證,選擇以最小的人力、物力、財力耗費,取得最佳技術(shù)、經(jīng)濟、社會效益的切實方案。它是解決項目投資前期分析的主要手段??尚行苑治鍪峭ㄟ^對項目的主要內(nèi)容和配套條件,如市場需求、
39、資源供應(yīng)、建設(shè)規(guī)模、工藝路線、設(shè)備選型、環(huán)境影響、資金籌措、盈利能力等,從技術(shù)、經(jīng)濟、工程等方面進(jìn)行調(diào)查研究和分析比較,并對項目建成以后可能取得的財務(wù)、經(jīng)濟效益及社會環(huán)境影響進(jìn)行預(yù)測,從而提出該項目是否值得投資和如何進(jìn)行建設(shè)的咨詢意見,為項目決策提供依據(jù)的一種綜合性的系統(tǒng)分析方法。可行性分析應(yīng)具有預(yù)見性、公正性、可靠性、科學(xué)性的特點。</p><p> 本系統(tǒng)在設(shè)計過程中考慮到以下幾個可行性:</p>
40、;<p> 3.2.1 操作可行性</p><p> 本系統(tǒng)操作簡單,初體驗者只需操作一次就可輕松掌握其步驟。而且此系統(tǒng)是基于android平臺開發(fā),手機的發(fā)展歷程從最初的功能機時代邁進(jìn)了如今的智能機時代,在信息如此發(fā)達(dá)的今天,擁有一部智能手機對每個人來說顯得十分重要,智能手機的出現(xiàn)在很多方面可以說起到了顛覆性的作用。所以此系統(tǒng)在操作方面會讓用戶很容易接受。</p><p&g
41、t; 3.2.2 技術(shù)可行性</p><p> Android平臺采用了整合的策略思想,包括底層linux操作系統(tǒng),中間層的中間件和上層的java應(yīng)用程序。</p><p> 1.應(yīng)用程序框架支持組件的重用與替換;</p><p> 2.android應(yīng)用程序?qū)⒂衘ava編寫,編譯的類文件通過DX工具轉(zhuǎn)換成一 種后綴名為.dex的文件來執(zhí)行
42、。Dalivik虛擬機是基于寄存器的,相對與java虛擬機速度要快很多;</p><p> 3.SQLite用作結(jié)構(gòu)化的數(shù)據(jù)存儲。</p><p> 3.2.3 經(jīng)濟可行性</p><p> 系統(tǒng)在開發(fā)過程中所使用的軟件均為免費版,由于開發(fā)環(huán)境在win7之上,所以前期該系統(tǒng)只需要提供人力和一臺電腦。</p><p> 以往基于web的
43、診斷系統(tǒng)不能得到適時的運用,所以將系統(tǒng)移植到android之上迫在眉睫,其前景將一片見好。</p><p><b> 3.3 功能需求</b></p><p> 根據(jù)棗樹一般發(fā)生病蟲害的特征以及專家的多年經(jīng)驗,一個棗樹診斷系統(tǒng)可以從倆個方面來診斷:</p><p> 1) 根據(jù)病害部位診斷;這種查找方式針對不同用戶都適用,用戶只需要選擇按
44、部位診斷按鈕,接著點選病蟲害特征就可以診斷棗樹病害情況;</p><p> 2) 根據(jù)棗樹病害時期診斷;這種查找方式針對的用戶是稍微有點棗樹嘗試的用戶,這種診斷方式需要選擇發(fā)生病害時期然后點選病害特征;</p><p> 兩種功能模塊,用戶可以隨意選擇一種進(jìn)行診斷,也可以選擇一種以后再選擇第二種進(jìn)行進(jìn)一步的確診病害情況。</p><p> 3.3.1 基本功能
45、需求</p><p> 通過對系統(tǒng)的分析,可知該系統(tǒng)有兩項功能:</p><p> 按時期診斷主要是通過棗樹病害時期所出現(xiàn)的癥狀從而來確診棗樹病害信息</p><p> 按部位診斷主要是通過棗樹病害部位所出現(xiàn)的癥狀從而來確診棗樹病態(tài)信息。</p><p> 3.3.2 用戶界面需求</p><p> 用戶界面
46、是人與計算機之間的媒介。用戶通過用戶界面來與計算機進(jìn)行信息交換。因此,用戶界面的質(zhì)量,直接關(guān)系到應(yīng)用系統(tǒng)的性能能否充分 發(fā)揮,能否使用戶準(zhǔn)確、高效、輕松、愉快地工作。所以軟件的友好性、易用性對于軟件系統(tǒng)至關(guān)重要。目前國內(nèi)軟件開發(fā)者在設(shè)計過程中很注重軟件的開發(fā)技術(shù)及 其具有的業(yè)務(wù)功能,而忽略了用戶對用戶界面的需求,影響軟件的易用性、友好性。其實用戶界面是一個應(yīng)用程序很重要的一面——它直接影響程序的使用價值。對于大多數(shù)用戶來說,用戶界面就是
47、他們對一個產(chǎn)品的全部了解。所以對他們來說,一個內(nèi)部設(shè)計良好但用戶界面不好的應(yīng)用程序就是一個不好的程序。一個應(yīng)用程序的用戶界面框架是決定它的商業(yè)價值的重要因素。</p><p> 考慮到系統(tǒng)面對的用戶各不相同,所以該設(shè)計界面充分利用用戶對大多數(shù)應(yīng)用的熟悉程度,幫助用戶通過已掌握的知識來使用界面。窗口的布局、色彩的搭配、字體風(fēng)格等方面處處模仿微軟,因此系統(tǒng)界面美觀大方,符合大多數(shù)人的使用習(xí)慣,按鈕得體,使用起來非常
48、簡單。</p><p><b> 4.系統(tǒng)設(shè)計</b></p><p> 4.1 總體結(jié)構(gòu)設(shè)計</p><p> 4.1.1 系統(tǒng)設(shè)計基礎(chǔ)</p><p> 系統(tǒng)總體設(shè)計原則是需要充分考慮系統(tǒng)框架的合理構(gòu)建理。其組織結(jié)構(gòu)圖如4-1所示。</p><p> 圖4-1系統(tǒng)組織結(jié)構(gòu)圖</
49、p><p> 4.1.2 模塊設(shè)計</p><p> 本系統(tǒng)是一個診斷系統(tǒng),主要目標(biāo)是讓農(nóng)戶能夠適時的診斷棗樹的健康狀況,做出相應(yīng)的措施。此診斷系統(tǒng)包涵倆個模塊:按時期診斷;按部位診斷;農(nóng)戶可以根據(jù)以上倆種診斷方式確切的診斷出棗樹的病害情況。</p><p> 根據(jù)需求分析中列出的棗病蟲害診斷系統(tǒng)的兩個基本模塊,設(shè)計了如下圖4-2所示系統(tǒng)功能層次圖。</p&
50、gt;<p> 圖4-2 系統(tǒng)功能層次圖</p><p> 由上述的系統(tǒng)總體結(jié)構(gòu)圖所示,將一個棗病蟲害診斷系統(tǒng)分成兩個子模塊,</p><p> 他們分別為:按部位診斷、按時期診斷模塊。具體功能描述如下:</p><p><b> 按時期診斷</b></p><p> 用戶可根據(jù)棗樹發(fā)生病害的時期
51、以及這個時期所出現(xiàn)的病害特征診斷其病害情況并得到及時的預(yù)防治療。</p><p><b> 按部位診斷:</b></p><p> 用戶可根據(jù)棗樹發(fā)生病害的部位以及部位發(fā)生的病害特征診斷其病害情況并得到及時的預(yù)防治療。</p><p> 4.1.3 系統(tǒng)結(jié)構(gòu)設(shè)計</p><p> 在系統(tǒng)模塊的設(shè)計過程中,將系統(tǒng)模
52、塊以按鈕的形式展現(xiàn)出來。按時期診斷模塊的功能層次,如圖4-3所示;按部位診斷的功能層次,如圖4-4所示</p><p> 圖4-3按時期診斷模塊的功能層次 圖4-4按部位診斷模塊的功能層次</p><p> 4.1.4系統(tǒng)邏輯設(shè)計</p><p> 系統(tǒng)從總體上可分為按部位診斷模塊、按時期診斷模塊兩大部分。各個模塊實現(xiàn)的功能都大同小異,目
53、的都是為了進(jìn)一步確診病害情況。下面的各模塊功能流圖就是由各功能之間的關(guān)系而得出的。</p><p> 如下圖4-5所示用戶根據(jù)棗樹受害情況選擇進(jìn)行何種診斷方式,數(shù)據(jù)庫根據(jù)用戶所選條件進(jìn)行篩選得出相應(yīng)的信息:</p><p> 圖4-5系統(tǒng)邏輯設(shè)計流程</p><p><b> 4.1.5系統(tǒng)流程</b></p><p&
54、gt; 系統(tǒng)在執(zhí)行過程中,按照一定的流程進(jìn)行。如圖4-7所示</p><p> 圖4-6 系統(tǒng)執(zhí)行流程圖</p><p><b> 4.2 數(shù)據(jù)庫設(shè)計</b></p><p> 4.2.1 數(shù)據(jù)庫簡介</p><p> 數(shù)據(jù)庫中的數(shù)據(jù)是為眾多用戶所共享其信息而建立的,已經(jīng)擺脫了具體程序的限制和制約。不同的用戶可
55、以按各自的用法使用數(shù)據(jù)庫中的數(shù)據(jù);多個用戶可以同時共享數(shù)據(jù)庫中的數(shù)據(jù)資源,即不同的用戶可以同時存取數(shù)據(jù)庫中的同一個數(shù)據(jù)。數(shù)據(jù)共享性不僅滿足了各用戶對信息內(nèi)容的要求,同時也滿足了各用戶之間信息通信的要求。</p><p> 數(shù)據(jù)庫是一個單位或是一個應(yīng)用領(lǐng)域的通用數(shù)據(jù)處理系統(tǒng),它存儲的是屬于企業(yè)和事業(yè)部門、團體和個人的有關(guān)數(shù)據(jù)的集合。數(shù)據(jù)庫中的數(shù)據(jù)是從全局觀點出發(fā)建立的,按一定的數(shù)據(jù)模型進(jìn)行組織、描述和存儲。其結(jié)構(gòu)
56、基于數(shù)據(jù)間的自然聯(lián)系,從而可提供一切必要的存取路徑,且數(shù)據(jù)不再針對某一應(yīng)用,而是面向全組織,具有整體的結(jié)構(gòu)化特征。</p><p> 數(shù)據(jù)庫是存儲在一起的相關(guān)數(shù)據(jù)的集合,這些數(shù)據(jù)是結(jié)構(gòu)化的,無有害的或不必要的冗余,并為多種應(yīng)用服務(wù);數(shù)據(jù)的存儲獨立于使用它的程序;對數(shù)據(jù)庫插入新數(shù)據(jù),修改和檢索原有數(shù)據(jù)均能按一種公用的和可控制的方式進(jìn)行。</p><p> 4.2.2 物理結(jié)構(gòu)設(shè)計<
57、/p><p> 根據(jù)邏輯關(guān)系模型可直接設(shè)計基于某種數(shù)據(jù)庫管理系統(tǒng)支持的物理結(jié)構(gòu),我們知道關(guān)系數(shù)據(jù)庫是由表構(gòu)成的,所以依據(jù)病害信息、蟲害信息在數(shù)據(jù)庫中建立相應(yīng)的表。</p><p> 本系統(tǒng)采用的數(shù)據(jù)庫是SQLite數(shù)據(jù)庫,本數(shù)據(jù)庫名稱為“zhp.db”,其中包含兩張表。各表結(jié)構(gòu)分別如以下列表所示。</p><p> 表4-1病害信息表(disease)</p
58、><p> 表4-2蟲害信息表(worm)</p><p><b> 5.系統(tǒng)實現(xiàn)</b></p><p><b> 5.1設(shè)計主界面</b></p><p> 病蟲害診斷系統(tǒng)主頁面如圖5-1所示:</p><p><b> 圖5-1 系統(tǒng)窗體</b&g
59、t;</p><p> 5.2系統(tǒng)各個模塊功能</p><p> 5.2.1果樹成長時期診斷如圖5-2</p><p> 圖5-2 按時期診斷</p><p><b> 實現(xiàn)選擇代碼如下:</b></p><p> protected void onCreate(Bundle saved
60、InstanceState) {</p><p> super.onCreate(savedInstanceState);</p><p> requestWindowFeature(Window.FEATURE_NO_TITLE);</p><p> getWindow().setFlags(WindowManager.LayoutParams.FLAG_F
61、ULLSCREEN,</p><p> WindowManager.LayoutParams.FLAG_FULLSCREEN);</p><p> setContentView(R.layout.time);</p><p> linear = (LinearLayout) findViewById(R.id.linear_time);</p>
62、<p> rb_mengya = (RadioButton) findViewById(R.id.radioButton_mengya);</p><p> rb_youmiao = (RadioButton) findViewById(R.id.radioButton_youmiao);</p><p> rb_chengzhang=(RadioButton)findVi
63、ewById(R.id.radioButton_chengzhang);</p><p> rb_youguo = (RadioButton)findViewById(R.id.radioButton_youguo);</p><p> rb_guoshichengzhang=(RadioButton)findViewById(R.id.radioButton_guoshichengz
64、hang);</p><p> rb_guoshipengda=(RadioButton)findViewById(R.id.radioButton_guoshipengda);</p><p> rb_guoshichengshu=(RadioButton)findViewById(R.id.radioButton_guoshichengshu);</p><p&
65、gt; rb_zhucang = (RadioButton) findViewById(R.id.radioButton_zhucang);</p><p> rb_zhounian=(RadioButton)findViewById(R.id.radioButton_zhounian);</p><p> linear.setBackgroundResource(R.drawabl
66、e.back);</p><p> rb_mengya.setOnClickListener(click);</p><p> rb_youmiao.setOnClickListener(click);</p><p> rb_chengzhang.setOnClickListener(click);</p><p> rb_youg
67、uo.setOnClickListener(click);</p><p> rb_guoshichengzhang.setOnClickListener(click);</p><p> rb_guoshipengda.setOnClickListener(click);</p><p> rb_guoshichengshu.setOnClickListen
68、er(click);</p><p> rb_zhucang.setOnClickListener(click);</p><p> rb_zhounian.setOnClickListener(click);</p><p><b> }</b></p><p> OnClickListener click =
69、 new OnClickListener() {</p><p> public void onClick(View v) {</p><p> switch (v.getId()) {</p><p> case R.id.radioButton_mengya:</p><p> submit(0);</p><
70、p><b> break;</b></p><p> case R.id.radioButton_youmiao:</p><p> submit(1);</p><p><b> break;</b></p><p> case R.id.radioButton_chengzhan
71、g:</p><p> submit(2);</p><p><b> break;</b></p><p> case R.id.radioButton_youguo:</p><p> submit(3);</p><p><b> break;</b><
72、/p><p> case R.id.radioButton_guoshichengzhang:</p><p> submit(4);</p><p><b> break;</b></p><p> case R.id.radioButton_guoshipengda:</p><p>
73、submit(5);</p><p><b> break;</b></p><p> case R.id.radioButton_guoshichengshu:</p><p> submit(6);</p><p><b> break;</b></p><p>
74、 case R.id.radioButton_zhucang:</p><p> submit(7);</p><p><b> break;</b></p><p> case R.id.radioButton_zhounian:</p><p> submit(8);</p><p>
75、;<b> break;</b></p><p><b> default:</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p&g
76、t;<p><b> };</b></p><p><b> @Override</b></p><p> public boolean onCreateOptionsMenu(Menu menu) {</p><p> getMenuInflater().inflate(R.menu.main_me
77、nu, menu);</p><p> return super.onCreateOptionsMenu(menu);</p><p><b> }</b></p><p><b> @Override</b></p><p> public boolean onOptionsItemSel
78、ected(MenuItem item) {</p><p> switch (item.getItemId()) {</p><p> case R.id.item_exit:</p><p> showAlertDialog();//</p><p><b> break;</b></p>&l
79、t;p><b> default:</b></p><p><b> break;</b></p><p><b> }</b></p><p> return super.onOptionsItemSelected(item);</p><p><b>
80、; }</b></p><p> private void showAlertDialog() {</p><p> AlertDialog.Builder builder = new AlertDialog.Builder(this);</p><p> builder.setMessage(R.string.button_eixt);<
81、/p><p> builder.setPositiveButton(R.string.ok,</p><p> new DialogInterface.OnClickListener() {</p><p> public void onClick(DialogInterface dialog, int which) {</p><p>&
82、lt;b> finish();</b></p><p><b> }</b></p><p><b> });</b></p><p> builder.setNegativeButton(R.string.cancle,</p><p> new DialogInter
83、face.OnClickListener() {</p><p> public void onClick(DialogInterface dialog, int which) {</p><p><b> }</b></p><p><b> });</b></p><p> AlertD
84、ialog dialog = builder.create();</p><p> dialog.show();</p><p><b> }</b></p><p> private void submit(int id) {</p><p> Intent intent = new Intent(TimeAc
85、tivity.this,</p><p> Cha1.class);</p><p> intent.putExtra("time_id", id);</p><p> intent.putExtra("time", "time");</p><p> startActivi
86、ty(intent);</p><p><b> }</b></p><p><b> }</b></p><p> 按時期選擇之后特點選擇界面如下圖5-3:</p><p> 圖5-3 按時期診斷選擇</p><p> 實現(xiàn)選擇的代碼如下:</p>
87、<p> protected void onCreate(Bundle savedInstanceState) {</p><p> super.onCreate(savedInstanceState);</p><p> setContentView(R.layout.cha);</p><p> button_submit = (Button)
88、 findViewById(R.id.button1_submit);</p><p> cb_a = (CheckBox) findViewById(R.id.checkBox_a);</p><p> cb_b = (CheckBox) findViewById(R.id.checkBox_b);</p><p> cb_c = (CheckBox) fi
89、ndViewById(R.id.checkBox_c);</p><p> cb_d = (CheckBox) findViewById(R.id.checkBox_d);</p><p> cb_e = (CheckBox) findViewById(R.id.checkBox_e);</p><p> cb_f = (CheckBox) findViewB
90、yId(R.id.checkBox_f);</p><p> cb_g = (CheckBox) findViewById(R.id.checkBox_g);</p><p> cb_h = (CheckBox) findViewById(R.id.checkBox_h);</p><p> cb_i = (CheckBox) findViewById(R.i
91、d.checkBox_i);</p><p> cb_j = (CheckBox) findViewById(R.id.checkBox_j);</p><p> cb_k = (CheckBox) findViewById(R.id.checkBox_k);</p><p> cb_l = (CheckBox) findViewById(R.id.check
92、Box_l);</p><p> cb_m = (CheckBox) findViewById(R.id.checkBox_m);</p><p> time_id = getIntent().getIntExtra("time_id", 0);</p><p> switch (time_id) {</p><p>
93、; case 0:// 萌芽展葉期</p><p> cb_a.setText("吃芽");//吃芽</p><p> cb_b.setText("遇驚擾吐絲下垂");</p><p> cb_c.setText("幼蟲吐絲爬行");</p><p> cb_d.setTe
94、xt("吸食汁液");</p><p> cb_e.setText("吐絲纏綴葉片危害");</p><p> cb_f.setText("吃葉");</p><p> cb_g.setVisibility(View.GONE);</p><p> cb_h.setVisib
95、ility(View.GONE);</p><p> cb_i.setVisibility(View.GONE);</p><p> cb_j.setVisibility(View.GONE);</p><p> cb_k.setVisibility(View.GONE);</p><p> cb_l.setVisibility(Vi
96、ew.GONE);</p><p> cb_m.setVisibility(View.GONE);</p><p><b> break;</b></p><p> time_id=getIntent().getIntExtra(“time_id”,o);</p><p> button_submit.setOn
97、ClickListener(click);</p><p><b> }</b></p><p> OnClickListener click = new OnClickListener() {</p><p> public void onClick(View v) {</p><p> Intent inte
98、nt = new Intent(Cha1.this, DiseaseActivity.class);</p><p> if (time != null && time.equals("time")){</p><p> switch (time_id) {</p><p><b> case 0:</b&g
99、t;</p><p> if (cb_a.isChecked()) {</p><p> String acy = "acy";</p><p> intent.putExtra("acy", acy);</p><p> intent.putExtra("time_id",
100、 time_id);</p><p> intent.putExtra("time", time);</p><p> } if (cb_b.isChecked()) {</p><p> String ats = "ats";</p><p> intent.putExtra("a
101、ts", ats);</p><p> intent.putExtra("time_id", time_id);</p><p> intent.putExtra("time", time);</p><p> } if (cb_c.isChecked()) {</p><p> S
102、tring apx = "apx";</p><p> intent.putExtra("apx", apx);</p><p> intent.putExtra("time_id", time_id);</p><p> intent.putExtra("time", time)
103、;</p><p> } if (cb_d.isChecked()) {</p><p> String axy = "axy";</p><p> intent.putExtra("axy", axy);</p><p> intent.putExtra("time_id"
104、;, time_id);</p><p> intent.putExtra("time", time);</p><p> } if (cb_e.isChecked()) {</p><p> String axs = "axs";</p><p> intent.putExtra("
105、;axs", axs);</p><p> intent.putExtra("time_id", time_id);</p><p> intent.putExtra("time", time);</p><p> } if (cb_f.isChecked()) {</p><p>
106、 String acyy= "acyy";</p><p> intent.putExtra("acyy", acyy);</p><p> intent.putExtra("time_id", time_id);</p><p> intent.putExtra("time",
107、time);</p><p><b> } </b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> startActivity
108、(intent);</p><p><b> }</b></p><p><b> };</b></p><p><b> 6.系統(tǒng)綜合測試</b></p><p> 系統(tǒng)兩個主要模塊都已設(shè)計完成,現(xiàn)就目前的兩個模塊進(jìn)行測試。</p><p>
109、 6.1按發(fā)生蟲害部位測試</p><p> 進(jìn)入棗病蟲害診斷系統(tǒng)主要界面。主界面包含兩個按鈕,用戶可以根據(jù)棗樹病蟲害時期或者病蟲害部位進(jìn)行診斷。主界面如圖6-1.</p><p> 圖6-1 系統(tǒng)主界面</p><p> 點擊蟲害發(fā)生的部位,界面如下圖6-2</p><p> 圖6-2 按蟲害發(fā)生的部位診斷的界面</p>
110、<p> 點擊蟲害發(fā)生的部位為根,界面如下圖6-3.</p><p> 圖6-3 蟲害發(fā)生的部位為根診斷的界面</p><p> 點擊提交“根腐”,界面如下圖6-4:</p><p> 圖6-4 查詢結(jié)果界面</p><p> 點擊病害名稱顯示該病害的全部信息,界面如下圖6-5</p><p>
111、 圖6-5 病蟲害相關(guān)信息界面</p><p> 點擊查看圖片顯示該病害的圖片,界面如下圖6-6</p><p> 圖6-6 相關(guān)病害圖片界面</p><p><b> 7.結(jié)束語</b></p><p><b> 7.1 總結(jié)</b></p><p> 這次
112、畢業(yè)設(shè)計我做的是中國棗病蟲害診斷系統(tǒng),這個功能以前是在windows平臺實現(xiàn)的,由于一些偏遠(yuǎn)地區(qū)未能被互聯(lián)網(wǎng)覆蓋,所以此次我做的畢業(yè)設(shè)計是基于android平臺開發(fā)。</p><p> 我這次畢業(yè)設(shè)計可以分五步進(jìn)行:</p><p> 1)整理指導(dǎo)老師發(fā)給資料,對課題進(jìn)行深刻的分析;</p><p> 2)設(shè)計整個系統(tǒng)的框架模型,建立相應(yīng)的邏輯圖形以及系統(tǒng)流程
113、圖;</p><p> 3)將作為數(shù)據(jù)庫的資料進(jìn)行進(jìn)一步的整理使得資料更清晰明了;</p><p> 4)運用elicpse軟件進(jìn)行編碼實現(xiàn)設(shè)計好的功能;</p><p><b> 5)撰寫論文。</b></p><p> 雖然這次畢業(yè)設(shè)計已經(jīng)完成,但在做的過程中還是有一些因素未考慮到。此次畢業(yè)設(shè)計的優(yōu)缺點可總結(jié)
114、以下幾項:</p><p><b> 優(yōu)點:</b></p><p> 1)android手機普及,所以其使用率必會升高;</p><p> 2)界面簡單易學(xué),不同用戶都可以輕松掌控;</p><p><b> 缺點:</b></p><p> 1)該診斷系統(tǒng)屬于單
115、機系統(tǒng),所以有一些病蟲害信息在數(shù)據(jù)庫里邊不能查到;</p><p><b> 7.2 心得體會</b></p><p> 隨著畢業(yè)日的到來,我的畢業(yè)設(shè)計也接近尾聲。經(jīng)過一個多月的努力奮戰(zhàn)我的課程設(shè)計終于圓滿完成。在沒有選題前我對android方面的知識掌握的不是很熟練,知識只接觸了少許,對整個android項目沒有一個清楚的認(rèn)識,但是通過這次畢業(yè)設(shè)計我通過查閱大量
116、有關(guān)資料,與同學(xué)交流經(jīng)驗和自學(xué),并向老師請教等方式,使自己學(xué)到了不少知識,也經(jīng)歷了不少艱辛,但收獲巨大。在整個設(shè)計中我懂得了許多東西,也培養(yǎng)了我獨立的工作的能力,樹立了對自己工作能力的信心,相信對今后的學(xué)習(xí)工作生活有非常重要的影響,而且大大提高了動手的能力,使我充分體會到了在創(chuàng)造中探索的艱難和成功時的喜悅。在這次畢業(yè)設(shè)計中的最大的收獲是不僅讓我更進(jìn)一步鞏固了以前的知識,而且讓我對棗病蟲害方面的知識得到一定的了解。我相信這將對我終身受益。
117、</p><p><b> 致謝</b></p><p> 歷時將近倆個月的時間,我終于將學(xué)校安排的畢業(yè)設(shè)計圓滿完成。在這期間,我首先要感謝周老師對我的悉心教導(dǎo),從最初的定題,到資料收集,到寫作、修改,到論文定稿,她不厭其煩的幫我修改和改進(jìn)。她淵博的專業(yè)知識和嚴(yán)以律己,寬以待人的崇高風(fēng)范對我影響深遠(yuǎn),不僅讓我樹立了自己學(xué)術(shù)目標(biāo)還掌握了基本的研究方法。另外我還需感謝
118、數(shù)位學(xué)者的研究文獻(xiàn),沒有他們的研究成果的話,我很難完成這次畢業(yè)設(shè)計,他們的研究成果讓我認(rèn)識到畢業(yè)設(shè)計和畢業(yè)論文如何進(jìn)行。最后我要感謝這四年來教導(dǎo)我的老師,感謝所有任課老師和所有同學(xué)在這四年來給自己的指導(dǎo)和幫助, 是他們教會了我專業(yè)知識,教會了我如何學(xué)習(xí),教會了我如何做人。正是由于他們,我才能在各方面取得顯著的進(jìn)步,在此向他們表示我由衷的謝意,并祝所有的老師培養(yǎng)出越來越多的優(yōu)秀人才,桃李滿天下!</p><p>&
119、lt;b> 參考文獻(xiàn)</b></p><p> ?。?]《Android應(yīng)用開發(fā)詳解》 作者:郭宏志 編著 電子工業(yè)出版社 2010-06-01</p><p> ?。?]《Google Android開發(fā)入門與實踐》 作者:靳巖,姚尚朗 人民郵電出版社 2009-7-1</p><p> ?。?]《Android從入門到精通》作者 明
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件工程畢業(yè)論文-中國棗病蟲害診斷系統(tǒng)的設(shè)計與實現(xiàn)
- 基于PDA的玉米病蟲害診斷系統(tǒng).pdf
- 基于WebGIS的棗樹病蟲害診斷系統(tǒng)的研制.pdf
- 棗ziziphusjujubamill.病蟲害診斷專家系統(tǒng)的設(shè)計與實現(xiàn)
- 病蟲害防治論文病蟲害論文
- 廣東省森林病蟲害遠(yuǎn)程診斷系統(tǒng)的設(shè)計研究.pdf
- 花椒病蟲害診斷及防治
- 病蟲害
- 嵌入式水稻病蟲害圖像采集與診斷系統(tǒng)的研究.pdf
- 中秋酥脆棗常見棗樹病蟲害防治對應(yīng)農(nóng)藥
- 基于Android的水稻病蟲害圖像識別與診斷系統(tǒng)的研究.pdf
- 植物病蟲害診斷及防治大全
- 植物病蟲害
- 玉米病蟲害
- 國槐病蟲害
- 草莓病蟲害
- 小麥病蟲害
- 昆蟲病蟲害
- 番茄病蟲害
- 園林病蟲害
評論
0/150
提交評論