亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dlgcreate.cpp

?? 一個數據庫建立與讀取的源代碼,帶有注釋,適合初學者使用很不錯
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// struct DICTIONARY DICT_REC 的值全部賦為空
///////////////////////////////////////////////
void CDlgCreate::reset_dict_rec(struct DICTIONARY &DICT_REC)
{
	strcpy(DICT_REC.NUMBER,"");
	strcpy(DICT_REC.W_C,"");
	strcpy(DICT_REC.G_C,"");
	strcpy(DICT_REC.E_C,"");
	strcpy(DICT_REC.W_E,"");
	strcpy(DICT_REC.G_E,"");
	strcpy(DICT_REC.E_E,"");
	strcpy(DICT_REC.DEF,"");
	strcpy(DICT_REC.FIRST_SEM,"");
}


//////////////////////////////////////////////////
// 判定struct DICTIONARY DICT_REC 是否全部賦值
//////////////////////////////////////////////////
int CDlgCreate::dict_rec_getvalue(struct DICTIONARY DICT_REC)
{
	if (strcmp(DICT_REC.NUMBER,"")==0)	// 序號不能為空
		return 0;
	else if (strcmp(DICT_REC.W_C,"")==0)	// W_C不能為空
		return 0;
	else if (strcmp(DICT_REC.G_C,"")==0)	// G_C不能為空
		return 0;
	else if (strcmp(DICT_REC.W_E,"")==0)	// W_E不能為空
		return 0;
	else if (strcmp(DICT_REC.G_E,"")==0)	// G_E不能為空
		return 0;
	else if (strcmp(DICT_REC.DEF,"")==0)	// DEF不能為空
		return 0;
	return 1;
}


/////////////////////////////////////////////
//判斷文件存在與否
/////////////////////////////////////////////
int CDlgCreate::exist_file(CString file_name)
{
	char name[MAX_LEN];
	strcpy(name,file_name);
	return (access(name, 0) == 0);
}


//////////////////////////////////////////////////////
// 建立表dict,存放《知網》的雙語知識詞典
//////////////////////////////////////////////////////
void CDlgCreate::build_dict(CString hownet_txt_file, CString hownet_database_file)
{
	// 定義存放《知網》詞典各個項的最大字符數目的數組
	unsigned int max_line_len[10];

	// 取得《知網》詞典詞條的各個項的最大字符數
	get_field_len(hownet_txt_file,max_line_len);

	// 根據《知網》詞典各個項的最大字符數
	// 建立《知網》數據庫的表dict的庫結構
	// 上述各個項的最大字符數對應數據庫各個字段的長度
	build_hownet_dictstru(hownet_database_file,max_line_len);

	build_hownet_dict(hownet_txt_file,hownet_database_file);
}


//////////////////////////////////////////////////////
// 建立表dict,存放《知網》的雙語知識詞典
//////////////////////////////////////////////////////
void CDlgCreate::build_database(CString hownet_database_file)
{
	// 建立《知網》數據庫的庫結構
	// 只是建立一個空庫

	if (exist_file(hownet_database_file))
	{
		CString msg;
		msg.Format("文件 %s 已經存在,要覆蓋它嗎?",hownet_database_file);
		int answer=MessageBox(msg,"覆蓋已經存在的文件嗎?",MB_ICONQUESTION|MB_YESNO);
		if (answer==IDYES)
		{
			if (remove(hownet_database_file) != 0)
			{
				MessageBox("不能刪除該文件","提示",MB_ICONINFORMATION);
				return;
			}
		}
		else
			return;
	}

	CDaoDatabase myDatabase;
	myDatabase.Create(hownet_database_file);
	myDatabase.Close();

}


/////////////////////////////////////////////
//	選定一個文件夾,返回其名稱
//////////////////////////////////////////////
void CDlgCreate::get_path(CString &my_path)
{
	BROWSEINFO bi;	//文件夾瀏覽結構
	char dispname[MAX_PATH],path[MAX_PATH];
	ITEMIDLIST *pidl;
	//初始化bi
	bi.hwndOwner=0;
	bi.pidlRoot=0;
	bi.pszDisplayName=dispname;
	bi.lpszTitle="請選擇文件操作所在的目錄:";
	bi.ulFlags=BIF_RETURNONLYFSDIRS;
	bi.lpfn=0;
	bi.lParam=0;
	bi.iImage=0;

	//彈出文件夾窗口,并選取目錄
	if (pidl=SHBrowseForFolder(&bi))
	{
		SHGetPathFromIDList(pidl,path);	//取得目錄信息
		my_path=path;
		UpdateData(FALSE);
	}

	if (my_path=="")
		return;
	else if (my_path.GetAt(my_path.GetLength()-1)=='\\' && 
			 my_path.GetAt(my_path.GetLength()-2)!=':')
		my_path=my_path.Left(my_path.GetLength()-1);

	return;
}


////////////////////////////////////////////////////
// 把路徑名和文件名合成全路徑文件名
////////////////////////////////////////////////////
void CDlgCreate::merge_path_name(CString Path, CString Name, CString &FullName)
{
	FullName=Path;
	if (Path.GetAt(Path.GetLength()-1)!='\\')
		FullName+="\\";
	FullName+=Name;
}


//////////////////////////////////////////////////////
// 建立表entity,存放《知網》的entity層次體系
//////////////////////////////////////////////////////
int CDlgCreate::build_entity(CString entity_txt_file, CString hownet_database_file, int &i_max_entity_name_len)
{

	int i_e_read_pointer;
	struct fieleds_len entity_fields_len;

	//	建立名詞entity層次樹
	i_e_read_pointer=-1;
	i_e_read_pointer=e_build_layer_tree(entity_txt_file,E_NODE,MAX_EVENT_NUMBER,entity_fields_len);
	if (i_e_read_pointer==-1)
		return -1;

	//輸出建立的名詞entity層次樹到數據庫中
	int i_to_database=e_put_layer_tree_to_database(hownet_database_file,E_NODE,i_e_read_pointer,entity_fields_len);
	if (i_e_read_pointer==-1)
		return -1;

	i_max_entity_name_len=entity_fields_len.len_name;

	return 0;

}


