阅读郭林《第一行代码》的笔记——第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

猜你喜欢

转载自blog.csdn.net/u010102829/article/details/53037303