毕业设计|基于SpringBoot+Vue的科研课题项

简介: 毕业设计|基于SpringBoot+Vue的科研课题项

项目编号:

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

二,项目简介

研究背景:

科研课题项目管理是科研工作中非常重要的一环。在科研过程中,研究者需要承担项目申报、资金管理、进度跟踪、成果展示等多个任务,这些任务繁琐且容易出错,给科研工作带来很大的困扰。传统的手工管理方式存在信息不透明、效率低下、易出错等问题,需要一种高效、智能的管理系统来提升科研项目管理的效率和质量。

研究意义:

  1. 提高科研项目管理效率:科研课题项目管理系统可以将研究者的工作流程自动化,实现项目申报、资金管理、任务分配、进度跟踪等多个环节的无缝连接,大大提高项目管理的效率。
  2. 提升项目管理的质量:科研课题项目管理系统可以对项目管理过程进行规范化和标准化,确保项目遵循科研管理的规定和流程,从而提高项目管理的质量和可控性。
  3. 加强项目团队协作:科研课题项目管理系统可以提供一个统一的平台,方便项目团队成员之间的沟通和协作,实时共享项目进展、成果和资料,促进团队合作和知识共享。
  4. 提升科研成果的可见性和传播效果:科研课题项目管理系统可以将项目成果和研究成果进行整理和展示,方便科研人员和相关机构了解和评估项目的价值和贡献,提高科研成果的可见性和传播效果。
  5. 数据分析和决策支持:科研课题项目管理系统可以对项目数据进行统计和分析,提供科学决策依据,帮助管理者进行项目评估和决策。

综上所述,基于Spring Boot+Vue的科研课题项目管理系统具有重要的研究意义和实际应用价值,可以提高科研项目管理的效率和质量,加强团队协作,提升科研成果的可见性和传播效果,为科研工作者提供更好的科研管理工具。

三,系统展示

登录 /注销

用户管理

项目管理

刷新列表、添加项目、编辑项目、查看详情、项目申报、申请变更、申请结题、项目删除

申报管理

刷新列表、查看申请、查看项目、申请通过、申请驳回

变更管理

刷新列表、查看申请、查看项目、申请通过、申请驳回

结题管理

刷新列表、查看申请、查看项目、申请通过、申请驳回

角色管理

刷新列表、添加角色、编辑角色、分配权限、删除角色

权限管理

[管理员功能]刷新列表、添加权限、编辑权限、删除权限

数据字典

刷新列表、添加类别、编辑类别、删除类别

四,核心代码展示

4.1 权限相关

import java.util.List;
/**
 * @Date 2021-12-12
 * @Description
 * @Version 1.0
 */
@Service
public class PermissionServiceImpl extends BaseServiceImpl<Permission> implements IPermissionService {
    @Autowired
    private PermissionRepository permissionRepository;
    @Autowired
    private RolePermissionRepository rolePermissionRepository;
    public PermissionServiceImpl(BaseRepository<Permission> repository) {
        super(repository);
    }
    @Override
    public Permission saveValidate(String name, String code, String parentId) {
        return permissionRepository.saveValidate(name, code, parentId);
    }
    @Override
    public List<JsonTreeData> findPermissionTree() {
        List<Permission> permissionList = permissionRepository.findAll();
        return new JsonTreeCreater<Permission>(permissionList,
                item -> item.getId(),
                a -> StringUtils.isEmpty(a.getParentId()) ? "0" : a.getParentId(),
                a -> a.getName(),
                a -> false,
                a -> null
        ).create();
    }
    @Override
    @Transactional
    public void deldete(String id) {
        // 删除权限
        permissionRepository.delete(id);
        // 删除角色权限中间关系表
        rolePermissionRepository.deleteByPermissionIds(id);
    }
    @Override
    public int updateValidate(Permission permission) {
        return permissionRepository.updateValidate(permission.getId(),permission.getName(),permission.getCode(),permission. getParentId());
    }
    @Override
    public Permission update(Permission permission){
        Permission oldPermission = this.findById(permission.getId());
        Assert.notNull(oldPermission,"你要修改的权限不存在");
        oldPermission.setName(permission.getName());
        oldPermission.setCode(permission.getCode());
        return permissionRepository.save(oldPermission);
    }
}

4.2 用户管理

/**
 * @Date 2021-12-12
 * @Description
 * @Version 1.0
 */