////////////////////////////////////////////////
//
//	建立名詞entity義原層次結構樹
//
////////////////////////////////////////////////
int CDlgCreate::e_build_layer_tree(CString FileName,entity_tree *NODE,int max_read_number,struct fieleds_len &entity_fields_len)
{	
	//定義后進先出棧
	int STACK[MAX_ENTITY_LAYER];	//里面存放的是節點在NODE[]中的位置
	//定義節點的指針(只是一些數,指示節點的位置)
	int i_read_pointer;
	//定義棧的指針
	int i_stack_pointer;


	// 初始化entity_fields_len
	entity_fields_len.len_name=0;
	entity_fields_len.len_attr=0;
	entity_fields_len.len_order=4;
	entity_fields_len.len_layer=4;
	entity_fields_len.len_parent=4;
	entity_fields_len.len_son=4;
	entity_fields_len.len_brother=4;

	//打開選定的文件
	CStdioFile inFile;
	if (!inFile.Open(FileName,CFile::modeRead))
	{
		CString TempStr;
		TempStr.Format("%s%s","無法讀取文件:",FileName);
		AfxMessageBox(TempStr);
		return -1;
	}

	//一行行地讀取文件直到文件結束
	i_read_pointer=0;
	i_stack_pointer=-1;

	char s[MAX_LINE_LEN];	//定義s存放讀入的字符串,這里MAX_LINE_LEN是一個預先定
							//義的常量,一行的最大允許字符的個數
	while(inFile.ReadString(s,MAX_LINE_LEN))
	{
		char *p=s+strlen(s)-1;		
		while (p>s && isspace(*p))
			p--;
		if (p<=s)
			s[0]='\0';
		if (strlen(s)==0)
				continue;

			//節點賦初值
			CString entity_name="",entity_role="";
			get_name_attr(s,entity_name,entity_role);
			del_englidh_info(entity_name);
			del_englidh_info(entity_role);
			if (entity_name.GetLength()>entity_fields_len.len_name)
				entity_fields_len.len_name=entity_name.GetLength();
			if (entity_role.GetLength()>entity_fields_len.len_attr)
				entity_fields_len.len_attr=entity_role.GetLength();

			NODE[i_read_pointer].entity_name=entity_name;
			NODE[i_read_pointer].entity_attr=entity_role;
			if (NODE[i_read_pointer].entity_name=="")
				NODE[i_read_pointer].entity_name="*";
			if (NODE[i_read_pointer].entity_attr=="")
				NODE[i_read_pointer].entity_attr="*";
			NODE[i_read_pointer].order=i_read_pointer;
			NODE[i_read_pointer].son=-1;
			NODE[i_read_pointer].brother=-1;
			NODE[i_read_pointer].parent=-1;
			//確定節點的層次
			NODE[i_read_pointer].layer=get_layer(s);
			if (NODE[i_read_pointer].layer<0)
			{
				CString msg;
				msg.Format("建立層次樹的時候出了問題,請檢查源文件\n%s 第 %d 行",FileName,i_read_pointer+1);
				MessageBox(msg);
				return -1;
			}

			//建立動詞義原層次樹
			if (i_stack_pointer==-1)	//如果棧為空,剛讀到的節點是根節點
			{
				NODE[i_read_pointer].layer=0;
				i_stack_pointer=0;
				STACK[i_stack_pointer]=NODE[i_read_pointer].order;
			}
			else	//剛讀到的節點不是根節點,要入棧
			{
				//如果是棧頂節點的層次大于當前節點的層次
				//那么應該退棧,直到前者小與或者等于后者
				while (NODE[STACK[i_stack_pointer]].layer>NODE[i_read_pointer].layer)
				{
					i_stack_pointer--;
					if (i_stack_pointer<0)
					{
						CString msg;
						msg.Format("建立層次樹的時候出了問題,請檢查源文件\n%s 第 %d 行",FileName,i_read_pointer+1);
						MessageBox(msg);
						return -1;
					}
				}
				
				
				if (NODE[STACK[i_stack_pointer]].layer==NODE[i_read_pointer].layer)	
					//棧頂節點與當前節點是兄弟關系
				{

					NODE[STACK[i_stack_pointer]].brother=NODE[i_read_pointer].order;
					NODE[i_read_pointer].parent=NODE[STACK[i_stack_pointer]].parent;
					STACK[i_stack_pointer]=NODE[i_read_pointer].order;
				}
				else if (NODE[STACK[i_stack_pointer]].layer==NODE[i_read_pointer].layer-1)
					//棧頂節點與當前節點是父子關系
				{
					NODE[i_read_pointer].parent=STACK[i_stack_pointer];
					NODE[STACK[i_stack_pointer]].son=NODE[i_read_pointer].order;

					i_stack_pointer++;
					STACK[i_stack_pointer]=NODE[i_read_pointer].order;
				}
				else
				{
					CString msg;
					msg.Format("建立層次樹的時候出了問題,請檢查源文件\n%s 第 %d 行",FileName,i_read_pointer+1);
					MessageBox(msg);
					return -1;
				}
			}
	

			i_read_pointer++;
			if (i_read_pointer>=max_read_number)
			{
					CString msg;
					msg.Format("建立層次樹的時候出了問題,源文件\n%s 行數太多,預留數組空間不足",FileName);
					MessageBox(msg);
					return -1;
			}
	}
	inFile.Close();
	return i_read_pointer;
}


