# Java课设_算法可视化 **Repository Path**: cl449066/Java ## Basic Information - **Project Name**: Java课设_算法可视化 - **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-12-20 - **Last Updated**: 2025-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 算法可视化工具 一个功能完整的算法可视化学习平台,基于Java Swing和SQLite构建,支持算法动画演示、学习记录追踪、配置管理和社区分享等功能。 ## 📋 目录 - [项目简介](#项目简介) - [技术栈](#技术栈) - [功能特性](#功能特性) - [项目结构](#项目结构) - [快速开始](#快速开始) - [使用指南](#使用指南) - [开发指南](#开发指南) - [许可证](#许可证) ## 🎯 项目简介 算法可视化工具是一个交互式的算法学习平台,旨在帮助用户通过可视化动画理解算法的执行过程。项目采用MVC架构设计,集成了用户管理、算法可视化、学习统计、配置分享等完整功能。 ### 核心功能 - **算法可视化**:支持多种排序和搜索算法的动画演示 - **用户系统**:完整的用户注册、登录、会话管理 - **学习追踪**:自动记录每次算法执行,生成学习报告 - **配置管理**:保存和加载算法配置,支持JSON导入导出 - **社区分享**:配置分享码功能,支持热门配置浏览 - **性能分析**:算法性能基准测试和对比分析 ## 🛠 技术栈 - **Java 17**: 编程语言 - **Maven 3.6+**: 项目构建和依赖管理 - **Swing**: GUI框架(轻量级桌面应用) - **SQLite**: 嵌入式数据库(无需安装) - **MVC架构**: 模型-视图-控制器设计模式 - **BCrypt**: 密码加密(jbcrypt 0.4) - **Gson**: JSON序列化/反序列化(2.10.1) ## ✨ 功能特性 ### 1. 算法可视化 - ✅ 支持冒泡排序、快速排序等算法 - ✅ 柱状图可视化展示 - ✅ 实时高亮显示比较和交换操作 - ✅ 可调节动画速度(1-10级) - ✅ 步骤回放功能 ### 2. 用户管理 - ✅ 用户注册和登录 - ✅ 密码BCrypt加密存储 - ✅ "记住我"功能 - ✅ 会话管理(ThreadLocal) - ✅ 用户状态显示 ### 3. 学习记录 - ✅ 自动记录每次算法执行 - ✅ 统计比较次数、交换次数、执行时间 - ✅ 学习报告生成 - ✅ 掌握程度评估 - ✅ 练习次数追踪 ### 4. 配置管理 - ✅ 保存算法配置(算法类型、数据规模、速度等) - ✅ 配置导入导出(JSON格式) - ✅ 配置分享码(Base64编码) - ✅ 热门配置浏览 - ✅ 配置点赞和分享统计 ### 5. 性能分析 - ✅ 算法性能基准测试 - ✅ 多算法性能对比 - ✅ 性能图表展示 - ✅ 执行时间和内存使用统计 ## 📁 项目结构 ``` algorithm-visualization/ ├── pom.xml # Maven配置文件 ├── README.md # 项目说明文档 ├── .gitignore # Git忽略文件配置 ├── docs/ # 文档目录 │ ├── API_DOC.md # API文档 │ ├── USER_GUIDE.md # 用户手册 │ └── DATABASE_DESIGN.md # 数据库设计文档 └── src/ ├── main/ │ ├── java/ │ │ └── com/algorithm/visualization/ │ │ ├── main/ │ │ │ └── Main.java # 主启动类 │ │ ├── model/ # 数据模型 │ │ │ ├── User.java │ │ │ ├── Algorithm.java │ │ │ ├── UserConfig.java │ │ │ ├── LearningRecord.java │ │ │ └── ... │ │ ├── view/ # 视图层 │ │ │ ├── MainView.java # 主窗口 │ │ │ ├── ControlPanel.java # 控制面板 │ │ │ ├── VisualizationPanel.java # 可视化面板 │ │ │ ├── InfoPanel.java # 信息面板 │ │ │ ├── LoginDialog.java # 登录对话框 │ │ │ └── ... │ │ ├── controller/ # 控制器层 │ │ │ └── MainController.java # 主控制器 │ │ ├── dao/ # 数据访问层 │ │ │ ├── UserDAO.java │ │ │ ├── AlgorithmDAO.java │ │ │ ├── ConfigDAO.java │ │ │ └── ... │ │ ├── algorithm/ # 算法实现 │ │ │ ├── Algorithm.java # 算法基类 │ │ │ ├── AlgorithmStep.java # 算法步骤 │ │ │ ├── BubbleSort.java # 冒泡排序 │ │ │ └── QuickSort.java # 快速排序 │ │ └── util/ # 工具类 │ │ ├── DBConnection.java # 数据库连接 │ │ ├── DatabaseInitializer.java # 数据库初始化 │ │ ├── ConfigManager.java # 配置管理 │ │ ├── SessionManager.java # 会话管理 │ │ └── ... │ └── resources/ │ └── database/ │ └── schema.sql # 数据库表结构 └── test/ └── java/ # 测试代码 ``` ## 🚀 快速开始 ### 前置要求 - **JDK 17** 或更高版本 - **Maven 3.6** 或更高版本 ### 安装步骤 1. **克隆项目** ```bash git clone cd algorithm-visualization ``` 2. **编译项目** ```bash mvn clean compile ``` 3. **运行项目** ```bash mvn exec:java -Dexec.mainClass="com.algorithm.visualization.main.Main" ``` 或者使用IDE(推荐): - 使用IntelliJ IDEA或Eclipse导入Maven项目 - 配置JDK 17 - 运行 `Main.java` ### 打包运行 ```bash # 打包 mvn clean package # 运行JAR文件 java -jar target/algorithm-visualization-1.0.0.jar ``` ## 📖 使用指南 ### 首次使用 1. **启动应用**:运行 `Main.java` 或执行Maven命令 2. **注册账号**:首次使用需要注册新用户 3. **登录系统**:使用注册的用户名和密码登录 4. **开始使用**:登录后进入主界面 ### 基本操作 #### 执行算法可视化 1. 在左侧控制面板选择算法(如"冒泡排序") 2. 设置数据规模(5-100) 3. 点击"执行算法"按钮 4. 算法执行完成后,点击可视化面板开始动画 5. 使用速度滑块调节动画速度 #### 保存和加载配置 1. 设置好算法参数后,点击"保存配置" 2. 输入配置名称,保存 3. 在"加载配置"下拉菜单中选择已保存的配置 4. 点击"加载配置"应用配置 #### 查看学习报告 1. 点击"学习报告"按钮 2. 查看练习次数、成功率、最佳时间等统计 3. 查看详细的学习记录列表 #### 分享配置 1. 保存配置后,点击"分享配置" 2. 生成分享码,可以复制或导出到文件 3. 其他用户可以通过"导入分享码"使用你的配置 详细使用说明请参考 [用户手册](docs/USER_GUIDE.md) ## 🔧 开发指南 ### 添加新算法 1. 在 `algorithm` 包中创建新类,继承 `Algorithm` 2. 实现 `execute(int[] data)` 方法 3. 使用 `compare()` 和 `swap()` 方法记录步骤 4. 在 `AlgorithmVisualizer.createAlgorithm()` 中注册新算法 示例: ```java public class MySort extends Algorithm { public MySort() { super("我的排序算法"); } @Override public int[] execute(int[] data) { this.data = data.clone(); // 实现算法逻辑 // 使用 compare() 和 swap() 自动记录步骤 return this.data; } } ``` ### 数据库操作 - 所有数据库操作通过DAO类进行 - 使用 `DBConnection.getConnection()` 获取连接 - 数据库文件位置:`~/.algorithm-visualization/algorithm_visualization.db` ### MVC架构说明 - **Model**: `model` 包中的实体类 - **View**: `view` 包中的Swing组件 - **Controller**: `controller` 包中的控制器类 详细API文档请参考 [API文档](docs/API_DOC.md) ## 📊 数据库 项目使用SQLite嵌入式数据库,数据库文件自动创建在用户目录下: - Windows: `%USERPROFILE%\.algorithm-visualization\algorithm_visualization.db` - Linux/Mac: `~/.algorithm-visualization/algorithm_visualization.db` ### 数据库表 项目包含9张表: 1. `users` - 用户表 2. `algorithms` - 算法表 3. `datasets` - 数据集表 4. `practice_records` - 练习记录表 5. `performance_stats` - 性能统计表 6. `user_configs` - 用户配置表 7. `learning_records` - 学习记录表 8. `performance_benchmarks` - 性能基准表 9. `shared_configs` - 共享配置表 详细数据库设计请参考 [数据库设计文档](docs/DATABASE_DESIGN.md) ## 🧪 测试 ```bash # 运行所有测试 mvn test # 运行特定测试类 mvn test -Dtest=AppTest ``` ## 📝 版本历史 ### v1.0.0 (当前版本) - ✅ 完整的用户管理系统 - ✅ 算法可视化框架 - ✅ 学习记录和统计 - ✅ 配置管理和分享 - ✅ 性能分析功能 ## 🤝 贡献 欢迎提交Issue和Pull Request! ## 📄 许可证 本项目仅供学习和研究使用。 ## 📞 联系方式 如有问题或建议,请通过Issue反馈。 --- **注意**:本项目需要Java 17或更高版本。如果遇到Java版本问题,请参考 `运行说明.md` 文件。