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

📄 ruledefineview.cpp

📁 实现规则推理 模糊识别 神经网络的专家系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// RuleDefineView.cpp : implementation file
//

#include "stdafx.h"
#include "AcquireKlg.h"
#include "AcquireKlgDoc.h"
#include "MainFrm.h"
//四个视图类头文件
#include "RuleDefineView.h"
#include "NodeTreeView.h"
#include "RuleWizardView.h"
#include "TipView.h"

#include "Global.h"

#include <math.h>







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

extern int nCurStyle;
extern CADODatabase GlDataBase;

/////////////////////////////////////////////////////////////////////////////
// CRuleDefineView

IMPLEMENT_DYNCREATE(CRuleDefineView, CFormView)

CRuleDefineView::CRuleDefineView()
	: CFormView(CRuleDefineView::IDD),m_RecordSet(&GlDataBase),m_RecordSetfun(&GlDataBase),m_cBlurPage(this)//,m_MHDialog(this)
{


	//{{AFX_DATA_INIT(CRuleDefineView)
	//}}AFX_DATA_INIT
}

CRuleDefineView::~CRuleDefineView()
{
}

void CRuleDefineView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRuleDefineView)
	DDX_Control(pDX, IDC_TAB_4SHEETS, m_cTabSheets);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRuleDefineView, CFormView)
	//{{AFX_MSG_MAP(CRuleDefineView)
	ON_WM_CREATE()
	ON_WM_LBUTTONDOWN()
	ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_4SHEETS, OnSelchangeTab4sheets)
	ON_BN_CLICKED(IDC_BUTTON_NEW, OnButtonNew)
	ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave)
	ON_EN_KILLFOCUS(IDC_EDIT_REGRULE, OnKillfocusEditRegrule)
	ON_BN_CLICKED(IDC_BUTTON_LAST, OnButtonLast)
	ON_BN_CLICKED(IDC_BUTTON_NEXT, OnButtonNext)
	ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)



	
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRuleDefineView diagnostics

#ifdef _DEBUG
void CRuleDefineView::AssertValid() const
{
	CFormView::AssertValid();
}

void CRuleDefineView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CRuleDefineView message handlers

//////////////////自定义函数////////////////////////////////////////////////
//获得指定的视图类指针
CView* CRuleDefineView::GetView(CRuntimeClass* pClass) 
{ 
	CAcquireKlgDoc* pDoc=(CAcquireKlgDoc*)GetDocument();
	ASSERT(pDoc);
	CView* pView = NULL; 
	POSITION pos=pDoc->GetFirstViewPosition(); 
	while(pos!=NULL){ 
		pView=pDoc->GetNextView(pos); 
		if(pView->IsKindOf(pClass)) 
			break;
	} 
	if(!pView->IsKindOf(pClass)){ 
		AfxMessageBox("Can't Locate the View."); 
		return NULL;
	} 
	return pView;
} 

bool CRuleDefineView::SetCorMenu(int index){

	m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_REGRULE,MF_UNCHECKED);
	m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_BLURRULE,MF_UNCHECKED);
	m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_MERGE,MF_UNCHECKED);
	m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_NETWORK,MF_UNCHECKED);

	if(index==1)
		m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_REGRULE,MF_CHECKED);
	else if (index==2)
    	m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_BLURRULE,MF_CHECKED);
	else if (index==3)
    	m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_MERGE,MF_CHECKED);
	else if (index==4)
    	m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_NETWORK,MF_CHECKED);
	else
		return false;
	return true;
	
		


	
};
//
CString CRuleDefineView::getid(){
	CString strid;
	GetDlgItemText(IDC_EDIT_ORDER,strid);
	return strid;
}

//在最上4个编辑框中显示结点的基本信息
bool CRuleDefineView::SetBasicInfo(CString strObjname,CString strNodename,int levelnum,int nodeorder){
 
	SetDlgItemText(IDC_EDIT_OBJNAME,strObjname);
	SetDlgItemText(IDC_EDIT_NODENAME,strNodename);
	SetDlgItemInt(IDC_EDIT_LEVEL,levelnum);
	SetDlgItemInt(IDC_EDIT_ORDER,nodeorder);

	return true;

}

