📄 ruledefineview.cpp
字号:
m_RecordSetfun.GetFieldValue("Para3",strrjxpc);
m_cBlurPage.SetDlgItemText(IDC_EDIT_RJXPC,strrjxpc);
m_RecordSetfun.GetFieldValue("Para4",strlrc);
m_cBlurPage.SetDlgItemText(IDC_EDIT_LRONGCHA,strlrc);
m_RecordSetfun.GetFieldValue("Para5",strrrc);
m_cBlurPage.SetDlgItemText(IDC_EDIT_RRONGCHA,strrrc);
}
else if(nlshsType == 4){
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 == 5){
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);
}
return true;
}
//
//savefun显示一条完整的模糊函数
bool CRuleDefineView::ShowFun(){
int nlshsType;//隶属函数类型
CString strtezhengzhi,//特征值
strtjcs,//调节参数
strljxpc,//左极限偏差
strrjxpc,//右极限偏差
strlrc,//左容差
strrrc;//右容差
if(m_RecordSetfun.IsOpen()==false||m_RecordSetfun.IsEOF()){
//m_csavefunDlg.SetDlgItemText(IDC_COMBO_DATATYPE,"");
m_csavefunDlg.SetDlgItemText(IDC_COMBO_FUNTYPE,"");
m_csavefunDlg.SetDlgItemText(IDC_EDIT_TEZHEZHI,"");
m_csavefunDlg.SetDlgItemText(IDC_EDIT1_TJPARA,"");
m_csavefunDlg.SetDlgItemText(IDC_EDIT1_LJXPC,"");
m_csavefunDlg.SetDlgItemText(IDC_EDIT_RJXPC,"");
m_csavefunDlg.SetDlgItemText(IDC_EDIT_LRONGCHA,"");
m_csavefunDlg.SetDlgItemText(IDC_EDIT_RRONGCHA,"");
return false;
}
m_RecordSetfun.GetFieldValue("busfun",nlshsType);
m_csavefunDlg.SetFuncTypeCurSel(nlshsType);
if(nlshsType == 1){
m_csavefunDlg.SetZhenTai();
m_RecordSetfun.GetFieldValue("Para1",strtezhengzhi);
m_csavefunDlg.SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
m_RecordSetfun.GetFieldValue("Para2",strtjcs);
m_csavefunDlg.SetDlgItemText(IDC_EDIT1_TJPARA,strtjcs);
}
else if(nlshsType == 2){
m_csavefunDlg.SetSanJiao();
m_RecordSetfun.GetFieldValue("Para1",strtezhengzhi);
m_csavefunDlg.SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
m_RecordSetfun.GetFieldValue("Para2",strljxpc);
m_csavefunDlg.SetDlgItemText(IDC_EDIT1_LJXPC,strljxpc);
m_RecordSetfun.GetFieldValue("Para3",strrjxpc);
m_csavefunDlg.SetDlgItemText(IDC_EDIT_RJXPC,strrjxpc);
}
else if (nlshsType == 3){
m_csavefunDlg.SetTiXing();
m_RecordSetfun.GetFieldValue("Para1",strtezhengzhi);
m_csavefunDlg.SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
m_RecordSetfun.GetFieldValue("Para2",strljxpc);
m_csavefunDlg.SetDlgItemText(IDC_EDIT1_LJXPC,strljxpc);
m_RecordSetfun.GetFieldValue("Para3",strrjxpc);
m_csavefunDlg.SetDlgItemText(IDC_EDIT_RJXPC,strrjxpc);
m_RecordSetfun.GetFieldValue("Para4",strlrc);
m_csavefunDlg.SetDlgItemText(IDC_EDIT_LRONGCHA,strlrc);
m_RecordSetfun.GetFieldValue("Para5",strrrc);
m_csavefunDlg.SetDlgItemText(IDC_EDIT_RRONGCHA,strrrc);
}
else if(nlshsType == 4){
m_csavefunDlg.SetZhenTai();
m_RecordSetfun.GetFieldValue("Para1",strtezhengzhi);
m_csavefunDlg.SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
m_RecordSetfun.GetFieldValue("Para2",strtjcs);
m_csavefunDlg.SetDlgItemText(IDC_EDIT1_TJPARA,strtjcs);
}
else if(nlshsType == 5){
m_csavefunDlg.SetZhenTai();
m_RecordSetfun.GetFieldValue("Para1",strtezhengzhi);
m_csavefunDlg.SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
m_RecordSetfun.GetFieldValue("Para2",strtjcs);
m_csavefunDlg.SetDlgItemText(IDC_EDIT1_TJPARA,strtjcs);
}
return true;
}
//
//在编辑框中动态显示当前编辑的规则
bool CRuleDefineView::SetRegRule(CString str){
m_cRegPage.SetDlgItemText(IDC_EDIT_REGRULE,str);
return true;
};
bool CRuleDefineView::SetBlurRule(CString str){
m_cBlurPage.SetDlgItemText(IDC_EDIT_BLURDESCRIBE,str);
return true;
};
//设置模糊函数
bool CRuleDefineView::SetBlurFun(int ntype){
m_cBlurPage.SetFuncTypeCurSel(ntype);
m_cBlurPage.OnSelchangeComboFuntype();
return true;
};
//设置模糊函数
bool CRuleDefineView::SetFun(int ntype){
m_csavefunDlg.SetFuncTypeCurSel(ntype);
m_csavefunDlg.OnSelchangeComboFuntype();
return true;
};
CString CRuleDefineView::GetRegRule(){
CString strrule;
m_cRegPage.GetDlgItemText(IDC_EDIT_REGRULE,strrule);
return strrule;
}
CString CRuleDefineView::GetBlurRule(){
CString strbrule;
m_cBlurPage.GetDlgItemText(IDC_EDIT_BLURDESCRIBE,strbrule);
return strbrule;
}
bool CRuleDefineView::SetRegDefaultOrder(int order){
m_cRegPage.SetDlgItemInt(IDC_EDIT_REG_ORDERNUM,order);
return true;
};
bool CRuleDefineView::ClearEditBox(){
if(nCurStyle == 1){
m_cRegPage.SetDlgItemText(IDC_EDIT_REGRULE,"");
m_cRegPage.SetDlgItemText(IDC_EDIT_REG_ORDERNUM,"");
m_cRegPage.SetDlgItemText(IDC_EDIT_REGRULENAME,"");
m_cRegPage.SetDlgItemText(IDC_EDIT_REGRULERESULT,"");//规则结论
//m_cRegPage.SetDlgItemText(IDC_EDIT_RELIEBILITY,"");
m_cRegPage.SetDlgItemText(IDC_COMBO_outnode,"");
}
else if(nCurStyle == 2){
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,"");
// m_cBlurPage.SetDataTypeCurSel(1);
m_cBlurPage.SetFuncTypeCurSel(1);
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,"");
m_cBlurPage.SetZhenTai();
}
else if(nCurStyle == 3){
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhxh,"");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhm,"");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhnr,"");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_jdgs,"");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_cgqgs,"");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_xzxs,"");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhyz,"");
m_cBlurMergePage.SetFuseTypeCurSel(1);
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_cgqqk,"单击按钮输入->");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_mhhsqk,"单击按钮输入->");
}
else if(nCurStyle == 4){;}
return true;
}
void CRuleDefineView::SetDefaultOrderNo(){
int nodenum = m_pNtView->GetNodeID();
if(nodenum == ERR_NOSELETED) return;
//求出推荐的规则序号
CString str;
CADORecordset recordset(&GlDataBase);
if(nCurStyle == 1)
str.Format("select max(RuleSN) 最大序号 from Rule_Table where NodeSN=%d",nodenum);
else if(nCurStyle == 2)
str.Format("select max(brulesn) 最大序号 from blur_rule_table where nodesn=%d",nodenum);
else if(nCurStyle == 3)
str.Format("select max(FRsn) 最大序号 from Fuse_Rule_Table where nodesn=%d",nodenum);
else if(nCurStyle == 4)
;
recordset.SetQuery(str);
recordset.Open();
int nMaxOrder = 0;
if(!recordset.IsEOF()) {
recordset.GetFieldValue("最大序号",nMaxOrder);
}
nMaxOrder++;
if(nCurStyle == 1)
m_cRegPage.SetDlgItemInt(IDC_EDIT_REG_ORDERNUM,nMaxOrder);
else if(nCurStyle == 2)
m_cBlurPage.SetDlgItemInt(IDC_EDIT_BLUR_ORDER,nMaxOrder);
else if(nCurStyle == 3)
m_cBlurMergePage.SetDlgItemInt(IDC_EDIT_rhxh,nMaxOrder);
else if(nCurStyle == 4)
;
}
void CRuleDefineView::ShowImage(CString strName){
m_pRwView->ShowImage(strName);
}
bool CRuleDefineView::CheckRuleFormat(CString str){
int num = str.GetLength();
//先检查括号是否成对
int bracketnum = 0;
for(int k = 0;k<num;k++){
if(str[k] == '(') bracketnum++;
else if(str[k] == ')') bracketnum--;
else continue;
}
if(bracketnum!=0)
return false;
for(int i = 0;i<num;i++){
//一个关系子表达式开始前不应该有数字
if(isdigit(str[i]))
return false;
//如不是关系表达式组成,按原样保存
else if(!isalpha(str[i]))
continue;
//若是关系表达式,分离计算并保存结果t或f
else{
//关系表达式左边符号:只能为一个字符
if(isalpha(str[i+1]))
return false;
//关系运算符
CString op;
char opn;
op = str[++i];
//操作符的第一个必须为以下几个:
if(op!=">"&&op!="<"&&op!="="&&op!="!"){
return false;
}
//等号操作符为:==,而不是=
if(str[i]=='='&&str[i+1]!='='){
return false;
}
//若下个为=,说明该操作符由两个符号组成,读入该=
opn = str[i+1];
if(opn == '='){
op+= '=';
i++;
}
//如果第一个关系符号后不是数字或=或-,错!
if(!(isdigit(opn)||opn=='='||opn=='-')){
return false;
}
//关系表达式右边的值
char data[20];
data[0]= str[++i];
if(!isdigit(data[0])&&data[0]!='-'){
return false;
}
int k = 1;
do{
if(i<num-1)
data[k] = str[++i];
else
return true;
k++;
}while(isdigit(str[i])||str[i] == '.');
if(k>20) return false;//位数太多
data[--k] = '\0';//k 和 i 都已经读过头
//数据之后必须有一定的格式规定
if(str[i]!='&'&&str[i]!='|'&&str[i]!='!'&&str[i]!=')'&&str[i]!='\0'){
return false;
}
i--;
}
}
return true;
}
void CRuleDefineView::SetRegEditSel(){
m_cRegPage.SelectRegEdit();
}
////////////////////////////消息函数//////////////////////////////////////////////
int CRuleDefineView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFormView::OnCreate(lpCreateStruct) == -1)
return -1;
//edit.Create(WS_VISIBLE|WS_SIZEBOX,CRect(140,200,220,220),this,3);
//m_cTabSheets.AddPage("规则推理",&m_cRegPage,IDD_DIALOG_REGULARRULE);
//m_cTabSheets.AddPage("模糊规则",&m_cBlurPage,IDD_DIALOG_BLURRULE);
//m_cTabSheets.Show();
return 0;
}
BOOL CRuleDefineView::PreCreateWindow(CREATESTRUCT& cs)
{
return CFormView::PreCreateWindow(cs);
}
void CRuleDefineView::OnLButtonDown(UINT nFlags, CPoint point)
{
//m_cTabSheets.OnLButtonDown(nFlags,point);
//int index = m_cTabSheets.GetCurSel();
//m_pRwView->SetCurStyle(index);
CFormView::OnLButtonDown(nFlags, point);
}
void CRuleDefineView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
m_cTabSheets.AddPage("规则推理",&m_cRegPage,IDD_DIALOG_REGULARRULE);
m_cTabSheets.AddPage("模糊规则",&m_cBlurPage,IDD_DIALOG_BLURRULE);
m_cTabSheets.AddPage("信息融合",&m_cBlurMergePage,IDD_DIALOG_BLURMERGE);
m_cTabSheets.AddPage("神经网络" ,&m_cNetWorkPage,IDD_DIALOG_NETWORK);
m_cTabSheets.Show();
m_pRwView = (CRuleWizardView*)GetView(RUNTIME_CLASS(CRuleWizardView));
//m_pRdView = (CRuleDefineView*)GetView(RUNTIME_CLASS(CRuleDefineView));
m_pNtView = (CNodeTreeView*)GetView(RUNTIME_CLASS(CNodeTreeView));
m_pTipView = (CTipView*)GetView(RUNTIME_CLASS(CTipView));
m_pMainWnd = (CMainFrame*)AfxGetMainWnd();
}
void CRuleDefineView::OnSelchangeTab4sheets(NMHDR* pNMHDR, LRESULT* pResult)
{
int index = m_cTabSheets.GetCurSel(); //tablesheet的下标从0开始
m_pRwView->SetCurStyle(index+1);
SetCorMenu(index+1);
*pResult = 0;
}
//********************本类中的按钮事件*********************************
void CRuleDefineView::OnButtonNew()
{
ClearEditBox();
m_pRwView->ClearRegRule();//清空代表规则的CString变量
SetDefaultOrderNo();// //求出推荐的规则序号
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -