首页 > 分享 > 鲜花线上销售管理系统的设计与实现

鲜花线上销售管理系统的设计与实现

作者主页:编程千纸鹤

作者简介:Java、前端、Python开发多年,做过高程,项目经理,架构师

主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享

收藏点赞不迷路  关注作者有好处

文末获得源码

一,项目简介

鲜花线上销售管理系统在开发技术,选择JSP来开发系统动态页面,系统开发工具则使用IDEA这款口碑极佳的集成开发工具,系统的后台开发方面使用SSM框架,系统前端的体验是现阶段重点考虑的一个问题,较好的人机交机,能有效提升用户的体验,所以我们选用比较成熟的BootStrap来做页面开发,使用Jquery来进行异步请求处理,数据存储方面本系统数据库则使用My SQL。本系统目前主要利用这些技术和工具来开发一个网上商城交易网站,主要实现的系统功能:一是鲜花线上销售管理系统前台用户注册之后,根据注册账户登陆系统,浏览商品并进行购买,并可以在个人中心中查询查询订单等;二是鲜花线上销售管理系统后台管理用户登陆系统后,可以实现像包含用户信息管理、商品类别管理、商品管理、订单管理等以及网站新闻管理等信息管理的功能。

鲜花线上销售管理系统是借助 Internet 移动互联网的应用技术,实现了资源的共享,借助于网络平台各种形式的商品展示窗体,让网上客户能够更易地接受这个网上商城的交易网站,并且打破以往网上购买商品的局限性,缩短了用户寻找商品的难度和时间。

为保障鲜花在线销售系统的使用安全性,对用户的账户进行了一定程度上的保护管理,前端用户和后台管理用户在登陆和注册时,都是使用的基于MD5加密处理的密码进行处注册或登陆,这种加密本身除通过暴力破解这种方式外是没办法进行破解的,而暴力破解的成本又较高。下面展示一下用户登陆的基本安全保障流程图:

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:SSM开发框架

前台开发技术:Bootstrap+Jquery+Ajax

三,系统展示

3.1 前台用户功能模块的展示

3.1.1 前台用户浏览鲜花模块

   鲜花线上销售管理系统前台用户进入商城后无须注册登陆即可查看商城相应的产品信息。鲜花线上销售管理系统的前端用户浏览鲜花具体操作界面展示如下图3-1所示。

图3-1 前台用户浏览鲜花UI界面

3.1.2前台用户购物车模块

    鲜花线上销售管理系统前台用户,在输入账户密码后登陆系统后,可以将需要购买的产品添加到商城购物车,并可以自定义购买数量的增减。鲜花线上销售管理系统前端用户添加购物车操作界面如下图3-2所示。

图3-2 前台用户添加购物车操作界面

3.1.3 前台用户购买商品模块

    前台用户登陆鲜花线上销售管理系统后,可以将喜欢的商品添加到购物车后提交订单并进行支付购买。在鲜花线上销售平台上完成产品购买后可以对系统的服务、物流的速度、客服的态度等进行评分,并对产品进行相关的评论。鲜花线上销售管理系统用户下单操作界面如下图3-3所示。

图3-3前台用户购物操作界面

3.1.4前台用户个人订单管理模块

    鲜花线上销售管理系统前台用户登陆系统后可以在个人订单管理模块中管理个人的订单信息。鲜花线上销售管理系统会自动根据订单的处理状态来显示当前订单状态,主要有有未付款、己付款待发货、己收货待评价己收货己评价等几种状态。鲜花线上销售管理系统前端用户个人订单管理操作界面如下图4-4所示。

图3-4前台用户个人订单管理操作界面

3.2后台功能模块的展示

3.2.1用户登录功能

    鲜花线上销售管理系统后台用户如果想要对商城的相关信息进行管理操作,首先要登录系统,才可展开相关的操作。鲜花线上销售管理系统后台用户登陆界面如下图3-10所示。

图3-10用户登录操作界面

3.2.2用户管理功能

    这个模块主要是对系统的用户进行管理,鲜花线上销售管理系统管理员用户登陆系统后,点击左边的用户管理菜单后可以进入用户信息管理界面。鲜花线上销售管理系统用户管理操作界面如下图3-11所示:

图3-11后台用户管理功能界面图

3.2.3一级分类管理功能

    鲜花线上销售管理系统管理员用户登陆系统后,可以进入一级菜单进行相应的菜单信息管理。鲜花线上销售管理系统一级菜单操作界面如下图3-12所示。

