大家好,我是java1234_小锋老师,分享一套锋哥原创的SpringBoot4+Vue3大学生创新创业项目管理系统 。
项目简介
随着我国高等教育改革的深入推进,大学生创新创业教育日益受到重视。各高校纷纷开展大学生创新创业训练计划项目,但在项目管理过程中,传统的纸质材料和人工管理方式效率低下,存在信息不透明、审批流程繁琐、数据统计困难等问题。为解决上述问题,本文设计并实现了一个基于B/S架构的大学生创新创业项目管理系统。
本系统采用前后端分离的开发模式,后端使用Spring Boot 4框架搭建RESTful API服务,通过MyBatis实现数据持久化操作,前端使用Vue 3框架结合Element Plus组件库构建用户界面,数据库采用MySQL 8进行数据存储。系统实现了用户管理、项目管理、进度管理、经费管理、成果管理和通知公告六大核心功能模块,支持管理员、指导教师和学生三种角色,覆盖了项目从申报、审核、执行、中期检查到结题验收的完整生命周期。
经过系统测试验证,本系统功能完善、运行稳定,能够有效提高大学生创新创业项目的管理效率,为高校创新创业教育管理工作提供了信息化解决方案。
源码下载
链接: pan.baidu.com/s/1whv-HfBj…
提取码: 1234
相关截图
核心代码
package com.java1234.controller;
import com.java1234.common.PageResult;
import com.java1234.common.Result;
import com.java1234.entity.Project;
import com.java1234.entity.ProjectMember;
import com.java1234.service.ProjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/api/project")
public class ProjectController {
@Autowired
private ProjectService projectService;
@GetMapping("/list")
public Result<PageResult<Project>> list(@RequestParam(defaultValue = "") String query,
@RequestParam(required = false) String projectType,
@RequestParam(required = false) Integer status,
@RequestParam(required = false) Integer leaderId,
@RequestParam(required = false) Integer teacherId,
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize) {
PageResult<Project> pageResult = projectService.findList(query, projectType, status,
leaderId, teacherId, pageNum, pageSize);
return Result.success(pageResult);
}
@GetMapping("/{id}")
public Result<Project> getById(@PathVariable Integer id) {
return Result.success(projectService.findById(id));
}
@PostMapping("/add")
public Result<Void> add(@RequestBody Map<String, Object> params) {
Project project = new Project();
project.setProjectName((String) params.get("projectName"));
project.setProjectNo((String) params.get("projectNo"));
project.setProjectType((String) params.get("projectType"));
project.setLevel((String) params.get("level"));
project.setLeaderId((Integer) params.get("leaderId"));
project.setTeacherId((Integer) params.get("teacherId"));
project.setCollege((String) params.get("college"));
project.setDescription((String) params.get("description"));
if (params.get("startDate") != null) {
project.setStartDate(java.time.LocalDate.parse((String) params.get("startDate")));
}
if (params.get("endDate") != null) {
project.setEndDate(java.time.LocalDate.parse((String) params.get("endDate")));
}
if (params.get("budget") != null) {
project.setBudget(new java.math.BigDecimal(params.get("budget").toString()));
}
@SuppressWarnings("unchecked")
List<Map<String, Object>> memberList = (List<Map<String, Object>>) params.get("members");
List<ProjectMember> members = new java.util.ArrayList<>();
if (memberList != null) {
for (Map<String, Object> m : memberList) {
ProjectMember member = new ProjectMember();
member.setUserId((Integer) m.get("userId"));
member.setRoleInProject((String) m.get("roleInProject"));
members.add(member);
}
}
projectService.add(project, members);
return Result.success();
}
@PutMapping("/update")
public Result<Void> update(@RequestBody Project project) {
projectService.update(project);
return Result.success();
}
@DeleteMapping("/{id}")
public Result<Void> delete(@PathVariable Integer id) {
projectService.delete(id);
return Result.success();
}
@PutMapping("/audit")
public Result<Void> audit(@RequestBody Map<String, Object> params) {
Integer id = (Integer) params.get("id");
Integer status = (Integer) params.get("status");
String rejectReason = (String) params.get("rejectReason");
projectService.audit(id, status, rejectReason);
return Result.success();
}
@GetMapping("/members/{projectId}")
public Result<List<ProjectMember>> getMembers(@PathVariable Integer projectId) {
return Result.success(projectService.getMembers(projectId));
}
@GetMapping("/statistics")
public Result<Map<String, Object>> statistics() {
return Result.success(projectService.getStatistics());
}
@GetMapping("/statusCount")
public Result<List<Map<String, Object>>> statusCount() {
return Result.success(projectService.getStatusCount());
}
}