当前位置:论文写作 > 毕业论文范文 > 文章内容

基于win8的天气新闻类应用实现

主题:天气预报 下载地址:论文doc下载 原创作者:原创作者未知 评分:9.0分 更新时间: 2024-01-20

简介:关于等于天气方面的论文题目、论文提纲、等于天气论文开题报告、文献综述、参考文献的相关大学硕士和本科毕业论文。

等于天气论文范文

天气预报论文

目录

  1. 1.引 言(Introduction)
  2. 2.应用主体框架(Application main framework)
  3. 3.相关技术说明(Relevant technical description)
  4. 3.1 获取实时天气
  5. 3.2 获取预报天气
  6. 3.3 绘制温度曲线
  7. 3.4 获取天气新闻
  8. 4.提取网页数据(Extract data from web page)
  9. 4.1 第三方类库HtmlAgilityPack.dll介绍
  10. 4.2 新闻网页源文件Html分析
  11. 4.3 提取新闻内容
  12. 4.4 得到的结果
  13. 5.绘制温度曲线(Draw the temperature curve)
  14. 5.1 获取温度数据
  15. 5.2 绘制曲线
  16. 6.结论(Conclusion)
  17. 天气预报:维尼夫妇vn 第四集 [驾校试练-连心锁]

(武汉科技大学计算机科学与技术学院,湖北 武汉430065)

摘 要:Windows8应用商店开发是微软的一个全新开发技术,本文详细介绍了一款基于win8的天气新闻类应用在开发过程中的设计思路,用到的相关技术:如何使用API,如何提取动态网页中的数据,如何根据动态改变的温度值绘制出正确的温度曲线.应用最终的成功开发表明,设计达到了最初的预期要求,并且对类似应用的开发与研究起了较好的借鉴作用.

关键词:Windows8应用商店开发;使用API;提取网页数据;绘制动态温度曲线

中图分类号:TP311.5 文献标识码:A

The Implementation of Weather News Application Based on WIN8

WANG Fan,ZHANG Junjie,OUYANG Lin

(Wuhan University of Science and Technology,College of Computer Science and Technology,Wuhan 430065,China)

Abstract:The development of WINDOWS8 app store is a brand new technology of Microsoft. This paper introduces a weather news application based on win8 in the process of developing the design train of thought.The use of related technologies:How to make use of APIHow to extract data from dynamic Web pageHow to plot correct temperature curves according to the mutable temperature values.The ultimate success of the exploring application manifests that this design has met the expected requirements and has offered succes论文范文ul experiences for other similar explorations and researches.

Keywords:the development of Windows8 app store,make use of API,extract data from web page,plot mutable

temperature curves

1.引 言(Introduction)

微软新的操作系统Windows8已经发布了,它拥有更为精美的界面设计,操作也更简单快捷,

受到了一定范围的关注[1].用户可以在win8应用商店里下载不同种类的应用,比如我们最常用的:天气新闻类.在这类应用当中,我们可以发现有许多应用只是集合某个优点,显得太过于单一而难以被用户接受,或者说功能设计起来有点冗余,普通用户甚至不清楚应用的某些功能的具体目的.针对以上情况,本文提出了此类应用在开发过程中的设计思路,用到的相关技术以及难点所在,志在为广大win8爱好者提供学习平台以及为行内入门朋友分享开发经验.

2.应用主体框架(Application main framework)

首先把此应用的主题框架分成如下几个部分:实时天气、预报天气、温度曲线、天气新闻.主体界面设计大致如下:

可以看到,对于大多数普通用户来说,此结构基本上已经满足了需求.

3.相关技术说明(Relevant technical description)

3.1 获取实时天气

中国气象局给广大开发者提供了一个免费的API,可以用来查询国内所有城市的当前实时天气,该API的格式为:http://www.weather.com.cn/data/sk/城市编号.html,其中城市编号是指中国气象局把全国的城市都编了一个号,如武汉的编号为:101200101,通过访问此API,可以从中国气象局获取最新的实时天气信息,格式为Json格式:

