📄 savefundlg.cpp
字号:
// savefunDlg.cpp : implementation file
//
#include "stdafx.h"
#include "AcquireKlg.h"
#include "AcquireKlgDoc.h"
#include "MainFrm.h"
#include "RuleDefineView.h"
#include "Global.h"
#include <math.h>
#include "savefunDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CsavefunDlg dialog
extern CADODatabase GlDataBase;
CADORecordset recordset(&GlDataBase);
CsavefunDlg::CsavefunDlg(CWnd* pParent /*=NULL*/)
: CDialog(CsavefunDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CsavefunDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CsavefunDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CsavefunDlg)
DDX_Control(pDX, IDC_STATIC5, m_stRRongCha);
DDX_Control(pDX, IDC_STATIC4, m_stLRongCha);
DDX_Control(pDX, IDC_STATIC3, m_stRjxpc);
DDX_Control(pDX, IDC_EDIT_RRONGCHA, m_etRRongCha);
DDX_Control(pDX, IDC_EDIT_RJXPC, m_etRjxpc);
DDX_Control(pDX, IDC_EDIT_LRONGCHA, m_etLRongCha);
DDX_Control(pDX, IDC_EDIT1_TJPARA, m_etTJPara);
DDX_Control(pDX, IDC_EDIT1_LJXPC, m_etLjxpc);
DDX_Control(pDX, IDC_COMBO_FUNTYPE, m_cmFunType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CsavefunDlg, CDialog)
//{{AFX_MSG_MAP(CsavefunDlg)
ON_BN_CLICKED(IDC_BUTTON_savefun, OnBUTTONsavefun)
ON_CBN_SELCHANGE(IDC_COMBO_FUNTYPE, OnSelchangeComboFuntype)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CsavefunDlg::showRongCha(bool bShow){
DWORD dwShow = bShow?SW_SHOW:SW_HIDE;
m_stLRongCha.ShowWindow(dwShow);
m_stRRongCha.ShowWindow(dwShow);
m_etLRongCha.ShowWindow(dwShow);
m_etRRongCha.ShowWindow(dwShow);
}
//获得指定的视图类指针
CView* CsavefunDlg::GetView(CRuntimeClass* pClass)
{
CAcquireKlgDoc* pDoc=(CAcquireKlgDoc*)GetParentFrame()->GetActiveView()->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;
}
/////////////////////////////////////////////////////////////////////////////
// CsavefunDlg message handlers
BOOL CsavefunDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_pNtView = (CNodeTreeView*)GetView(RUNTIME_CLASS(CNodeTreeView));
m_pRDView=(CRuleDefineView*)GetView(RUNTIME_CLASS(CRuleDefineView));
int ftype=m_pRDView->m_cBlurPage.funtype;
SetFuncTypeCurSel(ftype);
GetCurFun();
ShowFun();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//获得当前的模糊函数
void CsavefunDlg::GetCurFun(){
int nodenum = m_pNtView->GetNodeID();
int funnum=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);
recordset.SetQuery(strQuery);
if(TRUE == recordset.Open()){
if(0 == recordset.GetRecordCount())
recordset.Close();
}
}
//savefun显示一条完整的模糊函数
bool CsavefunDlg::ShowFun(){
int nlshsType;//隶属函数类型
CString strtezhengzhi,//特征值
strtjcs,//调节参数
strljxpc,//左极限偏差
strrjxpc,//右极限偏差
strlrc,//左容差
strrrc;//右容差
if(recordset.IsOpen()==false||recordset.IsEOF()){
SetDlgItemText(IDC_COMBO_FUNTYPE,"");
SetDlgItemText(IDC_EDIT_TEZHEZHI,"");
SetDlgItemText(IDC_EDIT1_TJPARA,"");
SetDlgItemText(IDC_EDIT1_LJXPC,"");
SetDlgItemText(IDC_EDIT_RJXPC,"");
SetDlgItemText(IDC_EDIT_LRONGCHA,"");
SetDlgItemText(IDC_EDIT_RRONGCHA,"");
return false;
}
recordset.GetFieldValue("busfun",nlshsType);
SetFuncTypeCurSel(nlshsType);
if(nlshsType == 1){
SetZhenTai();
recordset.GetFieldValue("Para1",strtezhengzhi);
SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
recordset.GetFieldValue("Para2",strtjcs);
SetDlgItemText(IDC_EDIT1_TJPARA,strtjcs);
}
else if(nlshsType == 2){
SetSanJiao();
recordset.GetFieldValue("Para1",strtezhengzhi);
SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
recordset.GetFieldValue("Para2",strljxpc);
SetDlgItemText(IDC_EDIT1_LJXPC,strljxpc);
recordset.GetFieldValue("Para3",strrjxpc);
SetDlgItemText(IDC_EDIT_RJXPC,strrjxpc);
}
else if (nlshsType == 3){
SetTiXing();
recordset.GetFieldValue("Para1",strtezhengzhi);
SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
recordset.GetFieldValue("Para2",strljxpc);
SetDlgItemText(IDC_EDIT1_LJXPC,strljxpc);
recordset.GetFieldValue("Para3",strrjxpc);
SetDlgItemText(IDC_EDIT_RJXPC,strrjxpc);
recordset.GetFieldValue("Para4",strlrc);
SetDlgItemText(IDC_EDIT_LRONGCHA,strlrc);
recordset.GetFieldValue("Para5",strrrc);
SetDlgItemText(IDC_EDIT_RRONGCHA,strrrc);
}
else if(nlshsType == 4){
SetZhenTai();
recordset.GetFieldValue("Para1",strtezhengzhi);
SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
recordset.GetFieldValue("Para2",strtjcs);
SetDlgItemText(IDC_EDIT1_TJPARA,strtjcs);
}
else if(nlshsType == 5){
SetZhenTai();
recordset.GetFieldValue("Para1",strtezhengzhi);
SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
recordset.GetFieldValue("Para2",strtjcs);
SetDlgItemText(IDC_EDIT1_TJPARA,strtjcs);
}
return true;
}
void CsavefunDlg::SetZhenTai(){
SetDlgItemText(IDC_STATIC2,"调节参数(k):");
m_etLjxpc.ShowWindow(false);
m_etTJPara.ShowWindow(true);
m_stRjxpc.ShowWindow(false);
m_etRjxpc.ShowWindow(false);
showRongCha(false);
m_pRDView->ShowImage("zhengtai1.bmp");
}
void CsavefunDlg::SetSanJiao(){
SetDlgItemText(IDC_STATIC2,"左极限偏差(b):");
m_etLjxpc.ShowWindow(true);
m_etTJPara.ShowWindow(false);
m_stRjxpc.ShowWindow(true);
m_etRjxpc.ShowWindow(true);
showRongCha(false);
m_pRDView->ShowImage("sanjiao1.bmp");
}
void CsavefunDlg::SetTiXing(){
SetDlgItemText(IDC_STATIC2,"左极限偏差(b):");
m_etLjxpc.ShowWindow(true);
m_etTJPara.ShowWindow(false);
m_stRjxpc.ShowWindow(true);
m_etRjxpc.ShowWindow(true);
showRongCha(true);
m_pRDView->ShowImage("tixing1.bmp");
}
void CsavefunDlg::SetShengBan(){
SetDlgItemText(IDC_STATIC2,"调节参数(k):");
m_etLjxpc.ShowWindow(false);
m_etTJPara.ShowWindow(true);
m_stRjxpc.ShowWindow(false);
m_etRjxpc.ShowWindow(false);
showRongCha(false);
m_pRDView->ShowImage("6_1.bmp");
}
void CsavefunDlg::SetJiangBan(){
SetDlgItemText(IDC_STATIC2,"调节参数(k):");
m_etLjxpc.ShowWindow(false);
m_etTJPara.ShowWindow(true);
m_stRjxpc.ShowWindow(false);
m_etRjxpc.ShowWindow(false);
showRongCha(false);
m_pRDView->ShowImage("8_1.bmp");
}
void CsavefunDlg::SetFuncTypeCurSel(int nCur){
m_cmFunType.SetCurSel(nCur-1);
}
int CsavefunDlg::GetFuncTypeCurSel(){
int nCur = m_cmFunType.GetCurSel();
if(nCur!=CB_ERR)
nCur++;
return nCur;
}
void CsavefunDlg::OnBUTTONsavefun()
{
savefun();
}
void CsavefunDlg::OnSelchangeComboFuntype()
{
int nSelected = m_cmFunType.GetCurSel();
switch(nSelected){
case 0:
SetZhenTai();
break;
case 1:
SetSanJiao();
break;
case 2:
SetTiXing();
break;
case 3:
SetShengBan();
break;
case 4:
SetJiangBan();
break;
default:break;
}
GetCurFun();
ShowFun();
}
void CsavefunDlg::savefun()
{
int nlshsType;//隶属函数类型
CString strtezhengzhi,//特征值
strtjcs,//调节参数
strljxpc,//左极限偏差
strrjxpc,//右极限偏差
strlrc,//左容差
strrrc;//右容差
CADORecordset recordset(&GlDataBase);
CString strQuery;
int nodenum = m_pNtView->GetNodeID();
if(nodenum == ERR_NOSELETED) return;
nlshsType = GetFuncTypeCurSel();
switch(nlshsType){
case 1:
case 4:
case 5:
GetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
GetDlgItemText(IDC_EDIT1_TJPARA,strtjcs);
strtezhengzhi.TrimRight(),strtjcs.TrimRight();
if(strtezhengzhi.GetLength()==0||strtjcs.GetLength()==0){
AfxMessageBox("请输入完整信息!!!");
return;
}
//删除现有模糊函数
strQuery.Format("delete from rule_unit_sub_table where busfun=%d and nodesn=%d",nlshsType,nodenum);
recordset.SetQuery(strQuery);
if(recordset.Open()==false){
AfxMessageBox("数据删除有错误!");
return;
}
recordset.Close();
strQuery.Format("insert into rule_unit_sub_table(nodesn,busfun,Para1,Para2) values(%d,%d,%f,%f)",nodenum,nlshsType,atof(strtezhengzhi.GetBuffer(0)),atof(strtjcs.GetBuffer(0)));
recordset.SetQuery(strQuery);
if(recordset.Open() == TRUE)
switch (nlshsType){
case 1:
AfxMessageBox("模糊函数(正态分布)保存成功!!!");
break;
case 4:
AfxMessageBox("模糊函数(升半正态)保存成功!!!");
break;
case 5:
AfxMessageBox("模糊函数(降半正态)保存成功!!!");
break;
}
break;
case 2:
GetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
GetDlgItemText(IDC_EDIT1_LJXPC,strljxpc);
GetDlgItemText(IDC_EDIT_RJXPC,strrjxpc);
strtezhengzhi.TrimRight(),strljxpc.TrimRight(),strrjxpc.TrimRight();
if(strtezhengzhi.GetLength()==0||strljxpc.GetLength()==0||strrjxpc.GetLength()==0){
AfxMessageBox("请输入完整信息!!!");
return;
}
//删除现有模糊函数
strQuery.Format("delete from rule_unit_sub_table where busfun=%d and nodesn=%d",nlshsType,nodenum);
recordset.SetQuery(strQuery);
if(recordset.Open()==false){
AfxMessageBox("数据删除有错误!");
return;
}
recordset.Close();
strQuery.Format("insert into rule_unit_sub_table (nodesn,busfun,Para1,Para2,Para3) values(%d,%d,'%f',%f,%f)",nodenum,nlshsType,atof(strtezhengzhi.GetBuffer(0)),atof(strljxpc.GetBuffer(0)),atof(strrjxpc.GetBuffer(0)));
recordset.SetQuery(strQuery) ;
if(recordset.Open() == TRUE)
AfxMessageBox("模糊函数(三角分布)保存成功!!!");
break;
case 3:
GetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
GetDlgItemText(IDC_EDIT1_LJXPC,strljxpc);
GetDlgItemText(IDC_EDIT_RJXPC,strrjxpc);
GetDlgItemText(IDC_EDIT_LRONGCHA,strlrc);
GetDlgItemText(IDC_EDIT_RRONGCHA,strrrc);
strtezhengzhi.TrimRight(),strljxpc.TrimRight(),strrjxpc.TrimRight(),strlrc.TrimRight(),strrrc.TrimRight();
if(strtezhengzhi.GetLength()==0||strljxpc.GetLength()==0||strrjxpc.GetLength()==0||strlrc.GetLength()==0||strrrc.GetLength()==0){
AfxMessageBox("请输入完整信息!!!");
return;
}
//删除现有模糊函数
strQuery.Format("delete from rule_unit_sub_table where busfun=%d and nodesn=%d",nlshsType,nodenum);
recordset.SetQuery(strQuery);
if(recordset.Open()==false){
AfxMessageBox("数据删除有错误!");
return;
}
recordset.Close();
strQuery.Format("insert into rule_unit_sub_table (nodesn,busfun,Para1,Para2,Para3,Para4,Para5) values(%d,%d,%f,%f,%f,%f,%f)",nodenum,nlshsType,atof(strtezhengzhi.GetBuffer(0)),atof(strljxpc.GetBuffer(0)),atof(strrjxpc.GetBuffer(0)),atof(strlrc.GetBuffer(0)),atof(strrrc.GetBuffer(0)));
recordset.SetQuery(strQuery) ;
if(recordset.Open() == TRUE)
AfxMessageBox("模糊函数(梯形分布)保存成功!!!");
break;
default:
AfxMessageBox("请选择模糊函数!!!");
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -