基于 Qt 与 C++ 实现的智能九键输入模拟系统,使用字典树(Trie)支持词库构建、九键映射查询、正则搜索、模糊匹配、词频管理等功能。支持图形化界面操作和 JSON 词库导入导出。
| 功能名称 | 描述说明 |
|---|---|
| 添加单词 | 输入字符串与频率,插入至词库 |
| 删除单词 | 从字典树中移除目标字符串 |
| 修改单词频率 | 更新目标字符串的频率值 |
| 九键查询(最佳匹配) | 输入数字(如 3268),返回最佳匹配词 |
| 九键查询(详细路径) | 显示每层数字的路径前缀拓展 |
| 前缀匹配 | 显示所有以某字符串开头的词汇 |
| 正则搜索 | 支持 ? 匹配任意一字符,* 匹配任意多个字符 |
| 模糊匹配 | 基于数字映射,编辑距离≤1 的词推荐 |
| 查询所有词汇 | 遍历并展示当前词库全部单词与次数 |
| 导入导出词库 | 支持 JSON 词库文件保存与载入 |
SmartNineKeyInput/
├── main.cpp
├── mainwindow.h / .cpp / .ui
├── trie.h / trie.cpp
├── SmartNineKeyInput.pro
└── README.md
在界面中输入:
- 字符串:如
ecnu - 次数:如
55 - 点击“添加”
输入九键数字(如 3268)点击“九键查询”:
3 e
32 ec
326 ecn
3268 ecnu
- 点击“导入词库”:选择
.json文件加载历史词库; - 点击“导出词库”:将当前字典树保存为 JSON。
{
"ecnu": 55,
"echo": 12,
"apple": 33
}struct TrieNode {
QMap<QChar, TrieNode*> children;
int freq = 0;
int prefixFreq = 0;
bool isEnd = false;
};- Qt 6.9.0
- C++11 或更高版本
- Qt Creator 16.0.2
| 功能 | 输入 | 输出 |
|---|---|---|
| 添加词汇 | ecnu, 55 | 添加成功 |
| 删除词汇 | ecnu | 删除成功 |
| 九键查询 | 3268 | ecnu(或 echo 等) |
| 正则匹配 | e*n? | echo, ecnu 等 |
| 模糊匹配 | 3269 | ecnu 等(与 3268 相近) |
| 导入词库 | JSON 文件 | 词库导入成功 |
- 支持中文拼音模式;
- 支持分词与自动补全;
- 导入大规模词库优化性能;
- 多线程正则搜索;
- 优化界面交互、如九键软键盘;
张潇瀚 10245102417 · C++ 项目实践