Android购物商城项目

商城的GitHub地址

https://github.com/Kcon-oion/shopping.git

如果有兴趣的朋友可以学习一下源码

项目的基本目录结构

  1. 首先是三个Navigationview,分别有fragment和model来控制,
  2. 基本的组件有listview,scrowview,recycleview
  3. 连接的数据库是sqllite
  4. 封装了mysqlliteopenhelper的助手类,来实现数据库的连接
  5. 封装了User类来保存用户的属性

    在这里插入图片描述

摘 要

购物商城APP,用户可以在APP中为用户提供了清晰简洁的UI界面,可以在APP中挑选商品,根据关键字查询需要的商品,点击商品可以查看详细信息,将自己喜欢的商品加入购物车中,也可以将不想要的商品从购物车中移除,想要购买的商品,点击结算下单购买,使用该APP必须有账号,用户可以在APP中注册账号,注册后即可登录商城,进行商品的挑选,如果用户已经有账号了,但是忘记账号和密码,可以根据注册时预留的手机号登录,通过短信验证的方式进行登录,用户需要购买商品需要填写收货地址,可以通过GPS一键获取当前的地址,自动帮助用户填入,具体的信息用户只需要稍加修改即可,方便用户的操作安卓开发在界面美化和整体的体系上都颇具优势,安卓系统的市场占有率也是第一,结合安卓给予的组件框架,对视图进行编辑,本次项目基于安卓进行项目开发

关键词:Android开发 百度地图API技术 MobTech短信验证 SQLite数据库

目 录

1 需求分析
1.1 用户需求分析
1.2 功能需求分析
2 程序开发任务管理系统分析
2.1 技术可行性分析
2.2 经济可行性分析
3 系统概要设计
3.1 总体功能设计
3.2 系统流程设计
3.3 系统数据库
4 开发软件说明与应用
4.1 开发软件说明
4.2 开发软件应用
5 系统详细设计与设计实现
5.1 欢迎界面功能
5.2 登录注册界面功能
5.3短信验证登录功能
5.4 填写地址GPS一键获取地址功能
5.5 商品预览与检索功能
5.6 商品加入和移除购物车功能
5.7 商品直接购买功能
5.8 商品查看订单功能
5.9 切换账号与退出登录功能
6 核心代码
7 心得体会
参考文献

1.需求分析

1.1用户需求分析
每个人都网上购物的经历,在网上购物中都会给予非常优美的图形界面,商品提供详细的,非常多的商品给用户挑选,这样的购物app也已经有许多做得的非常好的例子,本APP吸取其他商城的优点,努力实现购物商城的基本功能。登录APP需要一个账号,填写基本的信息,售货地址也可以在下单前填写即可,用户对喜欢的商品总是犹豫不决,这时候就可以将想要的商品先加入购物车,商品也直接下单,给予用户提供一个良好的购物体验。

1.2功能需求分析

为吸引用户购买商品,界面提供了精美的商品图片给予用户挑选,还要将商品的其他数据也提供给用户,点击商品即可进入到商品的详细信息介绍,展示的一条条数据是用recycleview,scrollview,pageview来实现的,recycleview基本上已经替代了listview,APP也是主要以recycleview为主,整个商品的购物流程都在一个navigation中实现,分为了四个fragment,底部导航分栏,界面做的简洁易操作,用户操作给予了alterdialog的提示,需要购买的商品可以加入购物车或者直接下单,支付时会提示你需要支付的金额,在购物完可以在订单中查看,为用户提供了忘记密码的功能,可以根据注册时预留的手机号进行短信验证登录,用户在填写收货地址时,可以根据一键GPS定位获取到地址,用户只需要修改一些信息,无须全部手动添加,极大地优化了用户的购物体验

2.程序开发任务管理系统分析

2.1 技术可行性分析

本程序主要用到了目前比较流行的安卓手机,百度地图API技术 MobTech短信验证 SQLite数据库,之前没有使用第三方SDK的经历,但是在自学中开始阅读SDK的开发文档,根据开发文档和demo实例,自己去实现需要的功能例如短信验证和GPS定位,recycleview,navigation,pageview,listview,alterdialog等的组件的技术比较熟练,SQLite数据库的使用也比较熟练,会遇到一些难题也能在谷歌上找到很多的提示和启发,不断的改进和完善APP的功能

2.2 经济可行性分析

百度地图API技术 MobTech短信验证的软件开发平台都是免费的,有面向个人的应用开发,不会产生企业级应用的成本预算,在开发过程中,因为需要模拟真实的验证和GPS定位,虚拟机已经不能满足基本的要求,所以本次APP的开发都在真实的安卓手机上进行

3.系统概要设计

3.1 总体功能设计

在这里插入图片描述

                          图-总体设计图

APP分为两个主要的模块,第一个模块是用户的注册登录,一个模块是用户购物
一是注册功能
填入用户的基本信息,例如手机号,身份证号码等等,预留的手机号是忘记密码后登录账号的依据,可以短信验证手机号进行登录

