基于Java+SpringBoot的鞋类商品购物商城系统设计与实现

 博主介绍擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战

🍅文末获取源码联系🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

Java项目精品实战案例(300套)
Java+小程序项目实战(200套)

目录

一、效果演示

二、前言介绍

三、主要技术

3.1、Spring Boot框架

3.2、Maven环境 

3.3、MySQL数据库

四、系统设计(部分) 

4.1、主要功能模块设计

4.2、系统登录设计

五、系统功能实现截图

5.2、后台功能

5.2.1、管理员登录界面

5.2.2、系统首页

5.2.3、会员管理

5.2.4 、栏目管理

5.2.5、商品管理

5.2.6、评价管理

5.2.7 订单管理

5.3、前台功能

5.3.1、新用户注册登录

5.3.2、首页

5.3.3、商品分类

5.3.4、地址管理

5.3.5、订单管理

5.3.6、购物车管理

5.3.6、我喜欢的

六、库表设计

七、部分代码

 八、源码获取


一、效果演示

基于SpringBoot的鞋类商品购物商城系统演示视频

二、前言介绍

电子商务的运用越来越多样,而电商的开始大多都是从小的物品售卖出发,不论是书籍、服饰,报纸等等这些相当于其他商品的售后服务较少的商品,对于某些大型物品,尤其是电器之类的,比如手机、冰箱、电视机以及洗衣机等等网络售卖已经在很多平台进行的非常成功,如今国内做的非常成功的几大龙头无非是:京东、淘宝、唯品会等等。而对于具有时代特征的鞋类商品之类的主打电商网站是非常缺少的,同时作为主要的用户群是非常庞大的,所以为了给对鞋类商品的需求大的用户创建一个平台给予更多的售后服务,本论文以该主题开发一个鞋类商品售卖网站,让电子商务更深一步的融入每个用户的心里。网友们对信息多样化与信息更新的追求越来越高,因此需在商品网站中向网友提供及时与丰富的各类信息。网站为用户们提供了一个网络生活空间,使人们有更加全面的了解。

三、主要技术

3.1、Spring Boot框架

 SpringBoot是一个全新的开源的轻量级框架。简化了Spring应用的整个搭建和开发过程。此外SpringBoot通过集成了大量的框架,从而使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决[13]。SpringBoot基本架构设计的前端常常使用模板引擎,如FreeMarker,通过渲染模板并输出相应文本,使得界面的设计与应用的逻辑分离出来。

3.2、Maven环境 

Maven 是一个基于 Java 的工具,纯Java开发的开源项目,利用一个中央信息片段能管理一个项目的构建、报告以及文档等等步骤,同时是一个项目管理工具,对Java项目进行构建、依赖管理。

3.3MySQL数据库

MySQL是一款常用的,简单的关系型数据库,同时也是存储数据信息、数据结构关系的数据库,具有实用性和方便性。它的功能也非常强大,现在大多数网站的服务器端的数据库也都是采用的MySQL数据库,他用来存储和管理大量的数据,在MySQL数据库的专业名词有:数据库、数据表、列、行、主键、外键、符合键等,当然还有一些复杂的事务处理,这些专业技术在商用的软件中用的较为普遍。

四、系统设计(部分) 

4.1、主要功能模块设计

4.2、系统登录设计

五、系统功能实现截图

5.2后台功能

5.2.1、管理员登录界面

输入网址进入网站,将跳出鞋类商城网站后台管理员的登录的界面,然后管理员输入账户名和密码进行登录。如下图所示:

图5.2.1.1 登录界面

5.2.2系统首页

在系统管理中,展示了在此商城中所注册的用户数量、在商城中所有上架的商品数量,以及成功下单的所有单数,是管理员对整个商城的受喜爱程度进行合理的估计以及制定后续的一个发展方向。

图5.2.2.1a 管理员列表

5.2.3、会员管理

图5.2.3.1a 用户管理列表

5.2.4 、栏目管理

图5.2.4.1 栏目管理列表

图5.2.4.2 栏目编辑

图5.2.4.3 栏目添加

5.2.5、商品管理

图5.2.5.1 商品管理列表

图5.2.5.2 商品添加

5.2.6、评价管理

图5.2.6.1a 评价管理列表

5.2.7 订单管理

5.2.7.1a 订单列表

5.3、前台功能

5.3.1、新用户注册登录

点击进入网站,在上方展示了鞋类网站的所有功能模块,右侧为新用户注册以及用户登录的入口,点击从下方弹出输入框。

