1. 项目背景与核心价值
这个双创竞赛管理系统是专门为高校大学生创新创业竞赛设计的全流程数字化解决方案。我在实际开发过程中发现,传统竞赛申报存在几个痛点:纸质材料容易丢失、评审进度不透明、路演安排混乱。而市面上通用OA系统又无法满足竞赛特有的需求,比如项目分组评审、路演时间预约、评委打分统计等场景。
系统采用前后端分离架构,后端基于SpringBoot 2.7.3(兼容JDK8和JDK17),前端使用Vue 3 + Element Plus。这种技术组合在大学生毕设中非常典型,既能体现完整的技术栈,又不会过度复杂。特别适合计算机相关专业学生作为综合实践项目,涵盖了用户权限管理、文件上传、数据可视化等常见业务场景。
提示:项目源码中已包含完整的RBAC权限控制模块,支持五种角色(学生、导师、院系管理员、校级管理员、评委)的精细化权限分配,这是同类毕设项目中经常被忽略的关键点。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构详解
2.1 后端技术栈设计
SpringBoot框架选型经过多方考量:
- 相比原生Spring MVC减少了70%以上的XML配置
- 内嵌Tomcat服务器简化部署
- 自动配置机制让新手也能快速上手
- 丰富的Starter依赖(项目中使用spring-boot-starter-web、spring-boot-starter-data-jpa等)
数据库选用MySQL 8.0,主要考虑到:
- 高校实验室环境普遍支持MySQL
- 完善的文档和社区支持
- 与JPA的Hibernate实现配合良好
java复制// 典型的数据层接口示例
public interface ProjectRepository extends JpaRepository<CompetitionProject, Long> {
@Query("SELECT p FROM CompetitionProject p WHERE p.college = :college AND p.status = 'SUBMITTED'")
Page<CompetitionProject> findSubmittedByCollege(
@Param("college") String college,
Pageable pageable);
}
2.2 前端技术选型
Vue 3组合式API相比Options API更适合复杂业务逻辑:
- 更好的TypeScript支持
- 逻辑关注点更集中
- 代码复用性更高
Element Plus组件库的选择依据:
- 中文文档完善
- 预制表单验证规则
- 丰富的表格功能(支持分页、排序、筛选)
javascript复制// 典型的路由配置
const routes = [
{
path: '/project/:id',
component: ProjectDetail,
meta: { requiresAuth: true, roles: ['STUDENT', 'TEACHER'] }
}
]
3. 核心功能实现
3.1 项目申报流程
申报流程采用状态机设计模式,定义6种状态:
- DRAFT(草稿)
- SUBMITTED(已提交)
- FIRST_REVIEW(初审中)
- FINAL_REVIEW(终审中)
- APPROVED(已立项)
- REJECTED(已驳回)
状态转换通过策略模式实现,避免复杂的if-else嵌套:
java复制public interface StateHandler {
void handle(CompetitionProject project, String operation);
