# 数据持久化功能说明 ## 📦 功能概述 现在系统已经实现了**智能数据持久化**功能,无需每次手动保存! ### ✨ 核心特性 1. **自动保存** - 输入 `exit` 退出时自动保存所有查询历史 2. **自动加载** - 启动时自动恢复上次保存的数据 3. **零操作** - 用户无需执行任何额外命令 4. **批量保存** - 退出时一次性保存,不会频繁写文件 ## 🔄 工作流程 ``` 启动程序 ↓ 自动加载历史数据 (data/session_data.json) ↓ 显示缓存统计信息 ↓ 正常使用(查询路线/天气) ↓ 每次查询自动记录到内存缓存 ↓ 输入 exit 退出 ↓ 自动保存所有数据到文件 ``` ## 📁 数据存储位置 - **文件路径**: `data/session_data.json` - **文件格式**: JSON - **包含内容**: - 路线查询记录 - 天气查询记录 ## 💡 使用示例 ### 第一次使用 ```bash # 双击运行 run.bat 欢迎使用数据查询系统! 命令: route, weather, export, import, help, exit 请输入命令: route ... (查询路线) ... 请输入命令: exit 💾 正在保存查询历史... 再见! ``` ### 第二次启动 ```bash # 再次运行 run.bat 欢迎使用数据查询系统! 📦 当前缓存 - 路线: 3条, 天气: 2条 # 之前的数据已自动恢复! ``` ## 🎯 优势对比 ### 之前(手动保存) - ❌ 每次查询都要执行 `export` 命令 - ❌ 需要指定文件名和路径 - ❌ 容易忘记保存 - ❌ 数据分散在多个文件 ### 现在(自动保存) - ✅ 完全自动化,无感知 - ✅ 统一存储在一个文件 - ✅ 重启后数据立即可用 - ✅ 随时可以导出备份 ## 🔧 技术实现 ### 核心组件 1. **DataPersistenceManager.java** - 管理数据的加载和保存 - 维护内存缓存 - 提供数据访问接口 2. **InteractiveCLI.java** - 启动时调用 `loadSavedData()` - 退出时调用 `saveAllData()` 3. **Command 类** (Route/Weather) - 每次查询后自动调用 `addXXXData()` - 数据只存在内存中,不立即写文件 ## 📊 数据结构 ```json { "routes": [...], // 路线列表 "weathers": [...], // 天气列表 "timestamp": 1234567890 // 保存时间戳 } ``` ## ⚠️ 注意事项 1. **数据文件位置**: `data/session_data.json` - 不要手动删除此文件 - 可以手动编辑(JSON格式) 2. **文件大小**: - 随着查询次数增加会变大 - 建议定期清理旧数据(通过重新导出) 3. **兼容性**: - 如果数据结构发生变化,可能无法加载旧数据 - 此时会自动忽略错误并继续运行 ## 🚀 快速开始 1. **编译项目** (首次或代码修改后) ```bash 双击 build.bat ``` 2. **运行程序** ```bash 双击 run.bat ``` 3. **正常使用** - 输入 `route`、`weather` 进行查询 - 输入 `exit` 退出(自动保存) 4. **下次启动** - 直接运行 `run.bat` - 历史数据自动恢复! ## 🎉 总结 现在您只需要: - **正常使用**系统进行查询 - **退出时**输入 `exit` 其他的一切都由系统自动处理!✨