//获取选中结点的所有精确推理规则
void CRuleDefineView::GetRegRules(){
	int nodenum = m_pNtView->GetNodeID();
	if(nodenum == ERR_NOSELETED) return;
	CString strQuery;
	strQuery.Format("select * from Rule_Table where NodeSN=%d",nodenum);
	m_RecordSet.SetQuery(strQuery);
	if(TRUE == m_RecordSet.Open()){	
		if(0 == m_RecordSet.GetRecordCount())
			m_RecordSet.Close();
	}

}

//获取选中结点的所有模糊推理规则
void CRuleDefineView::GetBlurRules(){
	int nodenum = m_pNtView->GetNodeID();
	if(nodenum == ERR_NOSELETED) return;
	CString strQuery;
	strQuery.Format("select * from blur_rule_table where nodesn=%d",nodenum);
	m_RecordSet.SetQuery(strQuery);
	if(TRUE == m_RecordSet.Open()){	
		if(0 == m_RecordSet.GetRecordCount())
			m_RecordSet.Close();
	}
	
}
//获取选中结点的所有融合推理规则
void CRuleDefineView::GetFuseRules(){
	int nodenum = m_pNtView->GetNodeID();
	if(nodenum == ERR_NOSELETED) return;
	CString strQuery;
	strQuery.Format("select * from Fuse_Rule_Table where nodesn=%d",nodenum);
	m_RecordSet.SetQuery(strQuery);
	if(TRUE == m_RecordSet.Open()){	
		if(0 == m_RecordSet.GetRecordCount())
			m_RecordSet.Close();
	}
	
}
//获取选中结点的所有传感器权值
/*void CRuleDefineView::GetWeight(){
	int nodenum = m_pNtView->GetNodeID();
	if(nodenum == ERR_NOSELETED) return;
	CString strQuery;
	strQuery.Format("select * from Fuse_Rule_Table where nodesn=%d",nodenum);
	m_RecordSet.SetQuery(strQuery);
	if(TRUE == m_RecordSet.Open()){	
		if(0 == m_RecordSet.GetRecordCount())
			m_RecordSet.Close();
	}
	
}*/

//获取选中结点的所有模糊函数
void CRuleDefineView::GetBlurFun(){
	int nodenum = m_pNtView->GetNodeID();
	if(nodenum == ERR_NOSELETED) return;
	CString strQuery;
	strQuery.Format("select * from rule_unit_sub_table where nodesn=%d",nodenum);
	m_RecordSetfun.SetQuery(strQuery);
	if(TRUE == m_RecordSetfun.Open()){	
		if(0 == m_RecordSetfun.GetRecordCount())
			m_RecordSetfun.Close();
	}
	
}
//获取选中结点的当前模糊函数
void CRuleDefineView::GetCurBlurFun(){
	int nodenum = m_pNtView->GetNodeID();
	int funnum=m_cBlurPage.m_cmFunType.GetCurSel()+1;
	if(nodenum == ERR_NOSELETED) return;
	CString strQuery;
	strQuery.Format("select * from rule_unit_sub_table where nodesn=%d and busfun=%d",nodenum,funnum);
	m_RecordSetfun.SetQuery(strQuery);
	if(TRUE == m_RecordSetfun.Open()){	
		if(0 == m_RecordSetfun.GetRecordCount())
			m_RecordSetfun.Close();
	}
	
}
//svefunDlg获取选中结点的当前模糊函数
void CRuleDefineView::GetCurFun(){
	int nodenum = m_pNtView->GetNodeID();
	int funnum=m_csavefunDlg.m_cmFunType.GetCurSel()+1;
	if(nodenum == ERR_NOSELETED) return;
	CString strQuery;
	strQuery.Format("select * from rule_unit_sub_table where nodesn=%d and busfun=%d",nodenum,funnum);
	m_RecordSetfun.SetQuery(strQuery);
	if(TRUE == m_RecordSetfun.Open()){	
		if(0 == m_RecordSetfun.GetRecordCount())
			m_RecordSetfun.Close();
	}
	
}
//显示一个值
bool CRuleDefineView::ShowRule(){
//m_MHDialog.SetDlgItemText(IDC_EDIT1,"大苏打");
return true;
}

