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

📄 cmpdlg.cpp

📁 本程序是采用VC++和Mysql编写的一款油量换算软件
💻 CPP
字号:
// CmpDlg.cpp : implementation file
//

#include "stdafx.h"
#include "OilTrans.h"
#include "CmpDlg.h"
#include "OilMethod.h"
#include "StrH.h"

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

/////////////////////////////////////////////////////////////////////////////
// CCmpDlg dialog


CCmpDlg::CCmpDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCmpDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCmpDlg)
	m_bOTab = FALSE;
	m_fH = 0.0f;
	m_fP = 0.0f;
	m_fT = 0.0f;
	m_fV = 0.0f;
	m_sRes = _T("");
	//}}AFX_DATA_INIT
	m_nOil = 0;
	m_nTanks =0;
	for(int i =0;i<8;i++)
	{
		nOil[i] = -1;
	}

}


void CCmpDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCmpDlg)
	DDX_Control(pDX, IDC_EDIT_V, m_cEditV);
	DDX_Control(pDX, IDC_EDIT_H, m_cEH);
	DDX_Control(pDX, IDC_COMBO_TANK, m_hCmbTank);
	DDX_Control(pDX, IDC_COMBO_OIL, m_hCmbOil);
	DDX_Check(pDX, IDC_CHECK_OTAB, m_bOTab);
	DDX_Text(pDX, IDC_EDIT_H, m_fH);
	DDX_Text(pDX, IDC_EDIT_P, m_fP);
	DDX_Text(pDX, IDC_EDIT_T, m_fT);
	DDX_Text(pDX, IDC_EDIT_V, m_fV);
	DDX_Text(pDX, IDC_EDIT_RESILT, m_sRes);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCmpDlg, CDialog)
	//{{AFX_MSG_MAP(CCmpDlg)
	ON_BN_CLICKED(IDC_BTN_CMP, OnBtnCmp)
	ON_BN_CLICKED(IDC_CHECK_OTAB, OnCheckOtab)
	ON_CBN_SELCHANGE(IDC_COMBO_OIL, OnSelchangeComboOil)
	ON_CBN_SELCHANGE(IDC_COMBO_TANK, OnSelchangeComboTank)
	ON_BN_CLICKED(ID_CANCEL, OnCancel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCmpDlg message handlers

void CCmpDlg::OnBtnCmp() 
{
	// TODO: Add your control notification handler code here
   COilMethod om;
   CStrH strH;
   UpdateData(TRUE);
   CString m_sTemp;
   m_sRes+= "计算结果:\t\t\t20℃ 下的密度:";
   double dSp=om.Dst_ST(m_fP,m_fT,m_nOil);
   m_sTemp= strH.ftoa(dSp);
   m_sRes = m_sRes+m_sTemp;
   double vcf = om.Cfc_V(m_fT,dSp,m_nOil);
   m_sTemp=strH.ftoa(vcf);
   m_sRes += "\t\t体积修正系数:"+m_sTemp;
   float fTemp =0.0;
   if(m_bOTab)
   {
	   fTemp=GetVolume();
	   m_fV=fTemp;
	   m_sRes += "\t\t质量:"+strH.ftoa(om.Decimal_R(dSp*vcf*fTemp,2))+" Kg!";
   }
   else
       m_sRes += "\t\t质量:"+strH.ftoa(om.Decimal_R(dSp*vcf*m_fV,2))+" Kg!";
   m_sRes+="\t***********************************";
   
   UpdateData(FALSE);
 
}

void CCmpDlg::OnCheckOtab() 
{
	// TODO: Add your control notification handler code here
	
}

BOOL CCmpDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	// TODO: Add extra initialization here
	m_hCmbTank.EnableWindow(m_bOTab);
	m_cEH.EnableWindow(m_bOTab);
	if(m_bOTab)
	   m_cEditV.EnableWindow(FALSE);
	else 
       m_cEditV.EnableWindow(TRUE);
	InitTankCmb(m_nTanks);
	if(m_bOTab)
	    OpenDB();
	

	m_hCmbOil.AddString("成品油");
    m_hCmbOil.AddString("润滑油");
	m_hCmbOil.AddString("原油");
	m_hCmbOil.SetCurSel(0);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CCmpDlg::OnSelchangeComboOil() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	m_nOil = m_hCmbOil.GetCurSel();
    UpdateData(FALSE);
}

void CCmpDlg::SetCheckO(BOOL bT)
{
   m_bOTab = bT;
   
}

void CCmpDlg::OnCancel() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
    m_sRes ="";
	UpdateData(FALSE);
    
}

BOOL CCmpDlg::OpenDB()
{
    if(m_ctrlMysql.IsOpen())
	{
         m_ctrlMysql.Close();
		 m_bOpen = false;
	} else {
		 m_ctrlMysql.SetDB("OT");
         m_ctrlMysql.SetPort("3306");
	     m_ctrlMysql.SetUser("root");
         m_ctrlMysql.SetPassword("");
	     m_ctrlMysql.SetIP("127.0.0.1");
	     m_ctrlMysql.InitMYSQL();
		if (m_ctrlMysql.Open())
		{
			m_bOpen = TRUE ;
			return TRUE;
		}
	}
    return FALSE;
}


void CCmpDlg::SetTankNum(int nTanks)
{
   m_nTanks = nTanks;
}

void CCmpDlg::UpdateCheckO(BOOL b)
{
	UpdateData(TRUE);
	m_bOTab = b;
    m_hCmbTank.EnableWindow(m_bOTab);
	m_cEH.EnableWindow(m_bOTab);
	if(b)
	{
		m_cEditV.EnableWindow(FALSE);
	    OpenDB();
	}
	else
        m_cEditV.EnableWindow(TRUE);
	UpdateData(FALSE);

}

void CCmpDlg::InitTankCmb(int n)
{
	UpdateData(TRUE);
    CString sT;
	for(int i = 1;i<=n;i++)
	{
		sT.Format("%d",i);
		m_hCmbTank.AddString("Tank_"+sT);
	}
	m_hCmbTank.SetCurSel(0);
	//m_hCmbTank.EnableWindow(FALSE);
	UpdateData(FALSE);
}

float CCmpDlg::GetVolume()
{  OpenDB();
   m_ctrlMysql.SetSql("select * from tank_1");
   theResult= m_ctrlMysql.Exculte();
   int nH0,nH1;
   float fV0,fV1;
   nH0 = strH.nBottom(m_fH);
   nH1 = strH.ntop(m_fH);
   while(theResult.Next())
   {
      if(theResult.GetInt("height")==nH0)
		  fV0 = theResult.GetFloat("volume");
	  if(theResult.GetInt("height")==nH1)
		  fV1 = theResult.GetFloat("volume");
   }
   float r=0.0;
   m_cEditV.EnableWindow(TRUE);
   r = (m_fH-nH0)/(nH1-nH0)*(fV1-fV0)+fV0;
   m_cEditV.EnableWindow(FALSE);

   return r;
}

void CCmpDlg::SetOil(int nIndex, int nOilType)
{
  nOil[nIndex] = nOilType;
}



void CCmpDlg::OnSelchangeComboTank() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	int n = m_hCmbTank.GetCurSel();
	m_hCmbOil.Clear();
	m_hCmbOil.SetCurSel(nOil[n]);
	UpdateData(FALSE);
}

⌨️ 快捷键说明

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