毕业实习大作业(Android-Spring Boot-MySQL 前后端分离项目 快速上手实例)

《毕业实习大作业——二手铺子(Second Hand Shop)》

软件开发文档
源码连接

Android项目源码链接:https://download.csdn.net/download/weixin_41560071/12922340
Spring Boot项目源码链接:https://download.csdn.net/download/weixin_41560071/12922335)

本次毕业实训大作业完成内容
需求分析,功能设计,界面设计,MySQL数据库设计,Android开发, Spring Boot后台开发,功能测试,实验报告撰写等。
使用MVC(Model View Controller 模型-视图-控制器)设计模式进行本次开发:
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
  通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
  通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
  通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

文档说明
目录
一.引言
1.编写目的与背景
2.定义
二.需求分析
1.功能需求
2.外部接口需求
三.功能开发
四.数据库设计及MySQL库创建
五.Android页面设计、关键技术及问题解决
1.页面设计
2.关键技术
3.开发过程中遇到的问题及应对:
六.Spring Boot关键设计及问题解决
1.关键设计
2.开发过程中遇到的问题及应对:
七.软件质量属性

一.引言  
1.编写目的与背景
随着网络和电脑的普及,现在几乎每个人都能连接网络,为了方便喜欢买卖二手商品的用户,我本次开发的软件能够满足用户随时随地查看二手商品的需求,以及很方便的管理自己店铺。     
2.定义
二手铺子(SHS):一款购买和出售个人二手事物的商城Android APP   
二.需求分析
1.功能需求
1.1 信息查看
(1)查看商店
用户登录APP后,可对商店信息进行查看操作。
(2)查看商品
用户登录APP后,可对商品信息进行查看操作。
(3)查看订单
用户登录APP后,可对订单信息进行查看操作。
1.2信息管理
(1)店铺注册
用户登录APP后,可注册新店铺,输入店铺名、简介、主营业务等关键信息。
(2)添加商品
用户登录APP后,可添加新的商品,输入商品名、所属店铺名、价格、简介描述等关键信息。
2.外部接口需求
2.1、用户界面
用户界面要简洁,大方,各个功能按钮要简单明了,易学易用,界面清晰明了;有清楚的错误提示;让用户知道自己当前的位置,使其做出下一步行动的决定;完善视觉的清晰度,条理清晰;图片、文字的布局和隐喻不要让用户去猜。
2.2、硬件接口
用户通过APP上网,将服务器上的数据加载到客户端。
服务器应该使用专用服务器。
使用的通信协议是HTTP协议,
2.3、软件接口
支持Android7.0以上版本的操作环境。
操作系统与MySQL的接口:交互数据。
2.4、通信接口
对于客户端与服务器交互的数据,进行信息交换,并在客户移动终端和服务器之间重要的信息的交换。
三.功能开发
二手铺子APP提供轻便简洁的二手商城交易平台。用户查看二手商店、商品以及下单,并且方便用户注册和添加商品信息。
在二手铺子(SHS)这款软件使用中,可分为买家与卖家两种角色,针对用户的功能设计主要分为两个模块,分别为信息查看模块,信息管理模块。
信息查看模块: 提供查看商店、查看商品、查看订单等功能。
信息管理模块:提供店铺注册、添加商品等功能。
在这里插入图片描述

系统功能图
四.数据库设计及MySQL库创建
为清晰记录店铺信息、商品信息以及订单信息,以方便修改和查看,进行数据库设计,主键为自增id,每一元组表示一条用户和日记信息记录。
在这里插入图片描述

ER图
SQL server数据库建立:

1.店铺表

在这里插入图片描述

2.商品信息表
在这里插入图片描述

3.订单表
在这里插入图片描述

五.Android页面设计、关键技术及问题解决
1.页面设计
本系统的Android页面设计均采用LinerLayout多层嵌套和weight划分比例的方式,并且对应需要列表查看的页面,采用RecycleView嵌套页面实现。
在这里插入图片描述

页面流程设计草稿

  1. 平台主页
    在这里插入图片描述
    在这里插入图片描述

  2. 店铺注册页
    在这里插入图片描述
    在这里插入图片描述

  3. 商品添加页
    在这里插入图片描述
    在这里插入图片描述

  4. 商店页(商城主页)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  5. 商品页(店铺商店分页)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 订单下单页面(购买下单)
    在这里插入图片描述
    在这里插入图片描述

7.订单页(历史订单查看)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.关键技术

  1. LinerLayout线性布局
    LinearLayout在水平或者垂直方向上依次按照顺序来排列子元素,控件的排列顺序遵循其在布局文件中被写出的先后顺序。LinearLayout是Android开发中最常见的一种布局方式, LinearLayout中存在weight这一属性,在水平方向上代表列宽,在垂直方向上代表行距。一般这个值越大,则所占用的控件比例越大,用weight能很好的控制控件的布局比例,在各种分辨率下适用,具有良好的延展性。

  2. RecycleView实现瀑布流列表
    RecycleView提供了一种插拔式的体验,高度的解耦,异常的灵活,针对一个Item的显示RecyclerView专门抽取出了相应的类,来控制Item的显示,使其的扩展性非常强。

