⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 knowledgedb.cpp

📁 智能学习,对话系统!非常好用! 使用vc实现的
💻 CPP
字号:
// KnowledgeDB.cpp: implementation of the CKnowledgeDB class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "WiseBoy.h"
#include "KnowledgeDB.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

#include "SysMod.h"
#include "AdoDB.h"
#include "SentenceCommon.h"

#define KNOWLEDGEDB_FILENAME  "WiseBoyKnowledge.mdb"


CKnowledgeDB::CKnowledgeDB()
{

}

CKnowledgeDB::~CKnowledgeDB()
{

}

BOOL CKnowledgeDB::Open()
{
	if (m_pConn != NULL)
		return TRUE;

	CString strFileName;
	strFileName = GetAppPath() + "\\" + KNOWLEDGEDB_FILENAME;

	CString strPWD = "xlswiseboy";

	return OpenAccessDB(strFileName,strPWD);		
}

BOOL CKnowledgeDB::Close()
{
	return CloseDB();
}

BOOL CKnowledgeDB::AddWord(CString strWord)
{
	if (IsWordExist(strWord))
		return TRUE;

	CString strSQL = "Insert into Word(WordName) values('" + strWord + "')";

	return Execute(strSQL);
}

BOOL CKnowledgeDB::IsWordExist(CString strWord)
{
	CString strSQL = "Select * from Word where WordName = '" + strWord + "'";

	_RecordsetPtr pRcd = ExecuteRec(strSQL);

	if (pRcd == NULL)
		return FALSE;

	BOOL bRet = FALSE;
	if (!pRcd->GetadoEOF())
		bRet = TRUE;

	pRcd->Close();

	return bRet;
}

int CKnowledgeDB::GetWordID(CString strWord)
{
	CString strSQL = "Select WordID from Word where WordName = '" + strWord + "'";

	_RecordsetPtr pRcd = ExecuteRec(strSQL);

	if (pRcd == NULL)
		return -1;

	if (pRcd->GetadoEOF())
	{
		pRcd->Close();
		return -1;
	}

	CString strWordID = GetFieldValue(pRcd,"WordID");

	int nWordID = atoi(strWordID);

	pRcd->Close();

	return nWordID;
}

CString CKnowledgeDB::GetWord(int nWordID)
{
	CString strWordID;
	strWordID.Format ("%d",nWordID);

	CString strSQL = "Select WordName from Word where WordID = " + strWordID;

	_RecordsetPtr pRcd = ExecuteRec(strSQL);

	if (pRcd == NULL)
		return "";

	if (pRcd->GetadoEOF())
	{
		pRcd->Close();
		return "";
	}

	CString strWordName = GetFieldValue(pRcd,"WordName");

	pRcd->Close();

	return strWordName;	
}

BOOL CKnowledgeDB::AddSentence(CString strSentence)
{
	if (!IsStatementSentence(strSentence))
		return TRUE;

	CString strSubject;
	CString strStatement;

	SpltSentence(strSentence,strSubject,strStatement);
	
	return AddSentence(strSubject,strStatement);
}

BOOL CKnowledgeDB::AddSentence(CString strSubject,CString strStatement)
{
	if (IsSentenceExist(strSubject,strStatement))
		return TRUE;

	AddWord(strSubject);
	AddWord(strStatement);

	int nSubID;
	int nStatID;

	nSubID = GetWordID(strSubject);
	nStatID = GetWordID(strStatement);
	
	if (nSubID < 0 || nStatID < 0)
		return FALSE;

	CString strSubID;
	CString strStatID;

	strSubID.Format ("%d",nSubID);
	strStatID.Format ("%d",nStatID);

	CString strSQL = "insert into  Sentence(SubjectID,StatementID) values(" + strSubID + "," + strStatID + ")";

	return ExecuteRec(strSQL);
}

BOOL CKnowledgeDB::IsSentenceExist(CString strSentence)
{
	if (!IsStatementSentence(strSentence))
		return TRUE;

	CString strSubject;
	CString strStatement;

	SpltSentence(strSentence,strSubject,strStatement);

	return IsSentenceExist(strSubject,strStatement);
}

BOOL CKnowledgeDB::IsSentenceExist(CString strSubject,CString strStatement)
{
	int nSubID;
	int nStatID;

	nSubID = GetWordID(strSubject);
	nStatID = GetWordID(strStatement);
	
	if (nSubID < 0 || nStatID < 0)
		return FALSE;

	CString strSubID;
	CString strStatID;

	strSubID.Format ("%d",nSubID);
	strStatID.Format ("%d",nStatID);

	CString strSQL = "Select * from Sentence where SubjectID = " + strSubID + " and StatementID = " + strStatID;

	_RecordsetPtr pRcd = ExecuteRec(strSQL);

	if (pRcd == NULL)
		return FALSE;

	if (pRcd->GetadoEOF())
	{
		pRcd->Close();
		return FALSE;
	}

	pRcd->Close();

	return TRUE;
}

int CKnowledgeDB::GetSubjectStatement(CString strSubject,CStringArray& arrayStatement)
{
	int nSubID = GetWordID(strSubject);
	if (nSubID < 0)
		return -1;

	CString strSubID;
	
	strSubID.Format ("%d",nSubID);

	CString strSQL = "select StatementID from sentence where SubjectID = " + strSubID;

	_RecordsetPtr pRcd = ExecuteRec(strSQL);

	if (pRcd == NULL)
		return -1;

	CDWordArray arrayStatID;

	while (!pRcd->GetadoEOF())
	{
		CString strStatID = GetFieldValue(pRcd,"StatementID");
		int nStatID = atoi(strStatID);
		arrayStatID.Add (nStatID);

		pRcd->MoveNext();
	}

	pRcd->Close();

	int nCount = arrayStatID.GetSize();

	for (int i=0;i<nCount;i++)
	{
		CString strStatement = GetWord(arrayStatID[i]);
		arrayStatement.Add (strStatement);
	}

	return nCount;
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -