一个功能完整的学生信息管理系统,支持 Swing 桌面版 和 Web 版 两种访问方式。
本项目提供两种应用形态:
| 版本 | 技术栈 | 适用场景 |
|---|---|---|
| Swing 桌面版 | Java 8 + SQLite + Swing | 单机桌面应用,无需额外配置 |
| Web 版 | Spring Boot + Vue 3 + Element Plus | 前后端分离,支持浏览器访问 |
# 编译项目
mvn clean compile
# 打包项目
mvn clean package
# 运行程序
mvn exec:java -Dexec.mainClass="com.student.StudentManagementApp"
# 或
java -jar target/student-management-system-1.0.0.jar# 在项目根目录
mvn spring-boot:run后端 API 地址:http://localhost:8080/api
cd frontend
npm install
npm run dev前端访问地址:http://localhost:5173
| 组件 | 要求 |
|---|---|
| JDK | 1.8 或更高版本 |
| Maven | 3.6+ |
| Node.js | 16+(仅 Web 版需要) |
| npm | 8+(仅 Web 版需要) |
| 模块 | 功能描述 |
|---|---|
| 学生管理 | 学生信息 CRUD、搜索、分页、数据导出 |
| 教师管理 | 教师信息 CRUD、搜索、数据导出 |
| 课程管理 | 课程信息 CRUD、搜索、数据导出 |
| 成绩管理 | 成绩录入、修改、删除、查询 |
| 考勤管理 | 考勤记录管理、状态标记、出勤率统计 |
| 选课管理 | 学生选课、退课、选课列表 |
| 统计分析 | 数据概览、图表展示(Web 版专属) |
| 功能 | Swing 桌面版 | Web 版 |
|---|---|---|
| 界面风格 | 经典 Swing | 现代化 Element Plus |
| 数据导出 | Excel 导出 | 开发中 |
| 统计图表 | JFreeChart | ECharts |
| 响应式布局 | 不支持 | 支持 |
┌─────────────────────────────────────┐
│ View 层 (Swing UI) │
│ - MainFrame │
│ - 各种 ManagementPanel │
│ - FormDialog │
├─────────────────────────────────────┤
│ Controller 层 (业务逻辑) │
│ - StudentController │
│ - TeacherController │
│ - CourseController │
│ - ScoreController │
│ - AttendanceController │
│ - EnrollmentController │
├─────────────────────────────────────┤
│ Model 层 (数据实体) │
│ - Student, Teacher, Course │
│ - Score, Attendance, Enrollment │
├─────────────────────────────────────┤
│ DAO 层 (数据访问) │
│ - DatabaseHelper (单例) │
│ - 各种 DAO (接口 + 实现) │
├─────────────────────────────────────┤
│ Util 层 (工具类) │
│ - Validator (数据验证) │
│ - ExcelExportUtil (Excel 导出) │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ 前端层 (Vue 3) │
│ - Element Plus 组件 │
│ - ECharts 图表 │
│ - Pinia 状态管理 │
│ - Vue Router 路由 │
├─────────────────────────────────────┤
│ API 层 (Spring Boot) │
│ - StudentApiController │
│ - TeacherApiController │
│ - CourseApiController │
│ - ScoreApiController │
│ - AttendanceApiController │
│ - EnrollmentApiController │
│ - StatisticsApiController │
├─────────────────────────────────────┤
│ Controller 层 (复用) │
│ DAO 层 (复用) │
│ Model 层 (复用) │
└─────────────────────────────────────┘
| 模块 | 端点前缀 | HTTP 方法 |
|---|---|---|
| 学生管理 | /api/students |
GET / POST / PUT / DELETE |
| 教师管理 | /api/teachers |
GET / POST / PUT / DELETE |
| 课程管理 | /api/courses |
GET / POST / PUT / DELETE |
| 成绩管理 | /api/scores |
GET / POST / DELETE |
| 考勤管理 | /api/attendances |
GET / POST / PUT / DELETE |
| 选课管理 | /api/enrollments |
GET / POST / DELETE |
| 统计分析 | /api/statistics |
GET |
{
"code": 200,
"message": "success",
"data": { ... },
"timestamp": 1772885439136
}student-management-system/
├── pom.xml # Maven 配置
├── README.md # 说明文档(本文件)
├── README_WEB.md # Web 版详细文档
├── 设计规划.md # 设计文档
├── src/
│ ├── main/
│ │ ├── java/com/student/
│ │ │ ├── StudentManagementApp.java # Swing 入口
│ │ │ ├── StudentWebApp.java # Web 入口
│ │ │ ├── model/ # 实体类 (6 个)
│ │ │ ├── dao/ # 数据访问层
│ │ │ ├── controller/ # 业务逻辑层 (7 个)
│ │ │ ├── view/ # Swing 界面
│ │ │ ├── api/ # REST API 控制器 (7 个)
│ │ │ ├── common/ # 公共类
│ │ │ ├── config/ # 配置类
│ │ │ └── util/ # 工具类
│ │ └── resources/
│ │ ├── application.properties # Spring Boot 配置
│ │ └── db/ # 数据库脚本
│ └── test/
│ └── java/com/student/ # 单元测试 (141 个)
├── frontend/ # Vue 前端项目
│ ├── src/
│ │ ├── api/ # API 模块 (7 个)
│ │ ├── views/ # 页面视图 (8 个)
│ │ ├── stores/ # Pinia stores (3 个)
│ │ ├── router/ # 路由配置
│ │ ├── utils/ # 工具函数
│ │ ├── layout/ # 布局组件
│ │ ├── App.vue
│ │ └── main.js
│ ├── package.json
│ ├── vite.config.js
│ └── index.html
└── data/
└── student.db # SQLite 数据库
数据库文件:data/student.db
| 表名 | 说明 | 核心字段 |
|---|---|---|
students |
学生信息表 | id, student_id, name, gender, age, class_name, phone, email |
teachers |
教师信息表 | id, teacher_id, name, gender, title, department, phone, email |
courses |
课程表 | id, course_id, course_name, teacher_id, credits, class_hours |
scores |
成绩表 | id, student_id, course_id, score, term |
attendances |
考勤表 | id, student_id, course_id, attendance_date, status, remark |
enrollments |
选课表 | id, student_id, course_id, enroll_date, status |
项目包含 141 个单元测试,覆盖 Model、DAO、Controller 和 Util 层。
# 运行所有测试
mvn test
# 生成覆盖率报告
mvn test jacoco:report
# 完整构建(包含覆盖率检查)
mvn clean verify覆盖率要求:行 30%+, 分支 28%+(Swing GUI 代码除外)
覆盖率报告位置:target/site/jacoco/index.html
mvn clean package
# 生成 target/student-management-system-1.0.0.jarcd frontend
npm run build
# 生成 dist/ 目录# Spring Boot 应用配置
server.port=8080
spring.application.name=student-management-system
# 日志配置
logging.level.com.student=INFO
logging.level.org.springframework.web=INFO
# JSON 配置
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8// frontend/vite.config.js
server: {
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true
}
}
}- 端口配置: 后端默认端口 8080,前端默认端口 5173
- 数据库路径: 保持
data/student.db不变 - 编码格式: 统一使用 UTF-8(POST 请求需设置 charset=utf-8)
- Java 版本: Java 8
- 跨域问题: 已配置 CORS,开发环境无跨域限制
- 渐进式重构: 保留原有 Swing 代码,新增 Web 前端,平滑过渡
- 代码复用: 复用现有 Controller、DAO、Model 层
- 现代化前端: Vue 3 + Element Plus + ECharts
- 统一规范: 统一的 API 响应格式和错误处理机制
- 完整测试: 141 个单元测试,覆盖率达标
- 用户登录认证功能
- 权限控制(基于角色)
- 数据导入(Excel 批量导入)
- 前端单元测试
- E2E 测试
- 更多统计图表和报表
- 数据库备份/恢复功能
| 文档 | 说明 |
|---|---|
| IMPLEMENTATION_SUMMARY.md | 实施总结(2026-03-07) - Vue Web 版完整实施记录 |
| README_WEB.md | Web 版详细实施文档 |
| 设计规划.md | 项目设计规划文档 |
| frontend/README.md | 前端项目说明 |
| 日期 | 版本 | 更新内容 |
|---|---|---|
| 2026-03-07 | 1.0.0 | Vue Web 版正式上线,完成 7 个 API 控制器 + 8 个前端页面 |
| 2026-03-01 | 0.9.0 | Swing 桌面版完成,141 个单元测试通过 |