# 生物学平台完整 **Repository Path**: happy-code-farmer1/complete-biological-platform ## Basic Information - **Project Name**: 生物学平台完整 - **Description**: 生物学学习平台更好学习哈哈哈哈哈 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-04 - **Last Updated**: 2026-01-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BioLearn - 生物学在线学习平台 ## 🎯 项目信息 - **组号**:11组 - **学生**:许袁 202530495223 - **学生**:苏航 202530495218 - **课程**:软件工程综合实践 - **技术栈**:Vue 3 (前端) + Flask (后端) + MySQL (数据库) - **项目周期**:2025.11 - 2026.01 (示例时间) ## 🚀 快速启动 (评审老师请看这里) 本项目采用前后端分离架构,请按照以下步骤配置环境并启动服务。 ### 前提条件 - **Node.js**: v16+ - **Python**: v3.8+ - **MySQL**: v5.7+ ### 步骤一:数据库配置 1. 登录 MySQL,创建一个名为 `biolearn_db` 的数据库。 2. 执行以下 SQL 语句初始化表结构(或导入项目提供的 SQL 脚本): SQL ```sql CREATE DATABASE IF NOT EXISTS biolearn_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE biolearn_db; -- 用户表 CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(80) UNIQUE NOT NULL, password VARCHAR(200) NOT NULL, avatar VARCHAR(255), total_score INT DEFAULT 0, join_date DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 论坛帖子表 CREATE TABLE IF NOT EXISTS forum_posts ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, title VARCHAR(200) NOT NULL, content TEXT NOT NULL, type VARCHAR(20) DEFAULT 'question', tags VARCHAR(200), views INT DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ); -- 论坛评论表 CREATE TABLE IF NOT EXISTS forum_comments ( id INT AUTO_INCREMENT PRIMARY KEY, post_id INT NOT NULL, user_id INT NOT NULL, content TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (post_id) REFERENCES forum_posts(id) ON DELETE CASCADE, FOREIGN KEY (user_id) REFERENCES users(id) ); ``` ### 步骤二:后端启动 (Backend) Bash ``` # 1. 进入后端目录 cd backend #激活虚拟环境 (推荐) # Windows: venv\Scripts\activate # Mac/Linux: source venv/bin/activate # 3. 安装依赖 pip install -r requirements.txt # 4. 启动服务 python run.py # 服务将运行在: http://localhost:5000 ``` ### 步骤三:前端启动 (Frontend) Bash ``` # 1. 进入前端目录 cd frontend # 2. 安装依赖 npm install # 3. 启动开发服务器 npm run dev # 访问地址: http://localhost:5173 (或终端显示的端口) ``` 详细的手动部署说明请参考:[docs/部署手册.md](https://www.google.com/search?q=docs/部署手册.md) ## 📁 项目结构 Plaintext ``` project-root/ ├── backend/ # 后端项目 (Flask) │ ├── app/ │ │ ├── __init__.py # 应用工厂与蓝图注册 │ │ ├── routes.py # API 路由接口 (核心业务逻辑) │ │ ├── models.py # WTForms 表单验证模型 │ │ ├── utils.py # 工具函数 (DB连接, 图像算法) │ │ └── static/uploads/ # 用户上传文件存储目录 │ ├── config.py # 配置文件 (DB连接, 密钥) │ ├── run.py # 启动入口 │ └── requirements.txt # Python 依赖列表 │ ├── frontend/ # 前端项目 (Vue 3 + Vite) │ ├── src/ │ │ ├── components/ # 公共组件 (地图, 导航, 论坛组件) │ │ ├── views/ # 页面视图 (Home, Login, Species, Experiments) │ │ ├── store/ # Pinia 状态管理 (User, Forum, Knowledge) │ │ ├── router/ # 路由配置 (含登录拦截守卫) │ │ └── assets/ # 静态资源 (CSS, Images) │ ├── package.json # Node 依赖配置 │ └── vite.config.js # Vite 配置 (含跨域代理设置) │ └── README.md # 项目说明文档 ``` ## 🛠 技术栈详细说明 ### 前端 (Frontend) - **核心框架**:Vue.js 3 (Composition API / Script Setup) - **构建工具**:Vite (高性能构建与热重载) - **状态管理**:Pinia (模块化管理用户会话 `userStore`、论坛数据 `forumStore`) - **路由管理**:Vue Router 4 (实现 SPA 页面跳转与路由守卫) - **数据可视化**:ECharts (用于物种分布地图展示) - **样式方案**:原生 CSS + Scoped 样式隔离 ### 后端 (Backend) - **Web框架**:Flask (轻量级,使用 Blueprint 组织模块) - **数据库交互**:PyMySQL (原生 SQL 模式,保证高性能与灵活性) - **表单验证**:Flask-WTF (处理登录注册、发帖内容的校验) - **图像处理**:Pillow (PIL) (用于虚拟显微镜实验的图像合成与模糊处理) - **安全机制**:Werkzeug Security (PBKDF2 密码哈希加密) ### 数据库 (MySQL) - **版本**:MySQL 5.7+ - **核心表设计**: - `users`: 用户基础信息、积分、头像。 - `forum_posts`: 论坛帖子、标签、类型。 - `forum_comments`: 帖子评论、关联用户。 ## ✨ 核心功能模块 1. **🧬 虚拟实验室 (Virtual Lab)** - **显微镜仿真**:后端实时生成图像切片,模拟物镜切换(10x/40x)与粗细准焦螺旋调节(高斯模糊算法)。 - **交互模拟**:集成 PhET 仿真,提供基因表达、自然选择等生物学模拟实验。 2. **🌏 生物多样性 (Biodiversity)** - **分布地图**:基于 ECharts 的交互式地图,展示全球珍稀物种分布热点。 - **热点词云**:动态展示当前热门生物分类标签。 3. **💬 学术论坛 (Community)** - **知识交流**:支持 Markdown 格式发帖(提问/分享),多标签分类。 - **互动评论**:用户可对帖子进行实时评论与讨论,增加社区活跃度。 4. **🎮 游戏化学习 (Gamification)** - **知识闯关**:趣味生物知识问答,答对即可获得积分。 - **成长体系**:积分与用户等级挂钩,激励用户持续学习。 ## 📡 API 接口概览 **基础 URL**:`http://localhost:5000/api` | **模块** | **方法** | **路径** | **描述** | | -------- | -------- | ------------------------ | ---------------------------- | | **认证** | POST | `/register` | 用户注册 | | **认证** | POST | `/login` | 用户登录 (JWT/Session) | | **用户** | POST | `/user/update` | 更新个人资料 (头像/密码) | | **论坛** | GET | `/forum/posts` | 获取帖子列表 (支持分页/筛选) | | **论坛** | POST | `/forum/posts` | 发布新帖子 | | **实验** | POST | `/simulation/microscope` | 获取显微镜视野图像流 | 详细接口定义请参考:[docs/API接口文档.md](https://www.google.com/search?q=docs/API接口文档.md) ## 🧪 测试与质量保证 ### 自动化测试 本项目包含基于 Selenium 的自动化测试脚本 `test_website.py`,覆盖以下核心场景: 1. **服务健康检查**:验证首页与静态资源加载。 2. **路由导航测试**:遍历历史、物种、游戏等主要模块。 3. **登录功能测试**:检查登录页 UI 元素完整性。 4. **安全守卫测试**:验证未登录状态下访问 `/profile` 自动跳转至登录页。 **运行测试**: Bash ``` # 确保前后端服务已启动 python test_website.py ```