计算机毕业设计ssm+vue+elementUI 基于vue的消防物资存储系统

news2025/7/28 0:42:33

项目介绍

无论是什么行业物资存储都是一个非常重要的内容,只有有了这些良好的物资存储,才能够为后续的工作开展提供便利。消防是一个关系到人民群众安全的工作,所以在消防相关方面的物资存储也是非常重要的内容。为了能够更好的管理好消防相关的物资,我们开发了本系统。

开发语言:Java
后端框架:ssm(Spring+SpringMVC+MyBatis)
前端框架:vue.js
服务器:tomcat
数据库:mysql
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9

功能介绍

系统权限按管理员和用户这两类涉及用户划分。
(1)管理员功能需求
管理员登陆后,主要模块包括首页,个人中心,用户管理,仓库管理,物资入库管理,物资出库管理,仓库管理,物资详情管理,报警通知管理,安全检查提醒管理等功能
(2)用户功能需求
用户登陆后,主要模块包括首页,个人中心,仓库管理,物资入库管理,物资出库管理,仓库管理,物资详情管理,报警通知管理,安全检查提醒管理等功能。
请添加图片描述

部分代码

/**
 * 登录相关
 */
@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();
    }
}

效果图

请添加图片描述
请添加图片描述
请添加图片描述

目 录
摘 要 1
前 言 3
第1章 概述 4
1.1 研究背景 4
1.2 研究目的 4
1.3 研究内容 4
第二章 开发技术介绍 5
2.1Java技术 6
2.2 Mysql数据库 6
2.3 B/S结构 7
2.4 SSM框架 8
第三章 系统分析 9
3.1 可行性分析 9
3.1.1 技术可行性 9
3.1.2 经济可行性 10
3.1.3 操作可行性 10
3.2 系统性能分析 10
3.3 系统功能需求分析 10
3.4 业务流程分析 12
3.4.1登录流程 13
第四章 系统设计 14
4.1 系统的功能结构图 14
4.2 系统数据库设计 14
4.2.1 数据库E-R图 14
4.2.2 数据表字段设计 16
第五章 系统功能实现 18
5.1 管理员登录 18
5.2管理员功能实现 18
5.3前台首页功能实现 21
5.4用户功能实现 21
第六章 系统测试 23
6.1 测试方法 23
6.2 测试分析 23
6.3 测试结论 24
结 论 26
致 谢 27
参考文献 28

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电压放大器如何选择型号规格(电压放大器选型标准)

电压放大器是搭配信号发生器来组合使用的电子仪器&#xff0c;使用时通过简单的设备连接&#xff0c;就能拓展信号源的输入电压幅度范围。高电压放大器的快速响应不仅是表现在功率放大器的宽带和压摆率等参数上&#xff0c;同时还和最大输出电流以及负载的电容特性有关系。下面…

48-安装软件并管理服务

48-安装软件并管理服务RPM的概念和操作命令RPM软件包管理RPM软件包管理优缺点RPM命令常用参数DNF的该您概念和操作命令DNF工具的产生DNF工具概述DNF管理软件包DNF-软件源服务DNF配置文件-/etc/dnf/dnf.conf配置DNF-修改配置参数创建本地软件源仓库添加软件源启用和禁用软件源管…

BFS广度优先

题目描述如下&#xff1a; 使用邻接矩阵实现BFS&#xff1a; 输入 8,10 1 2 3 4 5 6 7 8 1,2 1,5 2,6 3,6 3,4 3,7 4,7 4,8 6,7 7,8 2 输出 请输入顶点数和边数:请输入顶点本身的数据: 请输入边的数据: 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 1 1 0 0…

Winsoft Office Component Suite

Winsoft Office Component Suite Winsoft Office组件套件是由Winsoft发布的海豚和CBuilder公司的集合。这些计算机可用于在microsoft office集合中实现自动化和自动操作。从2010年到2019年&#xff0c;这些活动几乎支持了Office的所有现代版本&#xff0c;并提供了两种软件和氧…

掌控安全学院SOL注入靶场

掌控安全学院SOL注入靶场靶场地址Pass-01 显错注入Pass-02Pass-03Pass-04Pass-05 POST注入Pass-06Pass-07 Head注入Pass-08Pass-09Pass-10 布尔盲注Pass-11Pass-12Pass-13 延时注入Pass-14Pass-15 宽字节注入Pass-16Pass-17总结靶场地址 http://inject2.lab.aqlab.cn Pass-01…

[Python] Django ORM与执行原生SQL实现操作数据库

前言 系列文章目录 [Python]目录 文章目录前言&#x1f349; ORM&#x1f349; shell&#x1f349; 模型类与数据的准备&#x1f352; 模型类&#x1f352; 数据&#x1f349; 查询数据&#x1f352; 查询集&#x1f353; 查询集的特性&#x1f34e; 惰性执行&#x1f34e; 缓存…

PDF文件如何设置密码保护?

接近年底&#xff0c;各种总结报告越来越多&#xff0c;很多时候我们都会将报告做成PDF文件格式&#xff0c;对于重要的内容&#xff0c;往往还需要设置密码保护。 根据不同的需要&#xff0c;可以给PDF文件设置两种保护模式。 如果文件内容只分享给特定的人看&#xff0c;不…

qt调用python脚本中的函数

开发环境&#xff1a; qt 5.9.9 vs2015 python 3.6 例程下载&#xff1a; qt调用python脚本例程.rar 步骤一&#xff1a;创建python脚本文件 创建文本文件myPythonFile.py&#xff0c;内容如下&#xff1a; 步骤二&#xff1a;创建qt widget测试例程并运行 新建qt wi…

请不要忽略软件测试的业务能力

在日常的测试工作中&#xff0c;不知道大家是否会有梳理自己测试业务的习惯。我个人觉得这个事情是值得做的&#xff0c;最好还可以培养成一个习惯。一、为什么要梳理业务&#xff1f;因为在业务测试中&#xff0c;作为测试人员&#xff0c;熟悉负责的业务是非常重要的&#xf…

ats 6.2.3中diags.log日志滚存遇到的assert崩溃问题并解决

现在线上ats 6.2.3现在都开启了diags.log日志回滚的功能&#xff0c;采用下面的配置方法 CONFIG proxy.config.diags.logfile.rolling_enabled INT 3 CONFIG proxy.config.diags.logfile.rolling_interval_sec INT 86400 CONFIG proxy.config.diags.logfile.rolling_size_mb…

Web前端——立体相册的制作

文章目录笔记&#xff1a;CSS的特殊样式作业&#xff1a;用CSS的特殊样式制作立体相册笔记&#xff1a;CSS的特殊样式 media查询 常⽤于响应式布局&#xff0c;是⽬前使⽤最多的适配⻚⾯的技术。他会根据⻚⾯的尺⼨的不同&#xff0c;⽽是⽤不同的样式。 <style>media…

LeetCode50天刷题计划第二季(Day 31 — 两数之和 II - 输入有序数组(11.10-11.20)分数到小数(11.30-12.30)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、题目两数之和 II - 输入有序数组示例提示二、思路三、代码四、题目分数到小数示例提示五、思路六、代码前言 没看出来跟 两数之和 I 有什么区别 一、题目 …

码农死磕这份Java高级开发文档,成功‘挤‘进一线大厂,这也太强了吧

前言 很多程序员一开始在学习上找不到方向&#xff0c;但我想在渡过了一段时间的新手期之后这类问题大多都会变得不再那么明显&#xff0c;工作的方向也会逐渐变得清晰起来。 但是没过多久&#xff0c;能了解到的资料就开始超过每天学习的能力&#xff0c;像是买了没看的书、…

内网渗透神器CobaltStrike之重定向服务配置(二)

重定向服务的概念 "重定向"是一个在CS服务器与目标主机进行网络传输之间的服务器, 不仅能保护CS服务器, 还能增强与目标网络传输的稳定性, 例如某一台重定向服务器倒塌了, 但是CS服务器还是能通过其他重定向服务器与目标网络进行信息传输 环境拓扑 域名: team.comD…

ELSEVIER期刊论文投稿全流程实例讲解

Elsevier期刊模板下载 从ELSEVIER搜索要投的期刊&#xff0c;进入期刊主页 https://www.elsevier.com/search-results?queryFuel

【附源码】Python计算机毕业设计体育场馆预定网站

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

基于随机森林算法完成鸢尾花卉品种预测任务 代码+数据

1.理论部分 随机森林(Random Forest),顾名思义,就是由很多决策树模型融合在一起的算法。 随机森林是一种运用了集成学习(ensemble learning)的决策树分类器。 随机森林是一种基于Bagging框架的模型融合算法,如图1.2所示。它通过多个基础的决策树模型进行训练,如何通过…

Android App事件交互中区分点击和长按动作以及识别手势滑动方向的讲解及实战(附源码 可直接使用)

运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一、区分点击和长按动作 区分点击和长按动作&#xff0c;只要看按压时长是否超过500毫秒即可&#xff0c;没超过的表示点击动作&#xff0c;超过了的表示长按动作。其实除了按压时长之外&#xff0c;按压力度也是一个重要的…

Isaac-gym(5):关于强化学习

官方链接&#xff1a; https://github.com/NVIDIA-Omniverse/IsaacGymEnvs 1、环境建立示例 import isaacgym import isaacgymenvs import torchenvs isaacgymenvs.make(seed0, task"Ant", #对应执行时用到的名称num_envs2000, sim_device"cuda:0"…

智芯传感-工业雷管禁售在即,电子雷管的大发展已然到来!

在我国重点支持发展的基础设施建设领域中&#xff0c;民爆行业是一个相对小众、但是非常重要的行业。在“十四五”规划中&#xff0c;国家大力推进电子雷管替代工业雷管&#xff0c;持续加强激励与引导&#xff0c;推进生产工艺及装备向安全可靠、绿色环保、智能制造方向发展&a…