# algorithm-teaching-platform **Repository Path**: wyz12111/algorithm-teaching-platform ## Basic Information - **Project Name**: algorithm-teaching-platform - **Description**: 算法设计与分析课程在线学习平台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-01 - **Last Updated**: 2026-03-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 算法设计与分析课程在线学习平台 ## 项目简介 这是一个基于Spring Boot的算法设计与分析课程在线学习平台,提供课程管理、题目练习、代码提交、在线评测等功能。 ## 技术栈 - **后端框架**: Spring Boot 2.7.3 - **持久层**: MyBatis - **数据库**: MySQL 8.0+ - **缓存**: Redis - **工具类**: Lombok, Knife4j (Swagger) - **其他**: JWT认证, Druid连接池, PageHelper分页 ## 项目结构 ``` algorithm-teaching-platform/ ├── atp-common/ # 公共模块 │ ├── constant/ # 常量类 │ ├── exception/ # 异常类 │ ├── properties/ # 配置属性类 │ ├── result/ # 统一返回结果 │ └── utils/ # 工具类 ├── atp-pojo/ # 实体类和DTO │ ├── dto/ # 数据传输对象 │ └── entity/ # 实体类 ├── atp-server/ # 服务模块 │ ├── config/ # 配置类 │ ├── controller/ # 控制器 │ ├── mapper/ # Mapper接口 │ ├── service/ # 服务接口和实现 │ └── resources/ │ ├── mapper/ # MyBatis XML映射文件 │ └── application.yml # 配置文件 └── sql/ # 数据库脚本 └── atp_database.sql # 数据库初始化脚本 ``` ## 环境配置 ### 数据库配置 1. 创建MySQL数据库 2. 执行 `sql/atp_database.sql` 脚本创建表结构和初始数据 3. 修改 `atp-server/src/main/resources/application.yml` 中的数据库连接信息 ```yaml spring: datasource: druid: url: jdbc:mysql://localhost:3306/atp_platform?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root password: root # 修改为你的数据库密码 ``` ### Redis配置 1. 安装并启动Redis服务(默认端口6379) 2. 如需修改Redis配置,编辑 `atp-server/src/main/resources/application.yml`: ```yaml spring: redis: host: localhost port: 6379 password: # 如果Redis设置了密码,在这里填写 database: 0 timeout: 5000 ``` > 注意:如果Redis未安装,项目仍可正常运行,但缓存功能将不可用。 ## 功能模块 ### 1. 用户管理 - 用户注册 - 用户登录(JWT认证) - 用户信息查询和更新 ### 2. 课程管理 - 课程列表查询 - 课程新增、更新、删除 - 章节管理 ### 3. 题目管理 - 题目分页查询 - 题目新增、更新、删除 - 题目详情查询 ### 4. 代码提交 - 代码提交 - 提交记录查询 - 在线评测(待实现) ### 5. 学习进度 - 学习进度跟踪 - 学习统计 ## 启动步骤 1. **导入数据库** ```sql source sql/atp_database.sql ``` 2. **启动Redis**(可选,但推荐) ```bash # Windows redis-server # Linux/Mac redis-server ``` 3. **修改配置文件** - 修改 `application.yml` 中的数据库连接信息 - 如需修改Redis配置,也在此文件中修改 4. **启动项目** ```bash mvn spring-boot:run ``` 或直接运行 `AlgorithmTeachingPlatformApplication` 主类 5. **访问API文档** - 启动后访问: http://localhost:8080/doc.html ## 默认账号 数据库初始化后,系统包含以下默认账号: - **管理员**: username: `admin`, password: `admin123` - **教师**: username: `teacher`, password: `teacher123` - **学生**: username: `student`, password: `student123` > 注意:实际密码已加密存储,上述为明文密码,登录时使用明文密码即可。 ## API接口 ### 用户相关 - `POST /user/login` - 用户登录 - `POST /user/register` - 用户注册 - `GET /user/info` - 获取用户信息 - `PUT /user/update` - 更新用户信息 ### 课程相关 - `GET /course/list` - 查询所有课程 - `GET /course/{id}` - 根据id查询课程 - `POST /course` - 新增课程 - `PUT /course` - 更新课程 - `DELETE /course/{id}` - 删除课程 ### 题目相关 - `GET /problem/page` - 分页查询题目 - `GET /problem/{id}` - 根据id查询题目 - `POST /problem` - 新增题目 - `PUT /problem` - 更新题目 - `DELETE /problem/{id}` - 删除题目 ### 代码提交相关 - `POST /submission/submit` - 提交代码 - `GET /submission/{id}` - 查询提交记录 ## 开发说明 ### 密码加密 系统使用MD5加密存储用户密码,工具类位于 `atp-common/src/main/java/com/atp/utils/PasswordEncoder.java` ### JWT认证 系统使用JWT进行用户认证,配置位于 `application.yml` 的 `sky.jwt` 节点 ### 分页查询 使用PageHelper进行分页,在Service层调用 `PageHelper.startPage()` 即可 ### Redis缓存使用 项目已集成Redis,可以通过 `RedisUtil` 工具类使用缓存功能: ```java @Autowired private RedisUtil redisUtil; // 设置缓存 redisUtil.set("key", "value", 3600); // 缓存1小时 // 获取缓存 Object value = redisUtil.get("key"); // 删除缓存 redisUtil.del("key"); // Hash操作 redisUtil.hset("hashKey", "field", "value"); Object hashValue = redisUtil.hget("hashKey", "field"); ``` 更多使用方法请参考 `atp-server/src/main/java/com/atp/utils/RedisUtil.java` ## 性能测试 项目已配置支持1000并发用户,包含单点登录和接口限流功能。 ### 快速测试 **使用Python脚本**(推荐): ```bash cd scripts pip install aiohttp python test_concurrent.py ``` **使用Apache Bench**: ```bash cd scripts ./test-concurrent.sh ``` **详细测试指南**: - 快速开始:`docs/快速测试指南.md` - 完整指南:`docs/并发测试指南.md` - JMeter配置:`scripts/jmeter-test-plan.md` ### 性能指标 - **并发支持**:1000用户 - **单点登录**:同一账号只能在一个设备登录 - **接口限流**:防止恶意请求 - **数据库连接池**:100个连接 - **Redis连接池**:200个连接 ## 后续开发建议 1. **代码评测系统**: 集成在线评测系统(如Docker容器化评测) 2. **文件上传**: 完善头像、题目附件上传功能 3. **讨论区**: 实现讨论区和回复功能 4. **学习统计**: 完善学习进度和统计功能 5. **权限控制**: 添加基于角色的权限控制(RBAC) ## 注意事项 1. 确保MySQL版本为8.0+ 2. 确保Java版本为8+ 3. 首次运行前需要执行数据库初始化脚本 4. 修改数据库连接信息后重启项目 ## 许可证 本项目仅供学习使用。