使用RecyclerView必须指定一个适配器Adapter和一个布局管理器LayoutManager。适配器继承RecyclerView.Adapter类,具体实现类似ListView的适配器,取决于数据信息以及展示的UI。RecycleView设置布局管理器以控制Item的布局方式:横向、竖向以及瀑布流方式。

  1. 使用Volley——HTTP请求框架
    Volley的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,相比于OkHttp做了更好的封装,使用方便,上手快速,所以本次开发选择使用volley作为HTTP请求框架。
    使用Volley进行基本的HTTP的json请求包括三步:
    1) 生成队列对象RequestQueue
    RequestQueue mQueue = Volley.newRequestQueue(context);
    2) 生成JsonObjectRequest对象或JsonArrayRequest对象
    public JsonObjectRequest(int method, String url, JSONObject jsonRequest, Listener listener, ErrorListener errorListener);
    3) 将objRequest对象或JsonArrayRequest对象加入队列对象RequestQueue
    mQueue.add(objRequest);

  2. 规范代码结果,区分模块
    根据功能及属性,将java.class代码划分为三部分,包括:Activity-Android活动、Data-实体类、RecyclerView-适配器。方便项目后期管理,具有良好的拓展性和可维护性。

3.开发过程中遇到的问题及应对:

  1. 使用Volley进行http请求时,由于获得response的过程是异步的,可能出现主线程已结束,但子线程未对返回值进行赋值的情况,导致返回值可能不同步、出现空指针:

解决方法:
通过添加回调机制之后可以保证我们是在异步任务结束后在使用这个数据,所以不用考虑任务的前后顺序。
在Volley中添加callback回调方法,然后在主线程中调用方法处理数据:

  1. Activity之间相互跳转的代码,在封装后运行出错:

错误报告:
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
解决方法:
Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的話,就需要开启一个新的task,遇到这个异常,是因为使用了Context的startActivity方法。
解决办法是,加一个flag——代码:intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
这样就可以在新的task里面启动这个Activity了。

六.Spring Boot关键设计及问题解决
1.关键设计

  1. 代码规范——使用包entity集合实体类、controller集合控制层、repository集合持久层。

  2. @ResponseBody、@RequestBody实现——前后端通过json格式数据进行交互。
    组合注解,等价于@RequestMapping(method = RequestMethod.Post),将HTTP Post请求映射到特定的处理方法。将java对象转为json格式的数据,写入到response对象的body区,通常用来返回JSON数据(对应的,@RequestBody 注解则是将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。

本地HTTP请求测试成功

  1. 根据JPA函数命名规范自定义简单条件查询方法

Repository是 spring Data 的一个核心接口,它不提供任何方法,开发者需要在自己定义的接口中声明需要的方法仅仅是一个标识,表明任何继承它的均为仓库接口类,方便Spring自动扫描识别。
JpaRepository继承自PagingAndSortingRepository接口,JpaRepository基于JPA的Repository接口,极大减少了JPA作为数据访问的代码,JpaRepository是实现Spring Data JPA技术访问数据库的关键接口。只需要继承JpaRepository 根据Jpa的函数命名规范写出接口中的函数,不需要实现,底层就可以自动解析成各种数据库的sql语句,进行增删改查等操作。

  1. Maven打包项目成Jar包,部署在云主机上

在这里插入图片描述
输入命令,运行jar成功
在这里插入图片描述
云主机HTTP请求测试成功

2.开发过程中遇到的问题及应对:
3. 驼峰命名和下划线命名冲突(Hibernate-MySQL):
Hibernate默认的命名策略是SpringPhysicalNamingStrategy,即判断标识符的每一个字符,如果当前字符为大写,前一个字符和后一个字符为小写,就在大写字符的前面插入下划线_。要是数据库字段设计为驼峰风格,实体类属性名与数据库字段名一样,在application.yml中修改Hibernate的命名策略为PhysicalNamingStrategyStandardImpl即可。

  1. 实体类多个关键字段问题:
    当一个实体有多个主键字段时,JPA需要定义一个特殊的ID类,该类是使用@idclass注释附加到实体类的。
    如果一个实体类对应的表拥有多个primary key,则要求该实体类必须可序列化,该类要实现 Serializable 接口,类后添加implements Serializable,然后默认生成 private static final long serialVersionUID = 1L;

七.软件质量属性
(1)可扩充性
系统建设采用先进的成熟技术,建立严密、体系化的系统管理、应用平台,应具有良好的分层设计,整体系统扩充性能良好,能够根据业务的发展或变更,在保持现有业务处理不受影响的前提下,具有持续扩充功能、适度变化的能力。
(2)易用性
软件具有统一的界面风格,主色调以不超过三、四种为宜,以白色为背景,主体文字为黑色,线条以细线条为主,界面文字排列有序,相关项目关系清晰,不使用太夸张的图片。
(3)可维护性
保留系统对应版本的源代码。 代码有一定的注释,方便不同的人查看,难点应该备注详细的注释清晰的系统结构和命名规范,界面规范,错误原因友好明了,帮助维护系统。

  • 9
    点赞
  • 115
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值