【Java毕设项目】基于SpringBoot+Vue科研管理系统的设计与实现

2023-09-21 21:16:06

博主主页:一季春秋
博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。
主要内容:毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题库、技术咨询。

🍅文末获取联系🍅

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

SpringBoot+Vue项目持续更新中

http://t.csdn.cn/1mgm8

目录

一、项目介绍 

二、项目主要技术 

三、系统的设计

四、系统的实现

4.1 系统前台功能实现

4.2 管理员功能实现

4.3 科研队伍功能实现

4.4 用户功能实现

五、实现代码


一、项目介绍 

系统阐述的是使用科研管理系统,对于Java、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计,描述,实现和分析与测试方面来表明开发的过程。开发中使用了springboot框架和MySql数据库技术搭建系统的整体架构。利用这些技术结合实际需求开发了具有个人中心、用户管理、科研队伍管理、队伍信息管理、加入队伍管理、队伍申请管理、科研成果管理、项目成果申报管理、公告信息管理、资源文件管理、信息交流、系统管理等功能的系统,最后对系统进行相应的测试,测试系统有无存在问题以及测试用户权限来优化系统,最后系统达到预期目标。

二、项目主要技术 

开发语言:Java

使用框架:spring boot

前端技术:JavaScript、Vue 、css3

开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code

数据库:MySQL 5.7/8.0

数据库管理工具:phpstudy/Navicat

JDK版本:jdk1.8

Maven: apache-maven 3.8.1-bin

三、系统的设计

科研管理系统分三大部分,即管理员管理、科研队伍管理和用户管理。系统按照用户的实际需求开发而来,贴近生活。从管理员出拿到分配好的账号密码可以进入系统,使用相关的系统应用。管理员总体负责整体系统的运行维护,统筹协调。

系统整体模块设计:系统分为管理员、科研队伍和用户三大用户角色,系统管理员有最大的权限,整体功能展示如图所示。

四、系统的实现

4.1 系统前台功能实现

打开系统的网址后,首先看到的就是首页界面。在这里能够看到系统的导航条,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图所示: 

系统注册:在系统注册页面的输入栏中输入用户注册信息进行注册操作,系统注册页面如图所示: 

队伍信息:在队伍信息页面的输入栏中输入队伍名称和组长姓名进行查询,可以查看到队伍详细信息,并根据需要进行加入申请、评论或收藏操作;队伍信息页面如图所示: 

队伍详细信息

科研成果:在科研成果页面的输入栏中输入成果名称、选择队伍名称和成果类型进行查询,可以查看到科研成果详细信息,并根据需要进行评论或收藏操作;科研成果页面如图所示: 

资源文件:在资源文件页面的输入栏中输入资源名称、资源类型和发布人进行查询,可以查看到资源文件详细信息,并根据需要进行评论或收藏操作;资源文件页面如图所示: 

个人中心:在个人中心页面输入个人信息可以进行更新操作,并根据需要对我的发布和我的收藏进行详细操作;如图所示: 

4.2 管理员功能实现

后台登录,在登录页面选择角色,正确输入用户名和密码后,点击登录进入操作系统进行操作;如图所示。 

管理员进入主页面,主要功能包括对个人中心、用户管理、科研队伍管理、队伍信息管理、加入队伍管理、队伍申请管理、科研成果管理、项目成果申报管理、公告信息管理、资源文件管理、信息交流、系统管理等进行操作。管理员主页面如图所示: 

管理员点击用户管理。在用户页面输入账号、姓名和选择性别进行查询、新增、用户人数和删除用户列表,并根据需要对用户详情信息进行详情、修改或删除操作;如图所示: 

管理员点击科研队伍管理。在科研队伍页面输入队伍账号进行查询、队长人数、新增或删除科研队伍列表,并根据需要对科研队伍详情信息进行详情、修改或删除操作;如图所示: 

管理员点击科研成果管理。在科研成果页面输入成果名称、选择队伍名称和成果类型进行查询、导出、成果类型或删除科研成果列表,并根据需要对科研成果详情信息进行详情、查看评论或删除操作;如图所示: 

管理员点击资源文件管理。在资源文件页面输入资源名称、资源类型和发布人进行查询、导出或删除资源文件列表,并根据需要对资源文件详情信息进行详情、修改、查看评论或删除操作;如图所示: 

4.3 科研队伍功能实现

科研队伍进入主页面,主要功能包括对个人中心、队伍信息管理、加入队伍管理、科研成果管理、项目成果申报管理、公告信息管理、资源文件管理等进行操作。科研队伍主页面如图所示: 