///////////////////////////////////////////////
//
//	把名詞entity實體層次樹填入數據庫的entity表
//
///////////////////////////////////////////////
int CDlgCreate::e_put_layer_tree_to_database(CString FileName_out, struct entity_tree *NODE,int i_write_pointer,struct fieleds_len entity_fields_len)
{
	// 建立表entity
	build_hownet_entitystru(FileName_out,entity_fields_len);

	// 打開數據庫FileName_out
	CDaoDatabase myDatabase;
	myDatabase.Open(FileName_out);

	// 打開存放entity層次關系的表entity
	CDaoTableDef *pTable;
	pTable=new CDaoTableDef(&myDatabase);
	pTable->Open("entity");

	// 對應表dict打開記錄集
	CDaoRecordset *pRec;
	pRec=new CDaoRecordset(&myDatabase);
	pRec->Open(pTable);

	//輸出建立的entity層次樹導數據庫的表entity
	struct record
	{
		CString COrder;
		CString CName;
		CString CAttr;
		CString CLayer;
		CString CParent;
		CString CSon;
		CString CBrother;
	}REC;

	COleVariant cole_order;
	COleVariant cole_name(REC.CName,VT_BSTRT);
	COleVariant cole_attr(REC.CAttr,VT_BSTRT);
	COleVariant cole_layer;
	COleVariant cole_parent;
	COleVariant cole_son;
	COleVariant cole_brother;
	
	for (int i=0;i<i_write_pointer;i++)
	{
		pRec->AddNew();

		cole_order=(long)NODE[i].order;
		pRec->SetFieldValue("序號",cole_order);

		REC.CName.Format("%s",NODE[i].entity_name);
		cole_name.SetString(REC.CName,VT_BSTRT);
		pRec->SetFieldValue("名稱",cole_name);

		REC.CAttr.Format("%s",NODE[i].entity_attr);
		cole_attr.SetString(REC.CAttr,VT_BSTRT);
		pRec->SetFieldValue("屬性",cole_attr);

		cole_layer=(long)NODE[i].layer;
		pRec->SetFieldValue("層次",cole_layer);

		cole_parent=(long)NODE[i].parent;
		pRec->SetFieldValue("父親",cole_parent);

		cole_son=(long)NODE[i].son;
		pRec->SetFieldValue("兒子",cole_son);

		
		cole_brother=(long)NODE[i].brother;
		pRec->SetFieldValue("兄弟",cole_brother);

		pRec->Update();

	}
	pRec->Close();
	delete pRec;
	pTable->Close();	
	delete pTable;
	myDatabase.Close();


/*
	//輸出建立的層次樹之二-----調試程序
	CString FileName_out2=FileName_out+".txt";
	CStdioFile outFile;
	if (!outFile.Open(FileName_out2,CFile::modeCreate|CFile::modeWrite))
	{
		CString TempStr;
		TempStr.Format("%s%s","無法創建文件:",FileName_out2);
		AfxMessageBox(TempStr);
		return -1;
	}
	for (int k=0;k<i_write_pointer;k++)
	{
			CString s_wr="";
			for(int j=0;j<NODE[k].layer*3+2;j++)
				s_wr+=" ";
			s_wr+=NODE[k].entity_name;
			s_wr+="    ";
			s_wr+=NODE[k].entity_attr;
			s_wr+="\n";
			outFile.WriteString(s_wr);
	}
	outFile.Close();
*/
	return 0;
}


////////////////////////////////////////////
//
//	 獲得名詞義原entity的名字和性質
//
////////////////////////////////////////////
void CDlgCreate::get_name_attr(char *str,CString &entity_name,CString &entity_role)
{

	entity_name=entity_role="";
	
	char *p,*q;
	char fetch_str[MAX_LINE_LEN];

	p=str;
	
	//定位到第一個英文字母
	while (*p && !(isascii(*p) && isalpha(*p)))
	{
		if (!isascii(*p))
			p++;
		p++;
	}
	if (*p=='\0')
		return;

	//開始拷貝動詞義原的名字
	q=fetch_str;
	while (*p && !(isascii(*p) && isspace(*p)))
	{
		if (!isascii(*p))
			*q++=*p++;
		*q++=*p++;
	}
	*q='\0';
	entity_name=fetch_str;

	//定位到第一個"["
	while (*p && *p!='[')
	{
		if (!isascii(*p))
			p++;
		p++;
	}

	if (*p=='\0')
		return;
	p++;

	//開始拷貝名詞屬性
	q=fetch_str;
	while (*p && *p!=']')
	{
		if (!isascii(*p))
			*q++=*p++;
		*q++=*p++;
	}
	*q='\0';
	entity_role=fetch_str;
}


