翟亞靜++白鵬++成麗君
摘 要描述了一個基于Android操作系統(tǒng)的豬傳染病診斷系統(tǒng)的設計與實現(xiàn),并給出了相應的代碼。
【關鍵詞】Android 豬傳染病 診斷系統(tǒng)
1 引言
本文中描述的豬傳染病診斷系統(tǒng)利用Java語言和Android平臺,實現(xiàn)了豬傳染病的疾病診斷、疾病防治、查詢疾病等功能,主要針對專家、普通養(yǎng)殖戶、管理員等用戶使用,專家可以提供更新和維護癥狀與疾病信息,普通養(yǎng)殖用戶可以通過觀察的癥狀使用診斷系統(tǒng)得到診斷結果,系統(tǒng)管理員則進行系統(tǒng)的維護,如數據恢復和數據還原等,使診斷效率可以得到較好的提高與改善。該診斷系統(tǒng)共分為兩個版本,版本2是對版本1的進一步優(yōu)化與改進,版本2在版本1的基礎上增加了采用jsp+servlet+jdbc輕量級的、基于J2EE的MVC體系架構。該模式主要分為視圖層、控制層和模型層。視圖層使用jsp技術來實現(xiàn),控制層使用servlet來處理,模型層使用java語言來創(chuàng)建實體類。數據庫層采用jdbc來實現(xiàn)與mysql數據庫的交互,對數據庫中疾病信息、癥狀信息等進行管理。
2 環(huán)境
開發(fā)環(huán)境:eclipse、MyEslipse、MySQL
開發(fā)語言:Java、html、JavaScript、JSP、servlet
運行環(huán)境:Tomcat、Android虛擬機
3 功能
該系統(tǒng)分為八個模塊:
系統(tǒng)設置模塊、癥狀分類信息管理模塊、癥狀信息管理模塊、疾病信息管理模塊、防治措施信息管理模塊、豬疾病診斷分析模塊、系統(tǒng)維護模塊、退出系統(tǒng)。如圖1所示。
4 設計
4.1 界面設計
4.1.1 版本1界面
Android界面(如圖2所示)。
4.1.2 版本2界面
(1)Web的診斷界面(如圖3所示)。
(2)Web的數據庫操作界面(如圖4所示)。
4.2 數據庫設計
該數據庫是一個關系型數據庫,基表包括:管理員信息表、癥狀分類信息表、癥狀子分類信息表、癥狀信息表、疾病信息表、癥狀關聯(lián)疾病信息表、防治措施治療表。
這些表都滿足完整性約束條件,并且有些表之間互相存在關系,如:癥狀分類信息表與癥狀子分類信息表為一對多關系,癥狀信息表和疾病信息表為多對多關系,疾病信息表和防治措施治療表為一對一關系。通過引用外鍵或者創(chuàng)建中間表來建立關系。在疾病診斷的過程中還會出現(xiàn)動態(tài)表:癥狀動態(tài)表和疾病動態(tài)表。這些動態(tài)表中的數據是在計算過程中動態(tài)保存的,存儲一些中間數據。
具體設計如圖5所示。
4.3 推理模塊設計——病情診斷算法
4.3.1 數據歸一化
在動物疾病診斷問題中作如下定義:
癥狀集——S{s1,s2,s3......}有限集(symptom)指動物所有癥狀的集合;
疾病集——D{d1,d2,d3......}有限集(disease)指動物所有疾病的集合;
疾病與癥狀之間的關系為多對多,一個疾病對應多個癥狀,一個癥狀對應多個疾病,在數據庫中采用癥狀疾病表來存儲該關聯(lián)關系,屬性有癥狀編號,疾病編號和表現(xiàn)分值。設表現(xiàn)分值為{x1,x2,x3........},假設癥狀疾病關系表中有以下關系{(s1,d1,x1),(s1,d2,x2),(s1,d3,x3)},數據歸一化就是將表現(xiàn)分值x換成另外一種表示方法y,即
y1=x1/(x1+x2+x3), y2=x2/(x1+x2+x3), y3=x3/(x1+x2+x3)
則y1+y2+y3=1,該表示方法稱為歸一化處理。經過歸一化處理的數據存入到數據庫中,癥狀疾病關系表中的關系變?yōu)閧(s1,d1,x1,y1),(s1,d2,x2,y2),(s1,d3,x3,y3)}。
4.3.2 推斷算法
在動物疾病診斷過程中,用戶可以選擇一個或多個癥狀,通過推理算法最終得出動物可能患的疾病,所以我們可以由一個癥狀的推斷算法推出多個癥狀的推斷算法,如下:
(1)若用戶選擇一種癥狀,假設相應的癥狀疾病關系表中的數據為{(s1,d1,x1,y1),(s1,d2,x2,y2),(s1,d3,x3,y3)},設推斷結果為z{z1,z2,z3......},推斷算法為:疾病d1的推出結果為z1=y1/(y1+y2+y3),疾病d2推出的結果為
Z2=y2/(y1+y2+y3),疾病d3推出的結果為z3=y3/(y1+y2+y3)。
(2)若用戶選擇兩種癥狀,假設這兩個癥狀相應的癥狀疾病關系表中的數據為:
第一個癥狀相關的癥狀疾病關系表中的數據:{(s1,d1,x1,y1),(s1,d2,x2,y2),(s1,d3,x3,y3)},
第二個癥狀相關的癥狀疾病關系表中的數據:{(s2,d3,x1,y4),(s2,d4,x2,y5),(s2,d5,x3,y6)},
設推斷結果為z{z1,z2,z3......},推斷算法為:
與一個癥狀s1有關的疾病的百分比可以依次推出,
疾病d1的推斷結果為z1=y1/(y1+y2+y3+y4+y5+y6),
疾病d2的推斷結果為z2=y2/(y1+y2+y3+y4+y5+y6),
疾病d3的推斷結果z3=y3/(y1+y2+y3+y4+y5+y6);
與一個癥狀s2有關的疾病的百分比可以依次推出,
疾病d3的推斷結果為z4=y4/(y1+y2+y3+y4+y5+y6),
疾病d4的推斷結果為z5=y5/(y1+y2+y3+y4+y5+y6),
疾病d5的推斷結果z6=y6/(y1+y2+y3+y4+y5+y6);
由于疾病d3與癥狀s1和s2都有關聯(lián),所以疾病d3的推斷結果為:z3+z4。
(3)以此類推,用戶選擇n個癥狀s{s1,s2,s3.......sn},這n個癥狀關聯(lián)的所有疾病有m個d{d1,d2,d3......dm},歸一化數據有m個y{y1,y2,y3......ym},推斷結果zi為yi/(y1+y2+y3+.....+ym),其中i=1,2,3.....m。若其中有不同癥狀對應的疾病有相同的,則需要通過for循環(huán)遍歷出來,將其推斷結果求和得到該疾病的最終結果。
4.3.3 實例
若選中的癥狀為虎斑心和突然死亡,則虎斑心的歸一化數據為:口蹄疫20/20=1,突然死亡的歸一化數據為:破傷風5/(5*7+3)=0.13,豬水腫病5/38=0.13,口蹄疫5/38=0.13,豬傳染性胸膜肺炎5/38=0.13,豬肺疫5/38=0.13,豬丹毒5/38=0.13,豬鏈球菌病5/38=0.13,豬瘟3/38=0.08,然后再求百分比:口蹄疫1/(0.13*7+0.08+1)=51%,
0.13/(0.13*7+0.08+1)=7%,求和51%+7%=58%,
破傷風 0.13/(0.13*7+0.08+1)=7%,
豬水腫病 0.13/(0.13*7+0.08+1)=7%,
豬傳染性胸膜肺炎0.13/(0.13*7+0.08+1)=7%,
豬肺疫0.13/(0.13*7+0.08+1)=7%,
豬丹毒0.13/(0.13*7+0.08+1)=7%,
豬鏈球菌病0.13/(0.13*7+0.08+1)=7%,
豬瘟0.08/(0.13*7+0.08+1)=4%,
5 關鍵代碼實現(xiàn)
public int[] getSubPercent(String[] diseaseid) {
int[] subpercent = new int[diseaseid.length];
for (int i = 0; i < diseaseid.length; i++) {
int tempnum = 0;
this.dbc = new DBCommon();
String[][] data = this.dbc
.query("select * from tempdisease where id='"
+ diseaseid[i] + "'");
if (data.length == 0) {
subpercent[i] = 0;
} else {
for (int j = 0; j < data.length; j++) {
tempnum += Integer.parseInt(data[j][1]);
}
subpercent[i] = tempnum;
}
}
return subpercent;
}
6 結語
本文對豬傳染病診斷系統(tǒng)中的界面設計、數據庫設計、疾病診斷算法進行了描述,通過基于Android設計的數據庫的信息采集與建立,使豬傳染病診斷信息更加系統(tǒng)化、全面化,具有用戶友好、操作方便快捷、維護簡單等特點。
該系統(tǒng)將計算機技術與動物醫(yī)學的相結合,可以幫助我們快速獲取信息,更加準確地來診斷豬的疾病,提高病情診斷效率。同時,它還具有一定的實用性,不僅適用于領域知識專家,更可以廣泛應用于普通養(yǎng)殖人員等。它的實現(xiàn)在一定程度上普及了專家知識,使得更多的問題得以解決,還提高了相關專業(yè)人員的業(yè)務素質和業(yè)務水平,擴大了相關知識的共享范圍。
除此之外,該診斷系統(tǒng)還可以再進行更進一步的功能完善與拓展,例如其他動物疾病的診斷分析等,動物疾病現(xiàn)場調查與信息采集。
參考文獻
[1]劉薇.動物疾病診斷輔助系統(tǒng)平臺的設計[J].電子設計工程,2012.
[2]張海藩,呂云翔.軟件工程(第4版)[M].人民郵電出版社,2012.
作者簡介
翟亞靜(1995-),女,山西省長治市人。山西農業(yè)大學軟件學院2014級在讀本科生。主要研究方向為軟件工程。
作者單位
山西農業(yè)大學軟件學院 山西省太谷縣 030801