图5.3.1.1a 用户注册界面

图5.3.1.1b 用户登录界面

5.3.2、首页

在登录成功进入之后,来到网站首页,在首页中,展示了本售鞋网站的购物主题,背景模块以及文字的选择均是完全的贴合鞋子购物商品的主题,给用户给予一种轻松愉快的感觉。在上方分两个模块展示,分别为商品分类与个人中心,点击个人中心,可基于首页下拉进入地址管理、订单列表、购物车管理、我喜欢的以及退出购物网站。 

图5.3.2.1a 首页

5.3.3、商品分类

图5.3.3.1a 商品界面

图4.3.3.1b 商品详情

图5.3.3.1c 商品加入购物车

5.3.4、地址管理

 图5.3.4a 地址列表

图5.3.4b 地址添加

5.3.5、订单管理

图5.3.5.1a 商品订单号

图5.3.5.1b 商品评价

5.3.6、购物车管理

图5.3.6.1a 购物管理

图5.3.6.1b 价格总计

图5.3.6.1c 商品支付

5.3.6我喜欢的

 图5.3.6.1a 我喜欢的商品界面

六、库表设计

/*
SQLyog Ultimate v13.1.1 (64 bit)
MySQL - 10.5.9-MariaDB : Database - shop
*********************************************************************
*/

/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`shop` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;

USE `shop`;

/*Table structure for table `address` */

DROP TABLE IF EXISTS `address`;

CREATE TABLE `address`
(
    `id`      int(11) NOT NULL AUTO_INCREMENT,
    `user_id` int(11) NOT NULL,
    `name`    varchar(45) DEFAULT NULL COMMENT '姓名',
    `phone`   varchar(45) DEFAULT NULL COMMENT '手机',
    `address` text        DEFAULT NULL COMMENT '地址',
    `code`    varchar(45) DEFAULT NULL COMMENT '邮编',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='地址';

/*Data for the table `address` */

/*Table structure for table `cart` */

DROP TABLE IF EXISTS `cart`;

CREATE TABLE `cart`
(
    `id`       int(11) NOT NULL AUTO_INCREMENT,
    `user_id`  int(11) NOT NULL,
    `goods_id` int(11) NOT NULL,
    `sum`      int(11) DEFAULT NULL COMMENT '数量',
    `attr`     text    DEFAULT NULL COMMENT '属性json',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='购物车';

/*Data for the table `cart` */

/*Table structure for table `category` */

DROP TABLE IF EXISTS `category`;

CREATE TABLE `category`
(
    `id`   int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(45) DEFAULT NULL COMMENT '名称',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='栏目';

/*Data for the table `category` */

/*Table structure for table `comment` */

DROP TABLE IF EXISTS `comment`;

CREATE TABLE `comment`
(
    `id`         int(11) NOT NULL AUTO_INCREMENT,
    `created_at` datetime    DEFAULT NULL,
    `user_id`    int(11) NOT NULL,
    `goods_id`   int(11) NOT NULL,
    `title`      varchar(45) DEFAULT NULL COMMENT '标题',
    `content`    text        DEFAULT NULL COMMENT '内容',
    `rating`     int(11)     DEFAULT NULL COMMENT '评分',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='评论';

/*Data for the table `comment` */

/*Table structure for table `goods` */

DROP TABLE IF EXISTS `goods`;

CREATE TABLE `goods`
(
    `id`          int(11) NOT NULL AUTO_INCREMENT,
    `title`       varchar(45)    DEFAULT NULL COMMENT '标题',
    `content`     text           DEFAULT NULL COMMENT '内容',
    `price`       decimal(10, 2) DEFAULT NULL COMMENT '价格',
    `inventory`   int(11)        DEFAULT NULL COMMENT '库存数量',
    `attr`        text           DEFAULT NULL COMMENT '属性json',
    `created_at`  datetime       DEFAULT NULL,
    `category_id` int(11) NOT NULL,
    `pic`         varchar(245)   DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='商品';

/*Data for the table `goods` */

/*Table structure for table `like` */

DROP TABLE IF EXISTS `like`;

CREATE TABLE `like`
(
    `id`       int(11) NOT NULL AUTO_INCREMENT,
    `user_id`  int(11) DEFAULT NULL,
    `goods_id` int(11) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

/*Data for the table `like` */

/*Table structure for table `order` */

DROP TABLE IF EXISTS `order`;

CREATE TABLE `order`
(
    `id`         int(11) NOT NULL AUTO_INCREMENT,
    `created_at` datetime       DEFAULT NULL,
    `user_id`    int(11) NOT NULL,
    `total`      decimal(10, 2) DEFAULT NULL COMMENT '总价',
    `address`    text           DEFAULT NULL COMMENT '地址',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='订单';

/*Data for the table `order` */

/*Table structure for table `order_item` */

DROP TABLE IF EXISTS `order_item`;

CREATE TABLE `order_item`
(
    `id`       int(11) NOT NULL AUTO_INCREMENT,
    `sum`      int(11) DEFAULT NULL COMMENT '数量',
    `goods_id` int(11) NOT NULL,
    `order_id` int(11) NOT NULL,
    `goods`    text    DEFAULT NULL COMMENT '商品快照',
    `attr`     text    DEFAULT NULL COMMENT '已选属性json',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='订单项';

/*Data for the table `order_item` */

/*Table structure for table `user` */

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user`
(
    `id`         int(11) NOT NULL AUTO_INCREMENT,
    `username`   varchar(45) DEFAULT NULL COMMENT '用户名',
    `password`   varchar(45) DEFAULT NULL COMMENT '密码',
    `created_at` datetime    DEFAULT NULL,
    `type`       int(11)     DEFAULT NULL COMMENT '类型',
    `email`      varchar(45) DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 2
  DEFAULT CHARSET = utf8mb4 COMMENT ='用户';

/*Data for the table `user` */

insert into `user`(`id`, `username`, `password`, `created_at`, `type`, `email`)
values (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', '2021-03-11 14:54:36', 2, 'admin@qq.com');

/*!40101 SET SQL_MODE = @OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS = @OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS = @OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

七、部分代码

package com.my.shop.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.my.shop.constant.MyPage;
import com.my.shop.dto.MyMsg;
import com.my.shop.entity.Address;
import com.my.shop.service.IAddressService;
import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;

/**
 * <p>
 * 地址 前端控制器
 * </p>
 *
 * @author yl
 * @since 2021-03-10
 */
@RestController
@RequestMapping("/user/address")
@Api(tags = "用户地址")
public class AddressController {
    @Autowired
    private IAddressService addressService;

    @RequestMapping(method = RequestMethod.GET, path = "/list")
    @Operation(summary = "列表")
    public MyMsg list(@RequestParam Long userId, @RequestParam(required = false, defaultValue = "1") Integer page, HttpServletRequest request) {

//        HttpSession session = request.getSession();
//        User user = (User) session.getAttribute(User.USER_SESSION_NAME);

        Page<Address> page1 = new Page<>(page, MyPage.PAGE_NUM);

        QueryWrapper<Address> addressQueryWrapper = new QueryWrapper<>();
        addressQueryWrapper.eq("user_id", userId);

        Page<Address> page2 = addressService.page(page1, addressQueryWrapper);
        return new MyMsg(MyMsg.SUCCESS, "成功", page2);
    }

    @RequestMapping(method = RequestMethod.POST, path = "/")
    @Operation(summary = "添加或更新")
    public MyMsg save(@RequestBody @Valid Address address, HttpServletRequest request) {
//        HttpSession session = request.getSession();
//        User user = (User) session.getAttribute(User.USER_SESSION_NAME);

//        address.setUserId(user.getId());
        if (addressService.saveOrUpdate(address)) {
            return new MyMsg(MyMsg.SUCCESS, "成功");
        } else {
            return new MyMsg(MyMsg.FAIL, "失败");
        }
    }

    @RequestMapping(method = RequestMethod.DELETE, path = "/{id}")
    @Operation(summary = "删除")
    public MyMsg save(@PathVariable Integer id) {
        if (addressService.removeById(id)) {
            return new MyMsg(MyMsg.SUCCESS, "成功");
        } else {
            return new MyMsg(MyMsg.FAIL, "失败");
        }
    }

    @RequestMapping(method = RequestMethod.GET, path = "/{id}")
    @Operation(summary = "详情")
    public MyMsg get(@PathVariable Integer id) {
        Address address = addressService.getById(id);
        if (address != null) {
            return new MyMsg(MyMsg.SUCCESS, "成功", address);
        } else {
            return new MyMsg(MyMsg.FAIL, "失败");
        }
    }
}

 八、源码获取

大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

精彩专栏推荐订阅下方专栏👇🏻👇🏻👇🏻👇🏻

Java项目精品实战案例(300套)

Java+小程序项目实战(200套)

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值