{"weatherinfo":

{"city":"武汉",

"cityid":"101200101",

"temp":"19",

"WD":"西风",

"WS":"*",

"time":"20:30",

}

}

可以看到里面包含了武汉的实时天气信息,包括温度、风力风向等,然后可以利用.NET提供的相关类的某些方法可以把这些数据解析出来显示给用户[2].

3.2 获取预报天气

关于这一部分,应用需要获取未来六天的详细的预报天气,有两种方法:第一种,也是上面提到的,利用中国气象局提供的相应API,可以获取到未来六天的天气信息;第二种,是采用第三方的一个类库,里面封装了相应方法,可以用来提取网页上面的数据,比如可以找到中国天气网的论文范文网站,里面有专门的一个网页是用来显示指定城市的未来天气预报信息,只需要查看它的Html源文件,对其进行分析,找规律,然后把数据提取出来,详细说明在下面介绍.

3.3 绘制温度曲线

这一部分是本应用最难实现的部分,主要过程是先得通过提取网页指定的未来几天的最高温和最低温,然后把这些温度值以坐标曲线的方式显示在界面上,详细说明在第4段中将介绍.

3.4 获取天气新闻

此部分是采用第三方的一个类库,里面封装了相应方法,可以用来提取网页上面的数据,详细说明在下面介绍.

4.提取网页数据(Extract data from web page)

对于获取预报天气和天气新闻,其实原理都是一样的,都是运用第三方的一个类库,运用里面提供的某些方法来对获取某个特定网页的信息,下面以获取天气新闻为例来说明主要实现过程.

4.1 第三方类库HtmlAgilityPack.dll介绍

在开发过程中用到的最多的方法是以下几个,也是HtmlAgilityPack.dll这个类库最核心的方法:

(1)htmlDoc.DocumentNode.ChildNodes,此方法用来获取根节点的一级子节点.

(2)htmlDoc.DocumentNode.Descendants().ElementAt(num),此方法获得根节点的所有子孙结点中第num个结点.

(3)htmlDoc.DocumentNode.Descendants

("div"),此方法获得根节点的所有指定子 孙标签(如div)

结点.

(4)htmlDoc.DocumentNode.GetAttributeValue

("href", null),此方法获得结点的某一个属性值

(如a标签的href).

4.2 新闻网页源文件Html分析

这一部分是提取的中国天气网上的最新天气资讯,通过打开该网页的源文件,可以看到关于天气新闻的Html代码大致格式如下:

<,div class等于"weatherMain">,

<,div class等于"weatherLeft">,

<,div class等于"content_list1">,

<,h1>,天气资讯

<,/h1>,

<,ul class等于"newList">,

<,li>,<,a title等于"新疆乌鲁木齐." target等于"_blank" href等于"news/2014/04/2089342.shtml">,新疆乌鲁木齐.<,/a>,<,span>,2014-04-03 15:51:12<,/span>,

<,/li>,

<,!--共有5个<,li>,结点-->,

<,/ul>,

<,ul class等于"newList">,

<,li>,<,a title等于"北京空气.." target等于"_blank" href等于"climate/2014/04/qhbhyw/2089026.shtml">,

北京空气.<,/a>,<,span>,2014-04-03 10:13:59<,/span>,

<,/li>,

<,!--共有5个<,li>,结点-->,

<,/ul>,

<,!--共有10个<,ul>, 标签-->,

<,/div>,

<,/div>,

<,/div>,

也就是说一共有10段新闻,每段新闻里面又包含5条新闻,于是可以很明显的找出这段Html代码的规律,只需要在每一段新闻里面取第一条新闻即可(当然也可以根据不同需要选择其他的新闻)[3].

4.3 提取新闻内容

主要代码描述:

private async void GetWeatherNews()

