农产品销售|助农惠农|基于Springboot实现农产品销售管理系统

简介: 农产品销售|助农惠农|基于Springboot实现农产品销售管理系统

项目编号:BS-SC-054

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:  springboot+mybatis+springmvc

前台开发技术: HTML5+CSS+JQUERY+Bootstrap

二,项目简介

本系统主要基于Springboot框架开发实现,实现了一个以农产品为主题的商城系统。在本商城系统中,可以实现在线购买农产品,在线支付,管理个人订单,管理个人收货地址,确认收货等功能。用户浏览商城的农产品产品后可以将农产品商品添加到购物车中,然后下单支付购买。用户登陆后可以在个人中心中管理自己的购物车信息、订单信息、收货地址信息等。同样在商城前端页面中提供了全文搜索功能,用户可以根据农产品的关键字来查询符合自己要的农产品商品。

系统同样提供了强大的后台管理系统,在后台管理模块中可以实现能前台注册用户的管理操作,可以管理所有用户的订单信息,根据订单支付情况进行发货等操作。同样可以管理产品的分类,可以管理商品的信息,以图文的形式来添加商品信息。为了更好了了解商品的销售情况,在后台使用echart实现了商品销售的图形报表和订单的统计报表功能。

     系统使用了SpringSecurity框架来管理系统的用户登陆和权限认证操作,以保证系统的安全性。本系统功能完整,页面简洁大方,运行无误,适合做毕业设计使用。

 前端页面是产品的重要展示窗口,也是和用户进和交互的主要阵地,前端的页面设计一是要美观大方,二是要功能齐全。现在整个商业形态中都在以用户体验为中心,各家商家为了给用户更好的体验花费不少功夫。本项目的前端用户交互设计以异步请求为主,提高系统的响应时间和用户的体验。在功能设计上主要满足,电子产品分类浏览,添加购物车,产品下单购买,个人订单管理等功能。具体如下图1所示:

图1 前端用户用例图

基于Springboot实现的茶叶商城网站后台数据管理功能,主要完成对前端页面所产生的相关业务数据进行管理。比如对注册用户的管理、茶叶的管理、用户的订单管理、产品分类的管理等等。后台管理可以有效的帮助网站运营者查看相关信息等等,是至关重要的一环。基于Springboot实现的茶叶商城网站后台管理的用例图如下图2所示:

基于Springboot实现的农产品销售管理系统选择关系型数据库管理数据。系统使用MySQL提供的方法、技术,对已经确定的数据库逻辑结构,以较优的存储结构等进行设计,设计出对应的数据库表。

(1)用户信息表(s_user)的内容是有关用户的信息,包含前端用户信息和后台管理用户信息,通过字段type来进行区别,0表示管理,1表示普通用户,详细内容如表4.1所示。