图3-12鲜花销售一级菜单管理功能UI界面

3.2.4 后台商品二级分类管理操作UI

    鲜花线上销售管理系统管理员用户登陆系统后,可以进入二级菜单进行相应的菜单信息管理。鲜花线上销售管理系统二级菜单操作界面如下图3-13所示。

图3-13鲜花销售二级菜单管理功能UI界面

3.2.5 后台商品管理操作UI

    鲜花线上销售管理系统管理员用户登陆系统后,可以进入商品管理菜单进行相应的商品信息管理。其中主要包含商品的添加、修改、查询、删除操作等,添加商品时可以上传商品的图片进行展示。鲜花线上销售管理系统商品信息管理操作界面如下图3-14所示。

图3-14后台商品管理功能UI界面

3.2.6 后台商品订单管理操作UI

    鲜花线上销售管理系统管理员用户登陆系统后,可以进入商品订单管理菜单进行相应的商品订单信息管理。其中主要包含商品订单的查询、订单明细的查看、订单发货、订单评论的回复及对评分的回复等,添加商品时可以上传商品的图片进行展示。鲜花线上销售管理系统商品信息管理操作界面如下图3-15所示。

图4-15后台订单管理功能UI界面

3.2.7 后台商品销量统计管理操作UI

    鲜花线上销售管理系统管理员用户登陆系统后,可以进入销量统计管理菜单进行相应的商品销售情况进行统计查看。主要以图形报表方式进行展示,其中主要以饼状图和柱状态图的形态进行展示。展示的图片可以下载也可以在线打印操作。鲜花线上销售管理系统商品信息统计查看界面如下图3-16、3-17所示。

图3-16饼状图展示销售统计功能UI界面

图3-17柱状图展示销售统计功能UI界面

四,核心代码展示

package com.qst.controller;

import com.github.pagehelper.PageHelper;

import com.github.pagehelper.PageInfo;

import com.qst.beans.*;

import com.qst.service.impl.*;

import org.apache.commons.io.FileUtils;

import org.apache.ibatis.annotations.Param;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.aspectj.weaver.ast.Or;

import org.springframework.beans.MutablePropertyValues;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.*;

import org.springframework.web.multipart.MultipartFile;

import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.File;

import java.io.IOException;

import java.io.OutputStream;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.List;

import java.util.Map;

import java.util.Set;

@Controller

@RequestMapping("/admin")

