基于Java+Springmvc+vue+element实现大学生科技创新创业项目管理系统

基于Java+Springmvc+vue+element实现大学生科技创新创业项目管理系统

博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域
作者主页 央顺技术团队
Java毕设项目精品实战案例《1000套》
欢迎点赞 收藏 ⭐留言
文末获取源码联系方式

文章目录

  • 基于Java+Springmvc+vue+element实现大学生科技创新创业项目管理系统
  • 前言介绍:
  • 系统设计:
  • 功能截图:
    • 用户登录注册:
    • 学生信息管理:
    • 指导老师管理:
    • 评审专家管理:
    • 项目任务书管理:
    • 中期检查报告管理:
    • 项目申请书管理:
    • 结项报告管理:
    • 项目进展日志管理:
    • 项目评价管理:
  • 数据设计:
  • 代码实现:
  • 获取源码:

前言介绍:

随着社会的不断快速发展,计算机的影响是全面且深入的。人们生活水平的不断提高,日常生活中人们对大学生创新创业项目管理方面的要求也在不断的提高、需要大学生创新创业项目管理的人数更是不断增加,使得大学生创新创业项目管理的开发成为必需而且紧迫的事情。大学生创新创业项目管理主要是借助计算机,通过对大学生创新创业项目管理所需的信息管理,增加用户选择,同时也方便对广大用户信息的及时查询、修改以及对用户信息的及时了解。大学生创新创业项目管理对一些用户带来了更多的便利, 该系统通过和Mysql数据库管理系统软件协作来满足用户的需求保存数据等。

系统设计:

开发工具:idea/eclipse、navicat for mysql

开发语言:java、jdk1.8、mysql5

硬件环境:Win10系统、Google等。

主要技术:springmvc、mybatis、vue 、java等

主要功能设计:首页、个人中心、学生管理、指导老师管理、评审专家管理、项目任务书管理、中期检查报告管理、项目申请书管理、结项报告管理、项目进展日志管理、项目立项申请管理、项目评价管理
在这里插入图片描述

功能截图:

用户登录注册:

管理员通过输入用户名、密码、选择角色等信息,然后点击登录就能登录到系统
管理员登录进入系统之后,就可以对所有的信息进行查看,可以查看到首页、个人中心、学生管理、指导老师管理、评审专家管理、项目任务书管理、中期检查报告管理、项目申请书管理、结项报告管理、项目进展日志管理、项目立项申请管理、项目评价管理等,并且还可以对其进行相应的操作管理
在这里插入图片描述

学生信息管理:

在学生管理页面中可以对索引、姓名、学号、性别、手机、邮箱、联系地址、身份证、照片等信息进行详情,修改或删除等操作
在这里插入图片描述

指导老师管理:

指导老师管理,在指导老师管理页面中可以对索引、工号、指导老师姓名、性别、手机、邮箱、身份证、图片等信息进行详情,修改或删除等操作
在这里插入图片描述

评审专家管理:

在评审专家管理页面中可以对索引、账号、姓名、性别、身份证、手机、邮箱、照片等信息进行详情,修改或删除等操作
在这里插入图片描述

项目任务书管理:

在项目申请书管理页面中可以对索引、项目名称、学号、姓名、手机、邮箱、指导老师姓名、工号、文件、联系地址、申请时间、审核回复、审核状态等信息进行详情,修改或删除等操作
在这里插入图片描述

中期检查报告管理:

在中期检查报告管理页面中可以对索引、项目名称、项目类别、学号、文件、编号、项目负责人、指导老师姓名、工号、提交时间、审核回复、审核状态等信息进行详情,修改或删除等操作
在这里插入图片描述

项目申请书管理:

在项目进展日志管理页面中可以对索引、项目名称、文件、指导老师姓名、工号、学号、姓名、提交时间等信息进行详情,修改或删除等操作
在这里插入图片描述

结项报告管理:

在结项报告管理页面中可以对索引、项目名称、项目类型、学号、文件、编号、项目负责人、指导老师姓名、工号、提交时间、审核回复、审核状态等信息进行详情,修改或删除等操作
在这里插入图片描述

项目进展日志管理:

在项目进展日志管理页面中可以对索引、项目名称、文件、指导老师姓名、工号、学号、姓名、提交时间等信息进行详情,修改或删除等操作
在这里插入图片描述

项目评价管理:

在项目进展日志管理页面中可以对索引、项目名称、文件、指导老师姓名、工号、学号、姓名、提交时间等信息进行详情,修改或删除等操作
在这里插入图片描述

数据设计:

项目申请书管理实体属性图,如图所示:
在这里插入图片描述
结项报告管理实体属性图如图所示:
在这里插入图片描述

代码实现:

 
 
/**
 * 项目立项申请
 * 后端接口
 * @author 
 * @email 
 * @date 2022-04-10 16:31:21
 */
@RestController
@RequestMapping("/xiangmulixiangshenqing")
public class XiangmulixiangshenqingController {
    @Autowired
    private XiangmulixiangshenqingService xiangmulixiangshenqingService;
    
 
 
    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,XiangmulixiangshenqingEntity xiangmulixiangshenqing, 
		HttpServletRequest request){
 
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("zhidaolaoshi")) {
			xiangmulixiangshenqing.setGonghao((String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("xuesheng")) {
			xiangmulixiangshenqing.setXuehao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<XiangmulixiangshenqingEntity> ew = new EntityWrapper<XiangmulixiangshenqingEntity>();
		PageUtils page = xiangmulixiangshenqingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xiangmulixiangshenqing), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,XiangmulixiangshenqingEntity xiangmulixiangshenqing, HttpServletRequest request){
        EntityWrapper<XiangmulixiangshenqingEntity> ew = new EntityWrapper<XiangmulixiangshenqingEntity>();
		PageUtils page = xiangmulixiangshenqingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xiangmulixiangshenqing), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( XiangmulixiangshenqingEntity xiangmulixiangshenqing){
       	EntityWrapper<XiangmulixiangshenqingEntity> ew = new EntityWrapper<XiangmulixiangshenqingEntity>();
      	ew.allEq(MPUtil.allEQMapPre( xiangmulixiangshenqing, "xiangmulixiangshenqing")); 
        return R.ok().put("data", xiangmulixiangshenqingService.selectListView(ew));
    }
 
	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(XiangmulixiangshenqingEntity xiangmulixiangshenqing){
        EntityWrapper< XiangmulixiangshenqingEntity> ew = new EntityWrapper< XiangmulixiangshenqingEntity>();
 		ew.allEq(MPUtil.allEQMapPre( xiangmulixiangshenqing, "xiangmulixiangshenqing")); 
		XiangmulixiangshenqingView xiangmulixiangshenqingView =  xiangmulixiangshenqingService.selectView(ew);
		return R.ok("查询项目立项申请成功").put("data", xiangmulixiangshenqingView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        XiangmulixiangshenqingEntity xiangmulixiangshenqing = xiangmulixiangshenqingService.selectById(id);
        return R.ok().put("data", xiangmulixiangshenqing);
    }
 
    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        XiangmulixiangshenqingEntity xiangmulixiangshenqing = xiangmulixiangshenqingService.selectById(id);
        return R.ok().put("data", xiangmulixiangshenqing);
    }
    
 
 
 
    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody XiangmulixiangshenqingEntity xiangmulixiangshenqing, HttpServletRequest request){
    	xiangmulixiangshenqing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(xiangmulixiangshenqing);
 
        xiangmulixiangshenqingService.insert(xiangmulixiangshenqing);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody XiangmulixiangshenqingEntity xiangmulixiangshenqing, HttpServletRequest request){
    	xiangmulixiangshenqing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(xiangmulixiangshenqing);
 
        xiangmulixiangshenqingService.insert(xiangmulixiangshenqing);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody XiangmulixiangshenqingEntity xiangmulixiangshenqing, HttpServletRequest request){
        //ValidatorUtils.validateEntity(xiangmulixiangshenqing);
        xiangmulixiangshenqingService.updateById(xiangmulixiangshenqing);//全部更新
        return R.ok();
    }
    
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        xiangmulixiangshenqingService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<XiangmulixiangshenqingEntity> wrapper = new EntityWrapper<XiangmulixiangshenqingEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}
 
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("zhidaolaoshi")) {
			wrapper.eq("gonghao", (String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("xuesheng")) {
			wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));
		}
 
		int count = xiangmulixiangshenqingService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
 
 
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
 
    <mvc:default-servlet-handler/>
 
    <!-- Controller包(自动注入) -->
    <context:component-scan base-package="com.controller"/>
 
    <!-- FastJson注入 -->
    <mvc:annotation-driven>
        <!-- <mvc:message-converters register-defaults="true">
            避免IE执行AJAX时,返回JSON出现下载文件
            FastJson
            <bean id="fastJsonHttpMessageConverter"
                  class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        这里顺序不能反,一定先写text/html,不然ie下出现下载提示
                        <value>text/html;charset=UTF-8</value>
                        <value>application/json;charset=UTF-8</value>
                    </list>
                </property>
                <property name="features">
                    <array value-type="com.alibaba.fastjson.serializer.SerializerFeature">
                        避免循环引用
                        <value>DisableCircularReferenceDetect</value>
                        是否输出值为null的字段
                        <value>WriteMapNullValue</value>
                        数值字段如果为null,输出为0,而非null
                        <value>WriteNullNumberAsZero</value>
                        字符类型字段如果为null,输出为"",而非null 
                        <value>WriteNullStringAsEmpty</value>
                        List字段如果为null,输出为[],而非null
                        <value>WriteNullListAsEmpty</value>
                        Boolean字段如果为null,输出为false,而非null
                        <value>WriteNullBooleanAsFalse</value>
                    </array>
                </property>
            </bean>
        </mvc:message-converters> -->
    </mvc:annotation-driven>
    <!-- 静态资源配置 -->
    <mvc:resources mapping="/resources/**" location="/resources/"/>
    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    
    <!-- 拦截器配置 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <mvc:exclude-mapping path="/upload"/>
            <bean class="com.interceptor.AuthorizationInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
 
    <!-- 上传限制 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 上传文件大小限制为31M,31*1024*1024 -->
        <property name="maxUploadSize" value="32505856"/>
    </bean>
 
