# 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+