public class AdminController {

@Autowired

private AdminUserServiceImpl adminUserService;

@Autowired

private CategoryServiceImpl categoryService;

@Autowired

private CategorySecondServiceImpl secondService;

@Autowired

private ProductServiceImpl productService;

@Autowired

private OrderServiceImpl orderService;

@Autowired

private UserServiceImpl userService;

@RequestMapping("/adminIndex")

public String adminHome(){

return "admin/index";

}

@RequestMapping("/adminLogin")

public String adminLogin(@Param("username") String username, @Param("password") String password, HttpServletRequest request){

AdminUser adminUser = new AdminUser();

adminUser.setUsername(username);

adminUser.setPassword(password);

AdminUser adminBynamePwd = adminUserService.getAdminBynamePwd(adminUser);

System.out.println(adminBynamePwd==null?"查询到的用户信息为空":adminBynamePwd);

if (adminBynamePwd!=null) {

request.getSession().setAttribute("enterAdmin",adminBynamePwd);

return "/admin/home";

}

return "/admin/index";

}

@RequestMapping(value = ("/adminUser_findAllByPage") )

public String findAllUserByPage(@Param("page") Integer page,HttpServletRequest request){

PageUtils<User> userPageUtils = new PageUtils<>();

int limit = 5;

if (page==null)

page = 1;

PageHelper.startPage(page,limit);

List<User> userList = userService.findAll();

PageInfo<User> pageInfo = new PageInfo<>(userList);

userPageUtils.setPage(page);

userPageUtils.setList(userList);

userPageUtils.setTotalPage(pageInfo.getPages());

request.setAttribute("userPageUtils", userPageUtils);

return "/admin/user/list";

}

@RequestMapping("/adminUser_edit")

public String editUser(@RequestParam("id")Integer uid,HttpServletRequest request){

User user = userService.findById(uid);

request.setAttribute("user",user);

return "/admin/user/edit";

}

@RequestMapping("/adminUser_update")

public String updateUser(User user,HttpServletRequest request)throws IOException {

int save = userService.update(user);

return "redirect: /admin/adminUser_findAllByPage";

}

@RequestMapping("/adminUser_delete")

public String deleteUser(@Param("id") Integer uid, HttpServletRequest request){

int deleteByid = userService.deleteById(uid);

return "redirect: /admin/adminUser_findAllByPage";

}

@RequestMapping("/adminGetAllCate")

public String getAllCategory(HttpServletRequest request){

List<Category> categoryList = categoryService.findAll();

request.setAttribute("cList",categoryList);

return "admin/category/list";

}

@RequestMapping("/toAddCategory")

public String toAddCategory(){

System.out.println("进入添加一级分类页面");

return "admin/category/add";

}

@RequestMapping(value="/addCategory_save" )

public String addCategory(Category category){

String cname = category.getCname();

System.out.println("添加一级分类:"+cname);

int i = categoryService.addCategory(category);

if(i>0){

System.out.println("添加"+category+"成功");

}

return "redirect: /admin/adminGetAllCate";

}

@RequestMapping("/adminCategory_edit")

public String editCategory(@Param("cid") Integer cid,HttpServletRequest request){

Category cByid = categoryService.findCByid(cid);

request.setAttribute("category",cByid);

return "admin/category/edit";

}

@RequestMapping("/adminCategory_update")

public String updateCategory(Category category){

int i = categoryService.saveCategory(category);

System.out.println(category.getCname()+"更新成功:"+i);

return "redirect: /admin/adminGetAllCate";

}

@RequestMapping(value ="/adminCategory_delete")

public String deleteCategory(@Param("cid") Integer cid){

List<CategorySecond> categorySecondList = categoryService.findCSByCid(cid);

for (CategorySecond cs:categorySecondList

) {

System.out.println("要删除的二级分类:"+cs.getCsname());

int i = secondService.deleteById(cs.getCsid());

System.out.println("删除成功与否:"+i);

}

int i = categoryService.deletByid(cid);

System.out.println("一级分类删除成功与否:"+i);

return "redirect: /admin/adminGetAllCate";

}

@RequestMapping("/adminCategorySecond_findAllByPage")

public String findCSByPage(@Param("page") Integer page,HttpServletRequest request){

PageUtils<CategorySecond> secondPageUtils = new PageUtils<>();

int limit = 4;

if (page==null)

page = 1;

PageHelper.startPage(page,limit);

List<CategorySecond> allCS = secondService.findAllCS();

PageInfo<CategorySecond> pageInfo = new PageInfo<>(allCS);

secondPageUtils.setPage(page);

secondPageUtils.setList(allCS);

secondPageUtils.setTotalPage(pageInfo.getPages());

request.setAttribute("secondPageUtils",secondPageUtils);

return "/admin/categorysecond/list";

}

@RequestMapping(value = "toAddCategorySecond")

public String toAddCategorySecond(HttpServletRequest request){

List<Category> categoryList = categoryService.findAll();

request.setAttribute("categoryList",categoryList);

return "/admin/categorysecond/add";

}

@RequestMapping(value = "addcategorySecond_save")

public String addcategorySecond_save(CategorySecond categorySecond){

System.out.println("所添加的二级目录"+categorySecond);

int save = secondService.add(categorySecond);

if (save>0)

System.out.println("添加二级目录"+categorySecond+"成功");

return "redirect: /admin/adminCategorySecond_findAllByPage";

}

@RequestMapping("/adminCategorySecond_edit")

public String editSecondCategory(@Param("csid") Integer csid,HttpServletRequest request){

CategorySecond categorySecond = secondService.findCSByid(csid);

List<Category> categoryList = categoryService.findAll();

request.setAttribute("categoryList", categoryList);

request.setAttribute("categorySecond",categorySecond);

return "/admin/categorysecond/edit";

}

@RequestMapping("/adminSecondCategory_update")

public String updateSecondCategory(CategorySecond category){

secondService.update(category);

return "redirect: /admin/adminCategorySecond_findAllByPage";

}

@RequestMapping(value = ("/adminProduct_findAllByPage") )

public String findAllProByPage(@Param("page") Integer page,HttpServletRequest request){

PageUtils<Product> productPageUtils = new PageUtils<>();

int limit = 5;

if (page==null)

page = 1;

PageHelper.startPage(page,limit);

List<Product> productList = productService.findAll();

PageInfo<Product> pageInfo = new PageInfo<>(productList);

productPageUtils.setPage(page);

productPageUtils.setList(productList);

productPageUtils.setTotalPage(pageInfo.getPages());

request.setAttribute("productPageUtils", productPageUtils);

return "/admin/product/list";

}

@RequestMapping("/toAddProduct")

public String toAddProduct(HttpServletRequest request){

List<CategorySecond> categorySecondList = secondService.findAllCS();

request.setAttribute("csList",categorySecondList);

return "/admin/product/add";

}

@RequestMapping("/addProduct_save")

public String addProduct(Product product,@RequestParam("upload") MultipartFile upload,HttpServletRequest request)throws Exception{

product.setPdate(new Date());

product.setIs_hot(0);

String realPath = request.getServletContext().getRealPath("/products");

System.out.println(realPath);

String originalFilename = upload.getOriginalFilename();

File diskFile = new File(realPath + "//"+ originalFilename);

System.out.println("目标文件:"+diskFile.getAbsolutePath());

upload.transferTo(diskFile);

product.setImage("products/"+originalFilename);

System.out.println("收到的商品:"+product);

int save = productService.save(product);

System.out.println(product.getPname()+"保存是否成功:"+save);

return "redirect: /admin/adminProduct_findAllByPage";

}

@RequestMapping("/adminProduct_delete")

public String deleteProduct(@Param("pid") Integer pid, HttpServletRequest request){

Product product = productService.findById(pid);

String path = product.getImage();

if(path!=null) {

String realPath = request.getServletContext().getRealPath("/" + path);

File file = new File(realPath);

file.delete();

}

int deleteByid = productService.deleteByid(pid);

return "redirect: /admin/adminProduct_findAllByPage";

}

@RequestMapping("/adminProduct_edit")

public String editProduct(@RequestParam("pid")Integer pid,HttpServletRequest request){

Product product = productService.findById(pid);

System.out.println(product);

request.setAttribute("product",product);

List<CategorySecond> allCS = secondService.findAllCS();

request.setAttribute("csList",allCS);

return "/admin/product/edit";

}

@RequestMapping("/adminProduct_update")

public String updateProduct(Product product, @RequestParam("upload")MultipartFile upload,

HttpServletRequest request)throws IOException {

product.setPdate(new Date());

if(upload.getSize() >=0){

String path = product.getImage();

if (path != null){

String realPath = request.getServletContext().getRealPath("/" + path);

File file = new File(realPath);

file.delete();

}

String realPath = request.getServletContext().getRealPath("/products");

String originalFilename = upload.getOriginalFilename();

File diskFile = new File(realPath + "//"+ originalFilename);

upload.transferTo(diskFile);

product.setImage("products/"+originalFilename);

}

System.out.println("商品:"+product);

int save = productService.update(product);

return "redirect: /admin/adminProduct_findAllByPage";

}

@RequestMapping("/adminOrder_findAllByPage")

public String findAllOrderPage(@Param("page") Integer page, HttpServletRequest request){

PageUtils<Order> orderPageUtils = new PageUtils<>();

if (page == null)

page = 1;

PageHelper.startPage(page,5);

List<Order> allOrder = orderService.getAllOrder();

PageInfo<Order> pageInfo = new PageInfo<>(allOrder);

orderPageUtils.setList(allOrder);

orderPageUtils.setPage(page);

orderPageUtils.setTotalPage(pageInfo.getPages());

request.setAttribute("orderPageUtils",orderPageUtils);

return "/admin/order/list";

}

@RequestMapping(value = "/adminOrderItem_findById")

@ResponseBody

public List<OrderItem> findItemsById(@RequestBody Order order, HttpServletRequest request){

System.out.println("所需查找的订单项ID:"+order.getOid());

List<OrderItem> orderItemSet = orderService.findByOid(order.getOid());

for (OrderItem orderitem: orderItemSet

) {

System.out.println(orderitem);

}

return orderItemSet;

}

@RequestMapping("/export_product_info")

public void exportProductInfo(HttpServletResponse response)throws IOException{

response.setCharacterEncoding("UTF-8");

List<Product> productList = productService.findAll();

System.out.println(productList);

HSSFWorkbook wb = new HSSFWorkbook();

HSSFSheet sheet = wb.createSheet("商品信息表");

HSSFRow titleRow = sheet.createRow(0);

titleRow.createCell(0).setCellValue("商品名称");

titleRow.createCell(1).setCellValue("平台价格");

titleRow.createCell(2).setCellValue("市场价格");

titleRow.createCell(3).setCellValue("图片目录");

titleRow.createCell(4).setCellValue("商品广告词");

titleRow.createCell(5).setCellValue("销售量");

titleRow.createCell(6).setCellValue("添加日期");

titleRow.createCell(7).setCellValue("所属目录");

for(Product product : productList){

HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum()+1);

dataRow.createCell(0).setCellValue(product.getPname());

dataRow.createCell(1).setCellValue(product.getShop_price());

dataRow.createCell(2).setCellValue(product.getMarket_price());

dataRow.createCell(3).setCellValue(product.getImage());

dataRow.createCell(4).setCellValue(product.getIs_hot());

dataRow.createCell(5).setCellValue(product.getPdesc());

dataRow.createCell(6).setCellValue(product.getPdate());

dataRow.createCell(7).setCellValue(product.getCsid());

}

String filename =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ".xls";

response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-disposition", "attachment;filename=" + filename);

OutputStream ouputStream = response.getOutputStream();

wb.write(ouputStream);

ouputStream.flush();

ouputStream.close();

}

