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

📄 bayesclassifierview.cpp

📁 bayes分类器
💻 CPP
字号:
// BayesClassifierView.cpp : implementation of the CBayesClassifierView class
//

#include "stdafx.h"
#include "BayesClassifier.h"

#include "BayesClassifierDoc.h"
#include "BayesClassifierView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CBayesClassifierView

IMPLEMENT_DYNCREATE(CBayesClassifierView, CFormView)

BEGIN_MESSAGE_MAP(CBayesClassifierView, CFormView)
	//{{AFX_MSG_MAP(CBayesClassifierView)
	ON_BN_CLICKED(IDC_confirm_BUTTON, OnconfirmBUTTON)
	ON_BN_CLICKED(IDC_confirmfylx_BUTTON, OnconfirmfylxBUTTON)
	ON_BN_CLICKED(IDC_afresh_BUTTON, OnafreshBUTTON)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBayesClassifierView construction/destruction

CBayesClassifierView::CBayesClassifierView()
	: CFormView(CBayesClassifierView::IDD)
{
	//{{AFX_DATA_INIT(CBayesClassifierView)
	m_FbjCheck = FALSE;
	m_KsxtCheck = FALSE;
	m_TxstCheck = FALSE;
	m_ShilyinCheck = FALSE;
	m_FshbCheck = FALSE;
	m_HxjcCheck = FALSE;
	m_FyfdshbCheck = FALSE;
	m_FnzhCheck = FALSE;
	m_YxzCheck = FALSE;
	m_Fyqjpro = _T("");
	m_Jtjpro = _T("");
	m_Klbgjpro = _T("");
	m_Ptqjpro = _T("");
	m_XjjyCheck = FALSE;
	m_WkdCheck = FALSE;
	m_tt = _T("");
	m_HzhgrCheck = FALSE;
	m_FinalDiag = _T("");
	//}}AFX_DATA_INIT
	// TODO: add construction code here

}

CBayesClassifierView::~CBayesClassifierView()
{
}

void CBayesClassifierView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBayesClassifierView)
	DDX_Control(pDX, IDC_symptom_EDIT, m_SymptomEdit);
	DDX_Control(pDX, IDC_fylqj_RADIO, m_FylqjRadio);
	DDX_Check(pDX, IDC_fbj_CHECK, m_FbjCheck);
	DDX_Check(pDX, IDC_ksxt_CHECK, m_KsxtCheck);
	DDX_Check(pDX, IDC_txst_CHECK, m_TxstCheck);
	DDX_Check(pDX, IDC_shilyin_CHECK, m_ShilyinCheck);
	DDX_Check(pDX, IDC_fshb_CHECK, m_FshbCheck);
	DDX_Check(pDX, IDC_hxjc_CHECK, m_HxjcCheck);
	DDX_Check(pDX, IDC_fyfdshb_CHECK, m_FyfdshbCheck);
	DDX_Check(pDX, IDC_fnzh_CHECK, m_FnzhCheck);
	DDX_Check(pDX, IDC_yxz_CHECK, m_YxzCheck);
	DDX_Text(pDX, IDC_fyqjpro_EDIT, m_Fyqjpro);
	DDX_Text(pDX, IDC_jtjpro_EDIT, m_Jtjpro);
	DDX_Text(pDX, IDC_klbgjpro_EDIT, m_Klbgjpro);
	DDX_Text(pDX, IDC_ptqjpro_EDIT, m_Ptqjpro);
	DDX_Check(pDX, IDC_xjjy_CHECK, m_XjjyCheck);
	DDX_Check(pDX, IDC_wkd_CHECK, m_WkdCheck);
	DDX_Text(pDX, IDC_symptom_EDIT, m_tt);
	DDX_Check(pDX, IDC_hzhgr_CHECK, m_HzhgrCheck);
	DDX_Text(pDX, IDC_finaldiag_EDIT, m_FinalDiag);
	//}}AFX_DATA_MAP
}

BOOL CBayesClassifierView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}

void CBayesClassifierView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();

}

/////////////////////////////////////////////////////////////////////////////
// CBayesClassifierView diagnostics

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

void CBayesClassifierView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CBayesClassifierDoc* CBayesClassifierView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CBayesClassifierDoc)));
	return (CBayesClassifierDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CBayesClassifierView message handlers
char sympEdit[500] = "";
int DiseaseNum=0;
int iTanRadio;

void CBayesClassifierView::OnconfirmBUTTON() 
{
	char sympEdit1[100];
	char sympEdit2[100];
	char sympEdit3[100];
	char sympEdit4[100];
	char sympEdit5[100];
	char sympEdit6[100];
	char sympEdit7[100];
	char sympEdit8[100];
	char sympEdit9[100];
	char sympEdit10[100];
	char sympEdit11[100];
	char sympEdit12[100];
	char sympEdit13[100];
	char sympEdit15[100];
	char sympEdit14[100];
	char sympEdit16[100];

	UpdateData(TRUE);
	if(m_FbjCheck==TRUE)
		
	{		
		
		DiseaseNum++;
		//if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
		//sprintf(sympEdit1,"%s\r\n","发病急骤;");
	//	else
			sprintf(sympEdit1,"%s","发病急骤;");
		strcat(sympEdit,sympEdit1);
	}
	
	if(m_HzhgrCheck==TRUE)
	{
		DiseaseNum++;
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
		sprintf(sympEdit2,"%s\r\n","寒战高热;");
		else
			sprintf(sympEdit2,"%s","寒战高热;");
		strcat(sympEdit,sympEdit2);

		
	}
	
	if(m_KsxtCheck==TRUE)
	{
		//	strcat(sympEdit,"咳嗽胸痛;");
		DiseaseNum++;
		
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
			sprintf(sympEdit3,"%s\r\n","咳嗽胸痛;");
		else
			sprintf(sympEdit3,"%s","咳嗽胸痛;");
		strcat(sympEdit,sympEdit3);
	}
	
	if(m_TxstCheck==TRUE)
	{
		DiseaseNum++;
		
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
		sprintf(sympEdit4,"%s\r\n","铁锈色痰;");
		else
			sprintf(sympEdit4,"%s","铁锈色痰;");	
			strcat(sympEdit,sympEdit4);
	}
	if(m_ShilyinCheck==TRUE)
	{
			DiseaseNum++;
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
			
			sprintf(sympEdit5,"%s\r\n","可闻及湿罗音;");	
			else
				sprintf(sympEdit5,"%s","可闻及湿罗音;");
			strcat(sympEdit,sympEdit5);
	}
	if(m_FshbCheck==TRUE)
	{
		
		DiseaseNum++;
		
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
			sprintf(sympEdit6,"%s\r\n","肺实变;");	
			else
				sprintf(sympEdit6,"%s","肺实变;");
			strcat(sympEdit,sympEdit6);
	}
	if(m_HxjcCheck==TRUE)
	{
		
		DiseaseNum++;
		
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
				sprintf(sympEdit7,"%s\r\n","呼吸急促;");	
			else
				sprintf(sympEdit7,"%s","呼吸急促;");
			strcat(sympEdit,sympEdit7);
	}
	if(m_XjjyCheck==TRUE)
	{
	
		DiseaseNum++;
		
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
				sprintf(sympEdit8,"%s\r\n","胸腔积液;");	
			else
				sprintf(sympEdit8,"%s","胸腔积液;");
			strcat(sympEdit,sympEdit8);
	}
	if(m_FyfdshbCheck==TRUE)
	{
	
		DiseaseNum++;
		
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
			sprintf(sympEdit9,"%s\r\n","肺叶或肺段实变;");	
			else
				sprintf(sympEdit9,"%s","肺叶或肺段实变;");
			strcat(sympEdit,sympEdit9);
	}
	if(m_WkdCheck==TRUE)
	{
		DiseaseNum++;
		
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
			sprintf(sympEdit10,"%s\r\n","无空洞;");	
			else
				sprintf(sympEdit10,"%s","无空洞;");
			strcat(sympEdit,sympEdit10);
	}
	if(m_FnzhCheck==TRUE)
	{
		
		DiseaseNum++;
		
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
			sprintf(sympEdit11,"%s\r\n","肺囊肿;");	
			else
				sprintf(sympEdit11,"%s","肺囊肿;");
			strcat(sympEdit,sympEdit11);
	}
	if(m_YxzCheck==TRUE)
	{
		
		DiseaseNum++;
		
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
			sprintf(sympEdit12,"%s\r\n","炎性浸润灶;");	
			else
				sprintf(sympEdit12,"%s","炎性浸润灶;");
			strcat(sympEdit,sympEdit12);
	}
	iTanRadio=GetCheckedRadioButton(IDC_fylqj_RADIO,IDC_jtj_RADIO);
	if(iTanRadio==IDC_fylqj_RADIO)
	{
	
		DiseaseNum++;
		
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
			sprintf(sympEdit13,"%s\r\n","发现肺炎链球菌;");	
			else
				sprintf(sympEdit13,"%s","发现肺炎链球菌;");
			strcat(sympEdit,sympEdit13);
	}
	if(iTanRadio==IDC_ptqj_RADIO)
	{
		
		DiseaseNum++;
		
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
			sprintf(sympEdit14,"%s\r\n","发现葡萄球菌菌;");	
			else
				sprintf(sympEdit14,"%s","发现葡萄球菌;");
			strcat(sympEdit,sympEdit14);
	}
	if(iTanRadio==IDC_klbgj_RADIO)
		
	{
		
		DiseaseNum++;
		
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
			sprintf(sympEdit15,"%s\r\n","发现克雷伯杆菌;");	
			else
				sprintf(sympEdit15,"%s","发现克雷伯杆菌;");
			strcat(sympEdit,sympEdit15);
	}
	if(iTanRadio==IDC_jtj_RADIO)
	{
	
		DiseaseNum++;
		
		if(DiseaseNum==2||DiseaseNum==4||DiseaseNum==6||DiseaseNum==8||DiseaseNum==10||DiseaseNum==12)
			sprintf(sympEdit16,"%s\r\n","发现军团菌;");	
			else
				sprintf(sympEdit16,"%s","发现军团菌;");
			strcat(sympEdit,sympEdit16);
	}
	
	
	
	m_tt = sympEdit;
	UpdateData(0);
	//char cl[500]="";
	//sympEdit[500]=cl[500];
	
	
	
	
	//m_SymptomEdit.SetSel(0,-1);
	//m_SymptomEdit.ReplaceSel(sympEdit);
	
	
}

void CBayesClassifierView::OnconfirmfylxBUTTON() 
{
	//float x1T1,x2T,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16;

	char pro1[10]="";
    char pro2[10]="";
	float T[4]={4,2.5,2,1.5};
	
   	float x1T[2][4]={8,5,4,1};
	float x2T[2][4]={4,2.5,2,6};
	float x3T[2][4]={1.5,2.4,8,3};
	float x4T[2][4]={7,2,1,1};
	float x5T[2][4]={1,4,7,1};	
    float x6T[2][4]={2.5,2.5,4,8};
	float x7T[2][4]={1.5,1,2.5,4};
	float x8T[2][4]={3,7,1,4};
	float x9T[2][4]={5.5,2,8,4};
	float x10T[2][4]={8.5,1,5,6};	
	float x11T[2][4]={1,4,2,1};
	float x12T[2][4]={3,9,2,6};
	float x13T[2][4]={8,0.5,1,0.5};
    float x14T[2][4]={0.5,8.5,0.5,0.5};
	float x15T[2][4]={0.5,0.5,8,1};
	float x16T[2][4]={0.5,0.5,0.5,8.5};
	int i;
	float PT[4];//后验概率
	//判断选择病人的哪几种症状
    if(m_FbjCheck==false)
	{
		for(i=0;i<4;i++)
		{
			x1T[0][i]=1;
		}
	}
	if(m_HzhgrCheck==false)
	{
		for(i=0;i<4;i++)
		{
			x2T[0][i]=1;
		}
	}
	if(m_KsxtCheck==false)
	{
		for(i=0;i<4;i++)
		{
			x3T[0][i]=1;
		}
	}
	if(m_TxstCheck==false)
	{
		for(i=0;i<4;i++)
		{
			x4T[0][i]=1;
		}
	}
	if(m_ShilyinCheck==false)
	{
		for(i=0;i<4;i++)
		{
			x5T[0][i]=1;
		}
	}
	if(m_FshbCheck==false)
	{
		for(i=0;i<4;i++)
		{
			x6T[0][i]=1;
		}
	}
	if(m_HxjcCheck==false)
	{
		for(i=0;i<4;i++)
		{
			x7T[0][i]=1;
		}
	}
	if(m_XjjyCheck==false)
	{
		for(i=0;i<4;i++)
		{
			x8T[0][i]=1;
		}
	}
	if(m_FyfdshbCheck==false)
	{
		for(i=0;i<4;i++)
		{
			x9T[0][i]=1;
		}
	}
	if(m_WkdCheck==false)
	{
		for(i=0;i<4;i++)
		{
			x10T[0][i]=1;
		}
	}
	if(m_FnzhCheck==false)
	{
		for(i=0;i<4;i++)
		{
			x11T[0][i]=1;
		}
	}
	if(m_YxzCheck==false)
	{
		for(i=0;i<4;i++)
		{
			x12T[0][i]=1;
		}
	}
	if(!(iTanRadio==IDC_fylqj_RADIO))
	{
		for(i=0;i<4;i++)
		{
			x13T[0][i]=1;
		}
	}
	if(!(iTanRadio==IDC_ptqj_RADIO))
	{
		for(i=0;i<4;i++)
		{
			x14T[0][i]=1;
		}
	}
	if(!(iTanRadio==IDC_klbgj_RADIO))
	{
		for(i=0;i<4;i++)
		{
			x15T[0][i]=1;
		}
	}
	if(!(iTanRadio==IDC_jtj_RADIO))
	{
		for(i=0;i<4;i++)
		{
			x16T[0][i]=1;
		}
	}
float XX[4];float tempt=0;
for(i=0;i<4;i++)
{
	XX[i]=x1T[0][i]*x2T[0][i]*x3T[0][i]*x4T[0][i]*x5T[0][i]*x6T[0][i]*x7T[0][i]*x8T[0][i]*x9T[0][i]*x10T[0][i]*x11T[0][i]*x12T[0][i]*x13T[0][i]*x14T[0][i]*x15T[0][i]*x16T[0][i];
}
for(i=0;i<4;i++)
{
	tempt+=(XX[i]*T[i]);
}
for(i=0;i<4;i++)
{
	PT[i]=(XX[i]*T[i]/tempt)*100;
}

    
		m_Fyqjpro.Format("%.2f%%",PT[0]);
		UpdateData(false);
		m_Jtjpro.Format("%.2f%%",PT[3]);
		UpdateData(false);
		m_Klbgjpro.Format("%.2f%%",PT[2]);
		UpdateData(false);
		m_Ptqjpro.Format("%.2f%%",PT[1]);
		UpdateData(false);
		float a;
	
		if(PT[0]>PT[1])//?PT1:PT2;
		{a=PT[0];}
		else
		{
			a=PT[1];
		}
		if(a<PT[2])
		{
			a=PT[2];
		}
		if(a<PT[3])
		
		{
			a=PT[3];
		}
		if(a==PT[0])
        {
			m_FinalDiag="肺炎球菌肺炎";
		UpdateData(false);
		}
		if(a==PT[1])
		{
			m_FinalDiag="葡萄球菌肺炎";
		UpdateData(false);
		}
		if(a==PT[2])
		{
			m_FinalDiag="克雷伯杆菌肺炎";
		UpdateData(false);
		}
		if(a==PT[3])
		{
			m_FinalDiag="军团菌肺炎";
		UpdateData(false);
		}
		
}

void CBayesClassifierView::OnafreshBUTTON() 
{
	// 清屏
    m_TxstCheck=false;
	
	m_FylqjRadio.SetCheck(0);
	m_XjjyCheck=false;

	m_KsxtCheck=false;

	m_HzhgrCheck=false;
	
	m_ShilyinCheck=false;
	m_FshbCheck=false;
	m_HxjcCheck=false;
	m_FyfdshbCheck=false;
	m_WkdCheck=false;
	m_FnzhCheck=false;
	m_YxzCheck=false;
	m_FbjCheck=false;
	m_tt="";
   // OnconfirmBUTTON();
	m_Klbgjpro="";
	m_Fyqjpro="";
	m_Jtjpro="";
	m_Ptqjpro="";
	m_FinalDiag="";
	DiseaseNum=0;
	char sympEdit[500] = "";
	UpdateData(false);//更新控件状态
	
}

⌨️ 快捷键说明

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