基于Java+SpringBoot+Vue前后端分离科研项目验收管理系统设计和实现

news2025/1/18 1:51:31

博主介绍全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战

🍅文末获取源码联系🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

Java项目精品实战案例《100套》

Java微信小程序项目实战《100套》

系统介绍:

使用旧方法对科研项目信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在科研项目信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的科研项目验收管理系统对景点城市信息,科研项目信息,评论信息,自助资讯信息等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择B/S模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行科研项目验收管理系统程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。科研项目验收管理系统的开发让用户查看景点信息变得容易,让管理员高效管理景点信息

程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。

程序操作流程图

功能截图:

5.1管理员功能介绍

5.1.1管理员登录

系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。下图就是管理员登录页面。

图5.1 管理员登录页面

5.1.2 项目管理

项目管理页面提供的功能操作有:查看项目,删除项目操作。下图就是项目管理页面。

图5.2 项目管理页面

5.1.3 公告信息管理

公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。下图就是公告信息管理页面。

图5.3 公告信息管理页面

5.1.4公告类型管理

公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。下图就是公告类型管理页面。

图5.4 公告类型列表页面

代码实现:

/**
 * 登录相关
 */
@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 role, HttpServletRequest request) {
        UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        if(user != null){
            if(!user.getRole().equals(role)){
                return R.error("权限不正常");
            }
            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);
        }else{
            return R.error("账号或密码或权限不对");
        }

    }
    
    /**
     * 注册
     */
    @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("/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){
        Integer id = (Integer)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);
        userService.updateById(user);//全部更新
        return R.ok();
    }

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

论文参考:

源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

 精彩专栏推荐订阅下方专栏👇🏻

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

Java项目精品实战案例《100套》

Java微信小程序项目实战《100套》

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

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

相关文章

服务端 TCP 连接的 TIME_WAIT 过多问题的分析与解决

https://blog.csdn.net/zxlyx/article/details/120397006 本文给出一个 TIME_WAIT 状态的 TCP 连接过多的问题的解决思路&#xff0c;非常典型&#xff0c;大家可以好好看看&#xff0c;以后遇到这个问题就不会束手无策了。 问题描述 模拟高并发的场景&#xff0c;会出现批量…

CS架构和BS架构的联系与区别(零基础理解)

文章目录 网络编程CS架构BS架构CS和BS的区别C/S架构优缺点B/S架构优缺点 网络编程 首先要了解CS架构和BS架构就需要了解一下什么是网络编程? 大家刚接触编程时,往往是在自己的电脑的编辑器上进行代码的编写,说简单的就是以前我们书写的代码就像单机版游戏一样,只能自己玩,不能…

VSRS4.0 安装与配置

0 引言 介绍&#xff1a;VSRS的定义参阅官方论文&#xff0c;项目引入VSRS来解决目前亟需解决的问题(基于两视点的虚拟视点合成)。 1 下载VSRS 1.1 通过TortoiseSVN下载最新版VSRS VSRS can be accessed from SVN server server: https://svn.multimedia.edu.pl/vsrs user:…

PyTorch基础知识(1)— PyTorch框架介绍和安装步骤

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。PyTorch是一个开源的深度学习框架&#xff0c;它基于Python语言&#xff0c;并提供了高级的神经网络接口&#xff0c;可以用于构建和训练各种深度学习模型。它的设计理念是灵活性和易用性&#xff0c;并且提供了动态图的特…

C++入门介绍之“栈”

1.1栈的定义 栈&#xff08;stack)是一种只能在一端进行插入或删除的线性表 下面是一些基础概念 栈顶&#xff08;top) : 表中允许进行插入、删除操作的线性表栈底&#xff08;bottom&#xff09;&#xff1a;表的另一端空栈 &#xff1a;栈中没有数据元素进栈/入栈&#xf…

如何统计网站的访问量

本文介绍的是使用redis的HyperLoglog实现uv的统计功能。 背景 首先我们先明确一下uv这个名词代表的实际意义。uv代表的是通过网页访问浏览的人数&#xff0c;和文章的阅读量差不多&#xff0c;但是需要注意的是&#xff0c;一个人即使是多次访问&#xff0c;也只算一次。 所…

开发一个android应用需要哪些库?

目录 开发应用常用库 沉浸式体验 下拉刷新 数据库 网络访问 升级 开发应用常用库 随着手机普及&#xff0c;应用无处不在&#xff0c;我们生活也离不开应用了。 那么&#xff0c;如果你想从零开始做一个应用&#xff0c;我们一般会经过哪些阶段&#xff0c;用到哪些库呢…

揭秘外卖平台的附近公里设计

背景 相信大家都有点外卖的时候去按照附近公里排序的习惯&#xff0c;那附近的公里是怎么设计的呢&#xff1f;今天shigen带你一起揭秘。 分析 我们先明确一下需求&#xff0c;每个商家都有一个地址对吧&#xff0c;我们也有一个地址&#xff0c;我们点餐的时候&#xff0c;…

