农业专家系统_第1页
农业专家系统_第2页
农业专家系统_第3页
农业专家系统_第4页
农业专家系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、成都农业职业技术学院- 农业专家诊断信息系统农业专家信息诊断系统需求分析说明书版本:Ver1.0成都天荣北软信息技术有限公司目录1.系统总体设计分析31.1.需求分析31.2.用户需求分析32.初步设计分析43.系统功能需求分析53.1系统功能层次模块图53.2.系统功能需求分析53.2.1.农作物信息管理63.2.2.病害信息管理63.2.3虫害信息管理63.2.4病虫害诊断73.2.5在线留言73.2.6知识库管理73.3系统性能需求分析83.3.1 灵活性83.3.2.时间特性要求84数据库总体设计84.1数据库E-R图94.2数据表的详细设计94.3数据库表关系图145系统实现165.

2、1界面及功能说明165.1.1 前台界面模块165.1.2 病虫害诊断界面175.2系统后台界面185.3 示例代码205.3.1类库示例代码205.3.2.后台示例代码215.3.3.实现农作物病虫害诊断示例代码226.参考文献251. 系统总体设计分析1.1. 需求分析农业专家信息诊断系统重点是开发专门的应用系统,提高办公自动化程度,开发农业专家诊断信息系统,实现农作物病虫害诊断电子化管理,促进病虫害信息收集整理的标准化、规范化和系统化;构建农业专家诊断信息系统,满足广大农民的需求,形成农作物专家病虫害诊断现代化信息系统。1.2用户需求分析本系统适用于各类人员,如农民、农业专家等。不用的用

3、户对系统的需求有所不同。 农民本系统的直接受益方,农民主要是种植农作物,拥有丰富的种植经验,但有些农民十分缺乏对于农作物病虫害的诊断和防治。因此他们需要有一个容易操作的人机界面系统来诊断农作物病虫害,并得到相应的防治信息。如用例图所示:图1-1 农民用例农业专家本系统的农业知识大部分都来自农业专家提供的,他们拥有丰富的农作物病虫害诊断经验,他们对系统的构建起到监督作用,因此他们需要构建出来的系统是一个具有完善、准确的系统来诊断农作物病虫害。图1-2 农业专家用例2.初步设计分析系统的目标是构建一个能够准确诊断农作物病虫害及提供相应防治方法的专家系统,使用户能够及时的通过专家系统的人机界面诊断农

4、作物病虫害,并做治疗处理。本系统提供准确、完整的农作物信息,管理员登录到系统后台,在可用的时间内可以对农作物信息进行增删改查。以统一规划、分布实施的思想为指导,遵循的设计原则有:系统性原则、信息集成原则、信息通用原则、面向业务原则、开放性原则、安全性原则、可伸缩性原则、高可靠性原则、易操作性原则、体系结构延展性原则。3.系统功能需求分析3.1系统功能层次模块图图:3-1 系统功能模块图3.2系统功能需求分析本系统主要分为六大功能模块:农作物信息管理、病害信息管理、虫害信息管理、病虫害诊断、在线留言、知识库管理。3.2.1农作物信息管理主要是完成农作物基本信息的一些操作,包括对农作物信息的增加、

5、修改以及查询功能。图3-2 农作物信息管理需求图3.2.2病害信息管理根据不同农作物对应的病害信息进行添加、修改、删除和查询。图3-3 病害信息管理需求图3.2.3虫害信息管理与不同农作物对应的虫体的形状、为害特点进行虫害信息的添加、修改、删除和查询。图3-4 虫害信息管理需求图3.2.4病虫害诊断主要是通过输入的事实,完成病虫害的诊断。图3-5 病虫害诊断需求图3.2.5在线留言访问者可以在线留言,管理者进入后台,可以恢复留言、删除留言。图3-6 在线留言需求图3.2.6知识库管理主要功能是对规则进行增加、修改、删除。图3-7 知识库管理需求图3.3系统性能需求分析3.3.1灵活性系统应具有

6、较灵活的更新操作,对操作后数据库的内容进行有选择地添加、修改和删除,必要时对数据库系统的部分信息进行初始化。3.3.2时间特性要求说明对于该系统的时间特性要求,如下:响应时间:视网络情况,等待时间不超过5秒;更新处理时间:不超过10秒; 数据的转换和传送时间:不超过5秒。4.数据库总体设计数据库设计的设计是指在需求分析的基础上,设计出各个表结构的设计,包括各个表保存的信息、各个表的结构以及各个表之间的关系15。4.1数据库E-R图给出了农作物、农作物病害、农作物虫害、规则等表的E-R图,也根据系统实现的需要,定义这些表所包含的信息。其中农作物病害、农作物虫害、规则表都有一个统一的外键“农作物编

7、号”。一种农作物可以有多条规则,但是一条规则只能对应一种农作物;一种农作物会患多种病害,一种病害也可以对应多种农作物;一个农作物会患有多种虫害,一种虫害也可以在多种农作物上生长。图4-1 数据库E-R图4.2数据表的详细设计本系统的数据库关系模式如下:农作物信息表(农作物编号、农作物名称、类别、描述、状态、图片名称),主键:农作物编号;农作物病害表(病害编号、病害名称、农作物编号、发病时期、发病部位、症状、发病原因、防治措施、病害图、状态),主键:病害编号,外键:农作物编号;留言表(编号、留言人名称、留言时间、留言内容、是否有回复、回复内容)主键:编号;链接表(编号、名称、链接地址、logo图

8、标),主键:编号;用户信息表(编号、用户名、密码)主键:编号;农作物虫害信息表(虫害编号、虫害名称、农作物编号、虫体形状、为害特点、生活习性、防治措施、虫害图、状态)主键:虫害编号,外键:农作物编号;病虫害规则表(编号、农作物编号、类别、规则、结论),主键:编号,外键:农作物编号。根据数据E-R图和关系模式设计数据库,数据库表的详细设计如下主键名称字段类型为空唯一长度默认值备注TrueCropIDvarcharTrueFalse20农作物编号FalseCropNamevarcharFalseFalse20农作物名称FalseCategoryvarcharFalseFalse30类别FalseD

9、escriptionvarcharFalseFalse2000描述FalseStatevarcharFalseFalse50是否为可用FalseImagevarcharFalseFalse50图片名称表4-1 Crops(农作物信息表)主键名称字段类型为空唯一长度默认值备注TrueDIDvarcharTrueFalse20病害编号FalseDiseaseNamevarcharFalseFalse20病害名FalseCropIDvarcharFalseFalse20农作物编号FalseGetsickTimevarcharFalseFalse50发病时期FalseGetsickPlacevarch

10、arFalseFalse50发病部位FalseSymptomvarcharFalseFalse2000症状FalseGetsickReasonvarcharFalseFalse2000发病原因FalseCureMeasurevarcharFalseFalse2000防治措施FalseDiseaseImagevarcharFalseFalse50病害图FalseStatevarcharFalseFalse10是否为可用表4-2 Disease(病害信息表)主键名称字段类型为空唯一长度默认值备注TrueIDintTrueFalse1编号FalseMingchengvarcharFalseFalse

11、50名称FalseLianjievarcharFalseFalse100链接FalseLogovarcharFalseFalse50Logo图表4-3 Lianjie(友情链接表)主键名称字段类型为空唯一长度默认值备注TrueIDintTrueFalse1编号FalseUserNamevarcharFalseFalse10用户名FalseUserPasswordvarcharFalseFalse10密码表4-4 Login(用户表)主键名称字段类型为空唯一长度默认值备注TruePIDvarcharTrueFalse20编号FalsePestNamevarcharFalseFalse50虫害名F

12、alseCropIDvarcharFalseFalse20农作物编号FalseWormShapevarcharFalseFalse500虫状FalseInjuryCharactersvarcharFalseFalse2000为害特点FalseLifeHabitvarcharFalseFalse500生活习性FalseCureMeasurevarcharFalseFalse2000防治措施FalsePestImagevarcharFalseFalse50虫害图名FalseStatevarcharFalseFalse10是否可用表4-5 Pest(虫害信息表)主键名称字段类型为空唯一长度默认值备注

13、TrueRIDintTrueFalse1编号FalseCropIDvarcharFalseFalse20农作物编号FalseClassvarcharFalseFalse10类型FalseRulesvarcharFalseFalse2000规则FalseResultvarcharFalseFalse50结论表4-6 Rules(规则表)主键名称字段类型为空唯一长度默认值备注TrueIDintTrueFalse1编号FalseusernamevarcharFalseFalse50留言人名称FalsePostTimevarcharFalseFalse50留言时间Falsemessagevarchar

14、FalseFalse2000留言内容FalseisrepliedvarcharFalseFalse50有无回复FalsereplyvarcharFalseFalse2000回复内容表4-7 gestbook(留言本表)4.3数据库表关系图本系统的数据表Crops是关于农作物的基本信息,Disease是病害信息表,Pest是虫害信息表,Rules是规则表,病害表、虫害表、规则表的外键都是农作物信息表的编号(CropID)。此外还有用户表(Login)、留言板表(gestbook)、友情链接表(Lianjie),它们都是独立的,没有跟其他表有主外键关联。数据库表的关系图如下:图4-2 数据库表关系