@RequestMapping("/exit")

public String exit(HttpServletRequest request){

request.getSession().invalidate();

return "/admin/index";

}

}

package com.qst.controller;

import com.qst.beans.DayIn;

import com.qst.beans.Product;

import com.qst.service.impl.OrderServiceImpl;

import com.qst.service.impl.ProductServiceImpl;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

import java.util.ArrayList;

import java.util.List;

@Controller

@RequestMapping("/echart")

public class AdminTongjiBijiao {

@Resource

private OrderServiceImpl orderService;

@Autowired

private ProductServiceImpl productService;

@RequestMapping(value = "/adminEachartzhu")

@ResponseBody

public List<Product> getAllXiaoshou(){

System.out.println("柱状图数据统计请求");

List<Product> productList = productService.findAll();

List<Product> products= new ArrayList<>();

for (Product p:productList

) {

System.out.print(p.getIs_hot());

if (p.getPname()!=null&&p.getPname()!=""&&p.getIs_hot()!=null&&p.getIs_hot()>0){

products.add(p);

}

}

return products;

}

@RequestMapping(value = "/toadminEachartzhu")

public String toAdminEchart(){

return "/admin/echart/xiaoshouZhu";

}

@RequestMapping(value = "/toadminEachartBin")

public String toadminEachartzhu2(){

return "admin/echart/xiaoshouBin";

}

@RequestMapping(value = "/getAllOrdersComeInByDate")

@ResponseBody

public List<DayIn> getAllOrdersComeInByDate(){

System.out.println("管理员权限查询近日订单金额");

List<DayIn> ordersComeInByDate = orderService.getAllOrdersComeInByDate();

for (DayIn map:ordersComeInByDate){

System.out.println(map);

}

return ordersComeInByDate;

}

}