{

int newsNum 等于 0,//计数,只要9条新闻

App.httpClient 等于 new HttpClient(),

string html 等于 await App.httpClient.GetStringAsync("http://www.weather.com.cn/news/index.shtml"),

//得到中国天气网新闻天气资讯的Html源代码

HtmlDocument htmlDoc 等于 new HtmlDocument(),

htmlDoc.LoadHtml(html),

HtmlNode divNode 等于 htmlDoc.DocumentNode.Descendants("div").ElementAt(18),

//可以发现 "weatherMain"的 div是html文件的第18个

HtmlNode divNode1 等于 divNode.Descendants("div").ElementAt(0),//得到"weatherLeft"子节点

HtmlNode divNode2 等于 divNode1.Descendants("div").ElementAt(0),//得到"content_list1"子节点

foreach (HtmlNode ulNode in divNode2.Descendants("ul"))//循环获取ul

{

if (newsNum 等于等于 9)//只需要9个新闻消息

break,

HtmlNode liNode 等于 ulNode.Descendants("li").ElementAt(0),//取每个ul的第一条新闻

string Titlestr 等于 liNode.Descendants("a").First().InnerText,//获得标题

string Timestr 等于 liNode.Descendants("span").First().InnerText, //获得时间

string url等于 liNode.Descendants("a").First().GetAttributeValue("href, null),//获取详细新闻url

//根据新闻的url跳转到新闻内容页面,获取详细信息,处理过程也类似上面的,不再赘述

天气预报:维尼夫妇vn 第四集 [驾校试练-连心锁]

//...

}

}

4.4 得到的结果

5.绘制温度曲线(Draw the temperature curve)

绘制温度曲线这一块是本应用最难的一部分,主要流程是先得通过提取网页指定的未来几天的最高温和最低温,然后把这些温度值以坐标曲线的方式显示在界面上,最终效果如图3所示.

下面介绍主要实现过程:

5.1 获取温度数据

采用和获取天气新闻一样的技术,先从中国天气网获取未来六天的温度,比如说打开* http://www.weather.com.cn/weather/101200101.shtml,其中“101200101”是武汉的城市编号,在这个页面中可以查看到相应城市的未来一周的天气预报,应用只需要获取六天的温度(包括每天的最低温和最高温),然后根据温度画出温度曲线,举例说明,假如现在获得了一组数据如下:

接下来只需要将这些数据以坐标曲线的方式绘制出来即可[4,5].

5.2 绘制曲线

(1)思路介绍

将高温和低温分为两个区域,分为上下两半部分,上半部分为高温,纵坐标在50—150;下半部分为低温,纵坐标在200—300.横坐标高温和低温都是六个点,分别为30、130、230、330、430、530,在直角坐标系中是这样分布的:

由直角坐标系可以看到,在y轴方向,温度越高,坐标点离原点越远.现在就高温区域进行分析,首先要建立一个概念:在高温区域50—150的点其实都是一个相对的概念,比如现在获得的一组数据最大值是36℃,最小值是20℃,这两点会描述在50—150,不妨假设是(30,110)和(130,140);假如又获得了一组数据,最大值是10℃,最小值是1℃,这两点也会描述在50—150,并且这组数据可能跟第一组数据的实际坐标是一样的!

有了这个概念以后,现在来推导由温度值得到真实纵坐标值的式子:实际经验表明,六天中的每天的最高温度之间的最大温差不会超过30℃,这样六个点的纵坐标相差的距离high[i]-min(high[i]表示六天中每天的最高温度,i从1取到6,min表示high[i]之中的最小值)就不是很大,在界面上就表现不出高低的效果,于是需要把high[i]-min放大一下,那放大多少呢?很明显,如果温差越大的话,高低效果会越明显,于是放大的倍数就越小;如果温差越小的话,高低效果会越不明显,于是放大的倍数就越大.所以,温差与放大的倍数之间是一种反比的关系:放大的倍数等于k/(max-min),(其中k是常数,由界面屏幕的实际纵坐标之间的差距决定,根据实际情况,本应用取的是50).于是可以得到下面这个由温度值得到真实纵坐标值的式子:

实际纵坐标值等于n-[ (high[i]-min) * k/(max-min) ]

其中,n取的是150或300,分别用于绘制高温部分和低温部分;high[i]表示的是六天中每天的最高温度,max和min分别是high[i]的最大和最小值;k是常数,与界面屏幕的实际纵坐标有关,本应用取的是50.

(2)主要代码描述:

public void Draw(int[]tem, int n,)

{

for (int i 等于 0, i <, n, i++)//得到温度数组中的最大最小值

{

if (tem[i] >, max) max 等于 tem[i],

if (tem[i] <, min) min 等于 tem[i],

}

int k 等于 1, temDiffer 等于 max-min,

if (temDiffer !等于 0)//如果最大温差不等于0

{

k等于 50 / temDiffer,

起点.Point等于 new Point(30, n - (tem[0] - min)*k),

第一条直线的终点.Point 等于 new Point(130, n - (tem[1] - min) *k),

第二条直线的终点.Point 等于 new Point(230, n - (tem[2] - min) *k),

第三条直线的终点.Point 等于 new Point(330, n - (tem[3] - min) *k),

第四条直线的终点.Point 等于 new Point(430, n - (tem[4] - min) *k),

第五条直线的终点.Point 等于 new Point(530, n - (tem[5] - min) *k),

}

else//如果最大温差是0,即六个温度值全部相等

{

int choice等于50,//如果是高温部分,则全部纵坐标为50

if (n 等于等于 300)choice等于 200,//低温部分,纵坐标为200

起点.StartPoint 等于 new Point(30, choice),

第一条直线的终点.Point 等于 new Point(130, choice),

第二条直线的终点.Point 等于 new Point(230, choice),

第三条直线的终点.Point 等于 new Point(330, choice),

第四条直线的终点.Point 等于 new Point(430, choice),

第五条直线的终点.Point 等于 new Point(530, choice),

}

//接下来把这些点把连接起来即可

//..

}

6.结论(Conclusion)

本文详细介绍了一款基于win8的天气新闻类的应用开发的全过程,包括设计框架,用到的相关技术,以及对这些技术的基本运用.在文中对如何获取动态网页数据(包括Html的结构分析,第三方类库介绍等),如何根据温度值绘制出温度曲线这两块部分进行了详细说明.应用的成功开发基本解决了某些类似应用功能单一冗余的问题,对初学者起到了很好的借鉴作用.

参考文献(References)

[1] 曾杰.Win8操作系统的特点及应用方式[J].现代企业教育,2012,(22):249-250.

[2] 胡晓峰.JSON与XML在网络数据传输中的应用分析[J].电脑编程技巧与维护,2010,(10):77-78.

[3] 胡瑜,王立志.基于HTML结构特征的网页信息提取[J].辽宁 石油化工大学学报,2009,29(3):17-18.

[4] 胡建华,刘鑫朝,李辉.基于.NET的动态实时曲线的绘制方法[J].计算机技术与发展,2013,(3):180-182.

[5] 郭霞.用计算机绘制曲线的几种途径[J].信息技术,2003,27(5): 103-104,

作者简介:

王帆(1993-),男,本科.研究领域:win8应用开发,ASP.NET网站开发.

张俊杰(1993-),男,本科.研究领域:win8应用开发.

欧阳琳(1974-),男,博士,副教授.研究领域:分布式数据流,并行处理,计算机网络.

总结:本论文主要论述了等于天气论文范文相关的参考文献,对您的论文写作有参考作用。

天气预报引用文献:

[1] 蚁先生的天气预报论文范文 关于蚁先生的天气预报类论文写作参考范文2万字
[2] 天气预报和因素分析专科毕业论文范文 关于天气预报和因素分析论文怎么撰写2万字
[3] 农业和天气预报毕业论文题目范文 农业和天气预报论文范文素材10000字
《基于win8的天气新闻类应用实现》word下载【免费】
天气预报相关论文范文资料