15、图a图4-3 数据库表关系图b5系统实现5.1界面及功能说明5.1.1前台界面模块系统的首页主要是显示各个模块的部分信息,如显示农作物的名称、图片,病害和虫害名称。将部分大家都经常访问的网址做成友情链接、小型的天气预报,方便用户使用。图5-1 访问前台界面流程图5-1 系统主界面图5.1.2病虫害诊断界面本页是用来诊断农作物病虫害的信息的,用户在界面上选择农作物的品种、病害或者虫害,再根据提供的所有事实,从中抽取合适的作为诊断的事实,每个事实间用“,”分隔,最后点击“开始诊断”即可诊断出病/虫害。图5-2病虫害诊断图5.2系统后台界面后台界面:通过后台可以对系统管理者、农作物、病害信息、虫害信

16、息、友情链接、留言本、规则库等进行管理,如增加、修改、删除等操作。界面的右上角有一个用session做成的,当哪个管理员登录后台,就显示用户名,下面是进入系统前台界面的超级链接。图5-3 系统后台界面流程图图5-4后台主页5.3示例代码5.3.1类库示例代码本段类库代码包含了创建数据库连接、打开连接、建立dataset存储记录集合、异常处理、关闭连接。将数据库连接语句写在类库里面,编程时就用可以直接引用,不用每个地方都得编写数据库连接语句。本段代码主要在数据集合中,当需要将数据填充到表中,用本段可以快速地的编写。/ <summary> / 返回个DataTable / </s

17、ummary> / <param name="strSql"></param> / <returns>DataTable</returns> public DataTable ExecuteTable(string strSql) /创建一个数据库连接 string connStr =ConfigurationManager.ConnectionStrings"connStr".ToString(); SqlConnection conn = new SqlConnection(connStr); t

18、ry conn.Open(); /打开连接 SqlDataAdapter adapter = new SqlDataAdapter(strSql, conn); /请求一个记录集合 DataSet ds = new DataSet(); /建立DataSet对象 adapter.Fill(ds); /把记录集合暂存到DataSet中 DataTable dt = ds.Tables0; return dt; catch (Exception ex) throw ex; /异常处理 finally conn.Dispose(); /关闭连接 5.3.2后台示例代码 本段代码主要用于添加新规则时的

19、重要代码,点击添加按钮时,如果文本框是空白的,会弹出对话框提示“信息不能为空”。如果规则已经存在,则重新返回本界面。代码中出现的“helper.ExecuteScalar”在类库代码中已经封装好类了,这样可以方便后期开发,节省时间。/ <summary> / 添加新规则 / </summary> / <param name="sender"></param> / <param name="e"></param> protected void btnAdd_Click(object s

20、ender, EventArgs e) if (txtRule.Text = "") Response.Write("<script language='javascript'>alert('信息不能为空');window.history.back()</script>"); else string strSql = string.Format("select count(*) from Rules where Rules='0'",txtRule.Text);

21、if (Convert.ToInt32(helper.ExecuteScalar(strSql) > 0) Response.Write("<script language='javascript'>alert('规则已存在');window.history.back()</script>"); else strSql = string.Format("insert into Rules(CropID,Rules) values('0','1')",DDLNam

22、e.Text,txtRule.Text); helper.ExecuteSQL(strSql); Response.Write("<script language='javascript'>alert('添加新规则成功');location.href='RuleManage.aspx'</script>"); 5.3.3实现农作物病虫害诊断示例代码本段代码是主要描述点击开始诊断按钮事件的代码,判断文本框的值是否为空,为空则返回该界面;将用户输入的事实用逗号分隔开,并加入事实库中;提取规则库中的的结论部分

23、,放入数组中,然后使用foreach进行循环,根据每个结论进行逆向推理。将诊断结果显示出来public void btnDiagnose_Click(object sender, EventArgs e) if (txtFact.Text = "") Response.Write("<script language='javascript'>alert('信息不能为空');window.history.back()</script>"); else /将输入事实用逗号分隔开,并加入事实库 strin

24、g shishi = txtFact.Text; string str = shishi.Split(','); foreach (string temp in str) machine.AddFact(temp); /先把病虫害写在数组中。然后使用foreach进行循环,根据每个病虫害用逆向推理。 machine.AddFact(shishi); string strSql = string.Format("select Result from Rules where CropID='" + DDLCrop.SelectedValue + &quo

25、t;' and Class='" + DDLClass.SelectedValue + "'"); DataTable dt = helper.ExecuteTable(strSql); for (int i = 0; i < dt.Rows.Count; i+) conslu.Add(dt.Rowsi0.ToString(); foreach (string result in conslu) bool b = machine.CallMachine(result); if (true = b) if (DDLClass.Selec

26、tedValue = "病害") string strSql1=string.Format("select DID from Disease where DiseaseName='"+result+"'"); DataTable dt1 = helper.ExecuteTable(strSql1); string jid = dt1.Rows00.ToString(); Response.Redirect("DiseaseView.aspx?id="+jid+""); else string strSql2 = string.Format("select PID fro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论