# JAVAEE1 **Repository Path**: liindenghu/javaee1 ## Basic Information - **Project Name**: JAVAEE1 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-20 - **Last Updated**: 2025-06-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 学生选课管理系统 ## 项目介绍 本项目是一个基于Vue3和Spring Boot的学生选课管理系统,实现了学生选课、教师授课、课程管理等功能。系统采用前后端分离架构,提供了友好的用户界面和完整的业务功能。 ## 技术栈 ### 前端技术 - Vue 3 - TypeScript - Vite - Element Plus - Vue Router - Axios ### 后端技术 - Spring Boot 3.3.1 - MyBatis - MySQL - Hutool - PageHelper ## 功能特性 ### 1. 用户管理 - 多角色支持:管理员、教师、学生 - 用户认证与授权 - 个人信息管理 - 头像上传 ### 2. 课程管理 - 课程信息维护 - 课程容量控制 - 课程查询与筛选 - 课程时间地点安排 ### 3. 选课功能 - 学生选课 - 课程退选 - 已选课程查询 - 学分统计 ### 4. 教务管理 - 学院信息管理 - 专业信息管理 - 教师信息管理 - 学生信息管理 ### 5. 系统功能 - 公告管理 - 分页查询 - 数据统计 - 文件上传 ## 安装说明 ### 1. 数据库配置 ```sql # 创建数据库 create database xsxk; # 导入数据 source xsxk.sql ``` ### 2. 后端配置 ```bash # 进入后端目录 cd springboot # 安装依赖 mvn install # 启动项目 mvn spring-boot:run ``` ### 3. 前端配置 ```bash # 进入前端目录 cd vue # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build ``` ## 系统角色说明 ### 1. 管理员 - 用户名:admin - 密码:admin - 权限:系统所有功能的管理权限 ### 2. 教师 - 示例账号:feng/123456 - 功能: - 查看个人课程信息 - 管理选课学生 - 查看选课统计 ### 3. 学生 - 示例账号:user/123456 - 功能: - 课程查询与选课 - 查看个人课表 - 学分统计 - 课程退选 ## 数据库设计 ### 主要表结构 - admin:管理员信息表 - teacher:教师信息表 - student:学生信息表 - course:课程信息表 - choice:选课记录表 - college:学院信息表 - speciality:专业信息表 - notice:公告信息表 ## 核心代码实现 ### 1. 前端选课功能实现 ```vue ``` ### 2. 前端课程管理功能实现 ```vue ``` ### 3. 数据库表结构 ```sql -- 课程表 CREATE TABLE `course` ( `id` bigint NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL COMMENT '课程名称', `content` text COMMENT '课程介绍', `score` int DEFAULT NULL COMMENT '课程学分', `teacher_id` bigint DEFAULT NULL COMMENT '教师ID', `num` int DEFAULT NULL COMMENT '开班人数', `time` varchar(255) DEFAULT NULL COMMENT '上课时间', `location` varchar(255) DEFAULT NULL COMMENT '上课地点', `college_id` bigint DEFAULT NULL COMMENT '学院ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 选课记录表 CREATE TABLE `choice` ( `id` bigint NOT NULL AUTO_INCREMENT, `course_id` bigint DEFAULT NULL COMMENT '课程ID', `student_id` bigint DEFAULT NULL COMMENT '学生ID', `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '选课时间', PRIMARY KEY (`id`), UNIQUE KEY `unique_course_student` (`course_id`,`student_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` ### 4. 后端API实现 ```java @RestController @RequestMapping("/choice") public class ChoiceController { @Resource private ChoiceService choiceService; // 选课 @PostMapping("/add") public Result add(@RequestBody Choice choice) { // 检查课程容量 Course course = courseService.getById(choice.getCourseId()); if (course.getAlreadyNum() >= course.getNum()) { return Result.error("课程已满"); } // 检查是否重复选课 if (choiceService.checkDuplicate(choice)) { return Result.error("已经选过此课程"); } // 保存选课记录 return Result.success(choiceService.add(choice)); } // 退课 @DeleteMapping("/deleteById/{id}") public Result deleteById(@PathVariable Long id) { return Result.success(choiceService.deleteById(id)); } // 查询选课记录 @GetMapping("/selectPage") public Result selectPage(ChoicePageRequest request) { return Result.success(choiceService.selectPage(request)); } } ``` ## 注意事项 1. 选课时注意课程容量限制 2. 注意学分要求和课程冲突 3. 系统使用前请确保数据库配置正确 4. 建议使用Chrome或Firefox浏览器访问系统 ## 开发环境 - JDK 21 - Node.js 16+ - MySQL 8.0+ - Maven 3.6+