📄 calculaterdlg.cpp
字号:
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 + -