基于SpringBoot的校园二手交易商城系统【附源码】

基于SpringBoot的校园二手交易商城系统(二手书系统)

  1. 开发语言:Java
  2. 数据库:mysql
  3. 技术:SpringBoot+MyBatis+VUE+ElementUI
  4. 工具:IDEA/Ecilpse+mysql+Navicat

角色:管理员、用户

  1. 管理员:对商品的管理,可以下架违规商品,以及永久删除商品;对订单信息进行管理;对用户信息进行管理等。
  2. 用户:浏览系统所有物品,购买商品,支付,收藏,评论,发布商品,我的消息,收获地址,我卖出的商品列表,发货,确认收货等。

在这里插入图片描述

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

第一章 绪 论

**1.**1课题研究背景

  随着社会和经济的不断发展,产业结构调整步伐的加快,人民生活水平不断提高,大量旧的生活用品、闲置设备和库存产品等旧货资源不断产生,为了减少资源浪费,减轻环境负担,将二手商品充分合理的利用很是必要[1]。就拿书籍类来说,作为一个在校学生,深有体会。

1.2 课题研究意义

  大学生对知识的渴望,对图书的需求也越来越大,闲置图书也随之越来越多。为缓解图书资源闲置问题,设计了校园闲置书籍共享服务系统,使闲置图书也能满足学生们的需求[2]。这种基于浏览器的应用方式和互联网的环境,将节约资源的共享模式与现代化的互联网相结合,形成的网上交易系统,减少了资源浪费,实现资源利用最大化[3]。在学校里几乎人手一台电脑,所以可以利用网络资源,开发一个书籍共享系统是完全可行的。这样让那些闲置的书籍继续体现它们的价值,让知识传播开来,让环保理念深入每个同学的灵魂[4]。为了我们的后代,为了我们国家,为了我们赖以生存的地球,开发出一个这样的书籍共享平台很有意义的主题。

1.3系统国内外现状

  自上个世纪以来,随着互联网技术的迅速发展,以发达国家为代表,国外图书资源共享取得了巨大的发展成就。它们在资源共享的规模、程度和水平等方面都引领着世界图书资源共享事业发展的潮流。以美国和德国为例,这两个国家都高度重视图书资源共享,从国家层面到地方层面,都出台了一系列政策,用于扶助和支持各大高校开展资源共享建设。目前,国外的共享图书平台主要专注于电子书籍的共享。国外的图书共享平台也主要以 PC 端为主。相比之下,国内市面上的共享图书平台以移动端上的纸质书籍共享为主。共享图书平台主要以小区、学校或班级为单位,借助地理距离短的优势对指定范围内的闲置书进行共享,共享范围小。可见,近年来国内市面上共享图书平台的数量虽然有所增加,但大多数平台仅提供了纸质书籍的共享渠道,显然无法满足移动互联网时代人们利用碎片时间借助手机进行阅读的需求,因此并没有得到广泛使用。世界上各大发达国家的图书资源共享都取得了巨大的发展成就,而这种发展成就又反哺了国家的知识信息发展的质量和水平。其发展特点和发展成就,值得我们认真研究和借鉴。

第二章 系统分析

  大学校园闲置书籍共享服务系统可在电脑浏览器上进行操作,相对于传统校内二手书交易系统,大学校园闲置书籍共享服务系统提高了效率和便利性。使用者只要注册登录就可以在系统内进行共享自己闲置的书籍以及购买其他人共享的闲置书籍,极大方便的共享闲置书籍信息,充分让需要这些闲置书籍的学生们可以任意的选择自己需要的,更有针对性的服务学生。

2.1 可行性分析

