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

📄 calculaterdlg.cpp

📁 用于计算气温的年平均值、月平均值、〉10度积温值
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		CString str;
		str.Format("%d",i);
		SetDlgItemText(IDC_COUNTSUN, str);
		UpdateWindow();
	}
}

//计算气温
void CCalculaterDlg::OnCaltemper() 
{
	// TODO: Add your control notification handler code here
////////////////累年日平均气温////////////////
	int numStat=0;
	int i,j;
	double ValueTemper = 0.0;
	int nCount = 0;
	for (i=0;i<m_Station.GetSize();i++)
	{
		nCount=0;
		ValueTemper=0.0;
		for (j=0;j<m_TemValue.GetSize();j++)
		{
			if (m_TemStation.GetAt(j) == m_Station.GetAt(i))
			{
				ValueTemper=ValueTemper+m_TemValue.GetAt(j);
				nCount=nCount+1;
			}
		}
		if (ValueTemper==0.0)
		{
			m_ValueTemDay.Add(ValueTemper);
		}
		else
		{	
			ValueTemper=ValueTemper/nCount; 
			m_ValueTemDay.Add(ValueTemper);
		}

		numStat+=1;
		CString str;
		str.Format("%d",numStat);
		SetDlgItemText(IDC_COUNTTEMPERDAY, str);
		UpdateWindow();	
	}

// 	OnCaltemperMonth();
// 	OnCaltemper10C();
}
void CCalculaterDlg::OnCaltemperMonth()
{
////////////////累年月平均气温////////////////
	int numStat=0;
	int i,j,k;
	double ValueTemper = 0.0;
	int nCount = 0;
	for (i=0;i<m_Station.GetSize();i++)
	{
		for (j=1;j<=12;j++) //1至12月
		{
			nCount=0;
			ValueTemper=0.0;
			for (k=0;k<m_TemValue.GetSize();k++)
			{
				if (m_TemStation.GetAt(k) == m_Station.GetAt(i) && m_TemMonth.GetAt(k) == j)
				{
					ValueTemper=ValueTemper+m_TemValue.GetAt(k);
					nCount=nCount+1;
				}
			}
			if (ValueTemper==0.0)
			{
				m_ValueTemMonth.Add(ValueTemper);
			}
			else
			{
				ValueTemper=ValueTemper/nCount; 
				m_ValueTemMonth.Add(ValueTemper);
			}
		}

		numStat+=1;
		CString str;
		str.Format("%d",numStat);
		SetDlgItemText(IDC_COUNTTEMPERMONTH, str);
		UpdateWindow();		
	}
}

void CCalculaterDlg::OnCaltemper10C()
{
////////////////≥10℃积温////////////////
	int numStat=0;
	int i,j,k;
	double ValueTemper = 0.0;
	int nCount = 0;
	for (i=0;i<m_Station.GetSize();i++)
	{
		nCount=0;
		ValueTemper=0.0;
		for (j=1971;j<=2007;j++) //1975至2007年
		{
			for (k=0;k<m_TemValue.GetSize();k++)
			{
				if (m_TemStation.GetAt(k) == m_Station.GetAt(i) && m_TemYear.GetAt(k) == j)
				{
					if (m_TemValue.GetAt(k)>=100) //>=10C
						ValueTemper=ValueTemper+m_TemValue.GetAt(k);
				}
			}
			nCount=nCount+1;
		}
		if (ValueTemper==0.0)
		{
			m_ValueTem10C.Add(ValueTemper);
		}
		else
		{	
			ValueTemper=ValueTemper/nCount; 
			m_ValueTem10C.Add(ValueTemper);
		}

		numStat+=1;
		CString str;
		str.Format("%d",numStat);
		SetDlgItemText(IDC_COUNTTEMPER10C, str);
		UpdateWindow();		
	}
}


