You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

3.1 KiB

数据持久化功能说明

📦 功能概述

现在系统已经实现了智能数据持久化功能,无需每次手动保存!

核心特性

  1. 自动保存 - 输入 exit 退出时自动保存所有查询历史
  2. 自动加载 - 启动时自动恢复上次保存的数据
  3. 零操作 - 用户无需执行任何额外命令
  4. 批量保存 - 退出时一次性保存,不会频繁写文件

🔄 工作流程

启动程序
   ↓
自动加载历史数据 (data/session_data.json)
   ↓
显示缓存统计信息
   ↓
正常使用(查询路线/天气)
   ↓
每次查询自动记录到内存缓存
   ↓
输入 exit 退出
   ↓
自动保存所有数据到文件

📁 数据存储位置

  • 文件路径: data/session_data.json
  • 文件格式: JSON
  • 包含内容:
    • 路线查询记录
    • 天气查询记录

💡 使用示例

第一次使用

# 双击运行 run.bat
欢迎使用数据查询系统!
命令: route, weather, export, import, help, exit

请输入命令: route  
... (查询路线) ...

请输入命令: exit

💾 正在保存查询历史...
再见!

第二次启动

# 再次运行 run.bat
欢迎使用数据查询系统!

📦 当前缓存 - 路线: 3条, 天气: 2条

# 之前的数据已自动恢复!

🎯 优势对比

之前(手动保存)

  • 每次查询都要执行 export 命令
  • 需要指定文件名和路径
  • 容易忘记保存
  • 数据分散在多个文件

现在(自动保存)

  • 完全自动化,无感知
  • 统一存储在一个文件
  • 重启后数据立即可用
  • 随时可以导出备份

🔧 技术实现

核心组件

  1. DataPersistenceManager.java

    • 管理数据的加载和保存
    • 维护内存缓存
    • 提供数据访问接口
  2. InteractiveCLI.java

    • 启动时调用 loadSavedData()
    • 退出时调用 saveAllData()
  3. Command 类 (Route/Weather)

    • 每次查询后自动调用 addXXXData()
    • 数据只存在内存中,不立即写文件

📊 数据结构

{
  "routes": [...],      // 路线列表
  "weathers": [...],    // 天气列表
  "timestamp": 1234567890  // 保存时间戳
}

⚠️ 注意事项

  1. 数据文件位置: data/session_data.json

    • 不要手动删除此文件
    • 可以手动编辑(JSON格式)
  2. 文件大小:

    • 随着查询次数增加会变大
    • 建议定期清理旧数据(通过重新导出)
  3. 兼容性:

    • 如果数据结构发生变化,可能无法加载旧数据
    • 此时会自动忽略错误并继续运行

🚀 快速开始

  1. 编译项目 (首次或代码修改后)

    双击 build.bat
    
  2. 运行程序

    双击 run.bat
    
  3. 正常使用

    • 输入 routeweather 进行查询
    • 输入 exit 退出(自动保存)
  4. 下次启动

    • 直接运行 run.bat
    • 历史数据自动恢复!

🎉 总结

现在您只需要:

  • 正常使用系统进行查询
  • 退出时输入 exit

其他的一切都由系统自动处理!