2.1.1 技术可行性分析

  在分析了大学校园闲置书籍共享服务系统的真实需求后,将大学校园闲置书籍共享服务系统所需要的角色划分整理成了下图2-1和图2-2。

  从开发工具来看,由于大学校园闲置书籍共享服务系统是基于java web的,因此当前市面上的开发工具都可以来开发,这些功能强大的开发工具可以给我来设计毕设带来非常大的方便。

  从大学校园闲置书籍共享服务系统的本身技术来说,对于我来开发一个大学校园闲置书籍共享服务系统这个毕设是不费事的。大学校园闲置书籍共享服务系统的开发可以简单的分为前台模块、后台模块开发以及数据库开发。其中的大部分技术难点在我上学时已经使用过了,同时网络上很多技术点可以让我来借鉴。WEB后台管理使用Java的SpringBoot框架开发,数据库使用MySQL,页面上使用Html5的VUE配合Jquery脚本,因此为我在开发大学校园闲置书籍共享服务系统这个毕设上省去了很多多余代码,这给我的毕设项目编写带来了极大的便利。

  从用户体验来看,市面上很多被广泛使用的京东、苏宁等案例可以让我来参考,因此我可以综合网上的页面交互设计的优点,基于我的毕设项目特点来进行改版,最后达到令用户满意的页面交互体验。综上所述,从技术层面来看开发大学校园闲置书籍共享服务系统是可行的。

2.1.2 经济可行性分析

  从大学校园闲置书籍共享服务系统的开发成本来看,大学校园闲置书籍共享服务系统的设计和开发都是我自己完成的,没有其他成本上的开销。

  从大学校园闲置书籍共享服务系统的维护成本来看,大学校园闲置书籍共享服务系统的开发遵循一套完整的代码编写规范,并且大学校园闲置书籍共享服务系统的结构设计非常灵活,遵循高内聚低耦合的原则,因此易于维护和迭代开发。

  在大学校园闲置书籍共享服务系统上线之后,上线前期我会根据真实需求来调查,对使用我开发的大学校园闲置书籍共享服务系统来制定一套符合的使用费。系统运行稳定后我会将推广范围到其他学校中,他们可以自己来注册使用我的大学校园闲置书籍共享服务系统,只需要缴纳一点点的定金,我会给他们引入广告投资和自营业务。

  综合以上的分析,大学校园闲置书籍共享服务系统所带来的经济效益将会带来极大的收益。并且随着我的推广,来使用我开发的大学校园闲置书籍共享服务系统的市场将越来越大,大学校园闲置书籍共享服务系统带来的利润也就越来越多。因此,从经济层面来看开发大学校园闲置书籍共享服务系统的是可行的。

2.2 系统功能分析

2.2.1 功能性分析

  大学校园闲置书籍共享服务系统使用了IntelliJ IDEA 2019.3.4 x64开发工具,Tomcat 8.0服务器,Mysql5.7数据库和Navicat可视化客户端工具,借助Java开发语言的SpringBoot和前端vue框架来划分为了前台用户和后台管理员两大部分。

  前台用户功能模块主要有用户注册、用户登录、书籍分类展示、论坛交流、书籍详细、我的卖出订单、我的购书订单、我收到的消息、我的帖子管理、我的收藏夹、账户余额、账户维护等。

  管理员功能模块主要有籍栏目管理、书籍信息管理、适合对象管理、销售统计、书籍统计、首页轮播图设置、公告管理、用户管理、账户维护等。

2.2.2 非功能性分析

  大学校园闲置书籍共享服务系统的非功能性需求比如大学校园闲置书籍共享服务系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:

表2-1大学校园闲置书籍共享服务系统非功能需求表

安全性 主要指大学校园闲置书籍共享服务系统数据库的安装,数据库的使用和密码的设定必须合乎规范。
可靠性 可靠性是指大学校园闲置书籍共享服务系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。
性能 性能是影响大学校园闲置书籍共享服务系统占据市场的必要条件,所以性能最好要佳才好。
可扩展性 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。
易用性 用户只要跟着大学校园闲置书籍共享服务系统的页面展示内容进行操作,就可以了。
可维护性 大学校园闲置书籍共享服务系统开发的可维护性是非常重要的,经过测试,可维护性没有问题

代码

package com.second.hand.trading.server.Exception;

import java.util.Map;

public class ParamException extends RuntimeException{
    private Map map;

    public ParamException(Map map) {
        this.map = map;
    }

    public Map getMap() {
        return map;
    }
}

package com.second.hand.trading.server.model;

import java.io.Serializable;
import java.util.Date;

/**
 * sh_favorite
 * @author 
 */
public class FavoriteModel implements Serializable {
    /**
     * 自增主键id
     */
    private Long id;