科研队伍点击队伍信息管理。在队伍信息页面输入队伍名称和组长姓名进行查询、新增或删除队伍信息列表,并根据需要对队伍详情信息进行详情、修改或删除操作;如图所示: 

科研队伍点击科研成果管理。在科研成果页面输入成果名称、选择队伍名称和成果类型进行查询、导出、新增或删除科研成果列表,并根据需要对科研成果详情信息进行详情、修改、查看评论或删除操作;如图所示: 

4.4 用户功能实现

用户进入主页面,主要功能包括对个人中心、加入队伍管理、队伍申请管理等进行操作。用户主页面如图所示: 

用户点击队伍申请管理。在队伍申请页面输入标题、账号、姓名和选择是否通过进行查询、新增或删除队伍申请列表,并根据需要对队伍申请详情信息进行详情、修改或删除操作;如图所示: 

五、实现代码

队伍信息

/**
 * 队伍信息
 * 后端接口
 * @author 
 * @email 
 * @date 2023-04-25 10:50:40
 */
@RestController
@RequestMapping("/duiwuxinxi")
public class DuiwuxinxiController {
    @Autowired
    private DuiwuxinxiService duiwuxinxiService;

    @Autowired
    private StoreupService storeupService;

    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,DuiwuxinxiEntity duiwuxinxi,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("keyanduiwu")) {
			duiwuxinxi.setDuiwuzhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<DuiwuxinxiEntity> ew = new EntityWrapper<DuiwuxinxiEntity>();

		PageUtils page = duiwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, duiwuxinxi), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,DuiwuxinxiEntity duiwuxinxi, 
		HttpServletRequest request){
        EntityWrapper<DuiwuxinxiEntity> ew = new EntityWrapper<DuiwuxinxiEntity>();

		PageUtils page = duiwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, duiwuxinxi), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(DuiwuxinxiEntity duiwuxinxi){
        EntityWrapper< DuiwuxinxiEntity> ew = new EntityWrapper< DuiwuxinxiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( duiwuxinxi, "duiwuxinxi")); 
		DuiwuxinxiView duiwuxinxiView =  duiwuxinxiService.selectView(ew);
		return R.ok("查询队伍信息成功").put("data", duiwuxinxiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        DuiwuxinxiEntity duiwuxinxi = duiwuxinxiService.selectById(id);
		duiwuxinxi.setClicknum(duiwuxinxi.getClicknum()+1);
		duiwuxinxi.setClicktime(new Date());
		duiwuxinxiService.updateById(duiwuxinxi);
        return R.ok().put("data", duiwuxinxi);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        DuiwuxinxiEntity duiwuxinxi = duiwuxinxiService.selectById(id);
		duiwuxinxi.setClicknum(duiwuxinxi.getClicknum()+1);
		duiwuxinxi.setClicktime(new Date());
		duiwuxinxiService.updateById(duiwuxinxi);
        return R.ok().put("data", duiwuxinxi);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody DuiwuxinxiEntity duiwuxinxi, HttpServletRequest request){
    	duiwuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(duiwuxinxi);
        duiwuxinxiService.insert(duiwuxinxi);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody DuiwuxinxiEntity duiwuxinxi, HttpServletRequest request){
    	duiwuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(duiwuxinxi);
        duiwuxinxiService.insert(duiwuxinxi);
        return R.ok();
    }



    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody DuiwuxinxiEntity duiwuxinxi, HttpServletRequest request){
        //ValidatorUtils.validateEntity(duiwuxinxi);
        duiwuxinxiService.updateById(duiwuxinxi);//全部更新
        return R.ok();
    }


    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        duiwuxinxiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
	
	/**
     * 前端智能排序
     */
	@IgnoreAuth
    @RequestMapping("/autoSort")
    public R autoSort(@RequestParam Map<String, Object> params,DuiwuxinxiEntity duiwuxinxi, HttpServletRequest request,String pre){
        EntityWrapper<DuiwuxinxiEntity> ew = new EntityWrapper<DuiwuxinxiEntity>();
        Map<String, Object> newMap = new HashMap<String, Object>();
        Map<String, Object> param = new HashMap<String, Object>();
		Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry<String, Object> entry = it.next();
			String key = entry.getKey();
			String newKey = entry.getKey();
			if (pre.endsWith(".")) {
				newMap.put(pre + newKey, entry.getValue());
			} else if (StringUtils.isEmpty(pre)) {
				newMap.put(newKey, entry.getValue());
			} else {
				newMap.put(pre + "." + newKey, entry.getValue());
			}
		}
		params.put("sort", "clicknum");
        params.put("order", "desc");
		PageUtils page = duiwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, duiwuxinxi), params), params));
        return R.ok().put("data", page);
    }



}
更多推荐

