Skip to content

Freezingsmile/MyWeather

 
 

Repository files navigation

MyWeather(软件综合实训项目)

作品源码来自于以前现代操作系统应用开发课程上的课程作业,并在本学期由小组成员进行了完善和修改而完成。

功能

天气app,主要功能是天气查询,辅助功能是查找城市返回地图、查找城市实时路况,通过调用高德的API实现;允许用户注册、登录,登录后使用收藏功能。高德开放平台:http://lbs.amap.com/dev/key/app 我已经注册了key(5fd3b8bd943a505ccfec387943bba945),调用API时可直接使用。 所调用的API及它们之间的关系:

功能 API
查询用户所在地的天气 IP定位 → 天气查询
查询某个城市的天气 行政区划查询 → 天气查询
查城市(地区)返回对应地图 地理编码 → 静态地图(使用label)
查城市(地区)实时交通路况 地理编码 → 静态地图(traffic=1)

计划用到的知识点

  • 页面导航:页面之间的跳转,通过侧边栏的几个按钮实现
  • 数据绑定:在第二个页面,绑定了checkbox的isChecked属性和按钮的content属性,方便用户对查询进行选择
  • 后台运行与程序生命周期:挂起时保存页面信息(如查询框中的信息),重新运行后恢复信息
  • 程序间通信:分享天气信息
  • 动态磁贴:每次查询都会进行更新,把当日天气、明后日天气装载到动态磁贴中,循环展示
  • 文件管理:打开一个选择图片的filePicker,供用户选择头像
  • 数据库:用于管理用户信息和城市信息
  • 网络访问:调用高德的API并解析,使它反馈到页面上,并有一定的异常处理

分工

用到的知识基本上都能在以前的作业和课件里面找到

UI设计

  • 负责设计app的页面,需要设计界面布局,页面之间的导航,自适应UI,数据绑定。
  • 暂定为3个页面,天气查询、地图查询和登录界面,可参考win10自带的天气应用的界面。
  • 三个页面的布局图包含在PPT中。

后台逻辑

细分为3部分。每部分要求写的成员函数如下:

  1. 实现后台运行与程序生命周期、程序间通信:OnNavigatedTo(3个),OnNavigatedFrom(3个),OnShareRequested
  2. 实现动态磁贴、文件管理:selectPicture,searchWeather,tile.xml,OnLaunched(App.xaml.cs里面)
  3. 实现网络访问、数据库:addFavourite(2个),showCollection(2个),logIn,以及数据库相关的一些函数
  • 其他函数如searchWeather、searchMap、showWeather则已经编写完成。

总结

网络访问方面,这次依赖的是高德的API,返回结果有XML/JSON格式的字符串,也有图像。因为字符串格式较复杂,解析起来花费的功夫也比较多,还需要考虑一些API未考虑进去的异常。当返回图像时,不能直接获得它的路径,需要用HttpResponseMessage类来接返回结果,把它转换为IInputStream,通过RandomAccessStream的CopyAsync方法,利用输入输出流转换为IRandomAccessStream类型变量,最后才能放到BitmapImage的路径中。

同时管理了2个数据库,分别它们有插入、查询操作,需要2个连接数据库的变量。

绑定了checkbox的isChecked属性和按钮的content属性,因为它们的类型不同,需要写一个转换器,把bool类型的变量和string类型的变量相互转换。

最后,解析API的时候,写了不少重复的代码,其中有很大一部分本是可重用的,显得不简洁且不易读。有机会希望能重写这些函数,减少冗余,提高可读性。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%