二是购物功能
Navigationview+fragment来实现整个购物的布局,分为home,hot,shop,count这四个fragmenthome,hot,shop这三个fragment使用的是recycleview的布局,其中hot的fragment是pageview和recycleview,还有一个count的fragment因为布局比较简单就使用Listview,订单列表使用的是recycleview在home界面中可以查看到所有商品的信息,可以模糊查询,找到关键字进行搜索,如果有需要的物品可以点击相应的item,进入到商品的详细信息,用户可以选择先不下单到加入购物车,或者直接下单购买

3.2 系统流程设计

在这里插入图片描述

                        图-系统流程设计

用户打开APP时,会短暂的停留在淘宝的欢迎界面上,然后再进入登录界面,有账号的可以直接登录,没有账号的可以注册一个账号,有账号但是忘记密码的可以通过手机验证码的形式登录账号
登录之后,用户登录到商城界面,商城里面有许多的商品提供挑选,也可以通过关键字搜索自己感兴趣的商品,预览商品后发现自己喜欢的商品,可以点击商品查看详细的信息,确定好商品后可以选择加入购物车或者直接购买
查看购物车,已经加入购物车的商品会直接的显示在这个界面上,点击一个checkbox的按钮,表示自己想要下单的商品,右下角会有出现需要支付的商品的金额,取消商品最左边的checkbox会把该商品的金额减回去
查看订单,直接购买的商品和在购物车下单的商品都查看商品的订单,一个订单的商品一行数据,商品的信息会显示在订单的数据中
填写收货地址,可以一键GPS定位来辅助填写收货地址,也可以自己填写收货地址,点击确定会包地址保存下来

3.3 系统数据库

本程序使用的数据库为SQLite。在其中建立了三个表,分别为user、shop,shoptrolley表。表中的属性如上图所示。

在这里插入图片描述

                              图-shopping

在这里插入图片描述

                              图-user

在这里插入图片描述

                       图-shoppingtrolley

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件
使用SQLite有以下优点:
① 不需要一个单独的服务器进程或操作的系统(无服务器的)。
② SQLite 不需要配置,这意味着不需要安装或管理。
③ 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
④ SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于
⑤ 250KiB。
⑥ SQLite 是自给自足的,这意味着不需要任何外部的依赖。
⑦ SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
⑧ SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
⑨ SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
⑩ SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行

4.开发软件说明与应用

4.1 开发软件说明
本软件的开发软件为AndroidStudio,是谷歌推出的一个Android集成开发工具,谷歌推出了idea版本,为开发者提供了Android开发工具用于开发和调试
(1)基于Gradle的构建支持;
(2)Android 专属的重构和快速修复;
(3)提示工具以捕获性能、可用性、版本兼容性等问题;
(4)支持ProGuard 和应用签名;
(5)基于模板的向导来生成常用的 Android 应用设计和组件;
(6)功能强大的布局编辑器,可以让你拖拉 UI 控件并进行效果预览。
(7)包依赖的一键导入与同步

4.2 开发软件应用
在这里插入图片描述

            图-java文件结构           

在这里插入图片描述

                     图-文件结构

5.系统详细设计与设计实现
5.1 欢迎界面

图-欢迎界面
打开APP会有一个handler控制的acitvity,延时两秒跳转的登录的界面
5.2 登陆注册界面功能
在这里插入图片描述
在这里插入图片描述

         图-登录界面                   

在这里插入图片描述

            图-注册界面

进入到loginactivity中需要填写账号的密码,如果没有账号可以直接点击注册,注册需要填写基本属性,账号,密码,手机号,身份证号的属性,注意这里预留的手机号是忘记密码时登录的依据,必须如实填写

在这里插入图片描述

        图-账号不能为空              

在这里插入图片描述

           图-密码不能为空

填写登录界面的账号和密码时,账号和密码不能为空,为空会提示错误,当所有的账号和密码都填写正确后,可以进入到主界面中。这里的报错提示使用的是seterror方法,当跳入的错误输入的方法中,显示错误后直接return跳出方法

5.3 短信验证登录功能

图-短信验证 图-选择地区

如果忘记了账号和密码,用户也无须慌张,可以根据预留的手机号发送验证码,来登录到商城,选择号码所在的地区和手机号

在这里插入图片描述

图-发送短信

在这里插入图片描述

图-填写验证

点击发送验证码,会弹框提示确认的信息,发送后有六十秒的有效时间,用户必须在规定的时间内填写该验证码,如果过期了则无效,需要再次发送验证码

在这里插入图片描述

          图-验证成功

当收到验证码后回到APP中填写,如果填写正确则显示成功,直接进入主界面,如果失败则显示验证码错误

在这里插入图片描述

5.4 用户填写地址,GPS一键获取地址
填写收货地址,如果用户觉得填写的地址麻烦可以直接一键获取地址,APP将会对手机进行定位,这需要在manifest中申请权限,注册一个server来实时的监听位置,这样还不够,还需要动态的申请读写和访问设备的权限,点击一键获取按钮,就会将当前的地址填入编辑框,精度精确到镇和乡道,具体的信息用户只要稍加修改

在这里插入图片描述

                      图-百度地图SDK开发平台

注册一个android项目,填写基本信息,包名,秘钥等,阅读开发文档属性其封装的类与方法,根据实例demo构建自己的项目

图-生成秘钥
需要使用jre的keytool的exe文件来生成秘钥,生成在.android目录下,这个秘钥需要填写在创建的项目下

5.5 商品预览与检索
在这里插入图片描述

                图-预览商品   

在这里插入图片描述

               图-检索商品

使用recycleview来实现这个的流式布局,适配器中需要传入的参数是cursor和listener,一个携带数据源,一个设置监听事件,数据是封装了getdata方法去从sqllite数据库中获取,这里自己实现了一个sqlliteopenheloer的类,用来指定数据库和初始化,database对象对数据信息获取,这里的图片和商品的信息都是圆角处理,试下的方式不一样,图片是使用androidx下1的CardView组件,自带有圆角的属性,imageciew没有自带圆角的属性,而这个linearlayout的信息框,则是设置样式来实现的,在xml文件中设置圆角属性,布局继承样式实现

在这里插入图片描述

      图-滚动广告-热门商品

这里的滚动广告是pageview的布局,需要适配器,操作基本和recycleview一致,但是需要配合handler做延时的播放和处理到第一张图片和最后一张图片的情况,这里需要五张图片的话,item中就需要设置七张图片到边界直接跳回中间的五张,就好像把这五张图片形成了一个环状

5.6 商品加入和移除购物车
在这里插入图片描述

          图-商品详情                       

在这里插入图片描述

         图-加入购物车

点击商品即可进入商品的详细信息,这里的shopdetail对使用scrollview的组件,这个也是androidx的组件,使用androidx的组件需要导入对于的依赖,这和普通的布局不一样,当数据超出界面时不会不显示,而是有一个滚动条,可以下来查看到后面的信息,点击购物车后,页面会跳转回home fragment的界面中,继续挑选商品,单击shop可以查看在购物车的商品,购物车的实现也是一个recycleview,shop-item中还有一个checkbox,是用来实现点击勾选结算
在这里插入图片描述

          图-移除购物车                       

在这里插入图片描述

             图-商品结算支付

如果要将商品从购物车中移除,只需要点击对于的商品,会弹出对话框开提示你是否删除使用的是alterbullder.dialog的对话框,这里及得要create和show,点击后对话框才会显示,选择取消则不删除选择确认则触发事件,删除数据库中购物车表的这行数据,recycleview更新数据,当你删除后,该商品就从购物车消失了,勾选需要购买商品,下方的金额会累加,当取消勾选时,则金额退回减少,点击支付会显示需要支付的金额,点击确认,商品从购物车的fragment中移除,可以在订单中查询

5.7 商品直接购买
在这里插入图片描述

              图-商品直接购买

商品除了可以加入购物车之外,还能点击立即购买,直接弹出对话框提示,是否购买,并显示金额,点击确认下单,订单会在我的订单中显示,intent跳回主界面,用户可以继续挑选购买商品

5.8 商品查看订单
在这里插入图片描述

    图-查看订单

我的订单也是使用recycleview实现的,显示了图片,商品介绍和金额
5.9 切换账号与退出登录
在这里插入图片描述

           图-用户详细信息       

在这里插入图片描述

       图-点击item变换颜色

点击button的组件会改变颜色,创建一个xml文件,设置press的颜色和默认的颜色就可以实现点击变颜色的操作,组件需要继承这个样式

在这里插入图片描述

            图-切换账号      

在这里插入图片描述

            图-用户退出

点击切换直接intent跳转到loginactivity中,点击退出直接退出APP

6.核心代码
这里创建一个全局的对象,因为用户从登录开始就一直存在,所有不需要一直用bundle去在每一个activity或者fragment中传递数据,这里要继承application,并静态实例化自己
在这里插入图片描述

                        图-User类

重写oncreate,获取自身实例,这样写每一个activity只需要调用静态类无须创建对象
在这里插入图片描述

                 图-User类的oncreate

manifest中需要将application的名字改为类的名字
在这里插入图片描述

                图-manifest的application

在activity只需要这样类名.getinstance.方法去获取这个全局对象的属性和方法,用户的基本信息都存放在这个类中
在这里插入图片描述

                        图-user类的实现

面对内存泄露需要创建bitmap对象,先将像素点调低到五分之一,再使用recycleview来实现

创建recycleview,适配器中需要的参数为cursor和listener,cursor是数据源,listener是监听器,实现事件监听,cursor是调用一个自己实现的soqlitehelper的实现类指定数据库
在这里插入图片描述

                       图-recycleview

Pageview利用postion设置其循环播放,默认的位置,需要配合着handler做延时的操作,两秒更新一次pageview的postion
在这里插入图片描述

                             图-pageview

短信验证的实现
在这里插入图片描述

                   图-短信验证实现

百度地图定位的实现initlocation是实现定位的基本方式经纬度的精度,定位的频率等的参数
在这里插入图片描述

                         图-百度地图实现

猜你喜欢

转载自blog.csdn.net/weixin_44822939/article/details/107556204
今日推荐