Java基于vue+springboot图书销售购物商城系统 前后端分离

188 篇文章 5 订阅

文章目录

前言

二十一世纪科学技术的快速发展,促进了各行各业的发展,加速了信息技术的不断更新,已经开始成为引领行业发展的核心力量。信息技术凭借强大的能力和广泛的应用选择,在行业发展中一直占据主导地位。在这些年的发展中,信息技术让经济变得智能化和数字化。网络的普及使得信息技术的应用在各个行业掀起了一股技术创新的浪潮,越来越受到业界的关注。
本项目的开发主要运用大学所学的计算机知识,与现如今的互联网接轨,创建一个用于人们方便网上购买图书的网上书店系统,实现用户在线阅读,在线浏览,管理员在线管理,用户商家在线交互等功能,操作简单,让更多的人群加入到这个大家庭中来,同时也将线下图书商店的不足得到了很好的解决。
该系统的实现为买卖双方提供了方便。客户可以根据自己的喜好通过在线交易平台浏览和查询所需商品。该平台还可以通过主页上的轮换图向用户推荐一些热门产品。网上书店系统建设解决了人们足不出户就能随时随地购物的商业模式,操作简单,让更多的人群可以加入到这中间来。

spring355-springboot图书销售购物商城系统

一、研究背景

现如今线下的图书商店已经无法大大满足人们的需求,比如:图书的种类,图书的多样化,图书商店地区等等,这些已经限制了线下图书商城的发展,而5G时代的到来,不仅仅解决了以上问题,还带来了诸多的便利。
随着5G时代的到来,一部手机一台电脑可以解决很多事情,人们对电子产品的依赖已经无法摆脱,年轻人更多的喜欢在网上购物,手在屏幕上点几下,鼠标点几下,便可以下单,送货上门,网络已经改变了以往人们的购物方式,通过网络就可以实现将商家,卖家和买家的结合在一起,去除了人们时间,地区,空间所带来的不便,这就已经节约了大多数的时间成本,交易成本,这种已经在现实生活中真正的实现。

二、研究意义

日新月异的信息技术迅速地发展既有力推动影响到推动了整个人们社会事业上的发展迅速地进步从而极大加快到推进到了我们国家经济实力上的一个跨越式地发展,也改善了现代社会中人们的整体生活水平,数字信息技术逐步的融入将最终会使人们整体的精神生活方式发生巨大改变,本次开发设计的网上书店系统,旨在为广大消费者提供一个在线的图书销售平台,系统的设计意义具体表现为以下几点:
(1)为买卖双方提供了便利。在当今的信息时代,人们习惯于网上购物。客户可以根据自己的喜好,在交易平台浏览和查询自己需要的商品。该平台还可以向用户推荐一些热门产品。
(2)扩大销售渠道。借助强大的网络通信技术,企业可以更轻松地销售产品。企业需要做的是将线下销售的实体经济转移到生产线上。通过在线直接流量,他们可以在不受时间和空间限制的情况下,快速将产品推向各类客户,大大提高了营销成功率,拓宽了销售渠道。
(3)降低成本。过去,实体店的销售模式需要租用店面,其中还包括物业、水电、人员工资等费用,这是一笔不小的开支。然而,网上销售只需要可以连接互联网的设备,降低了成本,相应地通过降低销售价格,进一步刺激消费,提高经济效益。

三、主要使用技术

环境需要
1.运行环境:最好是java jdk 1.8,这是目前最稳定的JDK也是被使用最多的JDK版本。
2.IDE环境:IDEA,Eclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat7/Tomcat8/Tomcat9版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目:是;
技术栈
后端:Spring+SpringMVC+Mybatis+Springboot
前端:vue+CSS+JavaScript+jQuery+elementui

使用说明
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;
将项目中applicationContext.xml配置文件中的数据库配置改为自己的配置,然后运行;
运行成功后,在浏览器中输入:http://localhost:8080/项目名

四、研究内容