    /**
     * 加入收藏的时间
     */
    private Date createTime;

    /**
     * 用户主键id
     */
    private Long userId;

    /**
     * 闲置物主键id
     */
    private Long idleId;

    private IdleItemModel idleItem;

    private static final long serialVersionUID = 1L;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getIdleId() {
        return idleId;
    }

    public void setIdleId(Long idleId) {
        this.idleId = idleId;
    }

    public IdleItemModel getIdleItem() {
        return idleItem;
    }

    public void setIdleItem(IdleItemModel idleItem) {
        this.idleItem = idleItem;
    }

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        FavoriteModel other = (FavoriteModel) that;
        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
            && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
            && (this.getIdleId() == null ? other.getIdleId() == null : this.getIdleId().equals(other.getIdleId()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
        result = prime * result + ((getIdleId() == null) ? 0 : getIdleId().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", id=").append(id);
        sb.append(", createTime=").append(createTime);
        sb.append(", userId=").append(userId);
        sb.append(", idleId=").append(idleId);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}

第五章 系统测试

  大学校园闲置书籍共享服务系统的测试本着及早接入的原则,因此在开发完成后立即进行了相应功能模块的验证测试。大学校园闲置书籍共享服务系统针对主要功能方面进行了系统测试。下文主要以功能测试用例、和测试总结二个方面进行说明。

5.1 功能测试

  大学校园闲置书籍共享服务系统的功能测试包括:二手闲置分类展示功能测试、猜你喜欢功能测试、二手闲置书籍销售统计功能测试、二手闲置书籍数量统计功能测试,如下表所示:

表5-1二手闲置分类展示功能测试表

测试名称 测试功能 操作过程 预期结果 测试结果
二手闲置书籍分类展示模块测试 二手闲置书籍展示是否正常 访客点击首页导航栏上的二手闲置书籍分类的菜单 会显示出“数码摄影”这一级数码产品分类下的二级数码产品分类,有数码相机、微单相机、单反相机、运动相机、摄像机、镜头等 数码产品一级分类的二级数码产品分类展示正常

表5-2 猜你喜欢功能测试表

测试名称 测试功能 操作过程 预期结果 测试结果
猜你喜欢模块测试 猜你喜欢展示二手闲置书籍是否正常 会员登录后点击首页导航栏上的“人文社科”下的“历史”菜单后会显示出二手闲置书籍信息后点击“孙子兵法新注”这本书籍 在“孙子兵法新注”详情页面中会显示出“猜你喜欢”这块功能,同时里面会显示出可能用户喜欢的其他二手闲置书籍 显示猜你喜欢的二手闲置书籍功能正常

表5-3 二手闲置书籍销售统计功能测试表

测试名称 测试功能 操作过程 预期结果 测试结果
二手闲置书籍销售统计模块测试 二手闲置书籍销售统计中表格显示是否正常 管理员登录后点击左边导航栏上的“销售统计”菜单后在开始日期上输入2021-1,结束日期输入2022-1后点击“统计”按钮 将会统计出在2021年1月到2022年1月中所有二手闲置书籍的销售数量和销售总金额并使用表格形式和柱状图形式显示出来 二手闲置书籍销售统计中表格和柱状图显示正常

表5-4 二手闲置书籍数量统计功能测试表

测试名称 测试功能 操作过程 预期结果 测试结果
二手闲置书籍数量统计模块测试 二手闲置书籍数量统计中可视化柱状图显示是否正常 管理员登录后点击左边导航栏上的“商品统计”菜单 会用表格的形式统计出二手闲置图书的销量数据以及二手闲置书籍分类下数量饼状图和表格的形式显示 二手闲置书籍数量统计中可视化柱状图显示正常

5.2 测试总结

  通过编写大学校园闲置书籍共享服务系统的测试用例,已经检测完毕二手闲置分类展示功能测试、猜你喜欢功能测试、二手闲置书籍销售统计功能测试、二手闲置书籍数量统计功能测试,通过这4大模块为大学校园闲置书籍共享服务系统的后期推广运营提供了强力的技术支撑。

猜你喜欢

转载自blog.csdn.net/2301_78335941/article/details/131095485