Skip to content

Xhlging/C-project_SmartNineKeyInput

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

📱 智能九键输入系统

基于 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。

📦 JSON 文件格式

{
  "ecnu": 55,
  "echo": 12,
  "apple": 33
}

🧠 核心数据结构

TrieNode 节点结构

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++ 项目实践

About

c++暑期实践课课程项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors