基于SpringBoot的课程作业管理系统
1. 项目简介
课程作业管理系统是一个基于Spring Boot框架开发的综合教学管理平台,旨在为学校提供高效、便捷的教学管理解决方案。系统实现了学生、教师和管理员三种角色的完整工作流程,涵盖了课程管理、作业管理、资源管理、评价系统等核心功能模块。
系统采用前后端分离架构,后端使用Spring Boot+MyBatis Plus技术栈,前端使用HTML+JS+CSS技术,数据库采用MySQL。系统支持多角色权限管理,包括学生选课、教师布置作业、作业评分、课程评价等功能,满足学校日常教学管理的各项需求。
2. 技术栈
后端技术
- 核心框架:Spring Boot 2.2.2.RELEASE
- ORM框架:MyBatis Plus 2.3
- 安全框架:Apache Shiro 1.3.2
- 数据库:MySQL 5.7
- JSON处理:FastJSON
- 工具库:Hutool
- API文档:Swagger(集成)
- 文件处理:Commons IO
前端技术
- 基础框架:HTML5 + CSS3 + JavaScript
- UI框架: Element UI
- 图表库:ECharts
- 文件上传:Web Uploader
开发工具
- 构建工具:Maven
- IDE:IntelliJ IDEA
- 版本控制:Git
- API测试:Postman
3. 系统详细介绍
3.1 系统架构
系统采用分层架构设计:
表现层(Controller) → 业务逻辑层(Service) → 数据访问层(Dao) → 数据库(MySQL)
3.2 核心功能模块
3.2.1 用户管理
- 学生管理:学号、姓名、班级、联系方式等
- 教师管理:工号、姓名、职称、任教课程等
- 管理员:系统配置、用户管理、权限分配
3.2.2 课程管理
- 课程信息维护(名称、类型、班级、学期等)
- 课程资源上传与下载
- 课程表管理
3.2.3 作业管理
- 作业布置与发布
- 作业提交与批改
- 作业评分与评语
3.2.4 评价系统
- 学生对课程的评价
- 教师对学生的评价
- 评价审核机制
3.2.5 公告管理
- 公告发布与展示
- 公告分类管理
- 公告审核流程
3.3 数据库设计
系统包含12张核心表:
banji
(班级表)config
(配置表)gonggaoxinxi
(公告信息表)jiaoshi
(教师表)kechengleixing
(课程类型表)kechengpingjia
(课程评价表)kechengxinxi
(课程信息表)kechengziyuan
(课程资源表)token
(用户登录token表)users
(管理员用户表)xuesheng
(学生表)xueshengxuanke
(学生选课表)zuoyebuzhi
(作业布置表)zuoyepingfen
(作业评分表)zuoyetijiao
(作业提交表)
3.4 安全设计
- 使用Shiro实现基于角色的访问控制(RBAC)
- 密码采用MD5加密存储
- Token机制实现会话管理
- 接口权限细粒度控制
4. 部分核心代码
4.1 用户登录接口
@RestController
@RequestMapping("/xuesheng")
public class XueshengController {@Autowiredprivate XueshengService xueshengService;@IgnoreAuth@PostMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {XueshengEntity user = xueshengService.selectOne(new EntityWrapper<XueshengEntity>().eq("xuehao", username));if(user == null || !user.getMima().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(), username, "xuesheng", "学生");return R.ok().put("token", token);}
}
4.2 作业布置功能
@RestController
@RequestMapping("/zuoyebuzhi")
public class ZuoyebuzhiController {@Autowiredprivate ZuoyebuzhiService zuoyebuzhiService;@RequestMapping("/save")public R save(@RequestBody ZuoyebuzhiEntity zuoyebuzhi, HttpServletRequest request) {zuoyebuzhi.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue());zuoyebuzhiService.insert(zuoyebuzhi);return R.ok();}
}
4.3 文件上传处理
@RestController
@RequestMapping("file")
public class FileController {@RequestMapping("/upload")public R upload(@RequestParam("file") MultipartFile file, String type) throws Exception {if (file.isEmpty()) {throw new EIException("上传文件不能为空");}String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);File path = new File(ResourceUtils.getURL("classpath:static").getPath());if (!path.exists()) {path = new File("");}File upload = new File(path.getAbsolutePath(), "/upload/");if (!upload.exists()) {upload.mkdirs();}String fileName = new Date().getTime() + "." + fileExt;File dest = new File(upload.getAbsolutePath() + "/" + fileName);file.transferTo(dest);return R.ok().put("file", fileName);}
}
4.4 课程评价功能
@RestController
@RequestMapping("/kechengpingjia")
public class KechengpingjiaController {@Autowiredprivate KechengpingjiaService kechengpingjiaService;@RequestMapping("/save")public R save(@RequestBody KechengpingjiaEntity kechengpingjia, HttpServletRequest request) {kechengpingjia.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue());kechengpingjiaService.insert(kechengpingjia);return R.ok();}
}
5. 部分截图
6. 项目总结
6.1 项目亮点
- 模块化设计:系统采用模块化设计,各功能模块高度解耦,便于维护和扩展
- RBAC权限控制:基于Shiro实现了细粒度的角色权限控制
- 前后端分离:采用RESTful API设计,前后端分离开发
- 文件管理:完善的课程资源管理功能,支持多种文件格式
- 评价系统:双向评价机制,学生可评价课程,教师可评价学生作业
5.2 项目价值
本系统为学校教学管理提供了全面的数字化解决方案,实现了教学流程的标准化、规范化和自动化。系统显著提高了教学管理效率,降低了人工管理成本,为教学质量评估提供了数据支持,是现代化教育管理的重要工具。
通过本项目的开发,团队积累了Spring Boot大型项目开发经验,掌握了复杂权限系统设计和实现方法,为后续教育类项目的开发奠定了坚实基础。
演示地址:
后台:http://springbootwwiwn.xiaobias.com/springbootwwiwn/admin/dist/index.html
管理:abo/abo
学生:学生1/123456
学生2/123456
教师:教师1/123456
教师2/123456
资料:https://fifteen.xiaobias.com/source/25