//////////////////////////////////////////////////////
//刪除DEF中的英文信息
//////////////////////////////////////////////////////
void CDlgCreate::del_englidh_info(CString & def_info)
{
	char new_info[MAX_LEN],*p=new_info;
	for(int i=0;i<def_info.GetLength();i++)
	{
		char ch=def_info.GetAt(i);
		if (isascii(ch))
		{
			if (isalpha(ch) && !eq_after_it(def_info,i) || '|'==ch)
				continue;
			else
				*p++=ch;
		}
		else
		{
			*p++=ch;
			if (i<def_info.GetLength()-1)
				*p++=def_info.GetAt(++i);
		}

	}
	*p='\0';
	def_info=new_info;
}


////////////////////////////////////////////
//
//	 獲得節點的層次
//
////////////////////////////////////////////
int CDlgCreate::get_layer(char *str)
{

	char *p=str;
	
	//定位到第一個英文字母

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美在线另类| 欧美福利视频导航| 丝袜诱惑亚洲看片| 国产精品美女久久福利网站| 欧美日韩中文一区| 国产宾馆实践打屁股91| 免费xxxx性欧美18vr| 亚洲精选一二三| 国产午夜精品福利| 日韩视频一区二区| 欧美三级欧美一级| 91美女片黄在线观看| 国产一区二区女| 蜜臀av性久久久久蜜臀aⅴ四虎| 中文字幕一区二区不卡| 精品久久国产老人久久综合| 欧美日韩在线综合| 色综合久久久久久久| 成人手机电影网| 国产一区二区在线看| 日韩高清在线不卡| 亚洲成人自拍偷拍| 亚洲综合一二区| 一区二区三区高清在线| 亚洲视频免费观看| 国产精品福利一区| 国产亚洲欧美日韩日本| 久久久亚洲高清| 欧美精品一区二区久久久| 欧美一区二区福利视频| 7777精品伊人久久久大香线蕉完整版| 91免费视频网| 色综合中文字幕国产 | 在线不卡的av| 在线免费观看一区| 91美女蜜桃在线| 99久久er热在这里只有精品15| 成人综合激情网| 成人综合激情网| 成人国产精品视频| 99热99精品| 91美女片黄在线观看| 91丨九色porny丨蝌蚪| 一本色道a无线码一区v| 91小视频在线| 欧美亚洲综合另类| 欧美日韩视频在线一区二区| 欧美日韩国产成人在线91| 欧美日韩成人综合天天影院| 欧美日韩国产美| 日韩美一区二区三区| 欧美va亚洲va香蕉在线| 久久一日本道色综合| 亚洲国产精品国自产拍av| 国产精品欧美综合在线| 亚洲手机成人高清视频| 一区二区欧美精品| 日本不卡视频在线| 国产一区美女在线| jiyouzz国产精品久久| 91黄色小视频| 91精品视频网| 久久精品一区二区三区不卡| 国产精品电影一区二区| 亚洲综合男人的天堂| 五月天网站亚洲| 韩国成人精品a∨在线观看| 国产成人自拍网| 日本韩国欧美在线| 日韩欧美在线不卡| 欧美国产成人在线| 五月婷婷色综合| 国产激情视频一区二区三区欧美| 99久久国产综合精品女不卡 | 久久精品综合网| 亚洲激情图片qvod| 久久精品国产秦先生| av在线不卡网| 日韩免费高清av| 亚洲女同一区二区| 精品影院一区二区久久久| 99精品视频在线播放观看| 777色狠狠一区二区三区| 中日韩av电影| 天天色天天操综合| 国产福利精品一区| 欧美影视一区在线| 日韩一区二区三区免费看| 国产欧美日韩精品一区| 国产校园另类小说区| 亚洲精品午夜久久久| 日韩电影免费在线| 国产aⅴ综合色| 欧美视频精品在线| 国产日韩欧美精品在线| 一区二区三区丝袜| 加勒比av一区二区| 色婷婷久久久亚洲一区二区三区| 538prom精品视频线放| 国产喷白浆一区二区三区| 香蕉成人伊视频在线观看| 日本特黄久久久高潮| 色久优优欧美色久优优| 精品国产成人系列| 亚洲自拍偷拍麻豆| 国产不卡视频一区| 51精品秘密在线观看| 中文av一区二区| 国产乱码精品一品二品| 欧美日韩极品在线观看一区| 国产日韩一级二级三级| 日本欧美大码aⅴ在线播放| 夫妻av一区二区| 欧美成人综合网站| 亚洲精品成a人| 91热门视频在线观看| 久久综合九色综合欧美98| 亚洲大型综合色站| 色又黄又爽网站www久久| 久久久亚洲精华液精华液精华液 | 一级特黄大欧美久久久| 高清在线成人网| 欧美成人bangbros| 丝袜美腿一区二区三区| 91亚洲精品乱码久久久久久蜜桃| 精品噜噜噜噜久久久久久久久试看| 亚洲高清三级视频| 在线观看亚洲精品| 国产精品久久久久久久久免费丝袜| 麻豆久久久久久| 91精品欧美一区二区三区综合在| 伊人开心综合网| 岛国精品一区二区| 精品国产123| 免费成人av在线播放| 911精品国产一区二区在线| 一区二区三区高清不卡| 99久久免费视频.com| 久久综合给合久久狠狠狠97色69| 日本vs亚洲vs韩国一区三区二区| 欧洲另类一二三四区| 亚洲视频一区在线观看| 成人av在线资源| 国产精品毛片无遮挡高清| 国产宾馆实践打屁股91| 久久精品视频一区二区| 国产毛片精品国产一区二区三区| 欧美精品一区二区在线播放 | 夜夜精品视频一区二区| av资源网一区| 亚洲一区二区av在线| 欧美性色综合网| 亚洲国产毛片aaaaa无费看| 色综合久久综合中文综合网| 中文字幕一区二区三区精华液| 91蜜桃网址入口| 亚洲一区二区在线免费看| 欧美日韩国产一级二级| 亚洲欧美日韩国产一区二区三区 | 51午夜精品国产| 美日韩一区二区三区| 精品电影一区二区| 狠狠久久亚洲欧美| 亚洲色图丝袜美腿| 色婷婷综合激情| 亚洲成人av福利| 欧美成人在线直播| 国产成人精品免费看| 日韩精品一区二区在线观看| 国产.精品.日韩.另类.中文.在线.播放| 国产亚洲一区二区在线观看| 99久久久久久| 亚洲在线免费播放| 日韩午夜在线播放| 蜜桃视频第一区免费观看| 日本一区二区三区电影| 色婷婷av一区二区三区gif| 日韩国产在线观看一区| 久久婷婷久久一区二区三区| 国产成人精品影院| 五月天欧美精品| 国产午夜精品一区二区| 97精品超碰一区二区三区| 亚洲小说春色综合另类电影| 日韩一级片在线播放| 成人av电影在线网| 亚洲成av人片在www色猫咪| 7777精品久久久大香线蕉| 国产麻豆成人精品| 亚洲精品欧美二区三区中文字幕| 91黄色免费观看| 国产高清久久久| 亚洲一区二区四区蜜桃| 欧美本精品男人aⅴ天堂| av在线这里只有精品| 日本成人在线视频网站| 中文乱码免费一区二区| 在线观看91精品国产麻豆| 国产suv一区二区三区88区| 免费观看在线综合|