网上书店管理,主要功能集中在:用户信息,购物车,订单,用户收藏图书,图书评论,图书的查询,图书加入购物车,图书直接购买,图书收藏部分,以及后台管理部分,所以,本书店网站,主要是针对数据的:增加,删除,修改,查询,用户头像和书本的图片文件上传,为了能够在各个网站搜索优先出现本网站,在前端做了SEO优化。
登录,注册功能:运行项目后,会自动跳转到首页,用户如果想购买,加入购物车,评论等功能,界面会出现需要用户登录提示,用户登录的时候,如果用户什么都没有输入,系统就会提示用户输入完整信息,如果输入了,后端则会接收到用户输入的密码,账号,验证码去验证数据库中有没有这条数据,有则登录成功,无则登录失败。
用户功能:
(1)购物车:用户必须得登录后才能进入购物车,登录后便可以在详情页选择自己想购买的图书加入购物车。
(2)订单:用户如果想进入订单,必须的登录后才能进入,订单是在购物车种完成支付后生成的订单信息。
(3)收藏:用户登陆后,收藏书籍的时候需要进到书籍的详情页,点击收藏按钮,便可以收藏了,一本图书只能在同一个账号中收藏一次,点击个人收藏,用户便可以看到自己账号的所收藏的图书了。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述管理员功能:
(1)用户管理:可以对用户账号进行管理,只能删除,
(2)用户反馈管理:可以对用户的反馈信息执行一定的操作,操作完后,就可以对用户的反馈信息标识为已读,同时用户就可以知道自己的反馈信息自己被管理员所看到了。
(3)用户评论管理:管理员可以看到所有用户在每个图书下的评论,管理员可以对这些评论进行删除。
(4)添加图书:管理员可以根据要求对图书进行发布,图书上线后便可以在图书列表所看到了。
在这里插入图片描述

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

在这里插入图片描述

五、核心代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.NewsEntity;
import com.entity.view.NewsView;

import com.service.NewsService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 
 * 后端接口
 
 */
@RestController
@RequestMapping("/news")
public class NewsController {
    @Autowired
    private NewsService newsService;


    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,NewsEntity news,
		HttpServletRequest request){
        EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
		PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,NewsEntity news, 
		HttpServletRequest request){
        EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
		PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( NewsEntity news){
       	EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
      	ew.allEq(MPUtil.allEQMapPre( news, "news")); 
        return R.ok().put("data", newsService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(NewsEntity news){
        EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();
 		ew.allEq(MPUtil.allEQMapPre( news, "news")); 
		NewsView newsView =  newsService.selectView(ew);
		return R.ok("查询考研资讯成功").put("data", newsView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        NewsEntity news = newsService.selectById(id);
        return R.ok().put("data", news);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        NewsEntity news = newsService.selectById(id);
        return R.ok().put("data", news);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody NewsEntity news, HttpServletRequest request){
    	news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(news);
        newsService.insert(news);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody NewsEntity news, HttpServletRequest request){
    	news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(news);
        newsService.insert(news);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody NewsEntity news, HttpServletRequest request){
        //ValidatorUtils.validateEntity(news);
        newsService.updateById(news);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        newsService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = newsService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	







}

六、文章目录

摘 要 I
ABSTRACT II
目 录 II
第1章 绪论 1
1.1背景及意义 1
1.2 国内外研究概况 1
1.3 研究的内容 1
第2章 相关技术 3
2.1 B/S架构 4
2.2 Java技术介绍 6
2.3 mysql数据库介绍 6
2.4 springboot框架 4
第3章 系统分析 5
3.1 需求分析 5
3.2 系统可行性分析 5
3.2.1技术可行性:技术背景 5
3.2.2经济可行性 6
3.2.3操作可行性: 6
3.3 项目设计目标与原则 6
3.4系统流程分析 7
3.4.1操作流程 7
3.4.2添加信息流程 8
3.4.3删除信息流程 9
第4章 系统设计 11
4.1 系统体系结构 11
4.2开发流程设计系统 12
4.3 数据库设计原则 13
4.4 数据表 15
第5章 系统详细设计 19
5.1管理员功能模块 20
5.2用户功能模块 23
5.3前台首页功能模块 19
第6章 系统测试 25
6.1系统测试的目的 25
6.2系统测试方法 25
6.3功能测试 26
结 论 28
致 谢 29
参考文献 30

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wqq6310855

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值