//计算降水
void CCalculaterDlg::OnCalwater() 
{
	// TODO: Add your control notification handler code here
////////////////累年月平均降水////////////////
	int numStat=0;
	int i,j,k;
	double ValueWater = 0.0;
	int nCount = 0;
	for (i=0;i<m_Station.GetSize();i++)
	{
		for (j=1;j<=12;j++) //1至12月
		{
			nCount=0;
			ValueWater=0;
			for (k=0;k<m_WatValue.GetSize();k++)
			{
				if (m_WatStation.GetAt(k) == m_Station.GetAt(i) && m_WatMonth.GetAt(k) == j)
				{
					ValueWater=ValueWater+m_WatValue.GetAt(k);
					nCount=nCount+1;
				}
			}
			if (ValueWater==0.0)
			{
				m_ValueWatMonth.Add(ValueWater);
			}
			else
			{
				ValueWater=ValueWater/nCount; 
				m_ValueWatMonth.Add(ValueWater);
			}
		}

		numStat+=1;
		CString str;
		str.Format("%d",numStat);
		SetDlgItemText(IDC_COUNTWATERMONTH, str);
		UpdateWindow();		
	}
	
	OnCalwateryear();
}
void CCalculaterDlg::OnCalwateryear()
{
////////////////平均年降水量////////////////
	int numStat=0;
	int i,j,k;
	double ValueWater = 0.0;
	int nCount = 0;
	for (i=0;i<m_Station.GetSize();i++)
	{
		nCount=0;
		ValueWater=0;
		for (j=1971;j<=2007;j++) //1975至2007年
		{
			for (k=0;k<m_WatValue.GetSize();k++)
			{
				if (m_WatStation.GetAt(k) == m_Station.GetAt(i) && m_WatYear.GetAt(k) == j)					
					ValueWater=ValueWater+m_WatValue.GetAt(k);
			}
			nCount=nCount+1;
		}
		if (ValueWater==0.0)
		{
			m_ValueWatYear.Add(ValueWater);
		}
		else
		{
			ValueWater=ValueWater/nCount; 
			m_ValueWatYear.Add(ValueWater);
		}

		numStat+=1;
		CString str;
		str.Format("%d",numStat);
		SetDlgItemText(IDC_COUNTWATERYEAR, str);
		UpdateWindow();		
	}
}
//计算日照
void CCalculaterDlg::OnCalsun() 
{
	// TODO: Add your control notification handler code here
	int	numStat=0;
	int i,j,k;
	double ValueSun = 0.0;
	int nCount = 0;
	for (i=0;i<m_Station.GetSize();i++)
	{
		nCount=0;
		ValueSun=0;
		for (j=1971;j<=2007;j++) //1975至2007年
		{
			for (k=0;k<m_SunValue.GetSize();k++)
			{
				if (m_SunStation.GetAt(k) == m_Station.GetAt(i) && m_SunYear.GetAt(k) == j)					
					ValueSun=ValueSun+m_SunValue.GetAt(k);
			}
			nCount=nCount+1;
		}
		ValueSun=ValueSun/nCount; 
		m_ValueSunYear.Add(ValueSun);

		numStat+=1;
		CString str;
		str.Format("%d",numStat);
		SetDlgItemText(IDC_COUNTSUNYEAR, str);
		UpdateWindow();		
	}	
}

//结果输出路径
void CCalculaterDlg::OnOutputpath() 
{
	// TODO: Add your control notification handler code here
	static char BASED_CODE szFilter[] = "Xls Files (*.xls)|*.xls|";
	CFileDialog fileDlg(TRUE, NULL, "", OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, szFilter, NULL);	
	fileDlg.m_ofn.lpstrTitle = "计算结果输出";	
	if(fileDlg.DoModal() == IDOK)
	{
		m_PathOutput = fileDlg.GetPathName();
		SetDlgItemText(IDC_PATHOUTPUT,m_PathOutput);
	}	
}

