



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.物联网个人项目报告我们组的物联网大作业是“食享 ”APP,它是一款基于位置的轻量级美食分享交流应用 。在项目中我主要负责Android 端后台开发 ,以及小组报告的撰写 。1 绪论1.1 课题研究背景本小组从物联网的定义出发,觉得从全球定位系统这个点出发,相对于我们的整体水平 ,更容易实现 。随着全球经济的飞速发展,传统的商务模式已经不能满足企业生存发展的需要 .于是电子商务这一新兴产业便应运而生。从近几年电子商务的发展速度和规模来看 ,足以显示其带来的巨大的商业价值。互联网和宽带上网的普及使电子商务在中国异军突起,并日益渗透到人们的日常生活中。电子商务是运用现代通信技术 、计算机和网络技术
2、进行的一种社会经济形态,其目的是通过降低社会经营成本 、提高社会生产效率 、优化社会资源配置 ,从而实现社会财富的最大化利用 。 电子商务按照经济活动的类别可分为两大类别:第一,企业间的电子商务 ,即企业与企业之间 ,通过网络进行产品或服务的经营活动“第二企业与消费者之间的电子商务,即企业通过网络为消费者提供一个产品或者服务的经营活动 。本课题所研究的美食网站主要是为个人消费者提供产品和服务等,从事的是第二类电子商务活动。1.2 课题主要内容注册与登陆界面 ;美食拍照与定位 ;地图显示与分享位置 ;专业 .专注.用户聊天与互动(美食微博 );( 互动包括 :聊天,关注,点赞 ,评论等)用户个性
3、化添加标签 ;1.3 主要内容介绍美食分享软件系统包括了一般用户、系统管理员两种用户,根据其不同的角色对系统有不同的需求。一般用户需求一般用户可以通过安装在Android系统上的应用程序来访问美食分享软件。在手机端 ,用户可以注册或者登录系统,登录之后能够进行搜索美食,查看美食,收藏美食 ,上传美食等操作 。这些功能已经全部实现了。管理员需求当管理员登录美食分享系统时,可以对整个系统进行管理,包括添加美食种类,删除美食种类 ,更改每日推荐等等 。 这些功能都已经实现,而且直接登录数据库图形化管理工具Navicat ,操作数据库更为方便 。性能方面 ,就下面数据精确度几个指标进行展开:我们的系统
4、能够做到:用户在进行美食搜索时要保证查全率、查准率,所有符合条件的美食都能被找到,这达到了预期的目标 。时间特性1.打开一个新的链接的时间不能超过3 秒。2.系统处理美食搜索操作响应时间不能超过10 秒。3.我们的系统 ,打开一个新链接需要时间不到1 秒,在毫秒的量级 ;4.进行美食搜索操作同样也不到1 秒,当然,这与我们的数据库里能够搜索专业 .专注.的内容偏少有关 。( 2)适应性本软件系统应能在Android2.2 及其以上手机操作系统上良好运行 ,Web 端应能使用 IE6.0 以上内核的浏览器 ,Chrome 浏览器,FireFox 浏览器进行访问 ,完全达到预期目标 。( 3)安全
5、性我们的系统具有一定程度的权限管理,逻辑分析以及检测数据完整性功能,各个功能模块需要相应的权限才能访问。例如:非注册用户 (游客)只具备浏览美食 ,搜索美食的权限 ,只有登录用户才可以对美食进行收藏、上传等操作 。 这一部分在Web 端和 Android端已经实现 ,但是还有一些本地验证等还需要进一步的完善。( 4)可靠性只要服务器不宕机 (充当服务器的 PC 不关机),系统可以保证一直正常运行 。专业 .专注.2 模块搭建系统主要功能接口设计众所周知 ,接口是提供给其他模块或者系统使用的一种约定或者规范。因此接口必须要保证足够的稳定性和易用性。这是设计接口的基本要求。在 Android 端,
6、各个 Activity 模块之间的数据交互主要是利用 Bundle 类对数据进行封装 ,然后通过 Intent 机制在各个模块之间进行传输 。Intent 是一种运行时绑定 ( run-time binding)机制,它能在程序运行过程中连接两个不同的组件 。 通过 Intent ,你的程序可以向Android表达某种请求或者意愿 ,Android会根据意愿的内容选择适当的组件来完成请求。比如,有一个 Activity 希望打开网页浏览器查看某一网页的内容,那么这个 Activity 只需要发出 WEB_SEARCH_ACTION给 Android ,Android 就会根据 Intent 的
7、请求内容,查询各组件注册时声明的IntentFilter ,找到网页浏览器的 Activity 来浏览网页。要在不同的 activity 之间传递数据 ,就要在 intent 中包含相应的内容 ,一般来说数据中最基本的应该包括:Action :用来 指明要实 施的 动作 是什 么,比如 说ACTION_VIEW,ACTION_EDIT等 。 具 体 的 可 以 查 阅androidSDK->reference中 的类,里面的 constants 中定义了所有的 action 。Data : 要事实的具体的数据 ,一般由一个 Uri 变量来表示 。Category :一个字符串 ,包含了关
8、于处理该intent的组件的种类的信息 。一个 intent 对象可以有任意个category 。Type :显式指定 Intent 的数据类型 (MIME )(多用途互联网邮件扩展 ,专业 .专注.Multipurpose Internet Mail Extensions)。登录模块(1)请求消息接口含义 :客户端通过 socket 请求提交用户信息进行验证接口协议 : TCP/IP 协议命令字:dout.writeUTF参数描述约束uid系统给用户分配的 id必须是注册成功的 idpwd密码必须是对应的密码(2)接收消息接口含义 :客户端接收来自服务器端发来的消息接口协议 : TCP/IP
9、 协议命令字:din.writeUTF参数描述约束uid系统给用户分配的 id必须是注册成功的 idpwd密码必须是对应的密码这部分的核心代码实现如下:专业 .专注.注册模块(1)请求消息接口含义 :客户端通过 socket 请求提交用户信息进行注册接口协议 : TCP/IP 协议命令字:dout.writeUTF参数描述约束u_name用户名不能为空u_pwd1密码两次密码输入一致u_qqQQ数字u_Email邮箱地址不能为空u_dis个人描述无(2)接收消息接口含义 :客户端接收来自服务器端发来的消息专业 .专注.接口协议 : TCP/IP 协议命令字:din.writeUTF参数描述约束
10、uid系统给用户分配的 id必须是注册成功的 idu_name用户名提交的用户名这部分的核心代码实现如下:拍照模块这一部分调用了手机上的相机api ,同时将得到的照片提交到上传模块中,与其他内容一起提交到服务器中。拍照的 API 函数:myCamera.takePicture调用的过程 :专业 .专注.返回数据 :接口含义 :拍照模块向上传模块发送图片数据接口协议 : TCP/IP 协议命令字:onPictureTaken参数描述约束data图片二进制数据无主要实现代码 :地图模块这一部分调用了Google 地图的 API,同时将得到的照片提交到上传模块中,与其他内容一起提交到服务器中。专业
11、.专注.调用的 Google 地图 API 包括以下几个方面 :返回数据 :接口含义 :地图模块向上传模块发送图片数据接口协议 : TCP/IP 协议命令字:setResult参数描述约束RESULT_OK标识符无lat经度浮点数lon纬度浮点数主要实现代码 :其他模块的接口设计与上述几个模块的接口设计类似,在这不再赘述 。2.5 系统的设计模式应用设计模式MVC 全名是 Model View Controller,是模型 (model) 视图 (view) 控制器(controller) 的缩写 ,一种软件设计典范 ,用一种业务逻辑 、数据、界面 显示分离的方法组织代码 ,将业务逻辑聚集到一
12、个部件里面,在改进和个性化定制界专业 .专注.面及用户交互的同时 ,不需要重新编写业务逻辑。MVC 被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。MVC 结构如图 2-5 所示:图 2-5 MVC 结构图抽象工厂模式下面是系统封装的抽象工厂描述性说明(1)创建抽象工厂类public class BeanFactory(2)保存相关对象保存 Service 相关对象 private Map serviceMap = new HashMap();保存 Dao 相关对象 private Map daoMap = new HashMap();(3)返回相关对象实
13、例return serviceMap.get(c.getName();return daoMap.get(c.getName();(4)将创建好多的对象放到Map 中专业 .专注.serviceMap.put(c.getName(), service); daoMap.put(c.getName(), dao);(5)返回系列产品return service; return dao;抽象工厂模式示意图如图2-6 所示 。图 2-6统一控制本系统采用Filter技术面向切面编程,实现了统一处理字符集;简单的webCache ,统一控制缓存 ;只有经过登录页面登陆成功才能进入其他页面。体现了一个责
14、任链模式 ,提供了一种声明式服务,具有可插拔的能力 。 采用 Filter技术对 Request 和 Response 请求进行了拦截 ,这对系统后期的完善 ,权限的分配,病毒的拦截有至关重要的作用。采用 Filter 技术主要是调用下面的方法public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) / 完成相关的控制语句chain.doFilter(request, response);专业 .专注.通过本系统中的用户维护说明Filter 的基本原理如图 2-7 所示 。图
15、 2-7 Filter 统一控制流程图2.6 系统的 AOP 设计应用面向方面编程 (Aspect OrientedProgramming ,简称 AOP)是一种声明式 编 程 ( DeclarativeProgramming) 。 声 明 式 编 程 是 和 命 令 式 编 程( Imperative Programming )相对的概念 。 我们平时使用的编程语言 ,比如C+ 、Java、Ruby 、Python 等,都属命令式编程 。命令式编程的意思是, 程序员需要一步步写清楚程序需要如何做什么( How to do What )。声明式编程的意思是 ,程序员不需要一步步告诉程序如何做,
16、只需要告诉程序在哪些地方做什么 (Where to do What )。比起命令式编程来 ,声明式编程是在一个更高的层次上编程 。 声明式编程语言是更高级的语言。声明式编程通常处理一些总结性 、总览性的工作 ,不适 合做顺序相关的专业 .专注.细节相关的底层工作 。本系统中能用到 AOP 的地方:1.统一字符编码处理2.打印出所有业务类的工作流程日志3.所有关键业务方法都加上事务管理功能2.7 系统的非功能设计(如性能 、安全性等 )这一部分已经在第一节阐述,这里不再赘述 。2.8 系统的数据库设计本系统中的信息表主要有10 张表:头像表、用户信息表 、美食种类表 、美食信息表 、每日推荐表
17、、我的收藏表 、广告表 、广告图片表和最大编号表。他们之间的关系可以用图2-8 来表示 。专业 .专注.图 2-8 数据库设计图部分数据库建表语句如下 :create database mstx;use mstx;CREATE TABLE mstx_user(/*用户信息表 */uidintNOT NULL,u_namechar(50)NOT NULL,u_qqvarchar(15),u_pwdvarchar(50),u_Email varchar(50),u_head int,u_adminboolean NOT NULL,u_moodvarchar(50),u_integralint,u_
18、hobbyvarchar(50),u_level int,u_numberint,PRIMARY KEY(uid),FOREIGN KEY(u_head) REFERENCES mstx_head(tid);FOREIGN KEY(gid) REFERENCES mstx_ads(gid);专业 .专注.CREATE TABLE mstx_info(/*美食信息表 */midint NOT NULL,info_titlechar(50)NOT NULL,info_distext,info_lonfloat(17,14),info_latfloat(17,14),info_sortint,inf
19、o_pricedouble,info_timeTIMESTAMP,uidint,hotel_namechar(50),PRIMARY KEY(mid),FOREIGN KEY(uid) REFERENCES mstx_user(uid),FOREIGN KEY(info_sort) REFERENCES mstx_sort(sid);其他表格设计类似 ,不再赘述 。2.9Ui 界面我们的 ui 界面秉承着清新的风格开发出来的。整个软件界面使用一个线性布局,让所有的元素从屏幕上方向下填充,并给整个线性布局进行权重划分。线性布局的最上方是一个TextView ,显示当前城市的名字 ,接着是一个线性
20、布局,布局的左上方是三个TextView ,分别显示拍照等功能 ,通过点击相应专业 .专注.的 TextView ,下方的一个线性布局展现不同的功能。功能面板文字的下方是一个大的线性布局,用来显示未来三天的天气情况。在这个大的线性布局中,又含有三个小的线性布局,这三个小线性布局中包含了各种 button 等(这些控件从上到下垂直居中显示)。通过给整个 XML 文件中 LinearLayout 布局的的子级布局添加权重,让各个部分从上到下有序的显示,让功能面板位于屏幕下方显示,以匹配不同尺寸屏幕,让软件的显示效果更好 。软件的整体布局风格是清新,优美,大方。专业 .专注.2.10 功能设计功能上
21、实现实时的获取天气信息,获取百度 api 返回数据 ,解析百度 api 返回的 json 数据,根据解析到的数据绘制气温趋势图,并将数据反馈到app 上的相应的区域 。通过使用ViewPager 类,来实现天气预报软件中多个城市间的无缝页面切换。由于组员都缺少 JAVA 开发经验 ,对安卓开发也不熟悉 ,所以我们决定采用调用 API 的方法来实时获取不同城市的天气预报数据,在这次项目中我们将采用百度的车载 API。 通过 HttpClient类和 AsyncTask 异步类来获取网络数据 。最后通过 Gson 类来解析获取的网络数据,并给页面中的所有的布局空间设置id ,在 AsyncTask 得到网络数据之后将这些数据同步到软件界面上,呈现给用户 。后台是由食享的后端云采用网络上流行的Bmob后端云平台 ,其提供一定专业 .专注.容量的免费服务器资源 ,和一系列安卓和苹果API 以供初级开发者使用 。我们可以在Bmob网页端注册账号生成免费的云应用,将云应用的密钥结合在android studio工程内导入相关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农学专业知识试题及答案
- 孕婴师中级试题及答案
- 2024年纺织工程师考试学习交流试题及答案
- 2024年广告设计师职业规划 试题及答案
- 医院设备科笔试题及答案
- 云南专升本测试题及答案
- 商业美术设计师2024年考试解析资料及答案
- 云南德宏单招试题及答案
- 研究广告设计的综合市场策略 试题及答案
- 建筑专业面试题及答案
- 海洋机器人与人工智能知到智慧树章节测试课后答案2024年秋哈尔滨工程大学
- 上海市境内旅游合同 示范文本(2013版)
- 钢构制品加工协议
- “煎炒烹炸”与中药疗效(安徽中医药大学)知道智慧树章节答案
- 病毒蛋白相互作用
- 一年级数学下册100以内加减法口算题一
- 2024年新人教版四年级数学下册《第6单元第2课时 小数加减法》教学课件
- 2024年动物疫病防治员(高级)技能鉴定理论考试题库(含答案)
- 四川省2024年全国高中数学联赛(预赛)试题(解析版)
- 江苏省南京市江宁区2023-2024六年级下学期期末数学试卷及答案
- 2024年新课标高考历史试卷(适用云南、河南、新疆、山西地区 真题+答案)
评论
0/150
提交评论