ssm586连锁超市会员管理系统+vue设计与实现(源码文档)

博主介绍:专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

ssm586连锁超市会员管理系统+vue录像

4.1系统的总体功能设计

通过结合系统分析阶段的相关内容,对系统的整体功能设计进行规划。由此可知,本系统的使用者主要可以被分为管理员角色和用户角色两类。其中,管理员角色主要的功能需求有用户信息管理、商品信息管理、积分记录管理等模块,用户角色主要的功能需求有系统登录、查询商品信息、查询积分记录信息等模块。本系统的总体功能设计如图4-1所示。

图4-1系统的总体功能设计

4.2数据库设计

4.2.1概念设计

在数据库设计阶段,本系统通过使用开源的、小型的MySQL数据库对系统相关的数据信息进行管理和维护[12]。数据库设计大致可以被分为概念设计和逻辑设计两个阶段。概念设计阶段是逻辑设计阶段的重要依据,同样的,逻辑设计阶段也是概念设计阶段的实现目标。概念设计阶段主要通过使用实体-联系图(E-R图)的方式,将现实世界中用户对系统的实际需求,转换成设计人员能够理解的抽象的数据库概念模型。本人通过设计E-R图,详细的对系统中的实体以及实体之间的联系进行了表达。各实体信息的E-R图如图4-2、图4-3、图4-4、图4-5、图4-6、图4-7、图4-8、图4-9、图4-10所示,系统总体E-R图如图4-11所示。

图4-11系统总体E-R图

4.2.2逻辑设计

逻辑设计阶段主要的工作是将概念设计中的E-R图,转换成方便系统进行存储和管理的二维表格形式[14]。这一阶段也可以被称为数据库的详细设计,其直接关系到系统功能模块的正常运行、数据信息的正常更新等。在设计过程中,需要充分考虑数据库的规范性和合理性,使得能够满足系统的功能和性能需求。本系统相关的数据表格设计内容如下所示。

表4-1 管理员信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

username

String

用户名

3

password

String

密码

4

role

String

角色

5

addtime

Date

新增时间

表4-2 用户信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

username

String

账户

3

password

String

密码

4

yonghu_name

String

用户姓名

5

yonghu_phone

String

用户手机号

6

yonghu_id_number

String

用户身份证号

7

yonghu_photo

String

用户头像

8

sex_types

Integer

性别

9

yonghu_new_jifen

BigDecimal

现积分

10

yonghu_email

String

电子邮箱

11

create_time

Date

创建时间

表4-3 员工信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

shangdian_id

Integer

商店

3

username

String

账户

4

password

String

密码

5

yuangong_name

String

员工姓名

6

yuangong_phone

String

员工手机号

7

yuangong_photo

String

员工头像

8

sex_types

Integer

性别

9

yuangong_email

String

电子邮箱

10

create_time

Date

创建时间

表4-4 商店信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

shangdian_name

String

商店名称

3

shangdian_address

String

商店地址

4

shangdian_content

String

商店介绍

5

create_time

Date

创建时间

表4-5 商品信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

shangdian_id

Integer

商店

3

shangpin_name

String

商品名称

4

shangpin_danwei

String

单位

5

shangpin_photo

String

商品照片

6

shangpin_types

Integer

商品类型

7

shangpin_kucun_

number

Integer

商品库存

8

shangpin_price

Integer

购买获得积分

9

shangpin_old_money

BigDecimal

商品原价

10

shangpin_new_

money

BigDecimal

现价

11

shangpin_delete

Integer

逻辑删除

12

shangpin_content

String

商品介绍

13

create_time

Date

创建时间

表4-6 礼品信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

lipin_name

String

礼品名称

3

lipin_danwei

String

单位

4

lipin_photo

String

礼品照片

5

suoxu_number

Integer

所需积分

6

lipin_delete

Integer

逻辑删除

7

lipin_content

String

礼品详细介绍

8

create_time

Date

创建时间

表4-7礼品兑换信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

yuangong_id

Integer

员工

3

yonghu_id

Integer

用户

4

lipin_id

Integer

商品

5

lipinduihuan_content

String

备注

6

insert_time

Date

兑换时间

7

create_time

Date

创建时间

表4-8积分记录信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

yonghu_id

Integer

用户

3

jifen_types

Integer

积分类型

4

jifen_number

Integer

数量

5

jifen_content

String

详情

6

insert_time

Date

添加时间

7

create_time

Date

创建时间

表4-9消费信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

xiaofei_uuid_number

String

消费流水号

3

yuangong_id

Integer

员工

4

yonghu_id

Integer

用户

5

shangpin_id

Integer

商品

6

xiaofei_number

Integer

消费数量

7

xiaofei_content

String

备注

8

xiaofei_time

Date

消费时间

9

insert_time

Date

添加时间

10

create_time

Date

创建时间

5系统实现

5.1个人中心

通过设计的个人中心管理功能模块,管理用户可以对相关的个人信息进行管理,比如管理用户可以更新个人账号的密码信息,修改个人账号的用户名信息等,修改密码界面设计如图5-1所示,个人信息界面设计如图5-2所示。


package com.controller;


import java.util.Arrays;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
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.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.UsersEntity;
import com.service.TokenService;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UsersController {
	
	@Autowired
	private UsersService usersService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		R r = R.ok();
		r.put("token", token);
		r.put("role",user.getRole());
		r.put("userId",user.getId());
		return r;
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UsersEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        usersService.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){
    	UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        usersService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UsersEntity user){
        EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
    	PageUtils page = usersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

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

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UsersEntity user = usersService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Integer id = (Integer)request.getSession().getAttribute("userId");
        UsersEntity user = usersService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UsersEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
    	user.setPassword("123456");
        usersService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UsersEntity user){
//        ValidatorUtils.validateEntity(user);
        usersService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        usersService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

5.2基础数据管理

通过设计的基础数据管理功能模块,管理用户可以对相关的商品类型信息进行管理,比如管理用户可以查看详细的商品类型名称信息,删除失效的商品类型信息记录等,基础数据管理界面设计如图5-3所示。

图5-3基础数据管理界面

5.3礼品管理

通过设计的礼品管理功能模块,管理用户可以对相关的礼品、礼品兑换信息进行管理,比如管理用户可以查看详细的礼品所需积分信息,删除失效的礼品信息记录等,礼品管理界面设计如图5-4所示,礼品兑换管理界面设计如图5-5所示。

大家点赞、收藏、关注、评论啦  其他的定制服务 商务合作  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者