APP下载

猪传染病诊断系统的设计与实现

2017-06-03翟亚静白鹏成丽君

电子技术与软件工程 2017年9期
关键词:诊断系统

翟亚静++白鹏++成丽君

摘 要描述了一个基于Android操作系统的猪传染病诊断系统的设计与实现,并给出了相应的代码。

【关键词】Android 猪传染病 诊断系统

1 引言

本文中描述的猪传染病诊断系统利用Java语言和Android平台,实现了猪传染病的疾病诊断、疾病防治、查询疾病等功能,主要针对专家、普通养殖户、管理员等用户使用,专家可以提供更新和维护症状与疾病信息,普通养殖用户可以通过观察的症状使用诊断系统得到诊断结果,系统管理员则进行系统的维护,如数据恢复和数据还原等,使诊断效率可以得到较好的提高与改善。该诊断系统共分为两个版本,版本2是对版本1的进一步优化与改进,版本2在版本1的基础上增加了采用jsp+servlet+jdbc轻量级的、基于J2EE的MVC体系架构。该模式主要分为视图层、控制层和模型层。视图层使用jsp技术来实现,控制层使用servlet来处理,模型层使用java语言来创建实体类。数据库层采用jdbc来实现与mysql数据库的交互,对数据库中疾病信息、症状信息等进行管理。

2 环境

开发环境:eclipse、MyEslipse、MySQL

开发语言:Java、html、JavaScript、JSP、servlet

运行环境:Tomcat、Android虚拟机

3 功能

该系统分为八个模块:

系统设置模块、症状分类信息管理模块、症状信息管理模块、疾病信息管理模块、防治措施信息管理模块、猪疾病诊断分析模块、系统维护模块、退出系统。如图1所示。

4 设计

4.1 界面设计

4.1.1 版本1界面

Android界面(如图2所示)。

4.1.2 版本2界面

(1)Web的诊断界面(如图3所示)。

(2)Web的数据库操作界面(如图4所示)。

4.2 数据库设计

该数据库是一个关系型数据库,基表包括:管理员信息表、症状分类信息表、症状子分类信息表、症状信息表、疾病信息表、症状关联疾病信息表、防治措施治疗表。

这些表都满足完整性约束条件,并且有些表之间互相存在关系,如:症状分类信息表与症状子分类信息表為一对多关系,症状信息表和疾病信息表为多对多关系,疾病信息表和防治措施治疗表为一对一关系。通过引用外键或者创建中间表来建立关系。在疾病诊断的过程中还会出现动态表:症状动态表和疾病动态表。这些动态表中的数据是在计算过程中动态保存的,存储一些中间数据。

具体设计如图5所示。

4.3 推理模块设计——病情诊断算法

4.3.1 数据归一化

在动物疾病诊断问题中作如下定义:

症状集——S{s1,s2,s3......}有限集(symptom)指动物所有症状的集合;

疾病集——D{d1,d2,d3......}有限集(disease)指动物所有疾病的集合;

疾病与症状之间的关系为多对多,一个疾病对应多个症状,一个症状对应多个疾病,在数据库中采用症状疾病表来存储该关联关系,属性有症状编号,疾病编号和表现分值。设表现分值为{x1,x2,x3........},假设症状疾病关系表中有以下关系{(s1,d1,x1),(s1,d2,x2),(s1,d3,x3)},数据归一化就是将表现分值x换成另外一种表示方法y,即

y1=x1/(x1+x2+x3), y2=x2/(x1+x2+x3), y3=x3/(x1+x2+x3)

则y1+y2+y3=1,该表示方法称为归一化处理。经过归一化处理的数据存入到数据库中,症状疾病关系表中的关系变为{(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都有关联,所以疾病d3的推断结果为:z3+z4。

(3)以此类推,用户选择n个症状s{s1,s2,s3.......sn},这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循环遍历出来,将其推断结果求和得到该疾病的最终结果。

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 關键代码实现

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 结语

本文对猪传染病诊断系统中的界面设计、数据库设计、疾病诊断算法进行了描述,通过基于Android设计的数据库的信息采集与建立,使猪传染病诊断信息更加系统化、全面化,具有用户友好、操作方便快捷、维护简单等特点。

该系统将计算机技术与动物医学的相结合,可以帮助我们快速获取信息,更加准确地来诊断猪的疾病,提高病情诊断效率。同时,它还具有一定的实用性,不仅适用于领域知识专家,更可以广泛应用于普通养殖人员等。它的实现在一定程度上普及了专家知识,使得更多的问题得以解决,还提高了相关专业人员的业务素质和业务水平,扩大了相关知识的共享范围。

除此之外,该诊断系统还可以再进行更进一步的功能完善与拓展,例如其他动物疾病的诊断分析等,动物疾病现场调查与信息采集。

参考文献

[1]刘薇.动物疾病诊断辅助系统平台的设计[J].电子设计工程,2012.

[2]张海藩,吕云翔.软件工程(第4版)[M].人民邮电出版社,2012.

作者简介

翟亚静(1995-),女,山西省长治市人。山西农业大学软件学院2014级在读本科生。主要研究方向为软件工程。

作者单位

山西农业大学软件学院 山西省太谷县 030801

猜你喜欢

诊断系统
CTCS2-200H型列控车载设备运用状态在线诊断系统的研究与应用
区间轨道电路智能诊断系统的探讨
基于云服务器的旋转机械在线监测诊断系统设计
设备在线诊断系统在唐钢的建设与应用
连铸板坯质量在线诊断系统的应用
基于OPC跨平台通信的电机监测与诊断系统