//
//显示一条完整的精确规则
bool CRuleDefineView::ShowRegRules(){
	
	CString strregordernum, strname,strrule,strresult,strrelibility,strdescribe,strQuery;
	
	if(m_RecordSet.IsOpen()==false||m_RecordSet.IsEOF()){
		m_cRegPage.SetDlgItemText(IDC_EDIT_REG_ORDERNUM,"");
		m_cRegPage.SetDlgItemText(IDC_EDIT_REGRULENAME,"");	
		m_cRegPage.SetDlgItemText(IDC_EDIT_REGRULE,"");
		m_cRegPage.SetDlgItemText(IDC_COMBO_outnode,"");
		//m_cRegPage.SetDlgItemText(IDC_EDIT_RELIEBILITY,"");
		m_cRegPage.SetDlgItemText(IDC_EDIT_DESCRIBE,"");
		return false;
		
	}
	//规则序号,结点号,规则名,规则内容,规则输出结点,规则可信度,规则描述
	m_RecordSet.GetFieldValue("RuleSN",strregordernum);
	m_RecordSet.GetFieldValue("RName",strname);
	m_RecordSet.GetFieldValue("RContent",strrule);
	m_RecordSet.GetFieldValue("OutNode",strresult);
//	m_RecordSet.GetFieldValue("规则可信度",strrelibility);
	m_RecordSet.GetFieldValue("RMemo",strdescribe);

	m_cRegPage.SetDlgItemText(IDC_EDIT_REG_ORDERNUM,strregordernum);
	m_cRegPage.SetDlgItemText(IDC_EDIT_REGRULENAME,strname);	
	m_cRegPage.SetDlgItemText(IDC_EDIT_REGRULE,strrule);
	m_cRegPage.SetDlgItemText(IDC_COMBO_outnode,strresult);
	//m_cRegPage.SetDlgItemText(IDC_EDIT_RELIEBILITY,strrelibility);
	m_cRegPage.SetDlgItemText(IDC_EDIT_DESCRIBE,strdescribe);

	return true;
}

//显示一条完整的融合规则
bool CRuleDefineView::ShowFuseRules(){
	
	CString strrhgzxh, strrhgzm,strrhgznr,strrhgzlx,strjdgs,strcgqgs,strxzxsk,strrhyz;
	int irhgzlx;
	if(m_RecordSet.IsOpen()==false||m_RecordSet.IsEOF()){
		m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhxh,"");
		m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhm,"");	
		m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhnr,"");
		m_cBlurMergePage.SetDlgItemText(IDC_COMBO_rhlx,"");
		m_cBlurMergePage.SetDlgItemText(IDC_EDIT_jdgs,"");
		m_cBlurMergePage.SetDlgItemText(IDC_EDIT_cgqgs,"");
		m_cBlurMergePage.SetDlgItemText(IDC_EDIT_xzxs,"");
		m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhyz,"");
		return false;
		
	}
	//规则序号,结点号,规则名,规则内容,规则类型,规则结点个数,规则传感器个数,修正系数
	m_RecordSet.GetFieldValue("FRsn",strrhgzxh);
	m_RecordSet.GetFieldValue("FRname",strrhgzm);
	m_RecordSet.GetFieldValue("FRContent",strrhgznr);
	m_RecordSet.GetFieldValue("FRType",irhgzlx);
	m_RecordSet.GetFieldValue("NodeC",strjdgs);
	m_RecordSet.GetFieldValue("SensorC",strcgqgs);
	m_RecordSet.GetFieldValue("Revise",strxzxsk);
	m_RecordSet.GetFieldValue("Svalue",strrhyz);

	m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhxh,strrhgzxh);
	m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhm,strrhgzm);	
	m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhnr,strrhgznr);
	m_cBlurMergePage.SetFuseTypeCurSel(irhgzlx);
	m_cBlurMergePage.SetDlgItemText(IDC_COMBO_rhlx,strrhgzlx);
	m_cBlurMergePage.SetDlgItemText(IDC_EDIT_jdgs,strjdgs);
	m_cBlurMergePage.SetDlgItemText(IDC_EDIT_cgqgs,strcgqgs);
	m_cBlurMergePage.SetDlgItemText(IDC_EDIT_xzxs,strxzxsk);
	m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhyz,strrhyz);
	m_cBlurMergePage.SetDlgItemText(IDC_EDIT_cgqqk,"单击按钮输入->");
	m_cBlurMergePage.SetDlgItemText(IDC_EDIT_mhhsqk,"单击按钮输入->");
	return true;
}

