《毕业实习大作业——二手铺子(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)可维护性
保留系统对应版本的源代码。 代码有一定的注释,方便不同的人查看,难点应该备注详细的注释清晰的系统结构和命名规范,界面规范,错误原因友好明了,帮助维护系统。

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

  1. phython在file同时写入两个_喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  2. Spring Boot + Vue前后端分离项目,Maven自动打包整合

    前言 现在各类项目为了降低项目.服务模块间的高度耦合性,提出了"前后端分离",而前后端分离的项目该如何打包呢? 一般的做法是前端项目打包完,将打包文件手动复制到后端项目工程的src ...

  3. Spring boot+Vue前后端分离项目实战——学生管理系统【三】后端

    就不一段一段的贴代码了,讲一下代码结构,之后会将代码放在GitHub,将代码拉到自己电脑后对照学习 代码地址 https://github.com/SAGE-likeWu/student_manage ...

  4. spring boot+vue前后端分离项目问题总结

    目录 创建项目 安装vue脚手架报错 vue命令创建项目失败 项目导入idea idea过期激活 idea运行vue项目,打开地址为http://0.0.0.0:8080 项目目录 vue文件不显示V ...

  5. Spring Boot+Vue前后端分离项目接入科大讯飞——语音评测

    因为讯飞官方提供的sdk没有Java的,所以我使用的是WebApi.其中有些注意事项官网有写出,可自行查看. 下面是具体的接入过程: 下载这个demo 然后把里面的三个文件复制到项目里 主要用到的是F ...

  6. Spring Boot+Vue/前后端分离/高并发/秒杀实战课程之spring Security快速搭建oauth2 内存版身份认证

    Springboot快速搭建oauth2 内存版身份认证 环境准备 点击[Create New Project]创建一个新的项目 项目环境配置 配置Thymeleaf 搭建oauth2认证,加入两个依 ...

  7. spring boot+iview 前后端分离架构之文件上传的实现(三十一)

    spring boot 与 iview 前后端分离架构之文件上传的实现(三十一) 公众号 文件上传 前端改造 main.js引入配置的全局变量 编写baseImgUpload图片上传组件 baseIm ...

  8. spring boot+iview 前后端分离架构之用户管理的实现(三十)

    spring boot 与 iview 前后端分离架构之用户管理的实现(三十) 公众号 用户管理 相关工具类的实现 User实体改造 UserOrg实体改造 UserRole实体改造 UserRole ...

  9. Spring Boot + Vue 前后端分离开发,前端网络请求封装与配置

    前端网络访问,主流方案就是 Ajax,Vue 也不例外,在 Vue2.0 之前,网络访问较多的采用 vue-resources,Vue2.0 之后,官方不再建议使用 vue-resources ,这个 ...

最新文章

  1. java.lang.UnsupportedOperationException: Required method destroyItem was not overridden
  2. linux 当前活动用户,如何在Linux上自动记录所有用户的终端会话活动
  3. 16、HTML密码框
  4. 道java_请问这道java里的这几个语句是什么意思
  5. 用pycharm做手机软件_从零开始学python:初学者用哪种工具好?南大博士选择用pycharm...
  6. 北京高院宣判:微信商标案终审驳回上诉 维持原判
  7. 【poj1995】Raising Modulo Numbers
  8. HDU - 2196(树形DP)
  9. 给pmbus添加mfr_id, mfr_version, mfr_model节点显示
  10. linux 安装vim 8.2(支持python3)
  11. 高一计算机教学,高一信息技术教学计划参考
  12. word段落每行首字怎么对齐_怎样使word文章段落乖乖对齐!一个设置就行!
  13. 【安卓】电脑执行脚本控制安卓手机
  14. 2015我的校招季,阿里、搜狗、百度、蘑菇街面试总结
  15. ZF GE5060F47/153
  16. 机器学习中的概率模型
  17. hp服务器pe系统安装win7系统安装系统教程,惠普战66Pro G1笔记本U盘重装win7系统教程...
  18. struts2 错误消息显示(s:fielderror )的时候老有前面的那个黑点,郁闷死了,感觉特别不爽,下面总结了集中解决的方法
  19. 将一个像素绘制到屏幕上
  20. 计算机图形学(一)——辐照度学概述

热门文章

  1. 广州大学 数据结构实验报告
  2. 关于apple watch(苹果表)
  3. Linux IPTABLES 防火墙专题讲座 - 上篇-龙小威-专题视频课程
  4. 操作系统与计算机网络
  5. 读博期间应该明确的50件事!
  6. 自动驾驶的分级,感知与规划基本意义
  7. 微软 Visual Studio 2019 正式发布
  8. Pyinstaller Pmw
  9. 英雄联盟出现game_error_directx的解决办法
  10. 别让抱怨毁了你的工作生活