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