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

📄 tjflxform.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
字号:
// TjflxForm.cpp : implementation file
//

#include "stdafx.h"
#include "cvenus.h"
#include "TjflxForm.h"
#include "ShwrjCalFuction.h"
#include "Preview.h"
#include "resource.h"

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

/////////////////////////////////////////////////////////////////////////////
// CTjflxForm

IMPLEMENT_DYNCREATE(CTjflxForm, CFormView)

CTjflxForm::CTjflxForm()
: CFormView(CTjflxForm::IDD)
{
	//{{AFX_DATA_INIT(CTjflxForm)
	// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}

CTjflxForm::~CTjflxForm()
{
}

void CTjflxForm::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTjflxForm)
	DDX_Control(pDX, IDC_SPREAD1, m_SJSR);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTjflxForm, CFormView)
	ON_WM_CONTEXTMENU()
//{{AFX_MSG_MAP(CTjflxForm)
ON_WM_CREATE()
ON_COMMAND(ID_SHWRJ_OPEN, OnShwrjOpen)
ON_COMMAND(ID_SHWRJ_CALC, OnShwrjCalc)
	ON_COMMAND(ID_SHWRJ_SAVE, OnShwrjSave)
	ON_COMMAND(ID_SHWRJ_PRINTPREVIEW, OnShwrjPrintpreview)
	ON_COMMAND(ID_SHWRJ_PRINT, OnShwrjPrint)
	ON_WM_SIZE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTjflxForm diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// CTjflxForm message handlers

int CTjflxForm::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFormView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	GetParentFrame()->SetWindowText(_T("统计热力学法预测水化物生成温度"));
	
	return 0;
}