表4-1 s_user(用户账户表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

用户编号

username

varchar

20

yes

登陆名称

Password

varchar

20

yes

登陆密码

Type

Int

1

No

用户类型

(2)商品类型表(s_product_type)的存储的是商品的类型信息,主要包含商品分类的名字以及编号和说明信息,具体内容如表4.2所示。

表4-2 s_product_type(商品分类表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

分类编号

product_type_name

varchar

20

yes

分类名称

product_type_desc

varchar

50

yes

分类描述

product_type_icon

varchar

100

No

分类图标

(3)商品信息表(s_product)的存储的是茶叶详细信息,主要包含商品名称、展示图片、销售价格、所属商品分类、商品详情图片、所属品牌以及具体的功能说明信息等,具体内容如表4.3所示。

表4-3 s_product (商品信息表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

茶叶编号

product _name

varchar

20

yes

茶叶名称

product_image

varchar

200

yes

茶叶图片

price

double

100

No

茶叶价格

product_type

varchar

100

No

茶叶类型

product_desc

varchar

100

No

茶叶详情图

create_time

datetime

0

No

添加时间

product_brand

varchar

100

No

茶叶品牌

product_miaoshu

varchar

200

NO

茶叶描述

(4)商品订单表(s_order)的存储的是用户购买商品的订单信息,主要包含订单编号、创建时间、收货地址编号、用户编号和状态等,具体内容如表4.4所示。

表4-4 s_order(商品订单表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

订单编号

create_time

datetime

0

yes

下单时间

receiving_address

varchar

50

yes

收货地址

user_id

varchar

100

No

下单用户

status

Int

11

NO

订单状态

(5)商品订单明细表(s_order_product)的存储的是用户购买商品的订单明细信息,它关联订单基础信息表,并包含所购商品的编号以及数量等,具体内容如表4.5所示。

表4-5 s_order_product(商品订单明细表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

明细编号

order_id

varchar

32

yes

下单编号

product_id

varchar

32

yes

产品编号

product_num

Int

11

NO

产品数量

(6)商品品牌表(s_brand)的存储的是用户购买商品的品牌信息,在发布商品时,要指定它的所属品牌,以便让消费者选择,主要包含品牌名称、品牌类型、品牌图片等,具体内容如表4.6所示。

表4-6 s_brand(商品品牌表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

品牌编号

brand_name

varchar

32

yes

品牌名称

brand_type

varchar

32

yes

品牌类型

brand_img

varchar

200

NO

品牌图片

(7)轮播图信息表(s_carousel)的存储的是前端展示的轮播图片信息等,具体内容如表4.7所示。

表4-6 s_carousel(轮播图信息表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

主键编号

url

varchar

100

yes

图片地址

sequence_num

int

2

NO

序号

(8)收货地址信息表(s_receiving_address)的存储的是用户在线下单购买茶叶时指定收货地址信息,每个用户可以指定多个收货信息,也可以设置默认的收货地址等,具体内容包含收货地址、收件人名称,联系人电话,用户编号以及是否为默认地址等,如表4.8所示。

表4-8 s_receiving_address (收货信息表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

地址编号

receiving_address

varchar

100

yes

地址信息

receiving_person

varchar

100

yes

收货人

mobile_phone

bigint

20

NO

联系电话

user_id

varchar

32

NO

用户编号

is_default

int

1

NO

是否默认

(9)搜索历史信息表(s_search_history)的存储的是前端用户搜索的历史信息,根据用户关键词的信息给用户进行相应的进示,主要包含搜索关键词、搜索次数、搜索时间,如表4.9所示。

表4-9 s_search_history(搜索信息表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

主键编号

search_words

varchar

100

yes

搜索词

num

int

2

NO

次数

search_time

datetime

0

NO

搜索时间

(10)购物车信息表(s_shop_cart)的存储的是前端用户使用的购物车基本信息,如表4.10所示。

表4-10 s_shop_cart(购物车信息表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

主键编号

Cart_id

varchar

64

yes

购物车编号

User_id

varchar

64

NO

用户编号

(11)购物车明细表(s_shop_cart_product)的存储的是前端用户使用的购物车中的详细信息,如表4.11所示。

表4-11 s_shop_cart_product(购物车详细信息表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

主键编号

shop_cart_id

varchar

64

yes

购物车编号

product_id

varchar

64

NO

茶叶编号

product_num

int

6

NO

数量

三,系统展示

系统前端功能首页

注册

登录

分类查看

商品详情

购物车

收货地址管理

我的订单

全文检索

后台管理功能展示

轮播图管理

分类管理

品牌管理

商品管理

订单管理

图形报表统计

四,核心代码展示

package com.yw.eshop.controller.admin;
import com.yw.eshop.domain.Brand;
import com.yw.eshop.domain.ProductType;
import com.yw.eshop.service.BrandService;
import com.yw.eshop.service.ProductTypeService;
import com.yw.eshop.utils.PageModel;
import com.yw.eshop.service.BrandService;
import com.yw.eshop.service.ProductTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
 * 品牌管理
 */
@Controller
@RequestMapping("/admin/brand")
public class BrandController {
    @Autowired
    private BrandService brandService;
    @Autowired
    private ProductTypeService productTypeService;
    @RequestMapping("/list")
    public String list( @RequestParam(defaultValue = "1") Integer pageNo,
                       @RequestParam(defaultValue = "5")Integer pageSize,
                       Model model){
        try {
            PageModel<Brand> brandPages = brandService.queryBrandPages(pageNo, pageSize);
            model.addAttribute("brandPages", brandPages);
        } catch (Exception e) {
            e.printStackTrace();
            model.addAttribute("errMessage", "查询失败:"+e.getMessage());
            return  "500";
        }
        return "admin/brand/list";
    }
    @RequestMapping("addPage")
    public String addPage(Model model){
        List<ProductType> productTypes= productTypeService.queryProductTypeAll();
        model.addAttribute("productTypes",productTypes);
        return "admin/brand/add";
    }
    @RequestMapping("/add")
    private String addBrand(Brand brand,Model model){
        try {
            int i = brandService.addBrand(brand);
            if (i==0){
                model.addAttribute("errMessage","服务器繁忙操作失败");
                return "500";
            }
        }catch (Exception e){
            model.addAttribute("errMessage",e.getMessage());
            return "500";
        }
        model.addAttribute("url", "admin/brand/list");
        return "success";
    }
    @RequestMapping("updatePage")
    public String updatePage(String id,Model model){
       Brand brand= brandService.queryBrandById(id);
        List<ProductType> productTypes= productTypeService.queryProductTypeAll();
        model.addAttribute("productTypes",productTypes);
        model.addAttribute("brand",brand);
        return "admin/brand/update";
    }
    @RequestMapping("/update")
    private String update(Brand brand,Model model){
        try {
            int i = brandService.updateBrand(brand);
            if (i==0){
                model.addAttribute("errMessage","服务器繁忙操作失败");
                return "500";
            }
        }catch (Exception e){
            model.addAttribute("errMessage",e.getMessage());
            return "500";
        }
        model.addAttribute("url", "admin/brand/list");
        return "success";
    }
    @RequestMapping("deletePage")
    public String deletePage(String id,Model model){
        model.addAttribute("id",id);
        return "admin/carousel/delete";
    }
    @RequestMapping("/delete")
    public String delete(String id, Model model){
        try {
            int i = brandService.delete(id);
            if (i==0){
                model.addAttribute("errMessage","服务器繁忙操作失败");
                return "500";
            }
        }catch (Exception e){
            model.addAttribute("errMessage",e.getMessage());
            return "500";
        }
        model.addAttribute("url", "admin/brand/list");
        return "success";
    }
    @RequestMapping("batchDel")
    @ResponseBody
    public String batchDel(String[] ids) {
        System.out.println("进来了");
        brandService.batchProductTypeDel(ids);
        return "/admin/brand/list";
    }
}
package com.yw.eshop.controller.front;
import com.yw.eshop.domain.Order;
import com.yw.eshop.domain.OrderProduct;
import com.yw.eshop.domain.User;
import com.yw.eshop.service.OrderProductService;
import com.yw.eshop.service.OrderService;
import com.yw.eshop.service.OrderProductService;
import com.yw.eshop.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpSession;
import java.util.List;
/**
 * 前台订单控制器
 */
@Controller
@RequestMapping("front/order")
public class FrontOrderController {
    @Autowired
    private OrderService orderService;
    @Autowired
    private OrderProductService orderProductService;
    /**
     * 前台个人中心订单查询
     * @param session
     * @param model
     * @return
     */
    @RequestMapping("index")
    private String index(HttpSession session, Model model){
        try {
            User user = (User) session.getAttribute("user");
            if (user == null) {
                return "redirect:/front/login/loginPage";
            } else {
                List<Order> list = orderService.queryAllOrder(user.getId());
                for (Order order : list) {
                    List<OrderProduct> orderProducts = orderProductService.queryOrderProByOrderId(order.getId());
                    order.setList(orderProducts);
                }
                model.addAttribute("list", list);
                return "front/order/order";
            }
        }catch (Exception e){
            e.printStackTrace();
            model.addAttribute("errMessage","服务器繁忙"+e.getMessage());
            return "500";
        }
    }
    /**
     *  前台用户取消订单:条件是未发货状态
     * @param id
     * @param model
     * @return
     */
    @RequestMapping("/delete")
    @ResponseBody
    public String delete(String id, Model model){
        model.addAttribute("id", id);
        try {
            int i = orderService.delete(id);
            if (i==0){
                model.addAttribute("errMessage","服务器繁忙操作失败");
                return "500";
            }
        }catch (Exception e){
            model.addAttribute("errMessage",e.getMessage());
            return "500";
        }
        //return "forward:/front/order/index";
        model.addAttribute("url", "/front/order/index");
        return "success";
    }
    /**
     *  前台用户确认收货:条件是己发货状态
     * @param id
     * @param model
     * @return
     */
    @RequestMapping("/update")
    @ResponseBody
    public String update(String id,Integer status, Model model){
        model.addAttribute("id", id);
        try {
            int i = orderService.updateStatus(id,status);
            if (i==0){
                model.addAttribute("errMessage","服务器繁忙操作失败");
                return "500";
            }
        }catch (Exception e){
            model.addAttribute("errMessage",e.getMessage());
            return "500";
        }
        //return "forward:/front/order/index";
        model.addAttribute("url", "/front/order/index");
        return "success";
    }
}

五,项目总结

本系统基于Springboot开发框架集成Mybatis框架实现了一个农业商品销售管理系统,前端设计美丽大方,功能实现完整,适合做毕业设计使用。


相关文章
|
1月前
|
JavaScript Java 关系型数据库
基于springboot的项目管理系统
本文探讨项目管理系统在现代企业中的应用与实现,分析其研究背景、意义及现状,阐述基于SSM、Java、MySQL和Vue等技术构建系统的关键方法,展现其在提升管理效率、协同水平与风险管控方面的价值。
|
1月前
|
JavaScript 前端开发 Java
基于springboot的手机销售网站
本研究聚焦手机商城系统的发展现状与趋势,探讨其技术架构、用户行为分析及安全支付等问题,结合Java、Vue、MySQL等技术实现高效、安全的移动端电商平台,推动行业创新与融合发展。
|
1月前
|
搜索推荐 JavaScript Java
基于springboot的儿童家长教育能力提升学习系统
本系统聚焦儿童家长教育能力提升,针对家庭教育中理念混乱、时间不足、个性化服务缺失等问题,构建科学、系统、个性化的在线学习平台。融合Spring Boot、Vue等先进技术,整合优质教育资源,提供高效便捷的学习路径,助力家长掌握科学育儿方法,促进儿童全面健康发展,推动家庭和谐与社会进步。
|
1月前
|
JavaScript Java 关系型数据库
基于springboot的古树名木保护管理系统
本研究针对古树保护面临的严峻挑战,构建基于Java、Vue、MySQL与Spring Boot技术的信息化管理系统,实现古树资源的动态监测、数据管理与科学保护,推动生态、文化与经济可持续发展。
|
1月前
|
监控 安全 JavaScript
2025基于springboot的校车预定全流程管理系统
针对传统校车管理效率低、信息不透明等问题,本研究设计并实现了一套校车预定全流程管理系统。系统采用Spring Boot、Java、Vue和MySQL等技术,实现校车信息管理、在线预定、实时监控等功能,提升学校管理效率,保障学生出行安全,推动教育信息化发展。
|
1月前
|
人工智能 Java 关系型数据库
基于springboot的画品交流系统
本项目构建基于Java+Vue+SpringBoot+MySQL的画品交流系统,旨在解决传统艺术交易信息不透明、流通受限等问题,融合区块链与AI技术,实现画品展示、交易、鉴赏与社交一体化,推动艺术数字化转型与文化传播。
|
1月前
|
JavaScript Java 关系型数据库
基于springboot的高校运动会系统
本系统基于Spring Boot、Vue与MySQL,实现高校运动会报名、赛程安排及成绩管理的全流程信息化,提升组织效率,杜绝信息错漏与冒名顶替,推动体育赛事智能化发展。
|
1月前
|
JavaScript 安全 Java
基于springboot的大学生兼职系统
本课题针对大学生兼职信息不对称、权益难保障等问题,研究基于Spring Boot、Vue、MySQL等技术的兼职系统,旨在构建安全、高效、功能完善的平台,提升大学生就业竞争力与兼职质量。
|
1月前
|
JavaScript Java 关系型数据库
基于springboot的美食城服务管理系统
本系统基于Spring Boot、Java、Vue和MySQL技术,构建集消费者服务、商家管理与后台监管于一体的美食城综合管理平台,提升运营效率与用户体验。