# cpp-oj-vibecoding-teach **Repository Path**: HGtz2222/cpp-oj-vibecoding-teach ## Basic Information - **Project Name**: cpp-oj-vibecoding-teach - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-04-20 - **Last Updated**: 2026-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C++ 在线评测系统 一个轻量级的 C++ 编程教育在线评测系统,支持题目管理、代码执行和结果验证。 ## 功能特性 - **题目管理**:创建、查看题目,支持难度等级 - **代码执行**:编译并运行 C++ 代码,支持超时和内存限制 - **测试用例验证**:比对程序输出与预期结果 - **用户认证**:注册、登录、会话管理 - **管理后台**:管理员可创建和删除题目 - **多种结果状态**:AC(通过)、WA(答案错误)、TLE(超时)、RE(运行时错误)、CE(编译错误) ## 技术栈 | 层级 | 技术 | |------|------| | 前端 | HTML、CSS、JavaScript(原生) | | 后端 | C++17、cpp-httplib | | 数据库 | MySQL 8.0 | | 认证 | Session/Cookie、bcrypt | ## 快速开始 ### 1. 安装依赖 ```bash sudo apt update && sudo apt install -y \ cmake g++ make \ mysql-server \ libmysqlclient-dev \ libyaml-cpp-dev \ libbotan-2-dev ``` ### 2. 数据库配置 ```bash # 启动 MySQL 服务 sudo systemctl start mysql # 创建数据库用户(将 'your_username' 替换为你的 Linux 用户名) sudo mysql -e "CREATE USER IF NOT EXISTS 'your_username'@'localhost' IDENTIFIED WITH auth_socket; GRANT ALL ON *.* TO 'your_username'@'localhost';" # 初始化数据库 mysql -u your_username < database/init.sql ``` ### 3. 编译构建 ```bash mkdir build && cd build cmake .. make -j$(nproc) ``` ### 4. 运行服务 ```bash # 从 build 目录运行 ./oj_server # 或从项目根目录运行 ./build/oj_server ``` 服务启动后访问 `http://localhost:8080` ## 默认端口 | 服务 | 端口 | |------|------| | HTTP 服务 | 8080 | | MySQL | 3306 | ## 创建管理员账号 首次启动服务后,使用管理员创建工具: ```bash ./build/create_admin_user ``` ## 项目结构 ``` cpp-oj-vibecoding-teach/ ├── config/config.yaml # 服务配置 ├── database/init.sql # 数据库初始化脚本 ├── src/ # 后端源码 │ ├── main.cc # 程序入口 │ ├── server/ # HTTP 服务器和路由 │ ├── handler/ # API 处理器 │ ├── service/ # 业务逻辑 │ ├── model/ # 数据模型 │ ├── db/ # 数据库连接池 │ └── utils/ # 工具类(日志、配置) ├── public/ # 前端文件 │ ├── index.html # 落地页 │ ├── login.html # 登录页 │ ├── register.html # 注册页 │ ├── problem_list.html # 题目列表页 │ ├── problem.html # 题目详情页和代码编辑器 │ ├── admin.html # 管理后台 │ ├── css/style.css # 样式文件 │ └── js/ # 前端脚本 └── tools/ # 管理工具 ``` ## API 文档 详细 API 说明请参考 [API.md](API.md)。 ## 配置说明 编辑 `config/config.yaml`: ```yaml server: host: 0.0.0.0 port: 8080 thread_pool_size: 4 database: host: localhost port: 3306 username: your_username password: "" database: oj_system max_connections: 10 execution: timeout_seconds: 5 max_memory_mb: 256 compile_command: g++ -std=c++17 -O2 ``` ## 测试 运行单元测试: ```bash cd build ctest --output-on-failure ``` 运行单个测试: ```bash ./build/config_test ./build/logger_test ./build/connection_pool_test ``` ## 工具说明 | 工具 | 用途 | |------|------| | `create_admin_user` | 创建管理员用户 | | `db_reset_tool` | 重置数据库 | ## 许可证 MIT