# 濒危动物信息爬虫系统 - 功能目标与预期效果 --- ## 一、项目目标 ### 1.1 功能目标 **项目名称**:濒危动物信息爬虫系统 **项目定位**:基于Java的CLI爬虫应用,实现濒危动物信息的多数据源爬取、数据管理和可视化展示 | 功能模块 | 功能名称 | 描述 | 优先级 | |---------|---------|------|--------| | **爬虫核心** | 多数据源爬取 | 支持从中国红色名录、WWF、IUCN三个数据源爬取濒危动物信息 | **高** | | **爬虫核心** | 策略模式切换 | 通过策略模式实现数据源的动态切换,无需修改代码即可扩展新数据源 | **高** | | **命令交互** | CLI命令行界面 | 提供交互式命令行界面,支持多种操作命令 | **高** | | **命令交互** | Command模式封装 | 将各类操作封装为独立命令,支持命令扩展和管理 | **高** | | **数据管理** | 数据展示 | 以列表形式展示爬取到的濒危动物数据 | **高** | | **数据管理** | 数据持久化 | 将爬取的数据保存到本地文件,支持文本格式输出 | **高** | | **可视化** | 保护状态分布饼图 | 生成展示各保护等级动物数量分布的饼图 | **中** | | **可视化** | 种群数量柱状图 | 生成展示各动物种群数量的柱状图 | **中** | | **异常处理** | 完整异常体系 | 定义爬虫相关的各类异常,提供清晰的错误提示 | **高** | ### 1.2 预期效果 #### 1.2.1 功能效果 | 序号 | 效果描述 | 实现方式 | |-----|---------|---------| | 1 | 用户通过命令行输入 `crawl` 命令,系统自动从当前数据源爬取濒危动物数据 | CLI命令 + 策略模式 | | 2 | 用户输入 `set china`/`set wwf`/`set iucn` 命令,可切换不同数据源 | 策略模式动态切换 | | 3 | 用户输入 `list` 命令,系统以格式化表格展示动物信息(名称、学名、类别、保护状态、栖息地、种群数量) | Controller + View协作 | | 4 | 用户输入 `save <文件名>` 命令,系统将数据保存为文本文件 | 文件IO操作 | | 5 | 用户输入 `visualize` 命令,系统自动生成两个可视化图表(PNG格式) | JFreeChart图表生成 | | 6 | 系统对无效命令、网络异常、文件操作异常等场景给出清晰的错误提示 | 自定义异常体系 | #### 1.2.2 输出物 | 输出类型 | 文件名 | 内容说明 | |---------|--------|---------| | **数据文件** | `animals.txt`(用户自定义) | 包含动物名称、学名、类别、保护状态、栖息地、描述、种群数量的文本报告 | | **图表文件** | `status_distribution.png` | 濒危动物保护状态分布饼图 | | **图表文件** | `population_chart.png` | 濒危动物种群数量柱状图 | | **可执行文件** | `AnimalCrawler-1.0-SNAPSHOT-jar-with-dependencies.jar` | 包含所有依赖的可执行JAR包 | #### 1.2.3 技术指标 | 指标 | 预期值 | 说明 | |-----|-------|------| | 支持数据源数量 | ≥ 3个 | 中国红色名录、WWF、IUCN | | 单次爬取数据量 | ≥ 5条/数据源 | 每个数据源至少爬取5条动物记录 | | 图表分辨率 | 800×600/1000×600 | 饼图800×600,柱状图1000×600 | | 命令响应时间 | ≤ 1秒 | 除爬取操作外的命令响应 | | 异常捕获率 | 100% | 所有可预见异常均有捕获和提示 | #### 1.2.4 用户体验 | 体验点 | 预期效果 | |-------|---------| | **易用性** | 提供 `help` 命令查看所有可用命令,提供 `sources` 命令查看可用数据源 | | **交互友好** | 命令输入后立即反馈执行结果,错误信息清晰易懂 | | **信息展示** | 数据列表格式化展示,便于阅读和理解 | | **扩展性** | 支持通过添加新策略类扩展数据源,无需修改核心代码 | --- ## 二、功能用例 ### 2.1 典型使用流程 ``` 用户启动程序 → 查看帮助信息 → 选择数据源 → 爬取数据 → 查看数据 → 保存数据 → 生成可视化图表 → 退出程序 ``` ### 2.2 命令列表 | 命令 | 语法 | 功能说明 | |-----|------|---------| | `help` | `help` | 显示所有可用命令及说明 | | `sources` | `sources` | 显示所有可用数据源列表 | | `set` | `set <数据源>` | 切换数据源(china/wwf/iucn) | | `crawl` | `crawl` | 从当前数据源爬取数据 | | `list` | `list` | 显示已爬取的动物数据列表 | | `save` | `save <文件名>` | 将数据保存到指定文件 | | `visualize` | `visualize` | 生成可视化图表 | | `exit` | `exit` | 退出程序 | --- ## 三、架构设计目标 ### 3.1 设计模式应用 | 设计模式 | 应用位置 | 目的 | |---------|---------|------| | **MVC** | Controller/View/Model分离 | 实现关注点分离,提高代码可维护性 | | **策略模式** | CrawlerStrategy接口及实现类 | 封装不同数据源的爬取逻辑,支持动态切换 | | **Command模式** | Command接口及实现类 | 封装用户操作,支持命令扩展和撤销(预留) | | **异常体系** | CrawlerException及子类 | 统一异常处理,提供清晰的错误分类 | ### 3.2 代码质量目标 - **可读性**:代码结构清晰,命名规范,关键位置有注释说明 - **可扩展性**:通过接口定义实现松耦合,便于添加新功能 - **健壮性**:完善的异常处理,确保程序稳定运行 - **可测试性**:模块化设计,便于单元测试和集成测试 --- ## 四、运行环境要求 | 环境 | 要求 | |-----|------| | JDK版本 | ≥ 11 | | Maven版本 | ≥ 3.6.0 | | 操作系统 | Windows/Linux/macOS | | 网络要求 | 爬取真实数据源时需联网 |