1. 程式人生 > >閱讀郭林《第一行程式碼》的筆記——第14章 進入實戰,開發酷歐天氣

閱讀郭林《第一行程式碼》的筆記——第14章 進入實戰,開發酷歐天氣

1、功能需求及技術可行性分析 (1)、先對程式進行需求分析 功能:
  1. 可以羅列出全國所有的省、市、縣。
  2. 可以檢視全國任意城市的天氣資訊。
  3. 可以自由地切換城市,去檢視其他城市的天氣。
  4. 提供手動更新以及後臺自動更新天氣的功能。
雖然看上去只有四個主要的功能點,但如果想要全部實現這些功能卻需要用到UI、網路、定位、資料儲存、服務等技術,因此還是非常考驗你的綜合應用能力的。 (2)、進行技術可行性分析 首先需要考慮的一個問題就是,我們如何才能得到全國省市縣的資料資訊,以及如何才能獲取到每個城市的天氣資訊。很幸運,現在網上有不少免費的天氣預報介面可以實現上述功能,如新浪天氣、雅虎天氣等,這裡我們準備使用中國天氣網提供的API介面來實現上述功能。
比如要想羅列出中國所有的省份,只需訪問如下地址:

http://www.weather.com.cn/data/list3/city.xml

伺服器會返回我們一段文字資訊,其中包含了中國所有的省份名稱以及省級代號,如下所示: 01|北京,02|上海,03|天津,04|重慶,05|黑龍江,06|吉林,07|遼寧,08|內蒙古,09|河北,10|山西,11|陝西,12|山東,13|新疆,14|西藏,15|青海,16|甘肅,17|寧夏,18|河南,19|江蘇,20|湖北,21|浙江,22|安徽,23|福建,24|江西,25|湖南,26|貴州,27|四川,28|廣東,29|雲南,30|廣西,31|海南,32|香港,33|澳門,34|臺灣
可以看到,北京的代號是01,上海的代號是02,不同省份之間以逗號分隔,省份名稱和省級代號之間以單豎線分隔。那麼如何才能知道某個省內有哪些城市呢?其實也很簡單,比如江蘇的省級代號是19,訪問如下地址即可:

http://www.weather.com.cn/data/list3/city19.xml

也就是說,只需要將省級代號新增到city的後面就行了,現在伺服器返回的資料如下: 1901|南京,1902|無錫,1903|鎮江,1904|蘇州,1905|南通,1906|揚州,1907|鹽城,1908|徐州,1909|淮安,1910|連雲港,1911|常州,1912|泰州,1913|宿遷 這樣我們就得到江蘇省內所有城市的資訊了,可以看到,現在返回的資料格式和剛才檢視省份資訊時返回的資料格式是一樣的。相信此時你已經可以舉一反三了,比如說蘇州的市級代號是1904,那麼想要知道蘇州市下又有哪些縣的時候,只需訪問如下地址:

http://www.weather.com.cn/data/list3/city1904.xml

這次伺服器返回的資料如下: 190401|蘇州,190402|常熟,190403|張家港,190404|崑山,190405|吳縣東山,190406|吳縣,190407|吳江,190408|太倉 通過這種方式,我們就能把全國所有的省、市、縣都羅列出來了。那麼解決了全國省市縣資料的獲取,我們又怎樣才能檢視到具體的天氣資訊呢?這就必須找到某個地區對應的天氣代號。比如說崑山的縣級代號是190404,那麼訪問如下地址:

http://www.weather.com.cn/data/list3/city190404.xml

這時伺服器返回的資料非常簡短:

190404|101190404

其中,後半部分的101190404就是崑山所對應的天氣代號了。這個時候再去訪問查詢天氣介面,將相應的天氣代號填入即可,介面地址如下:

http://www.weather.com.cn/data/cityinfo/101190404.html

這樣,伺服器就會把崑山當前的天氣資訊以JSON格式返回給我們了,如下所示:

{"weatherinfo":

    {"city":"崑山","cityid":"101190404","temp1":"21","temp2":"9",    "weather":"多雲轉小雨","img1":"d1.gif","img2":"n7.gif","ptime":"11:00"}

}

其中city表示城市名,cityid表示城市對應的天氣代號,temp1和temp2表示氣溫是幾度到幾度,weather表示今日天氣資訊的描述,img1和 img2表示今日天氣對應的圖片,ptime表示天氣釋出的時間。 2、Git時間,將程式碼託管到GitHub上 3、建立資料庫和表 4、遍歷全國省市縣資料 5、顯示天氣資訊 6、切換城市和手動更新天氣 7、後臺自動更新天氣 8、修改圖示和名稱 9、你還可以做的事情 最後,這邊都是程式碼,附上原始碼,不謝! 原始碼連結:http://download.csdn.net/detail/u010102829/9673311