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

📄 天气预报采集系统dlg.cpp

📁 利用Boost库的正则表达式从中国气象网取天气预报,并将其写入Oracle数据库
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	return TRUE;
}
UINT __cdecl CTQYBDlg::WeatherCollectProc24(LPVOID p)
{
	CString weather_update_log;
	CString weather;
	CString temp;

	CStringArray  arr24;
	arr24.Add("广州");
	arr24.Add("深圳");
	arr24.Add("潮州");
	arr24.Add("韶关");
	arr24.Add("湛江");
	arr24.Add("惠州");
	arr24.Add("清远");
	arr24.Add("东莞");
	arr24.Add("江门");
	arr24.Add("茂名");
	arr24.Add("肇庆");
	arr24.Add("汕尾");
	arr24.Add("河源");
	arr24.Add("揭阳");
	arr24.Add("梅州");
	arr24.Add("中山");
	arr24.Add("德庆");
	arr24.Add("阳江");
	arr24.Add("云浮");
	arr24.Add("珠海");
	arr24.Add("汕头");
	arr24.Add("佛山");
	for (int j=0;j<1000;j++)
	{

		for (int i=0;i<arr24.GetCount();i++)
		{
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->GetWeatherByCity(arr24[i],weather);
			weather_update_log.Format("%s\r\n%s",arr24[i],weather);
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.GetWindowText(temp);
			weather_update_log+="\r\n";
			weather_update_log+=temp;
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.SetWindowText(weather_update_log);

			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->RecordWeatherByCity(arr24[i],weather);
		}
		j=1000;
	}
	CString updated_temp;
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.GetWindowText(updated_temp);
	updated_temp+="\r\n已更新 广东_24";
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.SetWindowText(updated_temp);
	return TRUE;
}
UINT __cdecl CTQYBDlg::WeatherCollectProc25(LPVOID p)
{
	CString weather_update_log;
	CString weather;
	CString temp;

	CStringArray arr25;
	arr25.Add("南宁");
	arr25.Add("桂林");
	arr25.Add("阳朔");
	arr25.Add("柳州");
	arr25.Add("梧州");
	arr25.Add("玉林");
	arr25.Add("桂平");
	arr25.Add("贺州");
	arr25.Add("钦州");
	arr25.Add("贵港");
	arr25.Add("防城港");
	arr25.Add("百色");
	arr25.Add("北海");
	arr25.Add("河池");
	arr25.Add("来宾");
	arr25.Add("崇左");
	for (int j=0;j<1000;j++)
	{

		for (int i=0;i<arr25.GetCount();i++)
		{
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->GetWeatherByCity(arr25[i],weather);
			weather_update_log.Format("%s\r\n%s",arr25[i],weather);
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.GetWindowText(temp);
			weather_update_log+="\r\n";
			weather_update_log+=temp;
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.SetWindowText(weather_update_log);

			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->RecordWeatherByCity(arr25[i],weather);
		}
		j=1000;
	}
	CString updated_temp;
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.GetWindowText(updated_temp);
	updated_temp+="\r\n已更新 广西_25";
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.SetWindowText(updated_temp);
	return TRUE;
}
UINT __cdecl CTQYBDlg::WeatherCollectProc26(LPVOID p)
{
	CString weather_update_log;
	CString weather;
	CString temp;

	CStringArray arr26;
	arr26.Add("昆明");
	arr26.Add("保山");
	arr26.Add("楚雄");
	arr26.Add("德宏");
	arr26.Add("红河");
	arr26.Add("临沧");
	arr26.Add("怒江");
	//arr26.Add("曲靖");
	arr26.Add("思茅");
	arr26.Add("文山");
	arr26.Add("玉溪");
	arr26.Add("昭通");
	arr26.Add("丽江");
	arr26.Add("大理");
	for (int j=0;j<1000;j++)
	{

		for (int i=0;i<arr26.GetCount();i++)
		{
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->GetWeatherByCity(arr26[i],weather);
			weather_update_log.Format("%s\r\n%s",arr26[i],weather);
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.GetWindowText(temp);
			weather_update_log+="\r\n";
			weather_update_log+=temp;
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.SetWindowText(weather_update_log);

			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->RecordWeatherByCity(arr26[i],weather);
		}
		j=1000;
	}
	CString updated_temp;
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.GetWindowText(updated_temp);
	updated_temp+="\r\n已更新 云南_26";
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.SetWindowText(updated_temp);
	return TRUE;
}
UINT __cdecl CTQYBDlg::WeatherCollectProc27(LPVOID p)
{
	CString weather_update_log;
	CString weather;
	CString temp;

	CStringArray arr27;
	arr27.Add("海口");
	arr27.Add("三亚");
	arr27.Add("儋州");
	//arr27.Add("琼山");
	arr27.Add("通什");
	arr27.Add("文昌");
	for (int j=0;j<1000;j++)
	{

		for (int i=0;i<arr27.GetCount();i++)
		{
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->GetWeatherByCity(arr27[i],weather);
			weather_update_log.Format("%s\r\n%s",arr27[i],weather);
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.GetWindowText(temp);
			weather_update_log+="\r\n";
			weather_update_log+=temp;
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.SetWindowText(weather_update_log);

			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->RecordWeatherByCity(arr27[i],weather);
		}
		j=1000;
	}
	CString updated_temp;
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.GetWindowText(updated_temp);
	updated_temp+="\r\n已更新 海南_27";
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.SetWindowText(updated_temp);
	return TRUE;
}
UINT __cdecl CTQYBDlg::WeatherCollectProc28(LPVOID p)
{
	CString weather_update_log;
	CString weather;
	CString temp;

	CStringArray arr28;
	arr28.Add("乌鲁木齐");
	arr28.Add("阿勒泰");
	arr28.Add("阿克苏");
	arr28.Add("昌吉");
	arr28.Add("哈密");
	arr28.Add("和田");
	arr28.Add("喀什");
	arr28.Add("克拉玛依");
	arr28.Add("石河子");
	arr28.Add("塔城");
	arr28.Add("库尔勒");
	arr28.Add("吐鲁番");
	arr28.Add("伊宁");
	for (int j=0;j<1000;j++)
	{

		for (int i=0;i<arr28.GetCount();i++)
		{
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->GetWeatherByCity(arr28[i],weather);
			weather_update_log.Format("%s\r\n%s",arr28[i],weather);
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.GetWindowText(temp);
			weather_update_log+="\r\n";
			weather_update_log+=temp;
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.SetWindowText(weather_update_log);

			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->RecordWeatherByCity(arr28[i],weather);
		}
		j=1000;
	}
	CString updated_temp;
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.GetWindowText(updated_temp);
	updated_temp+="\r\n已更新 新疆_28";
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.SetWindowText(updated_temp);
	return TRUE;
}
UINT __cdecl CTQYBDlg::WeatherCollectProc29(LPVOID p)
{
	CString weather_update_log;
	CString weather;
	CString temp;

	CStringArray arr29;
	arr29.Add("拉萨");
	arr29.Add("阿里");
	arr29.Add("昌都");
	arr29.Add("那曲");
	arr29.Add("日喀则");
	arr29.Add("山南");
	arr29.Add("林芝");
	for (int j=0;j<1000;j++)
	{

		for (int i=0;i<arr29.GetCount();i++)
		{
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->GetWeatherByCity(arr29[i],weather);
			weather_update_log.Format("%s\r\n%s",arr29[i],weather);
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.GetWindowText(temp);
			weather_update_log+="\r\n";
			weather_update_log+=temp;
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.SetWindowText(weather_update_log);

			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->RecordWeatherByCity(arr29[i],weather);
		}
		j=1000;
	}
	CString updated_temp;
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.GetWindowText(updated_temp);
	updated_temp+="\r\n已更新 西藏_29";
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.SetWindowText(updated_temp);
	return TRUE;
}
UINT __cdecl CTQYBDlg::WeatherCollectProc30(LPVOID p)
{
	CString weather_update_log;
	CString weather;
	CString temp;

	CStringArray arr30;
	arr30.Add("台北");
	arr30.Add("高雄");
	for (int j=0;j<1000;j++)
	{

		for (int i=0;i<arr30.GetCount();i++)
		{
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->GetWeatherByCity(arr30[i],weather);
			weather_update_log.Format("%s\r\n%s",arr30[i],weather);
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.GetWindowText(temp);
			weather_update_log+="\r\n";
			weather_update_log+=temp;
			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_Log_Edit.SetWindowText(weather_update_log);

			((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->RecordWeatherByCity(arr30[i],weather);
		}
		j=1000;
	}
	CString updated_temp;
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.GetWindowText(updated_temp);
	updated_temp+="\r\n已更新 台湾_30";
	((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->m_updated_log.SetWindowText(updated_temp);
	return TRUE;
}


// 开始更新天气数据
BOOL CTQYBDlg::StartUpdata(void)
{
	AfxBeginThread(WeatherCollectProc1,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc2,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc3,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc4,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc5,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc6,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc7,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc8,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc9,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc10,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc11,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc12,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc13,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc14,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc15,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc16,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc17,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc18,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc19,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc20,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc21,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc22,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc23,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc24,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc25,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc26,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc27,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc28,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc29,NULL,0,0,0,0);
	AfxBeginThread(WeatherCollectProc30,NULL,0,0,0,0);
	
	//((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->db.Close();

	return 0;
}


BOOL CTQYBDlg::GetWeatherByCity(LPCTSTR CITY,CString& DATA)
{
	CString html;
	CString   str;   
	unsigned   short   nPort   =   80;   
	DWORD   dwRes   =   0;
	CURLEncode en;
	BOOL RET;
	str.Format("city=%s&Submit5=%s",en.URLEncode(CString(CITY)),en.URLEncode(CString("提交")));
	RET=CAHttpForCE::Post(html,"www.cma.gov.cn",nPort,"tqyb/v2/url.php",str,dwRes,TRUE);
	if (!RET)
	{
		return FALSE;
	}
	html.Replace("&nbsp;","");
	CParseHTML ph;
	CString section;
	RET=ph.GetHtmlSignSection(html,"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"table_blue2\">","</table>",section,1,2);
	if (!RET)
		return FALSE;
	RET=ph.GetSection2Data(section,DATA);
	if (!RET)
		return FALSE;
	return TRUE;
}

//通过城市名,将天气数据记录数据库
BOOL CTQYBDlg::RecordWeatherByCity(LPCTSTR CITY,CString& DATA)
{
	//CString temp;
	CString sql;
	CString delete_sql;
	CTime t;
	CString date;
	t=CTime::GetCurrentTime();
	date=t.Format(_T("%Y-%m-%d"));
	try
	{
		delete_sql.Format("DELETE weather_collection WHERE city='%s' AND year_month_day='%s'",
				CITY,DATA);
		((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->db.ExecuteSQL(delete_sql);
		((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->db.ExecuteSQL("Commit;");
	}
	catch (CDBException* e)
	{
		//e->m_strError;
		e->Delete();
	}
	
	try
	{
		sql.Format("insert into weather_collection (city, date_w, weather, id) values('%s', '%s', '%s', weather_sequence.nextval)",CITY,date,
			DATA);
		((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->db.ExecuteSQL(sql);
		((CTQYBDlg*)AfxGetApp()->m_pMainWnd)->db.ExecuteSQL("Commit;");
		//AFX_SQL_ERROR_NO_CURRENT_RECORD
	}
	
	catch (CDBException* e)
	{
		//AfxMessageBox(e->m_strError);
		e->Delete();
		   
	}
	return TRUE;
}

⌨️ 快捷键说明

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