基于SSM的电商购物商城后台管理系统JAVA.JSP【论文、开题、实训报告】

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎千套JAVA项目实战持续更新中~

🔎百套小程序APP项目实战持续更新中~

🔎百套Python实战项目持续更新中~
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,帮你完成文档

⚠️文末联系方式获取完整资料⚠️

第4章 系统设计

4.1系统功能设计

系统的功能设计是整个系统的运行基础,是一个把设计需求替换成以计算机系统的形式表示出来。通过对电商后台管理系统的调查、分析和研究,得出了该系统的总体规划,这是开发设计系统的初步核心。如下图所示:

图4-1总体规划结构图

4.2数据库的设计

4.2.1数据库E-R图

关系型数据库是目前使用人数最多的数据库,既是面向对象系统设计,所以它的数据库设计主要是面向对象的。现在主要考虑如何对类进行持久化操作,即如何将对象类映射到关系数据库的二维表。目前可以采用数据库建模工具来实现。

然后根据功能需求来对本系统的e-r图实现分解来得到几种实体—关系模型,以下为部分实体—关系模型。

 (1) 商品信息实体属性如图4-2所示:

图4-2商品信息实体属性图

(2) 普通管理员实体属性如图4-3所示:

图4-3普通管理员实体属性图

(3) 用户实体属性如图4-4所示:

图4-4用户实体属性图

(4) 订单信息实体属性如图4-5所示:

图4-5订单信息实体属性图

4.2.2数据库表

本系统采用的是MySQL数据库管理数据,系统中使用到的数据表具体展示部分如下所示。

表4-1订单信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

shangpinbianhao

varchar

200

商品编号

shangpinmingcheng

varchar

200

商品名称

shangpinfenlei

varchar

200

商品分类

jiage

int

价格

shuliang

int

数量

zongjine

int

总金额

yonghuzhanghao

varchar

200

用户账号

yonghuxingming

varchar

200

用户姓名

dizhi

varchar

200

地址

xiadanshijian

date

下单时间

表4-2配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

表4-3用户

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yonghuzhanghao

varchar

200

用户账号

yonghuxingming

varchar

200

用户姓名

xingbie

varchar

200

性别

nianling

int

年龄

lianxidianhua

varchar

200

联系电话

dianziyouxiang

varchar

200

电子邮箱

dizhi

varchar

200

地址

表4-4用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表4-5token表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

userid

bigint

用户id

username

varchar

100

用户名

tablename

varchar

100

表名

role

varchar

100

角色

token

varchar

200

密码

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

expiratedtime

timestamp

过期时间

CURRENT_TIMESTAMP

表4-6商品信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

shangpinbianhao

varchar

200

商品编号

shangpinmingcheng

varchar

200

商品名称

shangpinfenlei

varchar

200

商品分类

pinpai

varchar

200

品牌

guige

varchar

200

规格

shuliang

int

数量

jiage

int

价格

xiangqing

longtext

4294967295

详情

表4-7商品分类

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

shangpinfenlei

varchar

200

商品分类

表4-8普通管理员

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

gonghao

varchar

200

工号

xingming

varchar

200

姓名

mima

varchar

200

密码

xingbie

varchar

200

性别

lianxidianhua

varchar

200

联系电话

youxiang

varchar

200

邮箱

shenfenzheng

varchar

200

身份证

第5章 系统实现

5.1系统登录实现

系统登录,在登录页面选择需要登录的角色,在正确输入用户名和密码后,进入操作系统进行操作;如图5-1所示。                               

图5-1 系统登录界面

5.2管理员模块实现

管理员进入主页面,主要功能包括对个人中心、普通管理员管理、商品分类管理、商品信息管理、用户管理、订单信息管理等进行操作。管理员主页面如图5-2所示:

图5-2 管理员主界面

管理员点击普通管理员管理。在普通管理员页面输入工号和姓名进行查询、新增或删除普通管理员列表,并根据需要对普通管理员详情信息进行详情、修改或删除操作;如图5-3所示:

图5-3普通管理员管理界面

管理员点击商品分类管理。在商品分类页面输入商品分类进行查询、新增或删除商品分类列表,并根据需要对商品分类详情信息进行详情、修改或删除操作;如图5-4所示:

图5-4商品分类管理界面

管理员点击商品信息管理。在商品信息页面输入商品名称、品牌、规格和选择商品分类进行查询、新增或删除商品信息列表,并根据需要对商品详情信息进行详情、修改或删除操作;如图5-5所示:

图5-5商品信息管理界面

管理员点击用户管理。在用户页面输入用户账号进行查询、新增或删除用户列表,并根据需要对用户详情信息进行详情、修改或删除操作;如图5-6所示:

图5-6用户管理界面

管理员点击订单信息管理。在订单信息页面输入商品编号、商品名称和商品分类进行查询或删除订单信息列表,并根据需要对订单详情信息进行详情、修改或删除操作;如图5-7所示:

图5-7订单信息管理界面

5.3普通管理员功能实现

普通管理员进入主页面,主要功能包括对个人中心、商品分类管理、商品信息管理、用户管理、订单信息管理等功能进行操作。管理员主页面如图5-8所示:

图5-8 普通管理员主界面

普通管理员点击商品分类管理。在商品分类页面输入商品分类进行查询、新增或删除商品分类列表,并根据需要对商品分类详情信息进行详情、修改或删除操作;如图5-9所示:

图5-9商品分类管理界面

普通管理员点击商品信息管理。在商品信息页面输入商品名称、品牌、规格和选择商品分类进行查询、新增或删除商品信息列表,并根据需要对商品详情信息进行详情、订单、修改或删除操作;如图5-10所示:

图5-10商品信息管理界面

普通管理员点击用户管理。在用户页面输入用户账号进行查询、新增或删除用户列表,并根据需要对用户详情信息进行详情、修改或删除操作;如图5-11所示:

图5-11用户管理界面

普通管理员点击订单信息管理。在订单信息页面输入商品编号、商品名称和商品分类进行查询或删除订单信息列表,并根据需要对订单详情信息进行详情、修改或删除操作;如图5-12所示:

图5-12订单信息管理界面

JAVA后端代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

 🔎千套JAVA项目实战持续更新中~

🔎百套小程序APP项目实战持续更新中~

🔎百套Python实战项目持续更新中~

👇下方有我的微信名片👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值