05.详细设计_基于windows下的QT字典设计与实现_第1页
05.详细设计_基于windows下的QT字典设计与实现_第2页
05.详细设计_基于windows下的QT字典设计与实现_第3页
05.详细设计_基于windows下的QT字典设计与实现_第4页
05.详细设计_基于windows下的QT字典设计与实现_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1基于windows下的QT字典设计与实现详细设计总页数 38 正文 34 附录 0 生效日期 2014.3.17南昌航空大学东软班 详细设计报告 版本:1.1.02编制 批准南昌航空大学东软班 详细设计报告 版本:1.1.03修 改 履 历修改编号 日期 修改人 版本号 修改内容1 VER1.0 初始做成2 VER1.0 内容细化3 VER1.1 Spider 类通讯模块重写南昌航空大学东软班 详细设计报告 版本:1.1.04目 录1 文档概述 .51.1 文档目的和范围 .51.2 术语/缩略语 .51.3 参考文档 .52 处理 .62.1 模块数据结构定义 .62.1.1 全局变量定义及宏定义 . 服务器端 . 客户端 .72.2 模块功能实现 .72.2.1 服务器 . 通讯模块 ..1 Communication..2 SearchSpider . 数据库模块 ..1 DiskIO..2 Sqlite3Helper . 单词录入模块 ..1 Net..2 TreeNet ..3 Node..4 LocalNode.2 搜索模块 .2.1 Net;.2.2 TreeNet; .2.3 SearchSpider; .2 Web 模块 .2.1 PythonInitialized.27南昌航空大学东软班 详细设计报告 版本:1.1.0.2 PythonFunction.2 其他类 .2.1 FileHelper .282.2.2 客户端 .30 通讯模块 .30.1 Communication.30.2 JSONPack .3 UI 模块 .3.1 mainWindow.3.2 DetailShowElement .3.3 EnterLineEditor.3.4 SearchButton.3.5 ShowListElement.3 语音模块 .3.1 QtSpeech.38南昌航空大学东软班 详细设计报告 版本:1.1.061 文档概述1.1 文档目的和范围此文档是对 linpop 图形界面模块的详细设计描述,主要是描述了本模块与其它模块的接口函数和内部接口函数以及内部函数的定义、流程图和构成图以及测试项目的记述。1.2 术语 /缩略语序号 术语/缩略语 说明1 Sqlite3 一个轻量级数据库2 Sql Server 微软的数据库3 HTTP 超文本传输协议4 SOCKET 网络通讯套接字5 UDP 用户数据报协议6 蜘蛛(Spider) 在服务器上,相当于一个客户端处理进程8 网 索引表7 网节点 与索引表节点同义词,表示组织在一起的索引表数据结构的逻辑节点1.3 参考文档序号 文档名 作者 时间 版本1 开题报告 甘泽 2013.12.5 VER1.02 需求分析 甘泽 2013.12.18 VER1.03 概要设计 甘泽 2014.1.2 VER1.03 概要设计 甘泽 2014.1.2 VER1.1南昌航空大学东软班 详细设计报告 版本:1.1.072 处理2.1 模块数据结构定义2.1.1 全局变量定义及宏定义 服务器端类型 名称 功能Static std:map root 负责存储所有所索引表的根节点static boost:thread_group ioPool IO 线程池宏名 宏功能FREETIMELIMIT 100000 允许一个蜘蛛的空闲(客户端无响应)时间,单位(秒)RESET(x) do while (x 0) -x; while (0) 计数器清零DESTROY(x) do while(x iosRunThre 监听服务运行进程Privateboost:asio:ip:tcp:acceptor acceptor 监听者Privatestd:list spiderPool 蜘蛛池变量Privateboost:thread spiderPoolRegulatThread蜘蛛池管理进程权限 函数名函数 PublicCommunication(unsigned int port)南昌航空大学东软班 详细设计报告 版本:1.1.09PublicCommunication()Privateboost:shared_ptr CreateNewSpiderPool(const boost:shared_ptr &net)Privatevoid RemoveLazeSpider()Privatevoid StartAccept()Privatevoid ContinueAccept(const boost:system:error_code &ec, boost:shared_ptr spd);函数名 Communication功能概要 构造函数,构造通讯对象记述形式 Communication(unsigned int port)类型 名称 说明参数 unsigned int port 监听的端口号函数名 CreateNewSpiderPool功能概要 创建新的客户端通讯对象记述形式 boost:shared_ptr CreateNewSpiderPool(const boost:shared_ptr &net)类型 名称 说明参数const boost:shared_ptr & net 传入客户端搜索蜘蛛开始查询的节点类型 值 说明返回值 boost:shared_ptr 返回指向新创建的蜘蛛的指针函数名 RemoveLazeSpider功能概要 负责时刻监听蜘蛛池(spiderPool),当有客户端超过一定时间没有任何通讯的时候,删除与该客户端通讯的蜘蛛并销毁客户端的缓存记录记述形式 void RemoveLazeSpider()流程图南昌航空大学东软班 详细设计报告 版本:1.1.010迭代器是否越界蜘蛛池当前代器 i t r设置中断点是 否睡眠一秒迭代器所指向的蜘蛛是否超时是删除蜘蛛 I t r + +否I t r判断中断信号结束是否迭代器所指向蜘蛛空闲时间加 1开始设置 I t r 为蜘蛛池的首迭代器函数名 StartAccept功能概要 开始监听(创建蜘蛛异步等待客户端连接)记述形式 void StartAccept()函数名 ContinueAccept功能概要 继续监听(设置蜘蛛与客户端开始建立连接,并继续调用 StartAccept 开始监听)南昌航空大学东软班 详细设计报告 版本:1.1.011记述形式 void ContinueAccept(const boost:system:error_code &ec, boost:shared_ptr spd);类型 名称 说明const boost:system:error_code &ec 连接错误信息参数boost:shared_ptr spd 客户端所分配的蜘蛛指针.2SearchSpider类名 SearchSpider文件名 SearchSpider.h/SearchSpider.cpp功能概要 接收解析客户端请求并反馈服务器结果属性权限 类型 名称 简介Private mutable boost:detail:atomic_count freeTime 蜘蛛停止通讯的时间Private boost:shared_ptr runThread 运行线程Private boost:asio:ip:tcp:socket sock 负责的通讯 socketPrivate const boost:shared_ptr net 属于该蜘蛛的搜索网Private td:list searchRecord;蜘蛛的历史搜索路线Private json:Object jsonBuffer json 数据缓存,用以记录上次发送的变量Public enum QueryTypeQueryNet, /请求网QueryNode, /请求节点CLSRECORD /请求删除历史记录;权限 函数名Private SearchSpider(const boost:shared_ptr net, boost:asio:io_service Private void EstablishCommunicating()Private void OperateCommunicating()Private void SemanticAnalysis(char (&data)DATABUFFERSIZE)Private std:list :iterator SearchNodeCompare(std:string &command)Private const std:string GetAvailableString()const函数Public std:list :iterator SearchNet(long ID);南昌航空大学东软班 详细设计报告 版本:1.1.012Public boost:shared_ptr SearchNet(std:string Public SearchSpider(void);友元类Communication函数名 SearchSpider功能概要 创建搜索蜘蛛记述形式 SearchSpider(const boost:shared_ptr net, boost:asio:io_service &ios)类型 名称 说明const boost:shared_ptr net 蜘蛛爬(搜索)的网的根节点指针参数 boost:asio:io_service & ios ASIO 通讯服务对象函数名 EstablishCommunicating功能概要 建立与客户端的异步通讯记述形式 void EstablishCommunicating()函数名 void OperateCommunicating()功能概要 保持与客户端的通讯记述形式 void OperateCommunicating()函数名 SemanticAnalysis功能概要 解析客户端的请求类型并调度相应操作记述形式 void SemanticAnalysis(char (&data)DATABUFFERSIZE)类型 名称 说明参数char (&)DATABUFFERSIZE data 客户端请求字符串流程图南昌航空大学东软班 详细设计报告 版本:1.1.013解码成 J S O N 对象判断 J S O N 对象的有效性否 抛出 J S O N 错误异常打开数据库 是请求数据类型判断匹配当前搜索位置网 ( Q u e r y N e t ) 类型请求节点类型请求通过搜索位置进行下一次搜索搜索位置搜否有搜索到结果否 进行网络搜索记录搜索结果是判断网络搜索是否搜索到否获得上次搜索记录是J S O N 数据序列化J s o n 数据J s o n 数据结束是查询数据库判断 J S O N 数据是否含有有效节点否查询结果查询到改单词是否开始客户端请求字符串南昌航空大学东软班 详细设计报告 版本:1.1.014函数名 SearchNet功能概要 通过客户端的请求,搜索该层的所有节点找到符合条件的节点记述形式 boost:shared_ptr SearchNet(std:string 类型 名称 说明参数 std:string & command 搜索条件类型 值 说明NULL 没有找到符合条件的结果返回值 boost:shared_ptr 非 NULL 符合条件的节点流程图搜索条件判断搜索条件的长度搜索与历史记录最后一个节点连接的子节点中 , 匹配搜索条件的节点长度 1 长度 = 0结束搜索到的子节点的指针搜索条件字符串从头开始剪去匹配长度个字符判断子节点是否为空是 否判断匹配长度匹配长度 = 子节点长度子节点添加入搜索记录中匹配长度 :iterator SearchNodeCompare(std:string &command)类型 名称 说明参数 std:string & command 新搜索条件类型 值 说明返回值 std:list :iterator返回检索后搜索记录的最后一个有效迭代器数据库模块.1 DiskIO类名 DiskIO文件名 DiskIO.h/DiskIO.cpp功能概要 所有硬盘操作的父类,负责封装通用接口属性权限 类型 名称 简介Protectedboost:mutex saveProtect 写资源Protectedstd:string savePath 文件路径变量Public static boost:thread_group ioPool 读写线程池权限 函数名ProtectedDiskIO(const std:string Protectedvirtual void SaveIndexNet(const boost:shared_ptr root) = 0;Protectedvirtual boost:shared_ptr LoadIndexNet(Net:NETTYPE) = 0;Protectedvirtual void SaveNode(const boost:shared_ptr node) = 0;Protectedvirtual boost:shared_ptr LoadNode(Node:NODETYPE, int ID) = 0;Public void Save(const boost:shared_ptr root);函数Public void Load(Net:NETTYPE);函数名 DiskIO南昌航空大学东软班 详细设计报告 版本:1.1.016功能概要 创建硬盘操作类对象记述形式 DiskIO(const std:string &savePath)类型 名称 说明参数 const std:string & savePath 需要操作的文件路径函数名 SaveIndexNet功能概要 通过传入的根节点存储索引表,具体索引表存储在文件内还是数据库内通过子类继承实现记述形式 virtual void SaveIndexNet(const boost:shared_ptr root) = 0;类型 名称 说明参数 const boost:shared_ptr root 需要存储的索引表的根函数名 LoadIndexNet功能概要 通过传如的索引表的类型判断加载何种索引表,具体索引表加载的途径通过文件还是数据库内由子类继承实现记述形式 virtual boost:shared_ptr LoadIndexNet(Net:NETTYPE) = 0;类型 名称 说明参数 Net:NETTYPE 索引表类型函数名 SaveNode功能概要 通过传入的节点的指针存储指针,具体节点存储在文件内还是数据库内通过子类继承实现记述形式 virtual void SaveNode(const boost:shared_ptr node) = 0;类型 名称 说明参数 const boost:shared_ptr node 需要存储的节点函数名 LoadNode功能概要 通过传如的节点类型与节点 ID 来加载节点,具体节点加载的途径通过文件还是数据库内由子类继承实现记述形式 virtual boost:shared_ptr LoadNode(Node:NODETYPE, int ID) = 0;类型 名称 说明Node:NODETYPE 节点类型参数int ID 节点 ID类型 值 说明返回值 virtual boost:shared_ptr 指向节点的指针函数名 Save功能概要 负责异步存储索引表记述形式 void Save(const boost:shared_ptr root)类型 名称 说明参数 const boost:shared_ptr root 索引表的根函数名 Load功能概要 负责异步加载索引表记述形式 void Load(Net:NETTYPE)南昌航空大学东软班 详细设计报告 版本:1.1.017类型 名称 说明参数 Net:NETTYPE 索引表类型.2 Sqlite3Helper类名 Sqlite3Helper 文件名 Sqlite3Helper .h/Sqlite3Helper .cpp功能概要 负责 SQLITE 数据库的具体操作父类 DiskIO属性权限 类型 名称 简介Privatesqlite3 * pDB Sqlite 数据库指针变量Privatesqlite3_stmt * pStmt Sqlite 数据库操作指针权限 函数名PublicSqlite3Helper(const std:string &savePath)PublicSqlite3Helper()Publicvoid Open()Publicvoid Close()PublicStatic void LoadIndexNetFromSourceDBFile(const std:string &dbFilePath, boost:shared_ptr root)Publicvoid SaveNode(const boost:shared_ptr node)Publicjson:Object GetJsonWord(long Id)函数Publicjson:Array Sqlite3Helper:GetJsonWord(const std:string &index)函数名 Sqlite3Helper功能概要 创建数据库助手对象记述形式 Sqlite3Helper(const std:string &savePath)类型 名称 说明参数 const std:string & savePath 数据库路径函数名 LoadIndexNetFromSourceDBFile功能概要 从数据库中生成索引表南昌航空大学东软班 详细设计报告 版本:1.1.018记述形式 Static void LoadIndexNetFromSourceDBFile(const std:string &dbFilePath, boost:shared_ptr root)类型 名称 说明const std:string & dbFilePath 数据库文件名参数boost:shared_ptr root 索引表根节点函数名 GetJsonWord功能概要 在数据库中查询指定 ID 的单词,并返回单词的 JSON 数据包记述形式 json:Object GetJsonWord(long Id)类型 名称 说明参数 long Id 单词数据库中的 ID类型 值 说明返回值 json:Object 单个单词的 JSON 数据包函数名 GetJsonWord功能概要 在数据库中查询制定全拼的单词,并返回单词的 JSON 数据包记述形式 json:Array Sqlite3Helper:GetJsonWord(const std:string &index)类型 名称 说明参数 const std:string & index 单词的全拼类型 值 说明返回值 json:Array 符合搜索条件全拼的单词集合单词录入模块.1 Net类名 Net文件名 Net.h/Net.cpp功能概要 索引表的数据结构的父类,封装通用搜索,添加节点方法等。属性权限 类型 名称 简介Public long netId 节点 IDPublic boost:unique_future futureData 获取未来数据的指针。当从硬盘异步加载索引表时使用。Public mutable boost:shared_mutex mutexLock 读脏数据写错数据保护锁Public boost:shared_ptr node 当前网存储的数据节点变量Public enum NETTYPETREE网的种类南昌航空大学东软班 详细设计报告 版本:1.1.019;Public static std:map root 所有网(索引表)的根权限 函数名ProtectedNet()ProtectedNet(boost:shared_ptr thisNode)ProtectedNet(const Net &)Public static boost:shared_ptr GetRoot(Net:NETTYPE);Public virtual void AddNode(boost:shared_ptr newNode) = 0;Public virtual boost:shared_ptr SearchNode(const Node &targetNode) const = 0;Public static boost:shared_ptr MakeNet(NETTYPE netType, boost:shared_ptr node);Public Net(void);函数Private templatevoid serialize(Archive &ar, const unsigned int version)友元类boost:serialization:access;函数名 Net功能概要 创建索引表节点对象记述形式 Net(boost:shared_ptr thisNode)类型 名称 说明参数 boost:shared_ptr thisNode 该索引表节点对应的实际节点函数名 Net功能概要 索引表赋值拷贝时作用,实现深拷贝记述形式 Net(const Net &)类型 名称 说明参数 const Net & 源拷贝对象函数名 GetRoot功能概要 对于多种类型的索引表,通过索引表类型获得其对应的根节点,如果索引表未加载完成,会等待阻塞直至加载完成为止记述形式 static boost:shared_ptr GetRoot(Net:NETTYPE);类型 名称 说明参数 Net:NETTYPE 索引表类型南昌航空大学东软班 详细设计报告 版本:1.1.020类型 值 说明NULL 没有该类型的索引表返回值 static boost:shared_ptr 非 NULL 索引表根节点函数名 AddNode功能概要 索引表添加新节点,具体添加方式又子节点实现,PS:不论从哪个节点开始加入,都保证从根节点开始加入。记述形式 virtual void AddNode(boost:shared_ptr newNode) = 0;类型 名称 说明参数 boost:shared_ptr newNode 需要加入索引表的新节点函数名 SearchNode功能概要 在改索引表节点上搜索与其关联的所有节点中,与目标节点符合要求的节点记述形式 virtual boost:shared_ptr SearchNode(const Node 类型 名称 说明参数 const Node & targetNode 待搜索节点类型 值 说明NULL 没有找到符合要求的节点返回值 const Node &非 NULL 符合要求的节点函数名 MakeNet功能概要 通过传入的节点类型制造新的节点,该函数为一个工厂函数记述形式 static boost:shared_ptr MakeNet(NETTYPE netType, boost:shared_ptr node);类型 名称 说明NETTYPE netType 节点类型参数boost:shared_ptr node 索引表节点上对应的实际节点类型 值 说明NULL 输入网(索引表节点) 型错误返回值 boost:shared_ptr 非 NULL函数名 serialize功能概要 存储网到文件的调用函数,不需要手动调用记述形式 templatevoid serialize(Archive &ar, const unsigned int version)类型 名称 说明Archive & ar 序列化对象参数const unsigned int version 序列化版本.2 TreeNet类名 TreeNet 文件名 TreeNet .h/TreeNet .cpp南昌航空大学东软班 详细设计报告 版本:1.1.021功能概要 组织索引表树状存储,每个对象为索引树上的一个节点父类 Net属性权限 类型 名称 简介Privatestatic boost:detail:atomic_count CreateNumber 记录创建了多少个树状节点,负责给树状节点编号,保证每个节点有唯一标识变量Protectedstd:vector child 存放树的子节点的指针权限 函数名ProtectedTreeNet()ProtectedTreeNet(boost:shared_ptr thisNode)Protectedvirtual void AddChild(boost:shared_ptr newChild)Public TreeNet(void)Public void AddNode(boost:shared_ptr newNode)Public virtual boost:shared_ptr SearchNode(const Node &targetNode)constPublic TreeNet& operator= (const TreeNet& net)Public templateinline void VisitEach(Visit visitFunction)Public templateinline const Net* FindByLevel(FindCondition fdCon)const函数Privatetemplatevoid serialize(Archive &ar, const unsigned int version)友元类class boost:serialization:access;class Net;class DiskIO;class SearchSpider;函数名 TreeNet功能概要 创建树结构索引表记述形式 TreeNet(boost:shared_ptr thisNode)类型 名称 说明参数 boost:shared_ptr thisNode 其对应的真实节点函数名 AddChild功能概要 添加新的节点到树索引表上记述形式 virtual void AddChild(boost:shared_ptr newChild)南昌航空大学东软班 详细设计报告 版本:1.1.022类型 名称 说明参数 boost:shared_ptr newChild 准备添加的新节点流程图南昌航空大学东软班 详细设计报告 版本:1.1.023判断当前节点是否是根节点通过根节点调用本函数否是判断本节点是否有子节点否添加该节点到子节点结束判断当前搜索节点的子节点中 , 是否仍有与待加入节点前缀匹配的节点是否获得前缀相似度是判断前缀相似度前缀相似度添加该节点到子节点通过相似度生成新节点并切割旧节点与带插入节点把新生成的节点取代源节点的位置 , 并把源节点加入新生成节点的子节点位置 , 当前节点不变当前节点通过相似度切割带插入节点把带插入节点的 I D 加入本节点 I D 序列中通过相似度切割本节点交换待插入节点与本节点 , 并把本节点插入带插入节点子节点传入新节点开始南昌航空大学东软班 详细设计报告 版本:1.1.024函数名 SearchNode功能概要 搜索本节点的子节点中与目标节点前缀相同的节点。折半查找实现。记述形式 virtual boost:shared_ptr SearchNode(const Node &targetNode)const类型 名称 说明参数 const Node & targetNode 目标节点类型 值 说明NULL 没有找到匹配项返回值 boost:shared_ptr非 NULL函数名 operator=功能概要 浅拷贝实现记述形式 TreeNet& operator= (const TreeNet& net)函数名 VisitEach功能概要 从调用该函数的对象开始,先序遍历他的每一个子节点。记述形式 templateinline void VisitEach(Visit visitFunction)类型 名称 说明参数 Visit visitFunction 参数为函数对象(推荐 LAMBDA 表达式)函数名 FindByLevel功能概要 从调用该函数的对象开始,层次搜索他的所有子节点直到满足条件为止。记述形式 templateinline const Net* FindByLevel(FindCondition fdCon)const类型 名称 说明参数 FindCondition fdCon 参数为函数对象(推荐 LAMBDA 表达式)类型 值 说明NULL 没有找到满足要求的任何一个节点返回值 const Net*非 NULL函数名 serialize功能概要 存储网到文件的调用函数,不需要手动调用记述形式 templatevoid serialize(Archive &ar, const unsigned int version)类型 名称 说明Archive & ar 序列化对象参数const unsigned int version 序列化版本.3 Node南昌航空大学东软班 详细设计报告 版本:1.1.025类名 Node文件名 Node.h/Node.cpp功能概要 索引表节点实际存储数据的最小单元,为了适应全球化,自适应各种编码方式与宽窄字符,重写部分借口,保证从物理存储的结构转化为符合语言语义的逻辑结构。属性权限 类型 名称 简介Protectedstd:string key 存储节点的值Public enum NODETYPEERRORTYPE,LOCALNODE;节点的种类,ERRORTYPE 为错误节点,作哨兵用Public std:vector length 保证 node 对于本地化的需求,能存储任何语言任何编码方式,同时保证其他代码不更改。通过字符串长度的实际长度转化为语义的逻辑长度。变量Public std:list IDList 存储节点对应在数据库中真实数据的位置权限 函数名Private void CaculateLength(void)ProtectedNode()Public Node(const std:string &key)Public Node(const std:string &key, int ID)Public json:Array GetWordJson()Public virtual Node(void)Public virtual unsigned long operator(unsigned long index) constPublic virtual unsigned long GetLength()constPublic virtual const std:string& GetKey() constPublic virtual std:stri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论