【Spring 事务和事务传播机制】

目录 1 事务概述 1.1 为什么需要事务 1.2 事务的特性 1.3 Spring 中事务的实现 2 Spring 声明式事务 2.1 Transactional 2.2 Transactional 的作用范围 2.3 Transactional 的各种参数 2.3.1 ioslation 2.4 事务发生了异常&#xff0c;也不回滚的情况 异常被捕获时 3 事务的传…

运维Shell脚本小试牛刀(七):在函数文脚本件中调用另外一个脚本文件中函数|函数递归调用|函数后台执行

运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0)&#xff1b; pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 Cenos7安装小火车程序动画 运维Shell脚本小试…

手写Spring:第8章-初始化和销毁方法

文章目录 一、目标&#xff1a;初始化和销毁方法二、设计&#xff1a;初始化和销毁方法三、实现&#xff1a;初始化和销毁方法3.1 工程结构3.2 Spring应用上下文和Bean对象扩展初始化和销毁类图3.3 定义初始化和销毁方法的接口3.3.1 定义初始化接口3.3.2 定义销毁接口3.3.3 定义…

【 OpenGauss源码学习 —— 列存储(analyze)(三)】

列存储&#xff08;analyze&#xff09; acquire_sample_rows 函数RelationGetNumberOfBlocks 函数BlockSampler_Init 函数anl_init_selection_state 函数BlockSampler_GetBlock 函数ReadBufferExtendedPageGetMaxOffsetNumber 函数HeapTupleSatisfiesVacuum 函数heapCopyTuple…

微软8月系统更新引发问题:虚拟内存分页文件出现错误

微软的八月系统更新引发了一系列问题&#xff0c;其中包括“UNSUPPORTED_PROCESSOR”蓝屏错误和文件管理器故障。尽管微软已经修复了前者&#xff0c;但据国外科技媒体Windows Latest报道&#xff0c;仍有用户反馈在非微星设备上出现“fault in nonpaged area”蓝屏错误。 如果…

信息技术 安全技术 信息安全管理测量

声明 本文是学习信息技术 安全技术 信息安全管理 测量. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 范围 为了评估按照GB/T 22080-2008规定实施的信息安全管理体系&#xff08;Information Security Management System&#xff0c;简称ISMS&#…

STM32移植FAT文件系统

所谓“移植”&#xff0c;就是打通FAT源码和物理设备之间的软件接口。 FAT源码早就被公益组织给写好了&#xff0c;直接下载源码。但是FAT作为顶层应用程序&#xff0c;它需要面对的底层物理设备是不确定的&#xff0c;那么底层的物理设备驱动程序就需要程序员来自己写。物理设…

VMware虚拟机挂起后再关机出现问题,连接不上外网解决方法,ifconfig无ens33

原文地址 Centos7 重启后ens33消失&#xff08;外部连接不上&#xff09;Centos7 重启后ens33消失&#xff08;外部连接不上&#xff09;_ens33不见了_瘦身小蚂蚁的博客-CSDN博客 解决方法&#xff1a;执行以下4个命令。 systemctl stop NetworkManager # 关闭NetworkManage…

《DevOps实践指南》- 读书笔记(二)

DevOps实践指南 Part 2 从何处开始5. 选择合适的价值流作为切入点5.1 绿地项目与棕地项目5.2 兼顾记录型系统和交互型系统5.3 从最乐于创新的团队开始5.4 扩大 DevOps 的范围5.5 小结 6. 理解、可视化和运用价值流6.1 确定创造客户价值所需的团队6.2 针对团队工作绘制价值流图6…

优思学院|精益生产与柔性制造:现代制造业的双重理念

现代制造业正不断演进&#xff0c;出现了许多新的生产理念和方法。在这其中&#xff0c;精益生产和柔性制造是两个引人注目且重要的理念。这两者不仅对企业的生产流程产生了深远的影响&#xff0c;还在提高效率、适应市场需求方面发挥着关键作用。 理念背景和核心原则 精益生…

pcd格式转ot/bt

1.具体实现可以看高博的bloghttps://www.cnblogs.com/gaoxiang12/p/5041142.html 2.问题&#xff1a;在编译octomap_tutor 源码时会报错。 修改方法&#xff1a;把cmakelists.txt里的c11改成c14

Android 文字转语音播放实现

1&#xff0c;TextToSpeech类是android自带的&#xff0c;但是部分设备需要支持TTS需要增加语音库&#xff0c;我使用的是讯飞语音&#xff08;离线的哦&#xff09;。请自行下载并安装讯飞语音APK&#xff0c;然后到系统设置中设置TTS功能默认使用该选项。有自带TTS库的可以省…