基于LBS线下购物的智能导购应用.doc_第1页
基于LBS线下购物的智能导购应用.doc_第2页
基于LBS线下购物的智能导购应用.doc_第3页
基于LBS线下购物的智能导购应用.doc_第4页
基于LBS线下购物的智能导购应用.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

目 录一、 绪论1(一) 背景介绍11、APP背景12、购物背景13、线下店铺背景1(二)项目意义11、用户的意义12、商家的意义2二、 相关技术综述2(一)Android2(二)LeanCloud2(三)Eclipse2三、 系统功能介绍2(一)需求分析21、逛街啦角色22、功能需求2(二)功能介绍31、客户端模块介绍3(三)客户端功能用例41、注册42、登陆4I3、用户分享打折促销信息54、用户评论5(四)leancloud服务器功能用例61、查询用户62、删除用户73、修改用户数据74、消息推送7四、数据库设计8(一) 服务器数据库建立8(二)数据表81、用户信息表82、 商店数据表93、 商品数据表10(三) 数据库逻辑设计101、用户表设计102、 商店数据表设计113、商品数据表设计11(四) 数据表基本信息12五、核心模块开发与设计13(一) Eclipse安卓环境搭建131、准备工作132、安装和配置JAVA开发环境13II3、 安装ADT插件144、安装SDK145、创建Android模拟器15(二) 获取用户的地理位置151、定位方法概述152、 定位功能实现15(三)json数据解析21六、结束语25参考文献25致 谢27基于LBS线下购物的智能导购应用中文摘要:随着移动互联网的兴起,手机逐渐了生活中不可以缺少的一样工具。各种APP应用给人们的生活带来了许多便利和乐趣。但是还有许多方面并没有涉及到。一方面商场的打折促销信息没有被充分传播开来,有促销打折购买的人也不多。另一方面人们想买到更加实惠的服装,却没法很快了解哪些服装,那个商场打折了。逛街啦这款APP就是以用户和商家分享打折信息,致力于让人们更方便的知道周边的一些打折信息,随时随地知道自己喜爱的品牌服装打折促销信息。而商家就能为自己带来更多的收益。用户和商家分享打折信息时,APP会自己获取地点,并支持上传打折店铺的图片和手动填写地址。打折信息分享出来之后,其它用户可以评论和点赞。系统会根据浏览次数,评论次数和点赞时时排名,汇集成当前热门信息。逛街啦是一款基于Android系统的APP,客户端采用Java语言开发,服务器端利用最近比较流行的PAAS平台LeanCloud。中文关键词: 安卓APP 线下导购 打折促销Abstract: With the rise of the mobile Internet, mobile phones and gradually the life of not missing the same tools. APP application to a variety of peoples lives a lot of convenience and fun. But there are many aspects and does not relate to. On the one hand the mall discount promotions are not fully spread, there are promotional discounts not many people buy. On the other hand people want to buy more affordable clothing, but can not understand what clothing quickly, that mall discount. The APP is shopping it to users and businesses to share discounts, dedicated to making it easier for people to know some of the surrounding discount information, know their favorite brand of clothing discounts information anytime, anywhere. And businesses will be able to bring more revenue for themselves. Users and businesses share discount IVinformation, APP will get their own place, and support for uploading images and discount stores to manually fill address. After discount information sharing out, other users can comment and point praise. The system will be based on views, comments, and the number of ranking points like always together into current popular information. Shopping it is a system based on the Android APP, the client uses the Java language development, server-side use the more popular recently PAAS platform LeanCloud.Keywords: android app Offline shopping guide Discounts1、 绪论(1) 背景介绍1、APP背景随着移动互联网的兴起,手机给人们的生活带来了很大的便利。生活中无时无刻不在用手机,早上上班坐公交的时候,拿出手机看新闻,中午吃完饭后,在手机上玩一会游戏,晚上回到家,在手机上听音乐看电影。订餐,订酒店,旅游门票购买,看新闻视频,购物,基本上生活的一切都能在手机上操作。现在的APP应用也很多很多了,有淘宝、京东、百度这一类从PC互联网转过来的,还有像美团、微信、陌陌这些随着移动互联一起发展起来的一些应用。这么多应用,获取本地周边商品打折促销信息的APP却很少。2、购物背景网上购物品质得不到保证,网上购买衣服,没法试穿,没法实地体验,网上买来的衣服往往不合适。假货充斥着各类电商网站。最近国家工商总局对淘宝抽查发现假货达到63%,越来越多的人不相信从网络买来商品的质量。3、线下店铺背景面对网络的充斥,网络购物的流行。线下店铺促销打折的活动也越来越多。但是打折促销的信息传播却不是很好,导致推广力度加大,成本增加。(二)项目意义1、用户的意义用逛街啦app,用户可以随时获取周边有哪些商品促销打折,查看自己喜欢第 2 页 共27 页的品牌有哪些在打折促销。用户就可以从这些打折信息中快速选出自己喜欢的商品品牌。相比网络购物来说,用户可以去商家店铺实际体验,再做购买决定,而且价格还很便宜。用户就可以用更低的价格,买到更加实惠的商品。2、商家的意义商家可以在逛街啦APP中发布打折促销的信息,逛街啦的用户看到信息后,有一部分人就会去商家店铺里面去购买商品。从而给商家带来人流量,增加销售量,获得更多的收益。2、 相关技术综述(一)Android Android是一个基于Linux的自由及开发源代码的移动操作系统。2011年在全球的市场份额跃居第一。现在与ios系统占据了全球80%以上的市场份额。(二)LeanCloudLeanCloud 是国内的移动应用一站式云服务。可以开发一个云存储的移动应用软件,给应用软件快速添加一个安全灵活的后台管理系统,方便浏览终端保存的各种信息。提供了数据存储、实时消息、统计分析以及多种扩展组件,全面涵盖移动应用开发的需求,支持 iOS、Android、Web 等多平台。帮助开发者摆脱繁重的后端开发负担,最大限度地缩短开发周期和加快迭代速度,在激烈的市场竞争中胜出。(三)Eclipse Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。在上面、开发安卓应用需要配置下环境,首先安装上一个Android sdk和java sdk下载好安卓sdk,然后安卓Eclipse。3、 系统功能介绍(一)需求分析1、逛街啦角色 (1)后台管理人员 (2)普通的用户2、功能需求(1)后台管理人员需求1)查询用户信息可以leancloud服务器中查询数据库,获取用户的相关信息。2)删除用户信息可以在数据库中,删除一些用户,或者删除用户的一些信息。3)修改用户数据用户的数据,可以在数据库中手动修改。4)后台上传图片可以直接上传图片到服务器,用户上传的图片可以为它修改。5)查询用户状态查询某个具体的用户是否在线。6)推送功能选择为全部用户,还是符合某些条件的用户推送消息。(2)用户需求1)上传打折促销信息的功能用户看到身边的打折促销信息,登陆逛街啦,即可拍下商家的门店的图片,加上简单描述下,就可以上传到服务器。2)定位功能当用户上传的时候,可以选择自动获取当前位置。用户要查看附近的打折促销信息的时候,也可以点击自动获取当前位置。3)登陆注册注册用手机号码注册,为了防止有人乱注册了乱发消息,注册的时候就必须用手机验证。登陆的用户名也是手机号。4)获取最新的打折促销信息手指下拉一下即可获取最新附近的打折消息。5)评论功能用户看到别人发的打折促销信息之后,可以对其评论。(二)功能介绍 1、客户端模块介绍逛街啦是一款快速获取周边打折信息的一款应用。客户端主要分为用户注册登录,用户上传打折促销,获取地理位置,用户评价。2、 leancloud后台模块介绍(三)客户端功能用例1、注册用户打开APP的时候首先出现登陆的页面,有账号的就可以登陆进去,没有账号的点击登陆按钮右下角的注册,直接去注册。来到注册页面就会有输入手机号码,然后密码,点击注册后,系统会给用户发一条短信,短信里面有验证码。这时注册页面也会跳转到输入验证码的页面,输入正确的验证码点击完成就注册成功了,跳转到主页面如(图3.1)。图3.1 注册流程图2、登陆用户打开逛街啦APP,一开始就进入登陆界面。用户输入用户名,也就是手机号码,然后输入密码,点击登陆即可,流程如(图3.2)所示。图3.2 登陆流程图3、用户分享打折促销信息用户登陆进来之后,点击分享,就出弹出来一个新的界面,点击这个分享的按钮的时候,APP会自己获取用户的位置。这个页面有几个需要填的,用户在地址编辑框中输入自己所在的具体地址,在商品名称的输入框中输入详细的商店名称,然后在输入此商店具体打几折。还有一个图片选项,用户可以从手机相册中选择一张,也可以调动相机直接拍一张图片,最后还有个其他内容,用户可以分享现在的心情,也可以再更加详细的介绍下,流程如(图3.3)。图3.3 分享流程图4、用户评论点击用户分享的打折促销信息,就可以看到用户分享的商店打折促销信息。有商店的图片,商家的具体名字。商品的具体地址,在这个页面上你可以看到其他用户的一些评论。在评论输入框中输入你想说的话,就发表了,流程如(图3.4)所示。图3.4 分享流程图(四)leancloud服务器功能用例1、查询用户打开leancloud网站,登陆进入自己的控制台,可以看到有一个存储的选项。找到数据按钮。点击用户表,找到查询的按钮。选择用户表,输入查询条件,点击查询即可查询到你想要查询的用户,如(图3.5)所示。图3.5 数据库查询流程图2、删除用户选择你要删除的行,然后点击删除就可以把这个用户的相关信息从数据库中删掉了,如(图3.6)。图3.6 删除流程图3、修改用户数据找到你要修改的用户,数据比较多,先查询到这个用户或者这一类用户的数据,鼠标双击就可以编辑用户的信息,如(图3.7)所示。图3.7 修改数据流程4、消息推送找到消息的选项,选择你要推送的平台,选择推送目标。选择用户活跃天数。然后选择推送时间,输入你想要推送给用户的内容。选择推送文件的格式,再选择你想要推送的文件。点击发送就可以给用户推送出去了,如图(3.8)。图3.8 消息推送流程四、数据库设计(1) 服务器数据库建立服务器数据库是用的leancloud的自带的数据库。只需在leancloud后台控制,建立自己的数据表。(二)数据表1、用户信息表用户信息表用来存储用户注册的信息,用户首次使用逛街啦的时候注册,用户名和密码都保存在数据表。用户注册的时候,就把用户名和密码保存在用户信息表中。实现代码如下:AVOSCloud.verifySMSCodeInBackground(sym,user1,newAVMobilePhoneVerifyCallback()Overridepublicvoiddone(AVExceptione)AVUseravUser=newAVUser();avUser.setUsername(user1);avUser.setPassword(pwd);avUser.put(phone,user1);avUser.signUpInBackground(newSignUpCallback() publicvoiddone(AVExceptione) if(e=null) /successfully Intentintent=newIntent(Yanzhengma.this,MainActivity.class); Bundlebundle=newBundle();bundle.putString(username,user1);bundle.putString(pwd,pwd);intent.putExtras(bundle);startActivity(intent);finish(); else /failed Toast.makeText(getApplicationContext(),注册失败,500).show(); ););2、 商店数据表商店数据表用来存储商店的信息,包括商店的名字,商店的地理位置,还有商店的图片信息,商店所卖东西的品类。用户选择上传的时候就存储到商店数据表。实现主要代码如下:AVOSCloud.verifySMSCodeInBackground(sym,user1,newAVMobilePhoneVerifyCallback()Overridepublicvoiddone(AVExceptione)AVUsershop=newAVUser();shop.setUser=(yangguang);shop.setPlace(chongqing);shop.setImage(yichun.jpg);shop.setShopCategory(Fashionclous);user.signUpInBackground(newSignUpCallback()publicvoiddone(AVExceptione)if(e=null)Toast.makeText(getApplicationContext(),上传成功,500).show();elseToast.makeText(getApplicationContext(),上传失败,500).show(););3、 商品数据表商品数据表用来存放商品品牌的数据,当用户填写的时候自动从数据库中加载商品名称。而这些商品的品牌是以首字母来编写的,从A-Z,共26个json,把每个json的地址存在存在数据表的一行。客户端选择的时候根据首字母来加载json 文件。显示出品牌让用户来选择。这个表的数据从天猫品牌分类中搜集来的,后面还会逐渐增加。(3) 数据库逻辑设计 1、用户表设计开发逛街啦期间,分析用户的需求,就确定了基本数据库的一个设计。用户开始注册时有手机号码,密码,后面登陆进去了还可以设置邮箱,年龄,性别。其中主键为id,其实体图如(图4.1)所示。ID年龄手机号性别邮箱密码用户图4.1 用户数据图2、 商店数据表设计商店的数据表,是数据库的核心部分。里面存储着商店的位置,商店的图片,商店的品牌,商店的折扣。整个逛街啦基本全靠这个来支撑运行了。没有商店的数据,用户浏览打折信息的时候不能够及时获取,影响用户体验,商店的数据表有问题,用户看到打折促销的信息之后,想上传,结果去传不成功。很给用户的心理造成很大的困惑,体验也不好。所以这个商店的数据表是相当重要。当然商店数据表的主键也是ID。其实体图如(图4.2)所示:折扣位置图片品牌ID商店数据图4.2 商店数据图3、商品数据表设计商品数据指各种品牌的服装和商品。这些品牌名字,按其首字母A-Z分类。每个类的数据存在一个json文件里面。数据表主键为ID,字母,json文件。其实体图如(图4.3)所示:IDJson商品品牌字母图4.3 商品品牌图(4) 数据表基本信息表一 用户信息表字段名 数据类型 长度 主键 备注ID Int 10 是 自己生成手机号 Varchar 12 否 注册加入密码 Varchar 50 否 用户填写邮箱 Varchar 40 否 用户填写性别 Varchar 3 否 用户填写年龄 Int 3 否 用户填写 表二 商店数据表字段名 数据类型 长度 主键 备注ID Int 10 是 自己生成位置 Varchar 80 否 分享加入图片 Varchar 100 否 用户填写品牌 Varchar 40 否 用户填写折扣 Float 3 否 用户填写表三 商品数据表字段名 数据类型 长度 主键 备注ID Int 10 是 自己生成字母 Varchar 2 否 管理生产Json Varchar 100 否 已有五、核心模块开发与设计(1) Eclipse安卓环境搭建1、准备工作 下载Eclipse、JDK、ADT插件。2、安装和配置JAVA开发环境把准备好的Eclipse和JDK安装到本机上,在全英文路径下安装。安装好了之后,右键我的电脑,点击属性选项,点击更改设置,找到高级选择。点击环境变量,然后点击新建,在出来的窗口中,变量名设为JAVA_HOME,变量值为我JAVA的安装地址(C:Program FilesJavajdk1.8.0_40)。打开命令提示符(cmd),输入java -version命令,显示如图(5.1)说明我的环境已经配置好了。图5.1 java配置验证图3、 安装ADT插件打开已经安装好的Eclipse,选择菜单栏上的“help”,在弹出的下拉框中单击选择“install new software”,在新打开的对话框中我直接在Work with中输入:/android/eclipse/在线安装ADT插件,安装好了ADT插件,看看Eclipse的工具栏是否有一排安卓的图标,如下(图5.2)所示:图5.2 ADT插件图4、安装SDK把下载好的Android SDK安装到本机上(最好安装在全英文路径下),并为Android SDK配置环境变量。Android SDK的环境变量值为SDK安装目录下的platform-tools文件夹和tools文件夹子目录路径,如我的分别为:E:My StudyingAndroidandroid-sdkplatform-tools、E:My StudyingAndroidandroid-sdktools,在变量值中,两个路径用逗号隔开。打开Android SDK的安装目录,双击 SDK Manager-在打开的窗口中先选择你需要安装的SDK版本,其中“Status”表示该SDK包是否安装,如我选的是“Android2.2(API 8)”(我的之前已经安装过了,所以“Status”为“Installed”)-再点击“Install packages.”按钮,在弹出来的窗口中最好选“Accept All”这样才能安装你刚才选的所有的包-最后点“Install”按钮就开始安装了。5、创建Android模拟器打开Eclipse-在Eclipse的工具栏如(图5.3)上单击下图指示的图标打开“Android Virsual Device Manager”窗口;在“Android Virsual Device Manager”窗口单击“New”按钮-在弹出来的窗口中Name可以随便取;“Target”指模拟器的系统版本;“SD Card”的size是指手机存储卡的大小,只要你不在模拟器上装太多的应用,一般给个二三十MB就够了;“Skin”是指屏幕的分辨率大小,其中“Built in”是一般手机常用标准屏幕分辨率大小,而“Resolution”是自定义屏幕分辨率大小,具体做法,可以根据自身情况选择。-一切设置好后点击“Create AVD”,这时一个模拟器就创建好了。如果有必要,我们可以创建多个模拟器用于测试时使用。图5.3 Eclipse工具栏(2) 获取用户的地理位置 1、定位方法概述 (1)GPS定位GPS定位的主要特点就是精度高,耗电量大,不消费流量。在室内的时候反应比较迟缓。(2)网络定位网络点位具有精度低,省电,需要网络访问,网络定位依赖蜂窝网络,获取的是最近的网络基站位置。2、 定位功能实现要实现获取用户的基站信息,获取用户的经纬度,获取用户的具体地理位置。获取基站的方法为getCelllnfo,返回基站信息。获取经纬度的方法为getltuge,传入基站信息,返回经纬度。获取地理位置的方法getLocation,传经纬度,返回地址位置。实现主要代码如下:importjava.io.BufferedReader;importjava.io.InputStreamReader;importorg.apache.http.HttpEntity;importorg.apache.http.HttpResponse;importorg.apache.http.client.HttpClient;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.entity.StringEntity;importorg.apache.http.impl.client.DefaultHttpClient;importorg.json.JSONArray;importorg.json.JSONObject;importandroid.app.Activity;importandroid.app.ProgressDialog;importandroid.content.Context;importandroid.os.Bundle;importandroid.telephony.TelephonyManager;importandroid.telephony.gsm.GsmCellLocation;importandroid.util.Log;importandroid.view.View;importandroid.widget.Button;importandroid.widget.TextView;importandroid.view.View.OnClickListener;publicclassDemoActivityextendsActivityOverridepublicvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);ButtonbtnGetLocation=(Button)findViewById(R.id.button1);btnGetLocation.setOnClickListener(newOnClickListener()/OverridepublicvoidonClick(Viewarg0)/TODOAuto-generatedmethodstubonBtnClick(););publicclassSCellpublicintMCC;publicintMNC;publicintLAC;publicintCID;publicclassSItudepublicStringlatitude;publicStringlongitude;privatevoidonBtnClick()ProgressDialogmProgressDialog=newProgressDialog(this);mProgressDialog.setMessage(正在获取中.);mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);mProgressDialog.show();trySCellcell=getCellInfo();SItudeitude=getItude(cell);Stringlocation=getLocation(itude);showResult(cell,location);mProgressDialog.dismiss();catch(Exceptione)mProgressDialog.dismiss();TextViewcellText=(TextView)findViewById(R.id.cellText);cellText.setText(e.getMessage();Log.e(Error,e.getMessage();privateSCellgetCellInfo()throwsExceptionSCellcell=newSCell();TelephonyManagermTelNet=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);GsmCellLocationlocation=(GsmCellLocation)mTelNet.getCellLocation();if(location=null)thrownewException(获取基站信息失败);Stringoperator=mTelNet.getNetworkOperator();intmcc=Integer.parseInt(operator.substring(0,3);intmnc=Integer.parseInt(operator.substring(3);intcid=location.getCid();intlac=location.getLac();cell.MCC=mcc;cell.MNC=mnc;cell.LAC=lac;cell.CID=cid;returncell;privateSItudegetItude(SCellcell)throwsExceptionSItudeitude=newSItude();HttpClientclient=newDefaultHttpClient();HttpPostpost=newHttpPost(/loc/json);tryJSONObjectholder=newJSONObject();holder.put(version,1.1.0);holder.put(host,);holder.put(address_language,zh_CN);holder.put(request_address,true);holder.put(radio_type,gsm);holder.put(carrier,HTC);JSONObjecttower=newJSONObject();tower.put(mobile_country_code,cell.MCC);tower.put(mobile_network_code,cell.MNC);tower.put(cell_id,cell.CID);tower.put(location_area_code,cell.LAC);JSONArraytowerarray=newJSONArray();towerarray.put(tower);holder.put(cell_towers,towerarray);StringEntityquery=newStringEntity(holder.toString();post.setEntity(query);HttpResponseresponse=client.execute(post);HttpEntityentity=response.getEntity();BufferedReaderbuffReader=newBufferedReader(newInputStreamReader(entity.getContent();StringBufferstrBuff=newStringBuffer();Stringresult=null;while(result=buffReader.readLine()!=null)strBuff.append(result);JSONObjectjson=newJSONObject(strBuff.toString();JSONObjectsubjosn=newJSONObject(json.getString(location);itude.latitude=subjosn.getString(latitude);itude.longitude=subjosn.getString(longitude);Log.i(Itude,itude.latitude+itude.longitude);catch(Exceptione)Log.e(e.getMessage(),e.toString();thrownewException(获取经纬度出现错误:+e.getMessage();finallypost.abort();client=null;returnitude;privateStringgetLocation(SItudeitude)throwsExceptionStringresultString=;StringurlString=String.format(/maps/geo?key=abcdefg&q=%s,%s,itude.latitude,itude.longitude);Log.i(URL,urlString);HttpClientclient=newDefaultHttpClient();HttpGetget=newHttpGet(urlString);tryHttpResponseresponse=client.execute(get);HttpEntityentity=response.getEntity();BufferedReaderbuffReader=newBufferedReader(newInputStreamReader(entity.getContent();StringBufferstrBuff=newStringBuffer();Stringresult=null;while(result=buffReader.readLine()!=null)strBuff.append(result);resultString=strBuff.toString();if(resultString!=null&resultString.length()0)JSONObjectjsonobject=newJSONObject(resultString);JSONArrayjsonArray=newJSONArray(jsonobject.get(Placemark).toString();resultString=;for(inti=

温馨提示

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

评论

0/150

提交评论