void CTjflxForm::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
/*	int i,j;
	
	m_SJSR.SetMaxRows(14);
	m_SJSR.SetMaxCols(5);
    
	m_SJSR.SetDisplayColHeaders(FALSE);//取消表头
	m_SJSR.SetDisplayRowHeaders(FALSE);//取消表头
    m_SJSR.SetGridShowHoriz(FALSE);//不显示网格线
	m_SJSR.SetGridShowVert(FALSE);//不显示网格线
	
	m_SJSR.SetRow(-1);
	m_SJSR.SetCol(-1);
	m_SJSR.SetAction(3);
	m_SJSR.SetFontName("宋体");
	m_SJSR.SetFontSize(12);
	
	m_SJSR.SetCol(3);
	m_SJSR.SetRow(1);
	m_SJSR.SetColWidth(3,10);
	m_SJSR.SetRowHeight(1,15);
	m_SJSR.SetValue("参数输入");
	
	//设置表格不可编辑
	for(i=1;i<=5;i++)
		for(j=1;j<=14;j++)
		{
			m_SJSR.SetCol(i);
			m_SJSR.SetRow(j);
			m_SJSR.SetCellType(5);
		}
		
		// 设置单元格线样式
		for(i=1;i<=5;i++)
			for(j=2;j<=10;j++)
			{
				m_SJSR.SetCol(i);
				m_SJSR.SetRow(j);
				m_SJSR.SetCellBorderType(16);//单元格为实框
				m_SJSR.SetCellBorderStyle(1);//实线
				m_SJSR.SetCellBorderColor(RGB(0,0,0));//单元格边框颜色
				m_SJSR.SetAction(16);//激活
			}
			
			m_SJSR.SetCol(1);
			m_SJSR.SetColWidth(1,18);
			m_SJSR.SetRowHeight(1,20);
			
			m_SJSR.SetRow(2);	
			m_SJSR.SetValue("参数名称");    
			m_SJSR.SetRow(3);
			m_SJSR.SetText("压力");
			m_SJSR.SetRow(4);
			m_SJSR.SetText("甲烷摩尔组成");
			m_SJSR.SetRow(5);
			m_SJSR.SetText("乙烷摩尔组成");
			m_SJSR.SetRow(6);
			m_SJSR.SetText("丙烷摩尔组成");
			m_SJSR.SetRow(7);
			m_SJSR.SetText("丁烷摩尔组成");
			m_SJSR.SetRow(8);
			m_SJSR.SetText("氮气摩尔组成");
			m_SJSR.SetRow(9);
			m_SJSR.SetText("二氧化碳摩尔组成");
			m_SJSR.SetRow(10);
			m_SJSR.SetText("硫化氢摩尔组成");
			
			m_SJSR.SetCol(2);
			m_SJSR.SetColWidth(2,18);
			
			m_SJSR.SetRow(2);
			m_SJSR.SetValue("单位");
			m_SJSR.SetRow(3);
			m_SJSR.SetText("MPa");
			m_SJSR.SetRow(4);
			m_SJSR.SetText("无因次");
			m_SJSR.SetRow(5);
			m_SJSR.SetText("无因次");
			m_SJSR.SetRow(6);
			m_SJSR.SetText("无因次");
			m_SJSR.SetRow(7);
			m_SJSR.SetText("无因次");
			m_SJSR.SetRow(8);
			m_SJSR.SetText("无因次");
			m_SJSR.SetRow(9);
			m_SJSR.SetText("无因次");
			m_SJSR.SetRow(10);
			m_SJSR.SetText("无因次");
			
			m_SJSR.SetCol(3);
			m_SJSR.SetColWidth(3,8);
			
			m_SJSR.SetRow(2);
			m_SJSR.SetValue("最小值");
			m_SJSR.SetRow(3);
			m_SJSR.SetText("0");
			m_SJSR.SetRow(4);
			m_SJSR.SetText("0");
			m_SJSR.SetRow(5);
			m_SJSR.SetText("0");
			m_SJSR.SetRow(6);
			m_SJSR.SetText("0");
			m_SJSR.SetRow(7);
			m_SJSR.SetText("0");
			m_SJSR.SetRow(8);
			m_SJSR.SetText("0");
			m_SJSR.SetRow(9);
			m_SJSR.SetText("0");
			m_SJSR.SetRow(10);
			m_SJSR.SetText("0");
			
			m_SJSR.SetCol(4);
			m_SJSR.SetColWidth(4,8);
			
			m_SJSR.SetRow(2);
			m_SJSR.SetValue("最大值");
			m_SJSR.SetRow(3);
			m_SJSR.SetText("80");
			m_SJSR.SetRow(4);
			m_SJSR.SetText("1");
			m_SJSR.SetRow(5);
			m_SJSR.SetText("1");
			m_SJSR.SetRow(6);
			m_SJSR.SetText("1");
			m_SJSR.SetRow(7);
			m_SJSR.SetText("1");
			m_SJSR.SetRow(8);
			m_SJSR.SetText("1");
			m_SJSR.SetRow(9);
			m_SJSR.SetText("1");
			m_SJSR.SetRow(10);
			m_SJSR.SetText("1");
			
			m_SJSR.SetCol(5);
			m_SJSR.SetColWidth(5,9);
			m_SJSR.SetRow(2);
			m_SJSR.SetValue("参数值");
			for(i=3;i<=10;i++)
			{
				m_SJSR.SetRow(i);
				m_SJSR.SetCellType(2);
				m_SJSR.SetTypeFloatDecimalPlaces(5);
				m_SJSR.SetTypeFloatMin(0);
				m_SJSR.SetTypeFloatMax(99999);
			}	
			
			m_SJSR.SetCol(3);
			m_SJSR.SetRow(12);
			m_SJSR.SetColWidth(3,10);
			m_SJSR.SetValue("计算结果");
			
			m_SJSR.SetCol(2);
			m_SJSR.SetRow(13);
			m_SJSR.SetColWidth(2,15);
			m_SJSR.SetValue("水化物生成温度");
			
			m_SJSR.SetCol(4);
			m_SJSR.SetRow(13);
			m_SJSR.SetCellType(5);
			m_SJSR.SetValue("℃");
			
			m_SJSR.SetCol(2);
			m_SJSR.SetRow(13);
			m_SJSR.SetCol2(2);
			m_SJSR.SetRow2(13);
			m_SJSR.SetBlockMode(TRUE);
			m_SJSR.SetCellBorderType(16);
			m_SJSR.SetCellBorderStyle(1);
			m_SJSR.SetCellBorderColor(RGB(0,0,0));
			m_SJSR.SetAction(16);
			m_SJSR.SetBlockMode(FALSE);
			
			m_SJSR.SetCol(3);
			m_SJSR.SetRow(13);
			m_SJSR.SetCol2(3);
			m_SJSR.SetRow2(13);
			m_SJSR.SetBlockMode(TRUE);
			m_SJSR.SetCellBorderType(16);
			m_SJSR.SetCellBorderStyle(1);
			m_SJSR.SetCellBorderColor(RGB(0,0,0));
			m_SJSR.SetAction(16);
			m_SJSR.SetBlockMode(FALSE);
			
			m_SJSR.SetCol(4);
			m_SJSR.SetRow(13);
			m_SJSR.SetCol2(4);
			m_SJSR.SetRow2(13);
			m_SJSR.SetBlockMode(TRUE);
			m_SJSR.SetCellBorderType(16);
			m_SJSR.SetCellBorderStyle(1);
			m_SJSR.SetCellBorderColor(RGB(0,0,0));
			m_SJSR.SetAction(16);
			m_SJSR.SetBlockMode(FALSE);
			
			m_SJSR.SetRow(14);
			m_SJSR.SetValue("  ");			
*/			
}