//显示一条完整的模糊规则
bool CRuleDefineView::ShowBlurRules(){
	
	CString strblurorder,//模糊规则序号
		strblurname,//模糊规则名
		strrule,//模糊规则内容
		stroutnode,//输出结点号
		stryz;//阈值

	if(m_RecordSet.IsOpen()==false||m_RecordSet.IsEOF()){
		m_cBlurPage.SetDlgItemText(IDC_EDIT_BLUR_ORDER,"");
		m_cBlurPage.SetDlgItemText(IDC_EDIT_BLURNAME,"");	
		m_cBlurPage.SetDlgItemText(IDC_EDIT_BLURDESCRIBE,"");
		m_cBlurPage.SetDlgItemText(IDC_COMBO_outnode,"");
		m_cBlurPage.SetDlgItemText(IDC_EDIT_yz,"");

		return false;
		
	}

	
    

	m_RecordSet.GetFieldValue("brulesn",strblurorder);
	m_RecordSet.GetFieldValue("BRname",strblurname);
	m_RecordSet.GetFieldValue("BRContent",strrule);
	m_RecordSet.GetFieldValue("outnode",stroutnode);
	m_RecordSet.GetFieldValue("svalue",stryz);

    m_cBlurPage.SetDlgItemText(IDC_EDIT_BLUR_ORDER,strblurorder);
	m_cBlurPage.SetDlgItemText(IDC_EDIT_BLURNAME,strblurname);
	m_cBlurPage.SetDlgItemText(IDC_EDIT_BLURDESCRIBE,strrule);
	m_cBlurPage.SetDlgItemText(IDC_COMBO_outnode,stroutnode);
	m_cBlurPage.SetDlgItemText(IDC_EDIT_yz,stryz);

	return true;
}

//显示一条完整的模糊函数
bool CRuleDefineView::ShowBlurFun(){
	
	int	nlshsType;//隶属函数类型
	CString	strtezhengzhi,//特征值
		strtjcs,//调节参数
		strljxpc,//左极限偏差
		strrjxpc,//右极限偏差
		strlrc,//左容差
		strrrc;//右容差
   

	if(m_RecordSetfun.IsOpen()==false||m_RecordSetfun.IsEOF()){
		
		//m_cBlurPage.SetDlgItemText(IDC_COMBO_DATATYPE,"");
		m_cBlurPage.SetDlgItemText(IDC_COMBO_FUNTYPE,"");
		m_cBlurPage.SetDlgItemText(IDC_EDIT_TEZHEZHI,"");
		m_cBlurPage.SetDlgItemText(IDC_EDIT1_TJPARA,"");
		m_cBlurPage.SetDlgItemText(IDC_EDIT1_LJXPC,"");	
	 	m_cBlurPage.SetDlgItemText(IDC_EDIT_RJXPC,"");	
	 	m_cBlurPage.SetDlgItemText(IDC_EDIT_LRONGCHA,"");
		m_cBlurPage.SetDlgItemText(IDC_EDIT_RRONGCHA,"");
		return false;
		
	}


	m_RecordSetfun.GetFieldValue("busfun",nlshsType);
	m_cBlurPage.SetFuncTypeCurSel(nlshsType);
    if(nlshsType == 1){
		m_cBlurPage.SetZhenTai();
		m_RecordSetfun.GetFieldValue("Para1",strtezhengzhi);
		m_cBlurPage.SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);

		m_RecordSetfun.GetFieldValue("Para2",strtjcs);
		m_cBlurPage.SetDlgItemText(IDC_EDIT1_TJPARA,strtjcs);
    }

    else if(nlshsType == 2){
		m_cBlurPage.SetSanJiao();
		m_RecordSetfun.GetFieldValue("Para1",strtezhengzhi);
		m_cBlurPage.SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);

		m_RecordSetfun.GetFieldValue("Para2",strljxpc);
		m_cBlurPage.SetDlgItemText(IDC_EDIT1_LJXPC,strljxpc);

		m_RecordSetfun.GetFieldValue("Para3",strrjxpc);
		m_cBlurPage.SetDlgItemText(IDC_EDIT_RJXPC,strrjxpc);
    }

	else if (nlshsType == 3){
		m_cBlurPage.SetTiXing();

		m_RecordSetfun.GetFieldValue("Para1",strtezhengzhi);
		m_cBlurPage.SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);

		m_RecordSetfun.GetFieldValue("Para2",strljxpc);
		m_cBlurPage.SetDlgItemText(IDC_EDIT1_LJXPC,strljxpc);

⌨️ 快捷键说明

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