《简明英汉字典》由会员分享,可在线阅读,更多相关《简明英汉字典(18页珍藏版)》请在金锄头文库上搜索。
1、简明英汉字典简明英汉字典一、一、需求分析需求分析 1.用例图用例图2.用例说明用例说明 (1)查询与显示:查询与显示:用户可查询某一单词,显示单词信息 (2)选择查询方式:选择查询方式:用户可选择英汉、汉英、字典结构、模糊查询等查询方式 (3)编辑、修改已有单词:编辑、修改已有单词:用户可以修改查询到的英文单词。 (4)创建新单词:创建新单词:用户可以创建一个新的英文单词。 (5)删除已有单词:删除已有单词:用户可以删除查询到的单词 (6)打印和打印预览:打印和打印预览:用户可以在当前查询方式下,按格式打印和打印预览全部 单词 二、二、总体设计总体设计 1.MFC 程序的项目模式选择程序的项目
2、模式选择 归纳需求分析中的功能要求,该程序的工作特点是:选种某一单词并显示该单词信 息;编辑修改单词信息。因此,选用 MFC 的文档 视图结构能方便地实现合理程序 结构,有利于模块化的 MVC 层次结构的实现。同时,为了能满足选种单词并显示的功 能,所以决定选择 MFC 的单文档 视图(SDI)项目模式,并使用静态切分视图,并 且采用 CtreeView 和 CeditView 分别为两个视图的基类创建“简明英汉词典程序简明英汉词典程序”。程 序的项目名命名为“Dictionary”2.类的静态设计类的静态设计 组成“简单绘图程序简单绘图程序”的类可以分为程序框架类程序框架类、数据类数据类和交
3、互界面类交互界面类 程序框架类程序框架类应用程序类应用程序类用户查询与显示选择查询方式编辑、修改已有单词创建新单词删除已有单词打印和打印预览CDictionaryApp+ InitInstance() : BOOL 主框架类主框架类文档类文档类视图类视图类CWordViewCWordView 的派生关系图的派生关系图CMainFrame+ m_wndSplitter :CsplitterWnd + m_dlgbar :CDlgBar# OnCreate(inout lpCreateStruct:LPCREATESTRUCT):int # OnSize(in nType:UINT, in cx:
4、int, in cy:int) # OnDlgbar() +OnCreateClient(inout lpCreateStruct:LPCREATESTRUCT, inout pContext : CCreateContext*):BOOL # OnUpdateDlgbar(inout pCmdUI :CCmdU*I)CDictonaryDoc+ s :CString CWordView# view()CWordViewCEditViewCDicTreeViewCDicTreeView 的派生关系图的派生关系图CDicTreeViewCDicTreeView 与与 CwordViewCword
5、View 的关联图的关联图数据类数据类 基本数据库类基本数据库类CDicTreeView# m_method:int=1 # bDelete:BOOL=FALSE # Delete:BOOL # bEnglish:int=0 # pView:CWordView*=NULL+ CDicTreeView() + OnInitialUpdate() + OnDraw(in pDC:CDC*) # OnChieng() # OnEditChange() # OnEditDelete() # OnEditNew() # OnEngchi() # OnIndex() # OnMouhu() # OnSel
6、changed(inout pNMHDR :NMHDR*, inout pResult LRESULT*) # OnStruct() # OnSynonym() # OnType() # OnPreparePrinting(inout pInfo:CPrintInfo*) # OnPrint(in pDC:CDC*, inout pInfo:CPrintInfo*) # OnUpdateChieng(inout pCmdUI : CCmdUI*) # OnUpdateEngchi (inout pCmdUI:CCmdUI*) # OnUpdateEditDelete (inout pCmdUI
7、:CCmdUI*) # OnUpdateEditNew (inout pCmdUI:CCmdUI*) # OnUpdateEngchi (inout pCmdUI:CCmdUI*) # OnUpdateIndex (inout pCmdUI:CCmdUI*) # OnUpdateMouhu (inout pCmdUI:CCmdUI*) # OnUpdateStruct (inout pCmdUI:CCmdUI*) # OnUpdateSynonym (inout pCmdUI:CCmdUI*) # OnUpdateType (inout pCmdUI:CCmdUI*) # PrintPageF
8、oot(in pDC:CDC*, inout pInfo:CPrintInfo*, in strFoot:CString HTREEITEM hitem=treeCtrl.GetSelectedItem(); if(选中的结点的父结点不是根结点|当前查询方式为精确匹配|查询方式为模糊查 询|查询方式为汉英|查询方式为单词类型)if(str!=“简明英汉字典“where+=“;where+=str+“; 通过单词名查询 Words 数据表找到该单词索引,通过索引 查询 Acceptation 数据表找到该单词每条词义对应的类型 索引,通过索引查询 Types 数据表找到类型名。将查询到的单词名、
9、类型、词义加入到字符串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 数
10、据表找到每一个符合该类型的记录, 通过过单词索引查找 Words 数据表找到该单词。 将查询到的类型名、单词名、词义加入到字符串。 pDoc-s=str1;endif:SendMessage(pview-GetSafeHwnd(),WM_VIEW,0,0);endif endif END 修改单词算法修改单词算法void OnEditChange() 参数说明:无参数参数说明:无参数 返回说明:无返回返回说明:无返回 BEGIN CEDITDLG dlg; int i=IDOK; CTreeCtrl HTREEITEM hitem=treeCtrl.GetSelectedItem(); if(
11、选中的结点的父结点不是根结点|当前查询方式为精确匹配|查询方式为模糊查询)str=treeCtrl.GetItemText(hitem); if(str!=“简明英汉字典“where+=“; where+=str+“; 根据单词名查找 Words 数据表,找到当前单词的索引,根据索引查 找 Acceptation 表查找该单词的信息。 while(i=IDOK) if(未到记录集尾) then 查找到该单词的所有信息将该单词的信息加入到对话框变量中 UpdateData(FALSE); if(dlg.DoModal()=IDOK) then if(不删除该单词信息) then 将对话框中的信息
12、寸入数据库 else acceSet.delete_cur_record(); endifi=MessageBox(“是否修改下一条“);if(i=IDOK endif else break; endif endwhile endif endif END 创建新单词的算法创建新单词的算法void OnEditNew() 参数说明:参数说明:无参数 返回说明:返回说明:无返回 BEGIN int i=IDOK; CTreeCtrl while(i=IDOK) if(dlg.DoModal()=IDOK) then 查找 Words 数据表看是否为已有单词 if(Words 中无此单词)then
13、在单词表中加入该单词,并在树形控件上加入该单词。endifendif i=MessageBox(“是否添加下一条“,NULL,MB_OKCANCEL); endwhile END 删除单词的算法删除单词的算法void OnEditDelete() 参数说明:参数说明:无参数 返回说明:返回说明:无返回 BEGIN int i=MessageBox(“确定删除吗?“,NULL,MB_OKCANCEL); if(父结点不是根结点|精确匹配|模糊查询) str=treeCtrl.GetItemText(hitem);if(str!=“简明英汉字典“ endif endifEND 5.视图类视图类 C
14、wordView (1) 类的详细定义类的详细定义命名命名类型类型访问权限访问权限描述描述AssertValid()voidpublic在调试状态下,提供属性的合法性检查。Dump()voidpublic在调试状态下,提供属性值的转储显示。GetDocument()CDictionaryDoc*public获取视图绑定的文档类对象地址。OnActivateView()voidprotected视图被激活或不活动时,被程序框架调用。OnDraw()voidpublic当视图窗口被重画时,被程序框架调用。OnInitialUpdate()voidprotected视图首次与一个文档关联时,被程序框
15、架调用。view()voidprotected在视图上显示信息。(2) 类的发送消息表类的发送消息表消息名消息名通知码通知码ID途经类途经类目标类目标类WM_VIEWCDicTreeViewCWordView6.基本数据类基本数据类 (1) 类的详细定义类的详细定义命名命名类型类型访问权限访问权限描述描述delete_cur_record(.)boolpublic删除当前记录。delete_all_record(.)voidpublic删除所有记录。is_NULL(.)boolpublic记录集是否为空。get_num_record() ()longpublic返回记录集的记录数。Move (
16、)voidpublic移动记录指针。MoveFirst ()voidpublic移动到第一条记录。MovePrev ()voidpublic移动到上一条记录。MoveNext ()voidpublic移动到下一条记录。MoveLast ()voidpublic移动到最后一条记录。lookup ()voidpublic查询记录集。refresh ()voidpublic刷新记录集。bof ()boolpublic是否到记录集头。eof ()boolpublic是否到记录集尾。m_pConnection_ConnectionPtrprotected存放数据库指针。m_pRecordset_RecordsetPtrprotected存放记录集指针。m_TBNameCStringprotected存放数据表名称。m_whereCS