🍅 作者主页:Java李杨勇
🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】
🍅 欢迎点赞 👍 收藏 ⭐留言 📝
🍅文末获取源码联系方式 📝
主要技术:spring、 springmvc、 springboot、 mybatis 、 jquery 、 md5 、bootstarp.js tomcat、富文本编译器、拦截器等
主要功能:用户、角色、权限、菜单、内部邮件群发、给管理员发送邮件、酒类管理、红酒信息管理、通知公告管理、修改密码等
论文目录结构:
一、 绪论 4
1.1 系统研究目的意义 4
1.2研究的主要内容 4
二、相关技术介绍分析 5
2.1 spring技术 5
2.2 Spring MVC技术 6
2.3 mybatis技术 7
2.4 JSP技术技术 7
2.5 jQuery技术 8
2.6 Mysql技术 8
三、需求分析和可行性分析 11
3.1 系统运行环境 11
3.2 总体技术设计 11
3.3 社会可行性分析 11
3.4 安全性可行性分析 12
3.5 经济可行性分析 12
3.6 法律可行性分析 12
四、系统设计分析 13
4.1 系统模式架构 13
4.2系统层次架构 13
4.3用户需求分析 13
4.3系统功能详情设计 15
4.4数据整体流程分析 16
4.5源码主要架构 17
五、程序设计和实现 18
5.1 程序主要类 18
5.2主要功能设计实现 22
5.2.登录模块和系统首页: 22
5.3用户添加: 24
5.4红酒信息列表展示: 26
5.5添加红酒详情: 26
5.6邮件列表展示: 27
5.7邮件发送: 28
5.8红酒类型列表 29
5.9红酒类型添加 30
5.8红酒类型添加 30
5.8通知公告列表 31
5.9修改密码 31
5.10数据库连接配置 32
六、数据库设计 34
6.1数据三范式: 34
6.2表ER图 34
6.3用户表设计 35
6.4菜单表设计 35
6.5角色表设计 36
6.6红酒类型表设计 36
6.7红酒表设计 37
6.8邮件信息表设计 37
6.10通知公告表设计 38
七、开发心得体会 38
八、测试实例 39
测试一: 39
测试二: 40
测试三: 41
致谢 41
参考献文 42
好了废话不多说进入主题、系统主页展示:
视频演示:
Java+SpringBoot酒庄管理系统.mp4https://www.bilibili.com/video/BV1G341147wd
功能截图:
用户登录后进行系统首页:主要功能模块如下、分角色管理、超级管理员拥有最高权限、可以进行菜单灵活控制、
用户信息管理;
角色权限控制管理:
管理员查看灵活配置;
插入一小部分代码段
/**
* .
*
*
*
*
*/
package io.renren.modules.sys.controller;
import io.renren.common.annotation.SysLog;
import io.renren.common.exception.RRException;
import io.renren.common.utils.Constant;
import io.renren.common.utils.R;
import io.renren.modules.sys.entity.SysMenuEntity;
import io.renren.modules.sys.service.SysMenuService;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
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.RestController;
import java.util.List;
/**
* 系统菜单
*
* @author Mark s.com
*/
@RestController
@RequestMapping("/sys/menu")
public class SysMenuController extends AbstractController {
@Autowired
private SysMenuService sysMenuService;
/**
* 导航菜单
*/
@RequestMapping("/nav")
public R nav(){
List<SysMenuEntity> menuList = sysMenuService.getUserMenuList(getUserId());
return R.ok().put("menuList", menuList);
}
/**
* 所有菜单列表
*/
@RequestMapping("/list")
@RequiresPermissions("sys:menu:list")
public List<SysMenuEntity> list(){
List<SysMenuEntity> menuList = sysMenuService.list();
for(SysMenuEntity sysMenuEntity : menuList){
SysMenuEntity parentMenuEntity = sysMenuService.getById(sysMenuEntity.getParentId());
if(parentMenuEntity != null){
sysMenuEntity.setParentName(parentMenuEntity.getName());
}
}
return menuList;
}
/**
* 选择菜单(添加、修改菜单)
*/
@RequestMapping("/select")
@RequiresPermissions("sys:menu:select")
public R select(){
//查询列表数据
List<SysMenuEntity> menuList = sysMenuService.queryNotButtonList();
//添加顶级菜单
SysMenuEntity root = new SysMenuEntity();
root.setMenuId(0L);
root.setName("一级菜单");
root.setParentId(-1L);
root.setOpen(true);
menuList.add(root);
return R.ok().put("menuList", menuList);
}
/**
* 菜单信息
*/
@RequestMapping("/info/{menuId}")
@RequiresPermissions("sys:menu:info")
public R info(@PathVariable("menuId") Long menuId){
SysMenuEntity menu = sysMenuService.getById(menuId);
return R.ok().put("menu", menu);
}
/**
* 保存
*/
@SysLog("保存菜单")
@RequestMapping("/save")
@RequiresPermissions("sys:menu:save")
public R save(@RequestBody SysMenuEntity menu){
//数据校验
verifyForm(menu);
sysMenuService.save(menu);
return R.ok();
}
/**
* 修改
*/
@SysLog("修改菜单")
@RequestMapping("/update")
@RequiresPermissions("sys:menu:update")
public R update(@RequestBody SysMenuEntity menu){
//数据校验
verifyForm(menu);
sysMenuService.updateById(menu);
return R.ok();
}
/**
* 删除
*/
@SysLog("删除菜单")
@RequestMapping("/delete")
@RequiresPermissions("sys:menu:delete")
public R delete(long menuId){
if(menuId <= 31){
return R.error("系统菜单,不能删除");
}
//判断是否有子菜单或按钮
List<SysMenuEntity> menuList = sysMenuService.queryListParentId(menuId);
if(menuList.size() > 0){
return R.error("请先删除子菜单或按钮");
}
sysMenuService.delete(menuId);
return R.ok();
}
/**
* 验证参数是否正确
*/
private void verifyForm(SysMenuEntity menu){
if(StringUtils.isBlank(menu.getName())){
throw new RRException("菜单名称不能为空");
}
if(menu.getParentId() == null){
throw new RRException("上级菜单不能为空");
}
//菜单
if(menu.getType() == Constant.MenuType.MENU.getValue()){
if(StringUtils.isBlank(menu.getUrl())){
throw new RRException("菜单URL不能为空");
}
}
//上级菜单类型
int parentType = Constant.MenuType.CATALOG.getValue();
if(menu.getParentId() != 0){
SysMenuEntity parentMenu = sysMenuService.getById(menu.getParentId());
parentType = parentMenu.getType();
}
//目录、菜单
if(menu.getType() == Constant.MenuType.CATALOG.getValue() ||
menu.getType() == Constant.MenuType.MENU.getValue()){
if(parentType != Constant.MenuType.CATALOG.getValue()){
throw new RRException("上级菜单只能为目录类型");
}
return ;
}
//按钮
if(menu.getType() == Constant.MenuType.BUTTON.getValue()){
if(parentType != Constant.MenuType.MENU.getValue()){
throw new RRException("上级菜单只能为菜单类型");
}
return ;
}
}
}
简单模拟实现邮件群发给所有用户
红酒信息管理
通知公告信息管理
获取源码:
总体来说这个项目功能相对还是比较简单优秀的、适合初学者作为课程设计和毕业设计参考
查看博主主页联系或下方微信公众号获取~
精彩系列推荐
Java毕设项目精品实战案例《100套》
HTML5大作业实战案例《100套》
转载请注明:基于java ssm springboot+mybatis酒庄内部管理系统设计和实现 | 胖虎的工具箱-编程导航