您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 范例--Java课程设计项目报告分析
1计算机科学与技术学院“课程设计”项目报告项目名称:石头剪刀布小游戏专业:14软件工程班级:14软件工程学号:143801013姓名:邓舒成绩:学号:143801012姓名:王威成绩:指导教师:鲁屹华申请日期:2016年春学期湖北科技学院计算机科学与技术学院制2项目名称石头剪刀布小游戏研究起始时间2016年6月完成时间2016年7月指导教师简况姓名职称所属教研室课程名称设计内容及要求(由指导教师填写):设计一款具有明锐的感知能力,智能处理能力,自然的交互方式的物联网云平台,支持高并发并在大量连接的情况下快速反应,实现大数据存储与各种事件的响应和处理,实现各种情景调控与各种人性化操作。实施方案及实施计划1、具体研究内容、研究目标和拟解决的关键问题研究内容:设计一款具有敏锐的感知能力,智能的处理能力,自然的交互方式的物联网平台实现海量并发连接,海量数据存储,在线监控,事件告警,情景设置,数据分析等众多智能需求的物联网系统,达到任何时间,任何地点,任何物体之间的互联,推动大数据,云计算,移动互联网,物联网等与现代制造业结合已经成为业界不断追求的目标。研究目标:实现任何时间,任何地点,任何物体之间的互联,融入大数据等计算机行业的新技术,打造一个智能化的物联网云平台。解决的问题:降低对服务器的压力,采用MySQL-Redis二级存储体系,实现读写分离,降低了磁盘IO的开销,加快读写速度,高效的转发命令,降低程序之间的耦合性。2、进程安排(给出项目实施的具体分步骤计划)2016年6月:根据设计文档搭建服务器并模拟app测试服务器端代码的功能是否可用2016年6月:开始编写app端的代码,实现基本的功能2016年6月:实现app和服务器端的额外的功能,并完善前期没有完成的功能。2006年6月:不断测试并完善app和服务器端的功能,并测试其性能3、具体设计方案(3000-5000字)3说明:主要分为四个部分(文中不允许有错别字,语句不通顺处,标点错误地方,每发现一处总成绩扣掉5分。格式错误,每处扣1分。)1.关键技术以及开发工具2.实现思路以及具体实现3.界面展示4.设计总结说明:文档结构如下(范例):1系统设计关键技术及开发工具1.1MQTT协议1.2REST架构1.3Redis高速缓存1.4c3p0数据库1.5HTTP协议1.4开发工具MyEclispe简介2设计思路及具体实现2.1系统整体分析2.2系统数据分析2.4功能模块的核心代码3系统界面展示3.1设备列表页面3.2设置界面3.3添加设备界面3.4详细设置界面43.5分享应用界面3.6手动添加设备界面3.7RGB灯控制界面3.8呼吸灯界面3.9舞台灯界面3.10闹钟灯界面4设计总结说明:格式如下(范例):1关键技术及开发工具随着物联网的发展和移动终端的普及,设计一款支持高并发,海量存储的物联网平台实现对物理设备的智能化管理是人们的普遍追求。本平台在采用把服务器分成几个模块单独运行,降低了高并发对服务器的压力;采用MySQL-Redis二级存储体系,实现读写分离,降低了磁盘IO的开销,加快了读写速度;采用轻量级的MQTT协议借助MQTT代理服务器转发用户命令,使消息转发更及时、高效;采用restful风格的URI设计,是各个接口的功能和整体结构更清晰,也降低了系统的耦合性。本系统主要基于MQTT协议和HTTP协议实现安卓、服务器和远程硬件设备之间的通信,使用restful融合HTTP协议映服务器的资源为app和硬件设备提供服务,使用c3p0数据库连接池访问MySql数据库存储用户数据和设备信息和设备的操纵信息实现数据的持久存储,考虑到大数据和高并发给服务器造成巨大压力的情况,在本系统中融入了redis数据库,真正实现二级存储体系,支持高并发下,服务器快速响应,提高了资源请求的效率。1.1MQTT协议MQTT协议是由IBM开发,为物联网而设计的消息传递技术,支持发布/订阅的消息传递模式。它是一种轻量级基于代理的发布订阅消息的传输协议,其设计思想是开放,简单,轻量,容易实现,适合在低带宽、网络不稳定,网络代价昂贵以及处理器和存储器资源有限的嵌5入式设备和移动终端上,具有开放、轻巧、可靠的特点。在本平台中通过设置cleansession为false保证硬件设备和手机客户端上线之后可以订阅到不在线时候的消息,当设备离线时使用遗嘱向MQTT代理服务器发送消息告知服务器设备离线,设备上线后处于长期订阅状态,保证及时接收app发送的消息。MQTT消息代理作为中间层,采用发布/订阅消息传递模式。这样可以把系统抽象为消息在消息代理和客户端之间相互传送。其中客户端是消息的发布者和订阅者,消息代理主要是用来统一管理和转发需要传递的消息,发布者向消息代理发送特定主题的消息,订阅者向消息代理订阅特定主题的消息。这样降低了系统间的耦合度,也可以屏蔽异构平台,网络协议和数据格式的差异。1.2REST架构在rest架构风格的概念中,任何被引用的实物都被视为资源。rest架构通常包含客户端和服务器,客户端向服务器发送请求,服务器处理请求并给出适当的响应,请求与响应都围绕着资源的描述完成。资源从本质上看可以是任何有意义的可寻址的概念。在本平台中redt框架是连接手机app和各功能模块的桥梁。首先,使用@Path标记资源路径,使用@GET、@POST、@DELETE或@PUT标记当前资源的访问方式,使用@Produces(“application/json”)标记资源类型。然后,在main函数中用component组件添加服务器并指定使用的协议类型和端口,最后把添加的服务器与自己编写的资源联系起来并启动服务器。这样就把java编写的程序映射为一台可以使用http协议访问的服务器。主程序模块与各个子模块之间也使用同样的方式把java程序映射为资源,通过http协议相互访问。2设计思路以及具体实现2.1系统整体分析本课程设计将要设计一个“剪刀,石头,布”游戏,它是由程序随机产生“剪刀,石头,布”中的一个,且不重复。玩游戏者通过由用户输入自己的答案来匹配上面所产生的。用户输入答案后,电脑会根据游戏规则判断你的胜负。首先我设计了一个游戏系统,主要是剪刀、石头、布游戏,游戏规则如下:(1).输入一个答案,答案是剪刀、石头或者布。(2).如果玩家输入的不是系统要求的答案,系统将提示您,您输入的不是数字请重新输入.(3).如果玩家输入的答案与随机生答案比交,如果能打赢系统就会提示您赢得了比赛。(4)如果玩家输入的答案与随机生成答案相比较,如果不能赢得比赛并且是输掉的话,系统就会提示您输掉了比赛。(5).如果玩家输入的答案与随机生成答案相比较,如果不能赢得比赛而是和电脑的答案相同的话系统就会提示您平局。62.2系统数据分析本系统共有3张数据表:用户表:设备表:7用户操作表:2.3数据流图8系统架构图例:9例:102.4功能模块的核心代码服务器端系统开发目录结构:1112App端项目开发目录结构:1314三个模块的web.xml:context-paramparam-nameorg.restlet.application/param-nameparam-valuecom.wulianwang.resletApplication.RestJaxRsApplication/param-value/context-paramservletservlet-nameRestletServlet/servlet-nameservlet-classorg.restlet.ext.servlet.ServerServlet/servlet-class/servletservlet-mappingservlet-nameRestletServlet/servlet-nameurl-pattern/*/url-pattern/servlet-mapping控制模块的代码:15@POST@Path(/userOperations/)@Produces(application/json)publicStringuserOperations(Representationentity){System.out.println(用户操作);Formform=newForm(entity);System.out.println(form转换成功);Stringcontrolinfo=form.getFirstValue(controlinfo);System.out.println(controlinfo是:+controlinfo);simpleResult=newSimpleResult();if(controlinfo!=null){controlModel=gson.fromJson(controlinfo,ControlModel.class);System.out.println(mac是:+controlModel.getMac());simpleResult.setUserId(controlModel.getUserId());if(isClock(controlModel.getContent())){returngson.toJson(simpleResult);}else{Stringparam=controlinfo=+controlinfo;result=HttpPost.sendPost(MqUrl,param);//Mqtt发布消息//result=Client.update(url,form);//result=HttpPost.sendPost(MqUrl,param);//Mqtt发布消息SimpleResultsimpleResult2=newSimpleResult();simpleResult2=gson.fromJson(result,SimpleResult.class);if(simpleResult2.isResult()){simpleResult.setResult(true);simpleResult.setReason(控制成功);HttpPost.sendPost(DbUrl,param);System.out.println(用户操作存入数据库);}else{simpleResult.setResult(false);simpleResult.setReason(控制失败);}}}else{simpleResult.setResult(false);simpleResult.setReason(传入的实体是空的);}returngson.toJson(simpleResult);}16MQTT发布的代码:@POST@Path(/release/)@Produces(application/json)//publicvoidpublish(Stringcontext,Stringtopic){publicStringpublish(Representationentity){System.out.println(mqttRelease);Formform=newForm(entity);System.out.println(form转换成功);StringcontrolInfo=form.getFirstValue(controlinfo);System.out.println(controlInfo是:+controlInfo);Gsongson=newGson();ControlModelcontrolModel=gson.fromJson(controlInfo,ControlModel.class);Stringtopic=controlModel.getMac();System.out.println(topic是:+topic);Stringcontext=controlModel.getContent();S
本文标题:范例--Java课程设计项目报告分析
链接地址:https://www.777doc.com/doc-1547108 .html