五,项目总结

鲜花线上销售管理系统在设计之初就选择了自己在技术上相对熟悉的Java语言为基础,在众多的Java技术平台中选中spring框架来进行整体设计,作为系统的基础开发主框架。鲜花线上销售管理系统采用 springmvc有效的将模型和视图进行分离。鲜花线上销售管理系统在数据持久化操作封装上,则毫无保留的选用Mybatis框架,它呢对鲜花线上销售管理系统的数据底层的JDBC操作进行有效的封装,减化了开发难度,提高了开发效率。鲜花线上销售管理系统前端数据展示选用以JSP进行页面展示,同时配合JavaScript脚本和CSS样式来进行页面数据的美化和交互设计,并且为了提升系统的执行效率和性能使用了AJAX异步交互,主要基于jquery封装的相关函数来实现。鲜花线上销售管理系统整体功能设计严格按照鲜花线上销售管理系统需求分析的功能要求和鲜花线上销售管理系统非功能性要求来进行开发实现。

相关知识

基于Python的鲜花销售系统的设计与实现
鲜花在线销售平台的设计与实现/鲜花商城/网上花店管理系统
基于Java网上鲜花销售系统的设计与实现
基于Java的花卉销售系统的设计与实现/管理系统/鲜花网站
在线鲜花销售系统的设计与实现(JSP+java+springmvc+mysql+MyBatis)
基于Java的在线鲜花销售商城的设计与实现
小小花店管理系统的设计与实现 毕业设计开题报告
基于django的鲜花分类系统的设计与实现
(完整版)鲜花销售管理系统
毕业论文鲜花销售管理系统.doc

网址: 鲜花线上销售管理系统的设计与实现 https://m.huajiangbk.com/newsview392109.html

所属分类:花卉
上一篇: 鲜花价格大揭秘!现在购买究竟有多
下一篇: 初次见面给女方需要买什么花适合