C语言每日一题(8):有序序列合并

文章主题:有序序列合并🔥🔥🔥所属专栏:C语言每日一题📗作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想😄🎶个人主页:[₽]的个人主页🏄🌊目录前言编程起因项目介绍项目名项目描述输入描述设计思路1.整体逻辑2.具体逻辑代码展示方法一:集中于一数列的冒泡排序法(速度慢,两行数排列顺序可随机

微生物学检验试剂——博迈伦

微生物学检验试剂是用于微生物学实验室中进行微生物检测和分析的特定化学试剂。这些试剂通常用于培养、鉴定和检测微生物,以确定其类型、数量和特性。以下是关于微生物学检验试剂的一些重要信息:1.分类:-培养基:微生物培养基是用于滋养和培育微生物的基础介质。不同类型的微生物需要不同的培养基,如富集培养基、选择培养基、差异培养基等

【网络层】IP协议

文章目录IP协议1.前提认识(1)IP的定位和作用(2)IP地址的构成(3)基本概念2.协议头格式(1)两个核心问题3.网段划分(重要)(1)为什么要网段划分(2)概念(3)子网划分方案(4)模拟子网划分4.特殊的IP地址5.IP地址的数量限制6.私有IP地址和公网IP地址7.路由及路由表(0)感性理解(1)路由(2)

vue学习-07todoList案例与浏览器本地存储

TodoListTodoList(任务列表)是一个简单的Web应用程序示例,用于管理任务、代办事项或清单。Vue.js是一个非常适合构建这种类型应用程序的框架,因为它提供了数据绑定、组件化、响应式和轻松管理用户界面的能力。以下是一个基本的Vue.jsTodoList的示例:任务列表显示:在Vue.js中,你可以使用数据

Databend 开源周报第 111 期

Databend是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn。What'sOnInDatabend探索Databend本周新进展,遇到更贴近你心意的Databend。理解SHAREENDPOINTSHAREENDPOINT

【数据结构】链表的学习和介绍

前言今天,我们来学习,数据结构中的链表链表是什么链表,就是多个结构体变量之间,通过结构体指针连接在一起的一种数据结构提示:本篇文章主要讲解动态链表,对于静态链表不做过多介绍链表的分类链表可分为静态链表和动态链表静态链表只是初步了解,更详细的操作(比如插入节点、删除节点)在这篇文章中不做说明静态链表,实际上就是一个结构体

unity gb28181 rtsp 视频孪生图像拉流和矫正插件(一)

目的是为了视频孪生,将视频放到三维里面,如果使用自己写的插件,有更好的灵活性,同时断线重连等等都更好控制了。1、矫正算法和硬件解码最好使用opencv制作,可以使用opencv的cuda加速,opencv的编译,必须用cudacudnn,都装好,再编译。硬件解码写在插件里面。dll插件使用extern“C”方式。使用_

【Linux】使用 UEFI 的操作系统启动过程

参考书籍《BeyondBIOS:DevelopingwiththeUnifiedExtensibleFirmwareInterfaceThirdEdition》文章目录一、从UEFI到OSRunTime1.1BIOS和UEFI1.2UEFI启动过程1.21Security(SEC)Phase1.22Pre-EFIIni

浅谈安科瑞智慧消防在城市综合体应急安全中的应用

摘要:城市综合体作为当前城市化进程中主要的系统组成部分,具有空间大、容纳的人员多、火灾隐患多等特点,为了延长城市综合体运行寿命,加强智慧消防建设,切实需要做好城市综合体运行安全性的防护,从而为城市社会经济发展发挥重要的促使作用。关键字:智慧消防;城市综合体;应急安全一、概述随着社会经济与科学技术的发展,智慧城市成为发展

【C++STL基础入门】list的运算符重载和关于list的算法

文章目录前言一、list运算符1.1逻辑运算符1.2赋值运算符二、list相关算法2.1查找函数总结前言C++标准模板库(STL)是一组强大而灵活的工具,用于处理数据结构和算法。其中,std::list是STL中的一个重要容器,它实现了双向链表的数据结构,具有高效的插入和删除操作。本文将介绍list容器的运算符重载和相

设计模式之中介者模式

尽管将一个系统分割成许多对象通常可以增加其可复用性,但是对象间相互连接的激增又会降低其可复用性大量的连接使得一个对象不可能在没有其他对象的支持下工作,系统表现为一个不可分割的整体,所以,对系统的行为进行任何较大的改动就十分困难了中介者模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使

热文推荐