//结果输出
void CCalculaterDlg::OnOutput() 
{
	// TODO: Add your control notification handler code here
	// 新建Excel文件名及路径,TestSheet为内部表名
	CSpreadSheet SS(m_PathOutput+_T(".xls"), "气象数据", FALSE);
	//加入字段名
	CStringArray FieldArray;
	SS.BeginTransaction();
	FieldArray.RemoveAll();
	FieldArray.Add("ID");
	FieldArray.Add("站点代码");
	FieldArray.Add("经度");
	FieldArray.Add("纬度");
	FieldArray.Add("高程");
	FieldArray.Add("累年日平均气温");
	FieldArray.Add("累年月平均气温(1月)");
	FieldArray.Add("累年月平均气温(2月)");
	FieldArray.Add("累年月平均气温(3月)");
	FieldArray.Add("累年月平均气温(4月)");
	FieldArray.Add("累年月平均气温(5月)");
	FieldArray.Add("累年月平均气温(6月)");
	FieldArray.Add("累年月平均气温(7月)");
	FieldArray.Add("累年月平均气温(8月)");
	FieldArray.Add("累年月平均气温(9月)");
	FieldArray.Add("累年月平均气温(10月)");
	FieldArray.Add("累年月平均气温(11月)");
	FieldArray.Add("累年月平均气温(12月)");
	FieldArray.Add("≥10℃积温");
// 	FieldArray.Add("累年月平均降水(1月)");
// 	FieldArray.Add("累年月平均降水(2月)");
// 	FieldArray.Add("累年月平均降水(3月)");
// 	FieldArray.Add("累年月平均降水(4月)");
// 	FieldArray.Add("累年月平均降水(5月)");
// 	FieldArray.Add("累年月平均降水(6月)");
// 	FieldArray.Add("累年月平均降水(7月)");
// 	FieldArray.Add("累年月平均降水(8月)");
// 	FieldArray.Add("累年月平均降水(9月)");
// 	FieldArray.Add("累年月平均降水(10月)");
// 	FieldArray.Add("累年月平均降水(11月)");
// 	FieldArray.Add("累年月平均降水(12月)");
// 	FieldArray.Add("平均年降水量");
// 	FieldArray.Add("平均年日照时数");
	SS.AddHeaders(FieldArray);	

	//写数据
	int i,j;
	for (i=0;i<m_Station.GetSize();i++)
	{
		CStringArray RowArray;
		RowArray.RemoveAll();
		CString strTemp;
		strTemp.Format("%d",i+1);
		RowArray.Add(strTemp);  //ID
		strTemp.Format("%d",m_Station.GetAt(i));
		RowArray.Add(strTemp);  //站点代码
		strTemp.Format("%lf",m_Longi.GetAt(i));
		RowArray.Add(strTemp);  //经度
		strTemp.Format("%lf",m_Lati.GetAt(i));
		RowArray.Add(strTemp);  //纬度
		strTemp.Format("%d",m_Elev.GetAt(i));
		RowArray.Add(strTemp);  //高程
		strTemp.Format("%lf",m_ValueTemDay.GetAt(i));
		RowArray.Add(strTemp);  //累年日平均气温
		//累年月平均气温1-12月
		for (j=0;j<12;j++)
		{
			strTemp.Format("%lf",m_ValueTemMonth.GetAt(i*12+j));
			RowArray.Add(strTemp);
		}
		strTemp.Format("%lf",m_ValueTem10C.GetAt(i));
		RowArray.Add(strTemp); //≥10℃积温
// 		//累年月平均降水1-12月
// 		for (j=0;j<12;j++)
// 		{
// 			strTemp.Format("%lf",m_ValueWatMonth.GetAt(i*12+j));
// 			RowArray.Add(strTemp);
// 		}
// 		strTemp.Format("%lf",m_ValueWatYear.GetAt(i));
// 		RowArray.Add(strTemp); //平均年降水量
// 		strTemp.Format("%lf",m_ValueSunYear.GetAt(i));
// 		RowArray.Add(strTemp); //平均年日照时数

		SS.AddRow(RowArray,i+2,true);	
	}

	SS.Commit();
	AfxMessageBox("结果输出完毕!");
}







void CCalculaterDlg::OnCalALL() 
{
	// TODO: Add your control notification handler code here
	OnBtnreadall();
	OnCaltemper();
	OnCaltemperMonth();
	OnCaltemper10C();
// 	OnCalwater();
// 	OnCalwateryear();
// 	OnCalsun();
	OnOutput();
}

⌨️ 快捷键说明

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