void CTjflxForm::OnShwrjOpen() 
{
	CString fileDialogFilter1="热力学法预测温度数据文件(*.RLXZ)|*.RLXZ||";
	const char fileDialogExt1[] = "RLXZ";
	CFileDialog fileDialog1(TRUE,fileDialogExt1,NULL,OFN_FILEMUSTEXIST, fileDialogFilter1);
    if(fileDialog1.DoModal()==IDOK)
	{
		CString filename1=fileDialog1.GetPathName();//+fileDialog.GetFileName();		
		m_SJSR.LoadFromFile(filename1);		
	}
    UpdateData(FALSE);		
	
}

void CTjflxForm::OnShwrjCalc() 
{
	//p为水合物生成压力(输入)
	double p,a,B,c,d,j,numc1,numc2,numbc1,numbc2,f,f1,t,t1,tt;
	double a1[10],a2[10],B1[10],b2[10],c1[10],c2[10],y[10];
	CString Temp1,Temp2,Temp4,Temp5,Temp6,Temp7,Temp8;
	char Temp3[30];
	m_SJSR.SetCol(5);
	m_SJSR.SetRow(3);   
	Temp1=m_SJSR.GetText();
    p=atof(Temp1);
	
	m_SJSR.SetRow(4);   
	Temp2=m_SJSR.GetText();   
	y[0]=atof(Temp2);
	
	m_SJSR.SetRow(5);   
	Temp4=m_SJSR.GetText(); 
    y[1]=atof(Temp4);
	
    m_SJSR.SetRow(6);   
	Temp5=m_SJSR.GetText(); 
    y[2]=atof(Temp5);
    m_SJSR.SetRow(7);   
	Temp5=m_SJSR.GetText(); 
    y[3]=atof(Temp5);
    m_SJSR.SetRow(8);   
	Temp6=m_SJSR.GetText(); 
    y[4]=atof(Temp5);
    m_SJSR.SetRow(9);   
	Temp7=m_SJSR.GetText(); 
    y[5]=atof(Temp5);	
    m_SJSR.SetRow(10);   
	Temp8=m_SJSR.GetText(); 
    y[6]=atof(Temp5);	
	
	/*	p=2;//压力 
	y[0]=0.784; y[1]=0.06; y[2]=0.036; y[3]=0.024; y[4]=0.094; y[5]=0.002;//数据输入*/
	
    a1[0]=6.0499; a1[1]=9.4892; a1[2]=-43.67; a1[3]=-43.67; a1[4]=3.2485; a1[5]=23.035; a1[6]=4.9258;
    B1[0]=0.02844; B1[1]=0.04058; B1[2]=0; B1[3]=0; B1[4]=0.02622; B1[5]=0.09037; B1[6]=0.00934;
    a2[0]=6.2957; a2[1]=11.941; a2[2]=18.276; a2[3]=13.6942; a2[4]=7.599; a2[5]=25.271; a2[6]=2.403;
    b2[0]=0.02845; b2[1]=0.0418; b2[2]=0.046613; b2[3]=0.02773; b2[4]=0.024475; b2[5]=0.09781; b2[6]=0.00633;
	
	t=6.38*log(9.869*p)+262;
	int xz,i;
	xz=1;
	//由用户选择含硫或不含硫
	if(xz==1)
	{ 
		if(p<=6.865)
		{
			a=3.69974;
			B=0.01476;
			c=0.117660901;
			d=0.05883045;
		}
		else
		{
			a=8.97511;
			B=0.03303965;
			c=0.117660901;
			d=0.05883045;
		}
		j=5;
	}
	if(xz==2)
	{
		a=5.40694;
		B=0.02133;
		c=0.117660901;
		d=0.05883045;
		j=6;
	}
	
	do
	{
		numc1=0;
		numc2=0;
		numbc1=0;
		numbc2=0;
		for(i=0;i<=j;i++)
		{
			c1[i]=exp(a1[i]-B1[i]*t);
			c2[i]=exp(a2[i]-b2[i]*t);
			numc1=numc1+c1[i]*y[i];
			numc2=numc2+c2[i]*y[i];
			numbc1=numbc1+B1[i]*c1[i]*y[i];
			numbc2=numbc2+b2[i]*c2[i]*y[i];
		}
		f=a-B*t+c*log(1+numc1*9.869*p)+d*log(1+numc2*9.869*p);
		f1=-B-(c*9.869*p*numbc1)/(1+numc1*9.869*p)-(d*9.869*p*numbc2)/(1+numc2*9.869*p);
		t1=t-f/f1;
		t=t1;
	}
	while (fabs(f/f1)>0.000001);
	//tt为生成温度(输出)
	tt=t1-273.15;	
	//输出结果
	gcvt(tt,7,Temp3);
	m_SJSR.SetCol(2);
	m_SJSR.SetRow(13);
	m_SJSR.SetValue(Temp3);	
	
}

