基于springboot+servlet、jsp的潮服购物商城系统的设计与实现,论文7000字
摘要
本论文针对潮流服饰零售行业的线上销售需求,设计并实现了一套基于 SpringBoot+Servlet+JSP 的潮服购物商城系统。系统采用经典 MVC 架构,以 SpringBoot 作为后端框架基础,结合 Servlet 处理请求逻辑,通过 JSP 实现前端页面渲染,使用 MySQL 构建数据存储层。文中详细阐述了系统在商品展示、购物车管理、订单处理、促销活动等核心模块的设计思路,涵盖数据库表结构设计、系统架构图、部署图、用例图及界面原型,并对关键技术实现进行了深入分析。该系统通过响应式设计适配多终端设备,集成个性化推荐与促销策略,可有效提升潮服零售企业的线上销售效率与用户购物体验。
1 系统需求分析
1.1 业务需求
1.1.1 核心功能场景
- 商品展示与浏览:支持按服饰风格(街头、复古、极简)、品牌、价格区间、新品 / 热销标签进行筛选,提供商品多图预览、尺码指南、材质说明等详细信息;
- 购物车与结算:支持多商品合并结算、修改购买数量、删除商品,集成优惠券抵扣、满减活动自动计算;
- 订单全流程管理:覆盖订单创建、支付、发货、物流跟踪、确认收货、评价等环节,支持订单取消与售后申请;
- 用户中心:包含个人信息管理、收货地址维护、订单历史查询、收藏夹管理、浏览记录追踪;
- 促销活动:支持限时折扣、满减满赠、优惠券发放、专题活动页面(如 “夏季新品”“品牌日”)。
1.1.2 用户角色划分
- 普通用户:浏览商品、下单购买、管理个人信息、评价商品;
- 管理员:商品上下架管理、订单处理、促销活动配置、用户管理、数据统计分析;
- 运营人员:专题页面设计、促销策略制定、商品分类维护。
1.1.3 典型业务场景
- 用户购物流程:用户通过首页轮播图进入 “潮牌卫衣” 专题页,筛选尺码与颜色后加入购物车,结算时使用 “满 300 减 50” 优惠券,支付成功后实时查看物流信息;
- 管理员运营场景:运营人员在后台创建 “双 11” 促销活动,设置活动时间、参与商品及折扣规则,系统自动在商品详情页显示促销标签,并在结算时自动计算优惠金额。
1.2 技术需求
- 架构要求:采用 SpringBoot 整合 Servlet+JSP 的 MVC 架构,实现前后端逻辑分离,前端页面通过 JSP 动态渲染;
- 性能指标:首页加载时间≤3 秒,商品列表页响应时间≤1.5 秒,高并发场景下订单处理成功率≥99%;
- 扩展性:模块化设计支持后续添加直播带货、会员体系、积分系统等功能;
- 安全性:用户密码采用 BCrypt 加密存储,支付环节集成 SSL 安全协议,防止 SQL 注入与 XSS 攻击;
- 跨平台适配:通过响应式设计适配 PC 端、移动端浏览器,支持主流浏览器(Chrome、Firefox、Safari)。
2 系统架构设计
2.1 技术架构图
架构说明:
- 表示层:JSP 页面负责视图渲染,结合 Bootstrap 实现响应式布局;
- 控制层:Servlet 接收请求并分发,调用业务层逻辑后转发至 JSP;
- 业务层:SpringBoot 管理 Service 组件,处理商品、订单等核心业务逻辑;
- 持久层:MyBatis 操作 MySQL 数据库,Redis 缓存热门商品数据与用户会话;
- 部署层:Ngnix 作为反向代理服务器,Tomcat 集群承载应用实例。
2.2 部署架构图
部署说明:
- 服务器配置:前端静态资源由 Ngnix 服务器缓存,应用层采用 Tomcat 集群部署,数据库采用主从复制架构;
- 缓存策略:Redis 存储热门商品信息、用户购物车会话,减少数据库访问压力;
- 安全保障:防火墙过滤非法请求,SSL 加密敏感数据传输。
2.3 系统包结构设计
plaintext
com.fashion.mall/
├── config/ # 系统配置类(MVC配置、数据源、安全配置)
├── controller/ # Servlet控制器(处理HTTP请求)
├── dao/ # MyBatis数据访问接口
├── entity/ # 实体类(商品、订单、用户等POJO)
├── service/ # 业务逻辑层(Service接口与实现类)
├── utils/ # 工具类(加密、文件上传、验证码生成)
├── filter/ # 过滤器(登录验证、字符编码处理)
├── interceptor/ # 拦截器(权限控制、请求日志记录)
├── web/ # JSP页面(前端视图)
│ ├── frontend/ # 前台页面
│ │ ├── index.jsp # 首页
│ │ ├── product/ # 商品相关页面(列表、详情)
│ │ ├── cart.jsp # 购物车页面
│ │ ├── order/ # 订单相关页面(结算、详情)
│ │ └── user/ # 用户中心页面
│ └── backend/ # 后台管理页面
│ ├── product/ # 商品管理
│ ├── order/ # 订单管理
│ ├── promotion/ # 促销管理
│ └── user/ # 管理员管理
└── FashionMallApplication.java # 系统启动类
3 数据库设计
3.1 概念模型(E-R 图)
实体关系说明:
- 用户(User) 与 订单(Order) :一对多关系(用户可创建多个订单);
- 商品(Product) 与 订单明细(OrderItem) :一对多关系(一个商品可出现在多个订单中);
- 商品(Product) 与 分类(Category) :多对一关系(多个商品属于同一分类);
- 用户(User) 与 购物车(Cart) :一对多关系(用户可添加多个商品到购物车);
- 促销活动(Promotion) 与 商品(Product) :多对多关系(一个活动可包含多个商品,一个商品可参与多个活动)。
3.2 核心表结构设计
3.2.1 商品表(tb_product)
字段名 | 数据类型 | 说明 | 约束条件 |
---|---|---|---|
product_id | bigint | 商品 ID(主键) | PRIMARY KEY |
product_name | varchar(100) | 商品名称 | NOT NULL |
product_price | decimal(10,2) | 销售价格 | NOT NULL |
original_price | decimal(10,2) | 原价 | DEFAULT 0 |
product_stock | int | 库存数量 | DEFAULT 0 |
product_sales | int | 销量 | DEFAULT 0 |
category_id | bigint | 分类 ID | FOREIGN KEY |
product_desc | text | 商品描述 | NOT NULL |
main_image | varchar(255) | 主图 URL | NOT NULL |
image_list | varchar(1024) | 图片列表(JSON 格式) | NULL |
size_info | varchar(512) | 尺码信息(JSON 格式) | NOT NULL |
material | varchar(255) | 材质说明 | NULL |
is_new | tinyint(1) | 是否新品(1 - 是,0 - 否) | DEFAULT 0 |
is_hot | tinyint(1) | 是否热销(1 - 是,0 - 否) | DEFAULT 0 |
status | tinyint(1) | 状态(1 - 上架,0 - 下架) | DEFAULT 0 |
create_time | datetime | 创建时间 | DEFAULT CURRENT_TIMESTAMP |
3.2.2 订单表(tb_order)
字段名 | 数据类型 | 说明 | 约束条件 |
---|---|---|---|
order_id | varchar(32) | 订单号(UUID 生成) | PRIMARY KEY |
user_id | bigint | 用户 ID | FOREIGN KEY |
order_total | decimal(10,2) | 订单总额 | NOT NULL |
discount_amount | decimal(10,2) | 优惠金额 | DEFAULT 0 |
real_pay_amount | decimal(10,2) | 实付金额 | NOT NULL |
order_status | tinyint(1) | 状态(0 - 待支付,1 - 已支付,2 - 已发货,3 - 已完成,4 - 已取消) | NOT NULL |
payment_method | tinyint(1) | 支付方式(1 - 支付宝,2 - 微信,3 - 银行卡) | NOT NULL |
consignee_name | varchar(50) | 收货人姓名 | NOT NULL |
consignee_phone | varchar(20) | 收货人电话 | NOT NULL |
consignee_address | varchar(255) | 收货地址 | NOT NULL |
create_time | datetime | 下单时间 | DEFAULT CURRENT_TIMESTAMP |
pay_time | datetime | 支付时间 | NULL |
ship_time | datetime | 发货时间 | NULL |
finish_time | datetime | 完成时间 | NULL |
3.2.3 购物车表(tb_cart)
字段名 | 数据类型 | 说明 | 约束条件 |
---|---|---|---|
cart_id | bigint | 购物车 ID(主键) | PRIMARY KEY |
user_id | bigint | 用户 ID | FOREIGN KEY |
product_id | bigint | 商品 ID | FOREIGN KEY |
product_name | varchar(100) | 商品名称 | NOT NULL |
product_price | decimal(10,2) | 商品价格 | NOT NULL |
product_image | varchar(255) | 商品图片 | NOT NULL |
quantity | int | 购买数量 | DEFAULT 1 |
is_checked | tinyint(1) | 是否勾选(1 - 是,0 - 否) | DEFAULT 1 |
create_time | datetime | 添加时间 | DEFAULT CURRENT_TIMESTAMP |
3.2.4 促销活动表(tb_promotion)
字段名 | 数据类型 | 说明 | 约束条件 |
---|---|---|---|
promotion_id | bigint | 活动 ID(主键) | PRIMARY KEY |
promotion_name | varchar(100) | 活动名称 | NOT NULL |
promotion_type | tinyint(1) | 活动类型(1 - 满减,2 - 折扣,3 - 优惠券) | NOT NULL |
promotion_rules | varchar(512) | 活动规则(JSON 格式) | NOT NULL |
start_time | datetime | 开始时间 | NOT NULL |
end_time | datetime | 结束时间 | NOT NULL |
status | tinyint(1) | 状态(1 - 生效,0 - 失效) | DEFAULT 1 |
apply_product_ids | varchar(1024) | 适用商品 ID 列表(JSON 格式) | NULL |
4 系统功能模块设计
4.1 用例图
用例说明:
- 用户核心用例:涵盖商品浏览、购物车操作、订单结算、评价等购物全流程;
- 管理员核心用例:包括商品上下架、订单发货、促销活动创建、销售数据统计等运营功能。
4.2 前台商城模块
4.2.1 商品展示子模块
- 首页展示:轮播图展示热门活动与新品,分类导航支持三级类目(如 “男装> 上衣 > 卫衣”),推荐区按 “新品”“热销”“折扣” 分块;
- 商品列表页:支持关键词搜索、多条件筛选(价格区间、风格、品牌),列表展示商品图片、名称、价格、销量,支持网格 / 列表视图切换;
- 商品详情页:多图预览、尺码表(含模特身高体重参考)、材质说明、用户评价、相似商品推荐,提供 “加入购物车”“收藏” 按钮。
4.2.2 购物车与结算子模块
- 购物车功能:显示商品列表、数量编辑、删除商品、全选 / 反选,自动计算总价,显示可用优惠券与促销活动;
- 结算流程:自动填充默认收货地址,支持新增 / 修改地址,选择配送方式,显示优惠明细,跳转支付页面。
4.2.3 订单与用户中心子模块
- 订单管理:按状态(全部、待支付、待发货、待收货、已完成)筛选订单,显示物流跟踪信息,支持取消订单、申请售后;
- 用户中心:个人信息编辑、收货地址管理、收藏夹商品查看、浏览历史记录、账户安全设置(修改密码、绑定手机)。
4.3 后台管理模块
4.3.1 商品管理子模块
- 商品 CRUD:新增商品(填写基本信息、上传图片、设置尺码库存)、编辑商品、批量上下架、删除商品;
- 分类管理:创建分类(支持多级分类)、编辑分类名称与排序、删除分类(需先移除关联商品);
- 品牌管理:维护品牌列表(名称、logo、简介),关联商品品牌。
4.3.2 订单管理子模块
- 订单处理:按状态筛选订单,手动标记发货(录入物流单号),处理退款 / 售后申请;
- 订单统计:按时间维度(日 / 周 / 月)统计订单量、销售额、客单价,生成趋势图表。
4.3.3 促销与数据统计子模块
- 促销活动:创建优惠券(满减券、折扣券)、设置限时活动(指定商品、时间段、折扣力度)、配置专题页面;
- 数据看板:实时显示销售额、订单数、访客量,按商品分类 / 品牌统计销售占比,生成销售报表(支持 Excel 导出)。
5 系统实现与关键技术
5.1 SpringBoot 集成 Servlet+JSP 配置
5.1.1 应用配置文件(application.properties)
properties
# 服务器配置
server.port=8080
server.servlet.context-path=/fashion-mall # JSP视图配置
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
spring.mvc.static-path-pattern=/static/** # 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/fashion_mall?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # MyBatis配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.fashion.mall.entity
mybatis.configuration.map-underscore-to-camel-case=true # Redis配置
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.database=0
spring.redis.timeout=3000ms
5.1.2 Servlet 控制器示例(商品列表)
java
@WebServlet("/product/list")
public class ProductListServlet extends HttpServlet { private ProductService productService = SpringContextUtils.getBean(ProductService.class); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理请求参数(分类ID、页码、排序方式) Long categoryId = request.getParameter("categoryId") != null ? Long.parseLong(request.getParameter("categoryId")) : 0L; int pageNum = Integer.parseInt(request.getParameter("pageNum")); String orderBy = request.getParameter("orderBy"); // 价格/销量排序 // 调用业务层获取商品列表 PageInfo<Product> pageInfo = productService.listByCategory( categoryId, pageNum, 12, orderBy ); // 获取分类路径(用于面包屑导航) List<Category> categoryPath = categoryService.getCategoryPath(categoryId); // 设置请求属性并转发到JSP request.setAttribute("pageInfo", pageInfo); request.setAttribute("categoryPath", categoryPath); request.setAttribute("categoryId", categoryId); request.setAttribute("orderBy", orderBy); request.getRequestDispatcher("/WEB-INF/jsp/frontend/product/list.jsp").forward(request, response); }
}
5.2 JSP 页面实现(商品详情页)
jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head> <title>${product.productName} - 潮服购物商城</title> <link rel="stylesheet" href="${pageContext.request.contextPath}/static/css/bootstrap.min.css"> <link rel="stylesheet" href="${pageContext.request.contextPath}/static/css/product-detail.css">
</head>
<body> <!-- 引入头部导航 --> <c:import url="/WEB-INF/jsp/frontend/common/head.jsp" /> <div class="container"> <div class="row"> <!-- 面包屑导航 --> <div class="col-12"> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a href="${pageContext.request.contextPath}/">首页</a></li> <c:forEach items="${categoryPath}" var="category" varStatus="status"> <li class="breadcrumb-item ${status.last ? 'active' : ''}"> <c:if test="${not status.last}"> <a href="${pageContext.request.contextPath}/product/list?categoryId=${category.categoryId}">${category.categoryName}</a> </c:if> <c:if test="${status.last}">${category.categoryName}</c:if> </li> </c:forEach> </ol> </nav> </div> <!-- 商品详情主区域 --> <div class="col-md-6"> <div class="product-image-container"> <img id="main-image" src="${product.mainImage}" alt="${product.productName}"> <div class="thumbnail-list"> <c:forEach items="${product.imageList}" var="img"> <img src="${img}" onclick="changeMainImage(this.src)"> </c:forEach> </div> </div> </div> <div class="col-md-6"> <h1>${product.productName}</h1> <div class="product-price"> <span class="current-price">¥<fmt:formatNumber value="${product.productPrice}" type="number" pattern="#.00"/></span> <span class="original-price">¥<fmt:formatNumber value="${product.originalPrice}" type="number" pattern="#.00"/></span> </div> <div class="product-stock">库存:${product.productStock}件</div> <div class="product-desc">${product.productDesc}</div> <div class="size-select"> <label>选择尺码:</label> <c:forEach items="${sizeList}" var="size"> <span class="size-btn" data-size="${size}">${size}</span> </c:forEach> </div> <div class="color-select"> <label>选择颜色:</label> <c:forEach items="${colorList}" var="color"> <span class="color-btn" style="background-color: ${color}"></span> </c:forEach> </div> <div class="action-buttons"> <button class="btn btn-primary add-to-cart" data-id="${product.productId}">加入购物车</button> <button class="btn btn-secondary buy-now" data-id="${product.productId}">立即购买</button> <button class="btn btn-outline-secondary favorite" data-id="${product.productId}">收藏</button> </div> </div> </div> <!-- 商品详情标签页 --> <div class="row mt-5"> <div class="col-12"> <ul class="nav nav-tabs" id="product-detail-tabs" role="tablist"> <li class="nav-item" role="presentation"> <button class="nav-link active" id="desc-tab" data-bs-toggle="tab" data-bs-target="#desc" role="tab">商品详情</button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="size-tab" data-bs-toggle="tab" data-bs-target="#size" role="tab">尺码表</button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="review-tab" data-bs-toggle="tab" data-bs-target="#review" role="tab">用户评价</button> </li> </ul> <div class="tab-content" id="product-detail-tab-content"> <div class="tab-pane fade show active" id="desc" role="tabpanel"> <div class="product-detail-content" style="white-space: pre-wrap;">${product.productDesc}</div> </div> <div class="tab-pane fade" id="size" role="tabpanel"> <img src="${product.sizeImage}" alt="尺码表"> </div> <div class="tab-pane fade" id="review" role="tabpanel"> <!-- 评价列表将通过JavaScript动态加载 --> <div class="empty-review">暂无评价</div> </div> </div> </div> </div> </div> <!-- 引入页脚 --> <c:import url="/WEB-INF/jsp/frontend/common/foot.jsp" /> <script src="${pageContext.request.contextPath}/static/js/jquery.min.js"></script> <script src="${pageContext.request.contextPath}/static/js/bootstrap.bundle.min.js"></script> <script src="${pageContext.request.contextPath}/static/js/product-detail.js"></script>
</body>
</html>
5.3 响应式设计实现
css
/* 移动端(屏幕宽度<768px)样式 */
@media (max-width: 768px) { .product-image-container { width: 100%; margin-bottom: 20px; } .product-price { font-size: 1.5rem; } .size-btn, .color-btn { width: 36px; height: 36px; line-height: 36px; } .action-buttons button { width: 100%; margin-bottom: 10px; }
} /* 平板端(768px≤屏幕宽度<1200px)样式 */
@media (min-width: 768px) and (max-width: 1199px) { .product-price { font-size: 1.2rem; }
}
6 系统界面原型设计
6.1 首页原型设计
设计要点:
- 顶部区域:搜索栏、用户快捷入口(登录 / 注册、购物车、用户中心);
- 轮播图:展示当季主题活动(如 “春季新品”“潮牌折扣”),点击跳转专题页;
- 分类导航:左侧固定展示一级分类(男装、女装、配饰),鼠标悬停展开二级分类;
- 推荐区域:按 “新品上市”“热销爆款”“限时折扣” 分块展示商品,每件商品显示图片、名称、价格及促销标签;
- 底部区域:品牌简介、购物指南、售后服务、联系方式。
原型截图:
6.2 购物车页面原型
设计要点:
- 商品列表:显示商品图片、名称、单价、数量输入框、删除按钮,支持全选 / 反选;
- 结算区域:右侧固定显示商品总价、优惠券选择、配送费计算,合计金额突出显示;
- 操作按钮:底部固定 “继续购物”“去结算” 按钮,点击 “去结算” 跳转订单确认页。
原型截图:
6.3 后台商品管理页面原型
设计要点:
- 搜索过滤:支持按商品名称、分类、状态(上架 / 下架)搜索,快速筛选商品;
- 表格展示:显示商品 ID、名称、价格、库存、分类、状态,操作列包含 “编辑”“上架 / 下架”“删除” 按钮;
- 快捷操作:右上角 “新增商品” 按钮,点击弹出表单模态框,支持批量导入商品数据。
原型截图:
7 系统测试与部署
7.1 功能测试用例
测试模块 | 测试场景 | 输入数据 | 预期结果 |
---|---|---|---|
商品浏览 | 分类筛选商品 | 点击 “女装> 连衣裙” 分类 | 显示该分类下所有连衣裙商品 |
购物车操作 | 添加商品到购物车 | 在商品详情页点击 “加入购物车” | 购物车数量 + 1,提示 “添加成功” |
结算流程 | 使用优惠券结算 | 购物车满 300 元,选择 “满 300 减 50” 券 | 总价自动扣除 50 元,生成订单号 |
订单处理 | 管理员发货 | 管理员在后台点击 “发货” 按钮 | 订单状态变为 “已发货”,显示物流单号 |
促销活动 | 限时折扣生效 | 进入设置好的限时活动页面 | 商品价格显示折扣后金额,标注活动倒计时 |
7.2 系统部署步骤
7.2.1 环境准备
- 服务器配置:
- JDK 1.8+
- MySQL 8.0
- Redis 6.0
- Tomcat 9.0
- Ngnix 1.18+(可选,用于负载均衡与静态资源缓存)
7.2.2 后端部署
- 打包 SpringBoot 项目:
bash
-
mvn clean package -DskipTests
- 启动命令(后台运行):
bash
-
nohup java -jar fashion-mall-1.0-SNAPSHOT.jar --spring.profiles.active=prod &
- 配置文件说明:
application-prod.properties
:生产环境数据库连接、Redis 配置、日志级别等。
7.2.3 前端部署
- JSP 页面与静态资源随 SpringBoot 项目打包,部署在 Tomcat 的
webapps/ROOT
目录下,无需额外操作; - 静态资源(CSS/JS/ 图片)放置在
src/main/resources/static
目录,打包后自动发布到/static
路径。
7.2.4 数据库初始化
- 执行 DDL 脚本创建表结构:
sql
-
source /path/to/fashion_mall_ddl.sql
- 导入初始数据(分类、品牌、测试商品):
sql
-
source /path/to/fashion_mall_dml.sql
8 结论与展望
8.1 系统优势
- 技术整合:结合 SpringBoot 的快速开发能力与 JSP 的视图渲染优势,降低开发门槛,提升迭代效率;
- 用户体验:响应式设计适配多终端,商品浏览流程简洁,结算环节清晰直观;
- 业务支持:完整覆盖潮服销售全流程,支持个性化促销策略,满足运营需求。
8.2 未来优化方向
- 性能优化:引入 Redis 缓存热门商品与用户会话,使用 MyBatis 分页查询减少内存占用;
- 功能扩展:
- 集成推荐算法,根据用户浏览和购买历史推荐商品;
- 开发移动端 APP,通过 RESTful API 与现有后端对接;
- 增加直播带货模块,实时展示商品穿搭效果;
- 数据驱动:完善用户行为分析,为运营决策提供数据支持,优化商品推荐策略。
博主介绍:硕士研究生,专注于信息化技术领域开发与管理,会使用java、标准c/c++等开发语言,以及毕业项目实战✌
从事基于java BS架构、CS架构、c/c++ 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架构思想、较扎实的技术功底和资深的项目管理经验。
先后担任过技术总监、部门经理、项目经理、开发组长、java高级工程师及c++工程师等职位,在工业互联网、国家标识解析体系、物联网、分布式集群架构、大数据通道处理、接口开发、远程教育、办公OA、财务软件(工资、记账、决策、分析、报表统计等方面)、企业内部管理软件(ERP、CRM等)、arggis地图等信息化建设领域有较丰富的实战工作经验;拥有BS分布式架构集群、数据库负载集群架构、大数据存储集群架构,以及高并发分布式集群架构的设计、开发和部署实战经验;拥有大并发访问、大数据存储、即时消息等瓶颈解决方案和实战经验。
拥有产品研发和发明专利申请相关工作经验,完成发明专利构思、设计、编写、申请等工作,并获得发明专利1枚。
-----------------------------------------------------------------------------------
大家在毕设选题、项目升级、论文写作,就业毕业等相关问题都可以给我留言咨询,非常乐意帮助更多的人或加w 908925859。
相关博客地址:
csdn专业技术博客:https://blog.csdn.net/mr_lili_1986?type=blog
Iteye博客: https://www.iteye.com/blog/user/mr-lili-1986-163-com
门户:http://www.petsqi.cn
七、其他案例: