简明英汉字典
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简明英汉字典
一、需求分析
1.用例图
2.用例说明
(1)查询与显示:用户可查询某一单词,显示单词信息
(2)选择查询方式:用户可选择英汉、汉英、字典结构、模糊查询等查询方式
(3)编辑、修改已有单词:用户可以修改查询到的英文单词。
(4)创建新单词:用户可以创建一个新的英文单词。
(5)删除已有单词:用户可以删除查询到的单词
(6)打印和打印预览:用户可以在当前查询方式下,按格式打印和打印预览全部单词
二、总体设计
1.MFC程序的项目模式选择
归纳需求分析中的功能要求,该程序的工作特点是:选种某一单词并显示该单词信息;编辑修改单词信息。因此,选用MFC的文档–视图结构能方便地实现合理程序结构,有利于模块化的MVC层次结构的实现。同时,为了能满足选种单词并显示的功能,所以决定选择MFC的单文档–视图(SDI)项目模式,并使用静态切分视图,并且采用CtreeView和CeditView分别为两个视图的基类创建“简明英汉词典程序”。程序的项目名命名为“Dictionary”
2.类的静态设计
组成“简单绘图程序”的类可以分为程序框架类、数据类和交互界面类
⑴程序框架类
·应用程序类
·主框架类
·文档类
·视图类
·CWordView的派生关系图
·CDicTreeView的派生关系图
·CDicTreeView与CwordView的关联图
⑵数据类
·基本数据库类
·单词记录集类
·词义记录集类
·词类记录集类
·数据类的派生关系图
⑶ 交互界面类
·单词输入工具类
·修改单词信息类
·交互界面类的派生关系图
·交互界面类与CMainFrame 的关联图
3.类的动态设计(1)查询与显示
(2)选择查询方式
(3)编辑、修改已有单词
(4)创建新单词
(5)删除已有单词
(6)打印和打印预览
三、详细设计
1.应用程序类CDictionaryApp
(1)类的详细定义
2.框架类CMainFrame
(1)类的详细设计
3.文档类CDictionaryDoc
4.视图类CDicTreeDraw
(4)关键算法解析
①查询单词并显示信息
void OnSelchanged([INOUT] NMHDR* pNMHDR, [INOUT] LRESULT* pResult)
参数说明:[INOUT] pNMHDR 描述消息详细信息的结构指针。
[INOUT] pResult 返回结果的指针
返回说明:无返回值
BEGIN
...
CTreeCtrl& treeCtrl=GetTreeCtrl();
HTREEITEM hitem=treeCtrl.GetSelectedItem();
if((选中的结点的父结点不是根结点||当前查询方式为精确匹配||查询方式为模糊查询||查询方式为汉英||查询方式为单词类型)&&非删除结点状态)
then str=treeCtrl.GetItemText(hitem);
if(str!="简明英汉字典"&&str!="简明汉英字典")
then
if(bEnglish==0 即英汉查询)
then CString where="Name=";
where+="'";
where+=str+"'";
通过单词名查询Words数据表找到该单词索引,通过索引
查询Acceptation数据表找到该单词每条词义对应的类型
索引,通过索引查询Types数据表找到类型名。
将查询到的单词名、类型、词义加入到字符串
pDoc->s=str1;
else if(bEnglish==1 即汉英查询)
then CString where="Chinese=";
where+="'";
where+=str+"'";
通过词义查询Acceptation数据表找到符合该词义的每个单
词,通过单词索引查询Words数据表找到单词。
将查询到的中文单词、英文单词、同义词加入到字符串。
pDoc->s=str1;
else
CString where="Name=";
where+="'";
where+=str+"'";
通过类型名查询Types数据表找到类型索引,通过类型索引
查找Acceptation数据表找到每一个符合该类型的记录,通过
单词索引查找Words数据表找到该单词。
将查询到的类型名、单词名、词义加入到字符串。
pDoc->s=str1;
endif
::SendMessage(pview->GetSafeHwnd(),WM_VIEW,0,0);
endif
endif
END
②修改单词算法
void OnEditChange()
参数说明:无参数
返回说明:无返回
BEGIN
CEDITDLG dlg;
int i=IDOK;
CTreeCtrl& treeCtrl=GetTreeCtrl();
HTREEITEM hitem=treeCtrl.GetSelectedItem();
if((选中的结点的父结点不是根结点||当前查询方式为精确匹配||查询方式为模糊查询)&&非删除结点状态)
then CString str;
str=treeCtrl.GetItemText(hitem);
if(str!="简明英汉字典"&&str!="简明汉英字典")
then CString where="Name=";
where+="'";
where+=str+"'";
根据单词名查找Words数据表,找到当前单词的索引,根据索引查
找Acceptation表查找该单词的信息。
while(i==IDOK)
if(未到记录集尾)
then 查找到该单词的所有信息
将该单词的信息加入到对话框变量中
UpdateData(FALSE);
if(dlg.DoModal()==IDOK)
then
if(不删除该单词信息)
then 将对话框中的信息寸入数据库
else acceSet.delete_cur_record();
endif
i=MessageBox("是否修改下一条");