</beans>

获取源码:

大家点赞、收藏、关注、评论啦
🍅查看下方微信号获取联系方式 📝
🚀🚀🚀精彩系列推荐
Java毕设项目精品实战案例《1000套》
精彩专栏推荐订阅:在下方专栏

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

酷开科技深度切入生活,为品牌方带来确定性增长

在流量稀缺的年代&#xff0c;如何能让营销更出众&#xff1f;流量所在&#xff0c;就是营销所在&#xff0c;就是消费互联网的主战场。社交平台和信息流平台的融合&#xff0c;是两个互联网底层逻辑的驱动&#xff0c;而流量搅动的背后&#xff0c;是互联网世界的底层逻辑在一…

什么是React属性钻取(Prop Drilling)

一、介绍 在React开发过程中&#xff0c;状态管理是一个绕不开的话题。无论是新手还是有经验的开发者&#xff0c;都会面临如何有效管理组件状态的挑战。React为我们提供了多种状态管理方案&#xff0c;如直接的状态传递&#xff08;俗称"属性钻取"&#xff09;、Co…

什么是分段锁?

1、典型回答 分段锁是一种将锁细化到每个段(Segment) 级别的锁设计。在 ConcurrentHashMap 中&#xff0c;它将整个数据结构分成多个段&#xff0c;每个段只锁定自己的一部分数据。每个段可以看作是一个独立的分组&#xff0c;只锁定该段(Segment)内部的数据操作&#xff0c;不…

Go函数全景:从基础到高阶的深度探索

目录 一、Go函数基础1.1 函数定义和声明基础函数结构返回值类型和命名返回值 1.2 参数传递方式值传递引用传递 二、Go特殊函数类型2.1 变参函数定义和使用变参变参的限制 2.2 匿名函数与Lambda表达式何为匿名函数Lambda表达式的使用场景 2.3 延迟调用函数&#xff08;defer&…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:QRCode)

用于显示单个二维码的组件。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 二维码组件的像素点数量与内容有关&#xff0c;当组件尺寸过小时&#xff0c;可能出现无法展示内容的情况&#xff0c;…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 3月15日,星期五

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年3月15日 星期五 农历二月初六 1、 发改委&#xff1a;积极支持行业地位显著、信用优良的优质企业借用外债。 2、 央行发布外籍来华人员支付指南&#xff0c;可选移动支付、银行卡、现金等支付方式。 3、 江苏省今年将全面…

2024三掌柜赠书活动第十五期:Python高效编程——基于Rust语言

目录 前言 关于Rust语言 Rust与Python的集成 使用案例 关于《Python高效编程——基于Rust语言》 编辑推荐 内容简介 作者简介 图书目录 书中前言/序言 《Python高效编程——基于Rust语言》全书速览 结束语 前言 随着互联网的快速发展和应用程序的广泛使用&#xff…

解释器模式(Interpreter Pattern)

解释器模式 说明 解释器模式&#xff08;Interpreter Pattern&#xff09;属于行为型模式&#xff0c;是指给定一门语言&#xff0c;定义它的语法&#xff08;文法&#xff09;的一种表示&#xff0c;并定义一个解释器&#xff0c;该解释器使用该表示来解释语言中的句子。是一…

教你三指针拿捏链表翻转

类似上图&#xff0c;其实步骤很简单&#xff0c;用三个指针pre&#xff0c;cur&#xff0c;temp&#xff0c;看英文也知道具体含义&#xff0c;前向&#xff0c;当前&#xff0c;和用于保存剩余的链表 &#xff0c;具体看下图&#xff0c;很清晰 class Solution { public:List…

Mindlin厚板单元Matlab有限元编程 | 板单元 | 【Matlab源码 + 理论文本】

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

操作系统总结(第二周 第一堂)

前言&#xff1a; 第一周的重点就在于一张图表&#xff1a; 基于这张图&#xff0c;我们将陷入内核分为了两个大块Trap和Interrupt。同时我们知道一件事情任何一次I/O操作或者错误程序操作都将陷入内核&#xff0c;从而使得内核可以监控所有的外部设备以及维护整个电脑程序运行…

YOLOv9改进策略:注意力机制 |通道注意力和空间注意力CBAM | GAM超越CBAM,不计成本提高精度

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a;通道注意力和空间注意力CBAM&#xff0c;全新注意力GAM&#xff1a;超越CBAM&#xff0c;不计成本提高精度 改进结构图如下&#xff1a; YOLOv9魔术师专栏 ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️…

【Claude 3 Haiku】基于Amazon Bedrock初体验Claude 3 Haiku 模型

文章目录 1. Claude 3 Haiku介绍2. Amazon Bedrock介绍3. 访问 Amazon Bedrock UI4. 授权Claude 3 Haiku访问权限5. Claude 3 Haiku 初体验6. Claude 3 Haiku 用例6.1 让Claude 3 Haiku写一段Code6.2 让Claude 3 Haiku翻译英文6.3 让Claude 3 Haiku 识别图片并作文字性描述 7. …

第六节:使用SMB开发WebService

一、概述 webservice在日常开发中是常用的接口形式&#xff0c;SMB在设计之初就将webservice作为重要的代理协议。在组件库中提供了webservice input和webservice output两个组件&#xff0c;分别用于发布接口和调用接口。 二、发布webservice 在csdnProject工程中创建名为c…

教师人事档案管理系统|基于springboot框架+ Mysql+Java+B/S架构的教师人事档案管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 教师后台功能模块 系统功能设计 数据库E-R图设计 lu…

永热爱 敢向前 | Paraverse平行云的2023 年终总结

永热爱&#xff0c;敢向前 值此新年&#xff0c;回顾2023&#xff0c;仅以此句&#xff0c;献给所有XR产业信仰者 2023 年&#xff0c;是XR产业技术和场景承上启下的关键之年 在这场波澜壮阔的技术潮中 「Paraverse平行云」踏浪前行 已是第八个年头&#xff0c;让我们一起…

【C++map和set容器:AVL树、红黑树详解并封装实现map和set】

[本节目标] map和set底层结构 AVL树 红黑树 红黑树模拟实现STL中的map和set 1.底层结构 前面对map/multimap/set/multiset进行了简单的介绍&#xff0c;在其文档介绍中发现&#xff0c;这几个容器有个 共同点是&#xff1a;其底层都是按照二叉搜索树来实现的&#xff0c;但…

如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档

目录 前言 Swagger Editor本地接口文档公网远程访问 1. 部署Swagger Editor 2. Linux安装Cpolar 3. 配置Swagger Editor公网地址 4. 远程访问Swagger Editor 5. 固定Swagger Editor公网地址 结语 前言 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 …

独立开发的轻量级简洁开源论坛BBS PHP源码 – 2023新版发布

最新的轻量级开源论坛php源码发布啦&#xff01;这是一款独立开发的论坛系统&#xff0c;可以帮助你快速地开发出你想要的网站。 如果你是PHP初学者&#xff0c;这款论坛系统非常适合你入门学习。不过&#xff0c;需要注意的是&#xff0c;由于它并没有进行商业化改造&#xf…

【python绘图】turle 绘图基本案例

文章目录 0. 基础知识1. 蟒蛇绘制2. 正方形绘制3. 六边形绘制4. 叠边形绘制5. 风轮绘制 0. 基础知识 资料来自中国mooc北京理工大学python课程 1. 蟒蛇绘制 import turtle turtle.setup(650, 350, 200, 200) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pen…