简明英汉字典

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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("是否修改下一条");

相关文档
最新文档