void CTjflxForm::OnShwrjSave() 
{
	UpdateData(TRUE);
	CString fileDialogFilter1="热力学法预测温度数据文件(*.RLXZ)|*.RLXZ||";
	const char fileDialogExt1[] = "RLXZ";
	CFileDialog fileDialog1(FALSE,fileDialogExt1,NULL,OFN_FILEMUSTEXIST, fileDialogFilter1);
    if(fileDialog1.DoModal()==IDOK)
	{
	    CString filename1=fileDialog1.GetPathName();//+fileDialog.GetFileName();		
	    m_SJSR.SaveToFile(filename1,FALSE);		
	}	
	
}

void CTjflxForm::OnShwrjPrintpreview() 
{
	// TODO: Add your command handler code here
	CPreview dlg(&m_SJSR);
	dlg.DoModal();
	
}

void CTjflxForm::OnShwrjPrint() 
{
	// TODO: Add your command handler code here
    m_SJSR.SetAction(13);		
	
}

void CTjflxForm::OnContextMenu(CWnd*, CPoint point)
{
	// CG: This block was added by the Pop-up Menu component	{		if (point.x == -1 && point.y == -1){			//keystroke invocation			CRect rect;			GetClientRect(rect);			ClientToScreen(rect);			point = rect.TopLeft();			point.Offset(5, 5);		}		CMenu menu;		VERIFY(menu.LoadMenu(IDR_POPUP_SHWRJ));		CMenu* pPopup = menu.GetSubMenu(0);		ASSERT(pPopup != NULL);		CWnd* pWndPopupOwner = this;//		while (pWndPopupOwner->GetStyle() & WS_CHILD)//			pWndPopupOwner = pWndPopupOwner->GetParent();		pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,			pWndPopupOwner);	}
}

void CTjflxForm::OnSize(UINT nType, int cx, int cy) 
{
	CFormView::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
	if(m_SJSR.m_hWnd != NULL)
	{
		CRect rc;	
		GetClientRect(&rc);
		m_SJSR.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(), NULL);
	}
	
}

⌨️ 快捷键说明

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