




免费预览已结束,剩余46页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分类号:XXXXXXX U D C:XXXXXX密 级:公 开 编 号:2XXXXXxxxxxxxxx学院学位论文动植物病虫害专家诊断系统的设计与实现在线问答模块、分类管理模块、动植物管理模块论文作者姓名:Xxx申请学位专业:软件工程申请学位类别:工学学士指导教师姓名(职称):xxx(教授)论文提交日期:2014年05月22日动植物病虫害专家诊断系统的设计与实现在线问答模块、分类管理模块、动植物管理模块摘 要本文论述了关于动植物养殖理论和实用技术、远程动植物病虫害诊断专家系统的构建和实现过程中的在线问答、分类管理和动植物管理模块。在比较国内外农业专家诊断系统设计的基础上,阐述了本系统实施的方案,推进了动植物病虫 害诊断专家系统的网络化,扩展了动植物病虫害诊断专家系统应用的空间范围。 文中主要以在线问答、分类管理和动植物管理模块为例着重介绍了系统的设计和分析。论文前半部分首先对动植物病虫害诊断专家系统研究的背景与意义、病虫害专家系统在国内外的研究、设计与开发方法、解决的问题和主要的工作进行了较全面的介绍和阐述,接着对本课题动植物病虫害专家诊断系统的核心部分系统技术方案的分析和设计进行了图文描述。论文后半部分是对于病虫害专家系统的在线问答、分类管理、动植物管理模块的总体设计、数据库设计以及界面功能进行了详细论述。动植物病虫害专家诊断系统是B/S+C/S架构的系统,系统后台采用Web开发,服务层采用J2EE开发,客户端基于Android系统开发完成。关键词:动植物;专家系统;病虫害;Android;在线问答Animal and plant diseases and insect pests expert diagnosis system design and implementation of -Online quiz module, category management module, animal and plant management moduleAbstractThis paper discusses about the animal and plant breeding theory and practical technology and remote animal and plant diseases and insect pests diagnosis expert system in the process of constructing and implementing online q&a, classification management and animal and plant management module. In the comparison of domestic and foreign agricultural expert diagnosis system design, on the basis of this paper expounds the implementation scheme of this system, promote the animal and plant diseases and insect pests diagnosis expert system of network, expanded the space of the animal and plant diseases and insect pests diagnosis expert system application scope.In this paper, we mainly online q&a, classification management and animal and plant management module as an example the design of the system are introduced and analyzed. Paper first half first of animal and plant diseases and insect pests diagnosis expert system research background and significance, plant diseases and insect pests expert system at home and abroad in the research, design and development method, solve the problem and the main work conducted a comprehensive introduction and description, then this project the core part of the animal and plant diseases and insect pests expert diagnosis system, system analysis and design of technical solutions by description.Paper after half part is for the online q&a, classification management, plant diseases and insect pests expert system of animal and plant management module of the overall design, database design and interface functions were described in detail. Animal and plant diseases and insect pests expert diagnosis system is B/S + C/S architecture system, backend systems used in Web development, the service layer USES J2EE development, client based on Android system development is complete.Key words:animals and plants;the expert system;plant diseases and insect pests;Android;online question and answer 目 录 论文总页数:41页1 引言11.1 动植物病虫害专家诊断系统简介11.2 本课题研究背景与意义11.3 国内外病虫害专家诊断系统现状分析21.4 本课题的设计和开发方法21.5 本课题解决的问题和主要工作32 技术方案概述42.1 系统总体架构42.2 系统运行环境42.3 服务端技术架构52.4 客户端技术架构62.5 C/S架构概述73 在线问答模块系统需求分析与设计83.1 需求分析83.1.1 功能需求83.1.2 非功能性需求93.2 概要设计103.2.1 总体设计103.2.2 接口设计103.2.3 运行设计123.2.4 数据库设计133.2.5 界面设计143.3 详细设计153.3.1 提问子模块详细设计153.3.2 回答子模块详细设计163.3.3 查询子模块详细设计173.4 应用技术难点194 分类管理的需求分析与设计214.1 需求分析214.1.1 功能需求214.1.2 非功能性需求214.2 概要设计214.2.1 总体设计214.2.2 接口设计224.2.3 运行设计234.2.4 数据库设计244.2.5 界面设计244.3 详细设计255 动植物管理的需求分析与设计275.1 需求分析275.1.1 功能需求275.1.2 非功能性需求275.2 概要设计275.2.1 总体设计275.2.2 接口设计275.2.3 运行设计295.2.4 数据库设计295.2.5 界面设计305.3 详细设计316 在线问答模块的具体实现326.1 提问模块的关键代码和说明326.2 查看我的提问关键代码和说明336.3 查看提问详情关键代码和说明336.4 专家回复提问关键代码和说明347 分类管理和动植物管理的具体实现357.1 分类管理的关键代码和说明357.2 动植物管理的关键代码和说明358 系统测试368.1 应用运行环境368.2 兼容测试368.3 功能测试368.3.1 在线问答368.3.2 分类管理378.3.3 动植物管理378.4 性能测试388.5 测试结论38结 论38参考文献39致 谢40声 明411 引言1.1 动植物病虫害专家诊断系统简介信息技术迅猛发展的时代,人们已经在信息化、数字化的生活空间当中了。Internet的飞速发展已经从根本上转变了人们的工作方式和生活方式,与此同时也转变了了农业的经营形式和服务形式。因此结合移动互联网的优势,设计开发动植物病虫害专家诊断系统,让用户不论在哪儿都能使用该系统进行病虫害的在线诊断,和拍照提问。动植物专家诊断系统采用Android技术实现客户端1,轻量级开源框架实现服务端。主要功能包括自动诊断,防治方法,防治视频,在线提问等。本系统由两位学生共同完成,本任务书完成在线问答模块、分类管理模块、动植物管理模块。在线问答模块用户针对存在的问题对专家进行在线提问,提问的形式可以是文字、图片,对于不会拼音输入的做优化,能够实现语音转文字搜索问题和提问,农业专家回复问题,可以查看用户上传的照片,给出诊断结果,并可以给出系统定义的疾病。分类管理模块将农业定义为中草药材,坚果,水产品,水果,牲畜家禽,粮棉油糖,花卉苗木,蔬菜,蜂蚕桑竹,其他十个大类2。动植物管理,对农业定义的动植物具体种类进行管理。1.2 本课题研究背景与意义随着移动互联网与智能手机的良好发展,使用智能手机的用户数量越来越庞大,以此同时也越来越平民化。智能手机是快捷的互联网的入口,更多的人选择用手机上网获取信息,通过手机上网成本较低,而客户端应用保证了信息的针对性强。我国是农业大国,从事农业生产的人口比例很大。而生物学家,畜牧专家,化学家也在为怎么提高农业产量,研究更好更有效的科学种植。农业资源的合理分配,工农产品的专业包装,也是企业家们最终能够提高农产品价值的有效渠道。农业相对于其他行业在传统互联网时代从其中获得的发展是很滞后的。移动互联网,云计算,物联网的产生,这是农业这个行业面临的前所未有的机遇。国内针对农业方面的应用不多,并且多数是以农业资讯形式。在病虫害方面的应用几乎没有,而此系统可以弥补这方面的空白。1.3 国内外病虫害专家诊断系统现状分析1965年Edward Albert Feigenbaum和Joshua Lederberg等人合作开发的DENDRAL3(专家系统程序)开启了动植物病虫害诊断专家系统的研究之路。经过了将近半个世界的发展,专家系统的技术逐渐走向成熟稳定阶段。在国外,专家系统研究成果也开始应用于动植物病虫害的诊断,如研究和开发于1978年,伊利诺斯州大学的大豆病虫害诊断系统植物PLANT/ds和1983年日本千叶大学开发的番茄病虫害诊断专家系统MTCCS等等。尽管开发了很多的动植物病虫害诊断专家系统,然而真正适用的却很少。例如,在1990到2001的CAB数据库里面,用病虫害诊断作为关键词进行搜索,与此相关的只搜索到了十几篇。在国内,1997-1999年,浙江大学植物保护系与澳大利亚昆士兰大学联合研发的农作物检疫决策系统(简称QPM),QPM系统由LucID子系统(包括Builde与Player两个子系统)和知识库组成,它的分类和鉴定是通过检查表方式进行得来的。QPM系统对每个对象的检疫知识有所属的类别、分布的地理位置、文字信息和图片信息、形状特征的表述、生物学方面的特性、危害性的表现、传播的范围和途径、检疫的方式和有效的防止行动等待。农业专家系统技术是第一个农作物病虫害诊断系统,也是最为活跃的一个领域,有着良好的发展基础和巨大的发展空间。现如今一些动植物病虫害专家诊断系统在农作物病虫害综合管理中有着很重要的辅助计划作用。1.4 本课题的设计和开发方法在本系统实现过程中,是严格遵守着软件工程的方法来执行的。首先是对整个系统进行需求分析,根据分析内容和结果来拟定系统的功能,并且决定系统的基本结构,计划好开发计划;其次是进行概要设计,以系统需求说明书为准,构造系统架构,进行接口设计、数据库设计和界面设计,使系统结构化具体化;第三,则是在概要设计的基础上进行详细设计,即对系统内部进行设计,并且撰写详细设计的分析说明。第四,则是实现功能的核心操作,编程,根据详细设计说明书,来对功能模块进行编码。在特定的硬件平台上,根据不同的操作系统平台、不通的网络环境进行兼容测试。在所有单个模块开发完成之后则可对其进行功能测试,确保各个模块之间能良好的衔接集成运行。最后进行性能测试和用户环境进行测试。本系统的实现是基于Android的动植物病虫害专家诊断应用,系统采用Java语言进行开发。采用ADT做模块框架4,开发工具选择Eclipse,使用Mysql作为数据库。1.5 本课题解决的问题和主要工作本课题主要完成整个系统的三个模块,分别是在线问答模块,动植物管理,分类管理。对于问答模块,由于系统定义的疾病和症状有限,不能完全覆盖动植物的方方面面,所以加入在线问答模块,方便农民和专家进行沟通。对于分类管理模块,在长期的生产生活中,对动植物形成了一些客观的分类,又由于系统的动植物种类很多,利用分类管理把种类分成不同类别,方便用户查找和检索。分类管理模块将农业定义为中草药材,坚果,水产品,水果,牲畜家禽,粮棉油糖,花卉苗木,蔬菜,蜂蚕桑竹,其他十个大类。对于动植物管理模块,动植物是本系统的主要基础数据,疾病和症状都要依赖于动植物种类。本课题主要工作室提出以上三个模块的需求设计,概要设计,详细设计和系统服务端和客户端的实现。2 技术方案概述 2.1 系统总体架构动植物病虫害专家诊断系统是B/S+C/S架构的系统,服务层采用J2EE开发,系统后台采用Web开发,客户端基于Android系统开发。服务端核心是类别管理,动植物管理,疾病管理,问题管理,症状管理。系统总体物理架构主要包括系统基础设施、系统基础软件、系统网络部署等方面。该系统可以部署在电信机房,需要有互联网接入服务。下图是本系统总体系统物理架构图,包括数据库、应用服务器、Web服务器的数量可根据硬件采购预算或后期并发性能升级,进行集群扩展,如图2.1所示。 图2.1 动植物病虫害专家诊断系统架构图技术架构开发的系统一般分为展示层,业务逻辑层,数据层三个方面,这种分层架构能做到当某一层架构和程序发生变化时,不会影响到其他层。例如当用户数量增加导致性能瓶颈的时候,由于封装了数据库的连接及其他所有的操作,为了不改变任何上层代码且平稳的实现过渡和系统扩展,所以持久层中数据库的集中式则需要改成分布式架构。2.2 系统运行环境服务端的操作系统为Cent OS6.3 64位,Web应用服务器为Tomcat7,数据库为Mysql5。服务端运行环境主要是数据库和操作系统的选择。移动客户端的运行版本要求为2.1及以上的Android手机。WEB端的浏览器支持常用的大多数浏览器,Web端主要是实现系统管理后台和提供客户端接口6。2.3 服务端技术架构服务端管理信息系统技术架构采用 J2EE。针对本系统,我们的操作系统选用的Centos6.3版本,数据库选用的是Mysql5.5,J2EE中间件选用的Hibernate7,Spring,服务器使用的是阿里云。服务端管理系统技术架构详情如图2.2所示。 图2.2 服务端管理系统技术架构图本系统架构包含展示层,业务逻辑层,数据层三个方面,这种分层架构能做到当某一层架构和程序发生变化时,不会影响到其他层。本系统中Web框架选用优秀的Spring MVC8,对象关系映射使用的是Hibernate,连接池使用C3p0。服务端管理系统总体系统开发技术架构图如图2.3所示。图2.3 服务端管理系统总体系统开发技术架构图2.4 客户端技术架构动植物病虫害专家诊断系统的客户端是基于Android系统开发实现的。Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备。Android平台包括操作系统、中间件、用户界面与应用软件。早期是由Google开发,之后开放由手机联盟进行开发。它采用了软件堆层的架构,主要分为四部分。底层以Linux内核工作为基础,只为其提供基本功能,C+中间层调用系统。余下的应用软件则由各公司自行开发,java编写应用软件,由于是C封装好的,java直接调用。降低了开发难度,并且大部分发布是免费的,使用成本低,实用性强。另外,目前的最新版本是Android 4.4。动植物专家诊断系统的移动端正是属于应用程序层,调用应用程序层的其他应用和应用框架层完成一些业务功能。如图2.4所示。图2.4 Android系统架构图2.5 C/S架构概述本系统用户客户端采用C/S架构,具体如图2.5所示。C是Client的简称,S是Server的简称。在本系统中具体就是Android客户端。C/S架构图如图2.5所示。图2.5 C/S架构图在本系统中Web系统的具体实现是采用的J2ee。客户端通过调用服务端定义好的web接口完成数据提交和获取,数据格式采用JSON格式。JSON基于JavaScript的一个子集9 ,它是一种轻量级的数据交换格式。JSON选用的是完全独立于语言的文本格式,但也采用了相似于C语言等各语言的使用习惯(如C,C+,C#,Java,JavaScript,Perl,Python等)。以上的这些特征让JSON 成为了完美的数据交换语言。方便了大家阅读和编写的同时也方便了机器解析和生成。JSON语法格式如下图2.6所示。图2.6 JSON语法格式3 在线问答模块系统需求分析与设计3.1 需求分析在线问答模块是整套系统比较独立部分,主要针对用户通过系统不能完成自我诊断而设计的。用户输入手机号通过短信验证码之后,可以通过文字,图片提问。专家的回答要根据系统中定义的疾病类型,对于系统没有收录的疾病,专家需要给出详细说明。所有专家都能回复用户的提问,用户在提问的时候需要选择作物类别,并且可以对回复的问题再次回复。在线考试模块角色作用之间的关系,和它们的具体组成如图3.1所示。图3.1 在线问答用例图3.1.1 功能需求在线问答模块包含用户提问、专家回答、用户查询与回复已提问题、专家查询与回复问题四个子模块。用户提问子模块中用户登录后才能提问,提问可以是文字或者文字加图片的形式,具体如图3.2所示。图3.2 用户提问用例图专家回答子模块中专家登录后台管理系统,查看用户提问列表,然后选择相应的问题进行回答。回答需要填写问题对应的描述或者通过问题指定所患疾病。具体如图3.3所示。图3.3 专家回答用例图用户查询与回复已提问题模块中用户可以查看到自己之前提的问题,并且在此基础上可以在次进行回复,具体如图3.4所示。图3.4 用户查询用例图专家查询与回复问题模块中专家可以查看到自己回答过的问题,并可以在此基础上再次进行回复,具体如图3.5所示。图3.5 专家查询用例图3.1.2 非功能性需求在性能需求上,容量能够承受100的并发访问,事务处理方面能够异步提交问题,界面响应速度的相应时间不超过5秒钟。在质量需求上,具有可靠性、易用性、清晰性、安全性、可扩展性和兼容性。具体表现分别为:程序在没人的干预下,可以全天24小时运行;程序执行命令简单,参数不过分复杂;程序代码易读、易理解,并有相应的注释;用户登录需要通过自身手机号获取验证码;程序可轻易地对需求、设计的变化,算法的改进、程序的变化等调整结构;模块化结构,与其它系统有较好的兼容性。在接口需求上,采用标准化设计的Android用户界面。在约束上,用户必须登录,同时联网状态下才能进行以上操作。3.2 概要设计3.2.1 总体设计在线问答模块涉及问题表,包括提问的人,提问的内容,图片地址,回答人,结果等信息。接口采用Http协议,返回数据格式采用JSON格式。需要设计的界面有:提问,专家信息,我的提问,所有提问,提问详情5个界面。3.2.2 接口设计接口设计包含接口规范和接口列表,接口规范是本系统中定义的客户端与服务端交互接口的规范,接口列表是本模块客户端和服务端交互的接口列表。(1)接口规范系统采用URL进行交互,请求地址形如:http:/*/api/actionname?例如下面是一个实际的地址:00:8088/api/login?username=admin&password=admin如无特殊约定,APP向服务器端请求数据时,使用GET、POST方式提交参数;服务器端向APP响应数据时,使用JSON格式对数据进行格式化。JSON格式定义如下: Success:true, Message:, Result:/*Result对象结构各接口约定*/如无特殊约定,服务器端处理出错时,将返回如下JSON对象: Success: false, Message:, Result:null如无特殊约定,服务器端返回非以上格式的字符串,直接判定服务端异常。在通过URL交互时,有些参数没有提供,或是提供的参数非约定的有效值,此时如果在约定中存在默认值,服务器端不会直接返回错误,而是使用默认值作为该参数的值,继续进行响应。接口参数中“ ”的是必须参数,打“ ?”是可选的参数。在通过URL传递参数获取数据时,如无特殊说明,所传递的查询条件都为“并且”关系。分类管理模块和动植物管理模块使用相同规范。(2)接口列表在线问答模块包含的提问接口,获得我的提问接口,获得所有提问接口,获得某个提问详情接口。a.)提问接口提问是由用户发起的请求,提问的形式是文字或者图片,提问要求用户已经登陆。接口的名字为postQuestion,针对于当前用户发起的请求,需要传出用户提问的内容content,种类cateId,提问人userID和图片file,接口详情如表3.1所示。表3.1 提问接口表URL请求地址postQuestion参数名称必须类型默认值描述contentString内容cateIdString种类userIDString提问人file?File图片服务器响应成功 Success:true, Message:操作成功, Result: nullb.)获得我的提问接口该接口是获取某个用户的提问,接口的名字为getMyQuestions,针对于当前用户就是我的提问,所以在获得我的提问的时候需要传出用户的ID userId,页码page和每页个数pageSize,接口详情如表3.2所示。表3.2 获得我的提问接口表URL请求地址getMyQuestions参数名称必须类型默认值描述userIdString用户IDpageString页码pageSizeString每页个数服务器响应成功 Success:true, Message:操作成功, Result:c.)获得所有提问接口因为本系统对动植物进行了分类,考虑到农户只关心某种动植物的问题,所以在获得所有提问的时候需要传入动植物种类的ID plantCateId。同时也需要传入页码page和每页个数pageSize,接口详情如表3.3所示。表3.3 获得所有提问接口表URL请求地址getAllQuestions参数名称必须类型默认值描述plantCateId?String动植物类别pageString页码pageSizeString每页个数服务器响应成功 Success:true, Message:操作成功, Result:3.2.3 运行设计运行设计中包含了运行模块组合、运行控制和运行时间三部分。运行模块组合将专家信息,用户提问,我的提问和所有提问整合到一个Activity里面,用四个Fragment,详情页面一个Activity。运行控制的方法和操作步骤具体如下:拍照:用户上传图片的一种方式,即时拍照。打开相册:用户上传照片的一种方式,在手机里所有存储图片中选择。语音按钮:支持语音识别,用户点击语音按钮后,弹出录制弹窗,用户说话,自动检测完毕,然后把语音通过Google的服务器转换成文字,填写到提问描述框。选择类别:可以选择大类和小类。我的提问:点击后显示所有我提的文字。所有提问:点击后显示所有用户的提问。提问详情:这个事用户在提问里面上点击某一项之后跳转到这个问题的详情界面,可以看到提问的状态(等待解决,已解决)。还可以看到专家的诊断结果和说明文字。运行时间分别为:拍照的运行时间不超过0.5秒,提交问题服务端相应不超过10秒,具体视内容和图片大小而定。界面切换流畅,相应时间不超过0.02秒。3.2.4 数据库设计在线问答模块相关的表为Question表,其中各字段代表的分别是:id为唯一标识的主键,q_describe为问题描述,q_image为图片地址,q_create_time创建时间,q_update_time为修改时间,q_answer_time为回复时间,q_reply为专家意见,dis_id为病症ID,user_id为提问用户ID,plant_cate_id为作物ID,reply_read_flag为回复信息是否已阅读(1:已读。0/null:未读),q_from为提问来源(病虫害,专家在线),from_expert_id为回复该问题的专家ID,to_expert_id为被提问/留言的专家ID。表中各字段的具体名称、类型、是否为空和内容如表3.4所示。表3.4 Question表名称类型是否为空默认值其他备注idvarchar(36)Noq_describevarchar(255)Yes问题描述q_imagevarchar(300)Yes图片地址q_create_timedateYes创建时间q_update_timedateYes修改时间q_answer_timedateYes回复时间q_replymediumtextYes专家意见dis_idvarchar(36)Yes病症IDuser_idvarchar(36)Yes提问用户IDplant_cate_idvarchar(36)Yes作物IDreply_read_flagchar(1)Yes回复信息是否已阅读,1:已读。0/null:未读q_fromvarchar(100)Yes提问来源(病虫害,专家在线)from_expert_idvarchar(32)Yes回复该问题的专家IDto_expert_idvarchar(32)Yes被提问/留言的专家ID3.2.5 界面设计客户端用户界面采用了标准Android的设计规范。因为Actionbar和Fragment是Android3.0的新特性,所以选用了Actionbar和Fragment作为系统的界面框架。又因为Actionbar Sherlock 可以兼容2.x,所以Android 2.x的也能狗使用这个系统。Android 应用在多个层次上都是颜色丰富艳丽并且具有高度的美感;过渡效果清楚果断且快速有效;布局结构和字体形态清晰易懂且吸引眼球;应用图标的效果极具美感和艺术性。就如同一个精准的工具,把应用中的美妙性、简洁性、易用性和交互性强强联合 10。在线问答模块客户端界面设计如图3.6所示。图3.6 在线问答模块客户端界面设计图服务端因为涉及很多管理功能,界面要求要简洁直观,把编辑,添加,删除和查看整合到一个界面。列表的上部设计一个查询导航菜单,输入手机号就可以查询到某个手机号的用户的提问。每个问题点击即可编辑,每个问题前面都有一个选择控件,方便批量操作。服务端在线问答管理界面如图3.7所示。图3.7 问题查询界面设计图专家回复问题界面上部分显示用户提问的详情和图片,下部分是专家解答和指定所患疾病。专家回复界面设计如图3.8所示。图3.8 问题回复界面设计图3.3 详细设计3.3.1 提问子模块详细设计提问子模块针对存在问题对专家进行在线提问,提问的形式是文字和图片。用户登录手机客户端,选择在线问答功能,跳转到提问界面。用户在提问界面输入描述,上传照片是可选操作。用户可以选择提问的类别,最后提交问题,提问子模块的具体流程逻辑如图3.9所示。图3.9 提问子模块活 用户登陆客户端之后,向客户端发起一个跳转到在线问答的意图,在在线问答页面,选择提问页面选项卡,用户填写问题描述和选择图片,点击提交之后,客户端向服务端提交用户填写的数据,服务端控制层接收到数据之后调用持久层的方法完成问题的保存,保存成功后返回用户状态信息。提问子模块时序图如图3.10所示。图3.10 提问子模块时序图提问子模块中用户必须先登陆才能进行提问操作,其中的输入项为提问描述、提问人ID、提问的类别,输出项为提问是否成功。该模块需要操作的数据表为Question表。 3.3.2 回答子模块详细设计回答子模块针对用户提出的问题专家进行回答。 此模块是由专家角色操作,需要登录后台管理系统。系统校验用户的账号和密码,校验通过之后验证用户的权限。如果符合专家角色,则仅仅显示问题的列表。系统获取提问列表,在专家点击一条数据后,获取这条数据的详情,并跳转到详情界面。专家可以在这个界面直接回答问题。当专家输入了回答描述和指定了所患疾病之后,系统更新这个问题,标记为已经回复。回答子模块的具体流程逻辑如图3.11所示。图3.11 回答子模块活动图回答子模块中用户必须先登陆才能进行提问操作,其中无输入,输出项为回答是否成功。该模块需要操作的数据表为Question表。 3.3.3 查询子模块详细设计查询子模块包含用户查询和专家查询,用户查询子模块用户中登录后可以看到自己的提问,并且可以看到问题的状态。用户查询子模块的具体流程逻辑如图3.12所示。图3.12 用户查询子模块动态图用户打开客户端后,向客户端发起一个跳转到登录界面的意图,登录完成后,切换到我的问答页面,当用户进入我的页面后,客户端向服务端发起一个getMyQuestion请求去获取当前用户的问题列表。服务端业务层收到请求后调用后台数据库的数据,返回给用户。用户查询子模块时序图如图3.13所示。图3.13 用户查询子模块时序图专家查询子模块中专家可以登录后台,获取到用户的提问列表,专家查询子模块的具体流程逻辑如图3.14所示。图3.14 专家查询子模块时序图用户查询子模块中用户必须先登陆才能查看自己的提问,其中的输入项为提问人ID,输出项为问题列表。该模块需要操作的数据表为Question表,User表。专家查询子模块中专家必须登录且具有专家权限,才能看到问题列表,其中无输入项,输出项为问题列表。该模块需要操作的数据表为Question表,User表。3.4 应用技术难点 问答模块涉及以下两个技术难点(1) 图片压缩上传Android系统中文件的形式为二进制形式存在于硬盘,流的形式为二进制形式存在于内存和Bitmap形式。其中文件的形式和流的形式对于图片的体积大小来说并没有什么影响,举个例子,假设手机中SD卡上为100K的话,那么经过流的形式读到内存中的也一定是为100K的内存(注意其中的形式是流的形式而不是Bitmap的形式)。而当图片以Bitmap的形式存在的话,那它所占用的内存会立马增大。100K文件形式的图片储存到内存,用Bitmap形式的话,它占用内存的大小会增加到2M(增大的倍数并不固定)。本系统将图片进行压缩后再保存到本地,所以图片是用文件形式代替了Bitmap形式来进行压缩的,它的优点是:仅仅是图片存放的形式变了,但如果重新读取压缩后的文件为Bitmap时,其占用的内存并没有变化。代码如图3.15所示。图3.15 图片压缩上传代码图(2)ListView优化在本系统中,通过ListView是一个标准适配器模式,数据连接界面到界面链接xml和适配器到XML数据接口,可根据设配器需要的方式显示出数据。xml描述的数据显示,Activity控制这些活动。其中采用自定义的Adapter来重写getView方法,然后将getView方法产生item的视图以及数据给用户。代码如图3.16所示。图3.16 ListView代码图但是在ListView重写的过程当中轻易就能察觉每执行一次getView方法就会new出一个View对象,久而久之就产生了巨大的消耗,尤其是item中还存在Bitmap等,更有甚会引起OOM的错误,以至于造成程序的崩溃。参数View convertView是getView方法中提供的参数之一,也是很重要的部分之一。一般来说item会在ListView滑动的过程当中被滑出屏幕并且不再被采用,此时Android会回收view,然而这个view就是上面的参数convertView。当第一条从屏幕上面的方法我们将新的视图来显示item_new删除,但当我们使用了参数convertView 后我们还可以再次使用它,因此就能避免new View的巨大消耗。下图便是采用convertView,这样就避免了反复创建大量view的问题。如图3.17所示。图3.17 convertView代码图4 分类管理的需求分析与设计4.1 需求分析4.1.1 功能需求对于权限管理模块,用户登录后,如果系统识别为管理员,就可以对其他用户的权限进行管理,权限分为普通、版主、超级管理员等。同时管理员可以删除任何用户的帖子、评论与回复。具体图4.1 分类管理模块用例图4.1.2 非功能性需求在性能需求上,界面响应速度的相应时间不超过5秒钟。在质量需求上,具有可靠性、易用性、清晰性、安全性、可扩展性和兼容性。具体表现分别为:程序在没人的干预下,可以全天24小时运行;程序执行命令简单,参数不过分复杂;程序代码易读、易理解,并有相应的注释;用户登录需要通过自身手机号获取验证码;程序可轻易地对需求、设计的变化,算法的改进、程序的变化等调整结构;模块化结构,与其它系统有较好的兼容性。在接口需求上,采用标准化设计的Android用户界面。4.2 概要设计4.2.1 总体设计在分类管理模块涉及分类表,包括分类的id,分类的名字。接口采用Http协议,返回数据格式采用JSON格式。需要设计的界面有:分类查看1个界面。4.2.2 接口设计(1)获取分类接口该接口是获取系统中定义的分类,接口的名字为getCate,不需要传入任何参数,所取到的系统定义的所有分类,一般不会超过10个。接口详情如表4.1所示。表4.1 获得所有分类接口表URL请求地址getCate参数名称必须类型默认值描述服务器响应成功Success:true,Message:操作成功,Result: ,(2)新增分类接口该接口是新增系统中定义的分类,接口的名字为addCate,需要传入name参数,类别名称可以重复。接口详情如表4.2所示。表4.2 新增分类接口表URL请求地址addCate参数名称必须类型默认值描述nameString分类名称服务器响应成功 Success:true, Message:操作成功, Result:null(3)删除分类接口该接口是删除系统中定义的分类,接口名字为deleteCate,需要传入参数ids分类ID数组,可以实现多个分类的删除。接口详情如表4.3所示。表4.3 删除分类接口表URL请求地址deleteCate参数名称必须类型默认值描述idsString分类ID数组服务器响应成功 Success:true, Message:操作成功, Result:null(4)修改分类接口该接口是修改系统中定义的分类,接口的名字为modifyCate,需要传入id分类ID,name参数,如果名字和原有名相同则不执行更新操作,接口详情如表4.4所示。表4.4修改分类接口表URL请求地址modifyCate参数名称必须类型默认值描述idString分类IDnameString分类名称服务器响应成功 Success:true, Message:操作成功, Result:null4.2.3 运行设计运行设计包含运行模块组合、运行控制和运行时间。运行模块组合将客户端中的分类放在启动页面,将服务端分类的增加,分类的删除,分类的修改和分类的查看整合到一个Activity里面,用四个Fragment。详情页面一个Activity。运行控制的方法和操作步骤具体如下:分类的查看:客户端和服务端对分类的种类进行查看。分类的增加:服务端对分类的种类进行新增。分类的删除:服务端对分类的种类进行删除。分类的修改:服务端对分类的种类进行修改。运行时间分别为:查看分类的时间不超过0.5秒,界面切换流畅,相应时间不超过0.02秒4.2.4 数据库设计分类管理模块相关的表为Cate表,其中各字段代表的分别是:id为唯一标识的主键,name为类别名称。表中各字段的具体名称、类型、是否为空和内容如表4.5所示。表4.5 Question表名称类型是否为空默认值其他备注idvarchar(36)No主键namevarchar(200)No类别名称4.2.5 界面设计用户界面采用标准Android设计规范。采用Actionbar和Fragment作为系统的界面框架,把刷新的按钮和在线问答按钮放在Actionbar上,符合Android应用的用户体验,主界面列出各个分类,直观简洁。客户端界面如图4.2所示。图4.2 分类管理客户端界面设计预览图服务端因为涉及很多管理功能,界面要求要简洁直观,把编辑,添加,删除和查看整合到一个界面。每个分类点击即可编辑,每个分类前面都有一个选择控件,方便批量操作。服务端分类管理界面如图4.3所示。图4.3 分类管理服务端界面设计预览图4.3 详细设计分类管理模块针对动植物的不同进行大体分类。获得分类是由用户和管理发起。获取分类的活动图如图4.4所示。添加由后台管理员发起,分类的名字不能为空。添加的流程如图4.5所示。图4.4 获得分类动态图 图4.5 添加分类的活动图更新由后台管理员发起,分类的名字不能为空。更新的流程如图4.6所示。删除由后台管理员发起,删除操作需要管理员确认。删除的流程如图4.7所示。图4.6 更新分类的活动图 图4.7 删除分类的活动图5 动植物管理的需求分析与设计5.1 需求分析5.1.1 功能需求动植物管理,对农业定义的动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46023.2-2025汽车用智能变色玻璃第2部分:聚合物分散液晶调光玻璃
- GB 46033-2025粮食仓库安全操作规程
- 2025年安全生产安全生产法律法规考试题及答案
- 2025年安全生产填空题及答案大全
- 2025年宠物寄生虫防治师中级模拟题及答案
- 2025年创业实战案例分析及模拟题集
- 2025年企业安全管理员实操题集
- 2025年应急物资储备中心笔试模拟题库及解析
- 2025年金融IT工程师专业能力认证考试试题及答案解析
- 2025年建筑工程施工图设计师资格认证试题及答案解析
- 化工设备基础知识培训课件
- 2025-2026学年北师大版数学小学三年级上册(全册)教案设计及教学计划
- 医疗生产安全知识培训课件
- 2025年平凉市静宁县城镇公益性岗位人员招聘(78人)考前自测高频考点模拟试题及答案详解一套
- 2025年部编版新教材道德与法治二年级上册教学计划(含进度表)
- 2025年【秋季】小学【一年级】开笔礼校长致辞:翰墨初启 开笔破蒙
- 2025年“学宪法讲宪法”主题活动知识竞赛题库附答案
- 2025年秋八年级开学主题班会第一课课件(初二正青春拼搏向暖阳)
- 四级育婴员模拟考试题及答案
- 自来水厂安全标准化管理手册参考模板范本
- TRIZ试题库详细版
评论
0/150
提交评论