`
- 浏览:
1110620 次
-
-
#include"stdafx.h"
-
#include"YuyinTree.h"
-
#include"YuyinTreeDlg.h"
-
#ifdef_DEBUG
-
#definenewDEBUG_NEW
-
#undefTHIS_FILE
-
staticcharTHIS_FILE[]=__FILE__;
-
#endif
-
-
- CStoredPinyin*m_storedPinyin[30000];
-
CWordTree*curTree=newCWordTree;
-
CStringMaxLenghci='/'';
-
CStringTempci;
-
intStoredNum=0;
-
classCAboutDlg:publicCDialog
- {
-
public:
- CAboutDlg();
-
-
-
enum{IDD=IDD_ABOUTBOX};
-
-
-
-
protected:
-
virtualvoidDoDataExchange(CDataExchange*pDX);
-
-
-
protected:
-
-
- DECLARE_MESSAGE_MAP()
- };
- CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD)
- {
-
-
- }
-
voidCAboutDlg::DoDataExchange(CDataExchange*pDX)
- {
- CDialog::DoDataExchange(pDX);
-
-
- }
- BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
-
-
-
- END_MESSAGE_MAP()
-
-
-
CYuyinTreeDlg::CYuyinTreeDlg(CWnd*pParent)
- :CDialog(CYuyinTreeDlg::IDD,pParent)
- {
-
-
m_inputTongyin=_T("");
-
-
- m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- }
-
voidCYuyinTreeDlg::DoDataExchange(CDataExchange*pDX)
- {
- CDialog::DoDataExchange(pDX);
-
- DDX_Text(pDX,IDC_PINYIN_EQUAL,m_inputTongyin);
-
- }
- BEGIN_MESSAGE_MAP(CYuyinTreeDlg,CDialog)
-
- ON_WM_SYSCOMMAND()
- ON_WM_PAINT()
- ON_WM_QUERYDRAGICON()
- ON_BN_CLICKED(IDC_BTN_READFILE,OnBtnReadfile)
- ON_BN_CLICKED(IDC_BTN_TEST_PANDCHI,OnBtnTestPandchi)
- ON_BN_CLICKED(IDC_BTN_TEST_TONGYINCI,OnBtnTestTongyinci)
- ON_BN_CLICKED(IDC_YUYIN_QUERY,OnTongyinQuery)
- ON_NOTIFY(TVN_SELCHANGED,IDC_YUYIN_TREE,OnSelchangedYuyinTree)
-
- END_MESSAGE_MAP()
-
-
-
BOOLCYuyinTreeDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
-
-
- ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
- ASSERT(IDM_ABOUTBOX<0xF000);
- CMenu*pSysMenu=GetSystemMenu(FALSE);
-
if(pSysMenu!=NULL)
- {
- CStringstrAboutMenu;
- strAboutMenu.LoadString(IDS_ABOUTBOX);
-
if(!strAboutMenu.IsEmpty())
- {
- pSysMenu->AppendMenu(MF_SEPARATOR);
- pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
- }
- }
-
-
-
SetIcon(m_hIcon,TRUE);
-
SetIcon(m_hIcon,FALSE);
-
-
-
-
for(inti=0;i<30000;i++)
- {
- m_storedPinyin[i]=NULL;
- }
-
FILE*InputFile=NULL;
-
CTreeNode*CurNode=NULL;
-
CTreeNode*FatherNode=NULL;
-
TCHARNodeItem[100];
-
TCHARNodePinyin[51];
-
TCHARNodeHanzi[50];
-
intZiMuNum,j,k;
-
intWordNum=0;
-
BOOLIsFirst=TRUE;
-
CTreeNode*TempfatherNode=NULL;
-
CTreeNode*TempfatherNode1=NULL;
-
InputFile=fopen("LexiconTree.txt","r");
-
while(!feof(InputFile))
- {
- WordNum++;
-
fscanf(InputFile,"%s",NodeItem);
-
ZiMuNum=0;
-
while(NodeItem[ZiMuNum]!=',')
- {
- NodeHanzi[ZiMuNum]=NodeItem[ZiMuNum];
- ZiMuNum++;
- }
-
NodeHanzi[ZiMuNum]='/0';
- ZiMuNum++;
-
while(NodeItem[ZiMuNum]!=',')
- {
- ZiMuNum++;
- }
- ZiMuNum++;
- j=ZiMuNum;
- k=0;
-
while(NodeItem[j]!='/0')
- {
- NodePinyin[k]=NodeItem[j];
- k++;
- j++;
- }
-
NodePinyin[k-1]='/0';
-
CStringTempString;
- TempString=NodePinyin;
-
CurNode=newCTreeNode;
- CurNode->m_Pinyin=TempString;
- CurNode->m_Word=NodeHanzi;
- CurNode->m_pParent=NULL;
- CurNode->m_pchild=NULL;
- CurNode->m_pneighbour=NULL;
- CurNode->m_pchar=NULL;
- CurNode->m_CurNum=0;
-
BOOLFviewed=FALSE;
-
BOOLFParent=FALSE;
-
BOOLFEqual=FALSE;
-
for(inttemp=0;temp<30000;temp++)
- {
-
if(m_storedPinyin[temp]!=NULL)
- {
-
intt=-1;
-
t=TempString.Find(m_storedPinyin[temp]->m_StoredPinyin);
-
if(t>=0)
- {
-
if(TempString==m_storedPinyin[temp]->m_StoredPinyin)
- {
-
Fviewed=TRUE;
-
FEqual=TRUE;
-
intTempCurNum=(m_storedPinyin[temp]->m_pcurPosition)->m_CurNum;
-
CTongyinci*temp1=newCTongyinci;
- temp1->next=NULL;
-
temp1->m_data=newchar[50];
- strcpy(temp1->m_data,NodeHanzi);
- CTongyinci*temp2=(m_storedPinyin[temp]->m_pcurPosition)->m_pchar;
- CTongyinci*pre;
-
while(temp2!=NULL)
- {
- pre=temp2;
- temp2=temp2->next;
- }
- pre->next=temp1;
- (m_storedPinyin[temp]->m_pcurPosition)->m_CurNum=(m_storedPinyin[temp]->m_pcurPosition)->m_CurNum+1;
-
break;
- }
-
elseif(t==0)
-
{
- Tempci=m_storedPinyin[temp]->m_StoredPinyin;
-
intStrsize=Tempci.GetLength();
-
if(TempString.GetAt(Strsize)==',')
- {
-
FParent=TRUE;
-
if(Strsize>=MaxLenghci.GetLength())
- {
-
MaxLenghci=Tempci;
-
TempfatherNode1=m_storedPinyin[temp]->m_pcurPosition;
- }
-
Fviewed=TRUE;
- }
- }
- }
- }
-
else
-
continue;
- }
-
if(FParent&&!FEqual)
- {
-
CurNode->m_CurNum++;
-
-
CTongyinci*temp=newCTongyinci;
- temp->next=NULL;
-
temp->m_data=newchar[50];
- strcpy(temp->m_data,NodeHanzi);
- CurNode->m_pchar=temp;
-
curTree->InsertNode(&CurNode,&TempfatherNode1);
-
CStoredPinyin*TempStorPinyin1=newCStoredPinyin;
- TempStorPinyin1->m_pcurPosition=CurNode;
- TempStorPinyin1->m_StoredPinyin=TempString;
- TempStorPinyin1->m_pchar=temp;
-
m_storedPinyin[StoredNum++]=TempStorPinyin1;
- }
-
MaxLenghci='/0';
- TempfatherNode1=NULL;
-
if(!Fviewed)
- {
-
if(IsFirst==TRUE)
- {
- TempfatherNode=curTree->m_Root;
- }
-
CurNode->m_CurNum++;
-
-
CTongyinci*temp=newCTongyinci;
- temp->next=NULL;
-
temp->m_data=newchar[50];
- strcpy(temp->m_data,NodeHanzi);
- CurNode->m_pchar=temp;
-
TempfatherNode=curTree->InsertFirstNode(&CurNode,&TempfatherNode);
-
IsFirst=FALSE;
-
CStoredPinyin*TempStorPinyin;
-
TempStorPinyin=newCStoredPinyin;
- TempStorPinyin->m_pcurPosition=CurNode;
- TempStorPinyin->m_StoredPinyin=NodePinyin;
- TempStorPinyin->m_pchar=temp;
-
-
m_storedPinyin[StoredNum]=TempStorPinyin;
- StoredNum++;
- }
- }
-
charbuffer[50];
-
sprintf(buffer,"已读取单词:%d",WordNum);
- AfxMessageBox(buffer);
- BrowseYuyin();
-
returnTRUE;
- }
-
voidCYuyinTreeDlg::OnSysCommand(UINTnID,LPARAMlParam)
- {
-
if((nID&0xFFF0)==IDM_ABOUTBOX)
- {
- CAboutDlgdlgAbout;
- dlgAbout.DoModal();
- }
-
else
- {
- CDialog::OnSysCommand(nID,lParam);
- }
- }
-
-
-
-
voidCYuyinTreeDlg::OnPaint()
- {
-
if(IsIconic())
- {
-
CPaintDCdc(this);
-
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
-
-
intcxIcon=GetSystemMetrics(SM_CXICON);
-
intcyIcon=GetSystemMetrics(SM_CYICON);
- CRectrect;
- GetClientRect(&rect);
-
intx=(rect.Width()-cxIcon+1)/2;
-
inty=(rect.Height()-cyIcon+1)/2;
-
- dc.DrawIcon(x,y,m_hIcon);
- }
-
else
- {
- CDialog::OnPaint();
- }
- }
-
-
-
HCURSORCYuyinTreeDlg::OnQueryDragIcon()
- {
-
return(HCURSOR)m_hIcon;
- }
-
-
voidCYuyinTreeDlg::OnBtnReadfile()
- {
-
- CTreeNode*root=curTree->m_Root;
- CTreeNode*Temp=root->m_pchild;
-
while(Temp!=NULL)
- {
- AfxMessageBox(Temp->m_Pinyin);
- Temp=Temp->m_pneighbour;
- }
- }
-
CWordTree::CWordTree()
- {
-
m_Root=newCTreeNode;
-
m_Root->m_Pinyin="";
- m_Root->m_pParent=NULL;
- m_Root->m_pchild=NULL;
- m_Root->m_pneighbour=NULL;
- m_Root->m_CurNum=0;
-
m_Root->m_Word="";
- m_Root->m_pchar=NULL;
- }
-
voidCWordTree::CreateTree()
- {
- }
-
CTreeNode*CWordTree::InsertFirstNode(CTreeNode**newNode,CTreeNode**parent)
- {
- CTreeNode*WilladNode=*newNode;
- CTreeNode*FatherNode=*parent;
-
if(FatherNode==curTree->m_Root)
- {
- FatherNode->m_pchild=WilladNode;
- WilladNode->m_pParent=curTree->m_Root;
- }
-
else
- {
- FatherNode->m_pneighbour=WilladNode;
- WilladNode->m_pParent=curTree->m_Root;
- }
-
returnWilladNode;
- }
-
voidCWordTree::InsertNode(CTreeNode**newNode,CTreeNode**parent)
- {
- CTreeNode*WilladNode=*newNode;
- CTreeNode*FatherNode=*parent;
- CTreeNode*Temp=NULL;
-
if(FatherNode->m_pchild==NULL)
- {
- FatherNode->m_pchild=WilladNode;
- WilladNode->m_pParent=FatherNode;
- }
-
else
- {
- Temp=FatherNode->m_pchild;
-
while(Temp->m_pneighbour!=NULL)
- {
- Temp=Temp->m_pneighbour;
- }
- Temp->m_pneighbour=WilladNode;
- WilladNode->m_pParent=FatherNode;
- }
- }
-
voidCYuyinTreeDlg::OnBtnTestPandchi()
- {
- CTreeNode*root=curTree->m_Root;
- CTreeNode*Temp=root->m_pchild;
- AfxMessageBox(Temp->m_Pinyin);
- Temp=Temp->m_pchild;
-
while(Temp!=NULL)
- {
- AfxMessageBox(Temp->m_Pinyin);
- Temp=Temp->m_pneighbour;
- }
- }
-
voidCYuyinTreeDlg::OnBtnTestTongyinci()
- {
- CTreeNode*NodeA=curTree->m_Root->m_pchild;
- CTongyinci*temp=NodeA->m_pchar;
-
while(temp!=NULL)
- {
- AfxMessageBox(temp->m_data);
- temp=temp->next;
- }
- }
-
voidCYuyinTreeDlg::BrowseYuyin()
- {
- CTreeCtrl*pCtrl=(CTreeCtrl*)GetDlgItem(IDC_YUYIN_TREE);
- ASSERT(pCtrl!=NULL);
- TVINSERTSTRUCTtvInsert;
- tvInsert.hParent=NULL;
- tvInsert.hInsertAfter=NULL;
- tvInsert.item.mask=TVIF_TEXT;
-
tvInsert.item.pszText=_T("词拼音");
- HTREEITEMhRoot=pCtrl->InsertItem(&tvInsert);
- CTreeNode*root=curTree->m_Root;
- CTreeNode*Temp=root->m_pchild;
- HTREEITEMhPA=NULL;
- HTREEITEMhPB=NULL;
- HTREEITEMhPC=NULL;
-
while(Temp!=NULL)
- {
- hPA=pCtrl->InsertItem(TVIF_TEXT,
- _T(Temp->m_Pinyin),0,0,0,0,0,hRoot,NULL);
- CTreeNode*TempNode1=Temp->m_pchild;
-
while(TempNode1!=NULL)
- {
- hPB=pCtrl->InsertItem(TVIF_TEXT,
- _T(TempNode1->m_Pinyin),0,0,0,0,0,hPA,NULL);
- CTreeNode*TempNode2=TempNode1->m_pchild;
-
while(TempNode2!=NULL)
- {
- hPC=pCtrl->InsertItem(TVIF_TEXT,
- _T(TempNode2->m_Pinyin),0,0,0,0,0,hPB,NULL);
- CTreeNode*TempNode3=TempNode2->m_pchild;
-
while(TempNode3!=NULL)
- {
- pCtrl->InsertItem(TVIF_TEXT,
- _T(TempNode3->m_Pinyin),0,0,0,0,0,hPC,NULL);
- TempNode3=TempNode3->m_pneighbour;
- }
- TempNode2=TempNode2->m_pneighbour;
- }
- TempNode1=TempNode1->m_pneighbour;
- }
- Temp=Temp->m_pneighbour;
- }
- }
-
voidCYuyinTreeDlg::OnTongyinQuery()
- {
-
- UpdateData(TRUE);
- CStringStringWilqury=m_inputTongyin;
- CStringTempci;
-
BOOLFExit=FALSE;
-
intTempNum;
- CComboBox*tongyinc=(CComboBox*)GetDlgItem(IDC_PINYIN_RESULT);
- ASSERT(tongyinc!=NULL);
- tongyinc->ResetContent();
- ASSERT(tongyinc->GetCount()==0);
-
for(inttemp=0;temp<30000;temp++)
- {
-
if(m_storedPinyin[temp]!=NULL&&m_storedPinyin[temp]->m_StoredPinyin==StringWilqury)
- {
- TempNum=m_storedPinyin[temp]->m_pcurPosition->m_CurNum;
-
-
- CTongyinci*temp1=m_storedPinyin[temp]->m_pcurPosition->m_pchar;
-
while(temp1!=NULL)
- {
- Tempci=temp1->m_data;
- temp1=temp1->next;
- tongyinc->AddString(Tempci);
- }
- tongyinc->SetWindowText(m_storedPinyin[temp]->m_pcurPosition->m_pchar->m_data);
- FExit=TRUE;
- }
- }
-
if(!FExit)
-
tongyinc->SetWindowText("该拼音在树中不存在!");
- }
-
voidCYuyinTreeDlg::OnSelchangedYuyinTree(NMHDR*pNMHDR,LRESULT*pResult)
- {
- NM_TREEVIEW*pNMTreeView=(NM_TREEVIEW*)pNMHDR;
-
- TV_ITEMitem=pNMTreeView->itemNew;
- HTREEITEMhItem=item.hItem;
- CTreeCtrl*pCtrl=(CTreeCtrl*)GetDlgItem(IDC_YUYIN_TREE);
- ASSERT(pCtrl!=NULL);
- CStringTempci=pCtrl->GetItemText(hItem);
-
if(Tempci=="词拼音")
-
return;
-
BOOLFExit=FALSE;
-
intTempNum;
- CComboBox*tongyinc=(CComboBox*)GetDlgItem(IDC_PINYIN_RESULT);
- ASSERT(tongyinc!=NULL);
- tongyinc->ResetContent();
- ASSERT(tongyinc->GetCount()==0);
-
for(inttemp=0;temp<30000;temp++)
- {
-
if(m_storedPinyin[temp]!=NULL&&m_storedPinyin[temp]->m_StoredPinyin==Tempci)
- {
- TempNum=m_storedPinyin[temp]->m_pcurPosition->m_CurNum;
-
- CTongyinci*temp1=m_storedPinyin[temp]->m_pcurPosition->m_pchar;
-
while(temp1!=NULL)
- {
- Tempci=temp1->m_data;
- temp1=temp1->next;
- tongyinc->AddString(Tempci);
- }
- tongyinc->SetWindowText(m_storedPinyin[temp]->m_pcurPosition->m_pchar->m_data);
- FExit=TRUE;
- }
- }
-
if(!FExit)
-
tongyinc->SetWindowText("该拼音在树中不存在!");
- *pResult=0;
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
语音识别是一门交叉学科。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。 语音...
这是我的毕业设计,被评为优秀毕业设计,用VS 2005、c# speech sdk 开发,实现了本地查询、网络查询、翻译、语音输入、语音合成、统计单词频率等功能。他的特色就是语音输入、语音输出,由于在做是在CSDN上查了相关...
863CSL+thchs30汉语普通话连续语音识别词典
CMU汉语普通话语音识别发音词典(含多音词),7w词
汉代汉语词典汉代汉语词典汉代汉语词典汉代汉语词典汉代汉语词典汉代汉语词典汉代汉语词典汉代汉语词典汉代汉语词典汉代汉语词典
mdx格式的现代汉语词典文件,共广大用户使用
现代汉语词典第五版mdx版,适合goldendict,欧路等使用第三方词典库的软件。因为是第五版所以有词性标注。
语音识别的源代码 很齐全 同时有成品的dll封装库2
古代汉语词典古代汉语词典古代汉语词典古代汉语词典古代汉语词典
汉语大词典
汉语大词典,一个方便查询生字,帮你查找会读不会的字,以及其他一些手册资讯资料。
这是个TXT格式的《现代汉语词典》,推荐收藏!
汉语印尼语词典一.pdf
word版现代汉语词典word版现代汉语词典word版现代汉语词典
HTK孤立词语音识别系统,实现的是6个单词的识别,所有文件打包,内有使用说明,运行命令可以直接识别。搭建的详细步骤参考我的博客: http://blog.csdn.net/cdj0311/article/details/17504165
成语词典,汉语词典,英语词典access数据库。 资源来自网上!
人机交互所需文件
现代汉语词典第五版
这是一本很好的词典,其中有大量的现代,古代的词汇,方便查询
现代汉语词典