@Service
public class UserServiceImpl extends BaseServiceImpl<User> implements IUserService {
    @Autowired
    private UserRepository userRepository;
    @Autowired
    private BaseRepository<User> baseRepository;
    @Autowired
    private UserPermissionRepository userPermissionRepository;
    @Autowired
    private UserRoleRepository userRoleRepository;
    public UserServiceImpl(BaseRepository<User> repository) {
        super(repository);
    }
    private RandomNumberGenerator randomNumberGenerator =
            new SecureRandomNumberGenerator();
    @Override
    public SecurityUserDto login(String loginName, String password){
        SecurityUserDto securityUserDto = new SecurityUserDto();
        User user = userRepository.findByUserName(loginName);
        //账号不存在
        if(user == null) {
            throw new UnknownAccountException("账号不存在!");
        }
        password = new Md5Hash(password, user.getSalt()).toString();
        //密码错误
        if(!password.equals(user.getPassword())) {
            throw new IncorrectCredentialsException("密码错误!");
        }
        //账号锁定
        if(user.getStatus().equals(UserStatus.LOCK.getCode())){
            throw new LockedAccountException("账号已经被锁定,请联系管理员!");
        }
        try {
            securityUserDto = BeanCopyUtils.copy(user,SecurityUserDto.class);
        }catch (Exception e){
            throw new CopyFailedException(e.getMessage());
        }
        return securityUserDto;
    }
    @Override
    public User save(User user){
        User oUser = this.findByUserName(user.getUserName());
        Assert.isNull(oUser,"用户名已经存在!");
        //设置用户状态 开启
        user.setStatus(UserStatus.UNLOCK.getCode());
        user.setCreateTime(new Date());
        if(StringUtils.isEmpty(user.getType())) {
            //设置用户类型 默认为普通用户
            user.setType(UserType.USER.getCode());
        }
        //对密码进行加盐
        String password = user.getPassword();
        String salt = randomNumberGenerator.nextBytes().toHex();
        user.setSalt(salt);
        password = new Md5Hash(password, salt).toString();
        user.setPassword(password);
        return userRepository.save(user);
    }
    public User findByUserName(String userName){
        return userRepository.findByUserName(userName);
    }
    @Override
    @Transactional
    public void deleteByUserName(String name) {
        User user = userRepository.findByUserName(name);
        // 删除用户
        userRepository.deleteByUserName(name);
        // 删除用户角色中间关系表
        userRoleRepository.deleteByUserId(user.getId());
    }
    @Override
    public void updateStatusById(String id, String status) {
        User user = userRepository.findById(id);
        Assert.isTrue(!UserType.isAdmin(user.getType()),"超级管理员无法禁用");
        userRepository.updateStatusById(id,status);
    }
    @Override
    public void updatePassword(User user, String password) {
        String salt = user.getSalt();
        password = new Md5Hash(password, salt).toString();
        user.setPassword(password);
        baseRepository.save(user);
    }
    @Override
    public List<Role> findRoleByUserId(String id) {
        return userRepository.findRoleByUserId(id);
    }
    @Override
    public Set<String> findPerByUserId(String id) {
        return userRepository.findPerByUserId(id);
    }
    @Override
    @Transactional
    public void assignmentRole(String id, String[] roleIds) {
        User user = userRepository.findById(id);
        Assert.notNull(user,"用户不存在!");
        // 删除之前的用户角色关系
        userRoleRepository.deleteByUserId(id);
        // 分配新的角色
        if(roleIds.length>0) {
            List<UserRole> userRoleList = UserRole.getUserRoleList(id, roleIds);
            userRoleRepository.save(userRoleList);
        }
    }
    @Override
    public User update(User user){
        User oldUser = userRepository.findById(user.getId());
        Assert.notNull(oldUser,"用户不存在!");
        oldUser = UserUtil.updateUser(user,oldUser);
        return baseRepository.save(oldUser);
    }
}

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

相关文章
|
8天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
23 3
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
|
9天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的蛋糕商城管理系统
基于Java+Springboot+Vue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的蛋糕商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
21 3
基于Java+Springboot+Vue开发的蛋糕商城管理系统
|
9天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的美容预约管理系统
基于Java+Springboot+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的美容预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
21 3
基于Java+Springboot+Vue开发的美容预约管理系统
|
9天前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
9天前
|
JavaScript 前端开发 Java
一个基于 SpringBoot + Vue 的在线考试系统
【9月更文挑战第24天】这是一个基于 Spring Boot 和 Vue 构建的在线考试系统。后端采用 Spring Boot、Spring Data JPA 和 MySQL 实现快速开发和数据库操作;前端使用 Vue.js 和 Element UI 快速搭建界面。系统包括用户管理、考试管理、考试答题和成绩管理等功能模块,并设计了相应的数据库表结构。通过 RESTful API 实现前后端数据交互,支持多种题型和权限管理,适用于学校和企业等场景。
|
10天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
32 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
10天前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
52 1
|
10天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的房产销售管理系统
基于Java+Springboot+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
25 3
基于Java+Springboot+Vue开发的房产销售管理系统
|
11天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的反诈视频宣传系统
基于Java+Springboot+Vue开发的反诈视频宣传系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的反诈视频宣传管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
41 4
基于Java+Springboot+Vue开发的反诈视频宣传系统
|
12天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的健身房管理系统
基于Java+Springboot+Vue开发的健身房管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的健身房管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
42 5
基于Java+Springboot+Vue开发的健身房管理系统
下一篇
无影云桌面