OUC移动软件开发 实验二

一、实验目标

1、学习使用快速启动模板创建小程序的方法;2、学习不使用模板手动创建小程序的方法。

二、实验步骤

(一)准备工作

1.注册和风天气账号,获取key

进入和风天气官网和风天气开发服务 ~ 强大、丰富的天气数据服务,注册账号,打开控制台,来到开发管理页面:

点击创建项目,填写相关信息后就可以获得key:

2.图片素材下载

通过以下地址下载图片素材:https://gaopursuit.oss-cnbeijing.aliyuncs.com/2022/demo2_file.zip

下载完成后在项目中解压下载得到的压缩包,获得图片素材。

3.服务器域名配置

在微信小程序界面打开开发管理,将以下两个域名加入到其中:

其中链接一用来查询天气数据,链接二用来查询城市的ID号,作为链接一查询时的一个参数。

(二)项目设计——视图设计

1.导航栏设计

将app.json中的代码修改为以下代码:

{
 "pages": [
  "pages/index/index"
 ],
 "window": {
  "navigationBarBackgroundColor": "#3883FA",
  "navigationBarTitleText": "今日天气"
 }
}

将导航栏设置成为蓝底白字的样子:

2.页面设计

页面主要包括四个大部分:

  • picker组件,用于地区选择器

  • text组件,用于显示当前城市的温度和天气状况

  • image组件,用于显示当前城市的天气图标

  • view组件,用于分行显示湿度,气压等天气信息。

①整体设计

首先设置整体容器,在.wxml文件中编写以下代码:

<view class='container'>
</view>

之后在app.wxss中设置样式,代码如下:

.container{
 height: 100vh;
 display: flex;
 flex-direction: column;
 align-items: center;
 justify-content: space-around;
}
②地区选择器

地区选择器使用picker组件来实现,.wxml文件中的代码改为如下代码:

<view class='container'>
  <!--区域1:地区选择器-->>
  <picker mode="region">
   <view>北京市</view>
  </picker>
</view>

效果如图所示:

点击后会出现弹窗并可以选择地区:

③文本设计

在.wxml中加入以下代码:

 <!--区域2:单行天气信息-->
  <text>19℃晴</text>

同时在.wxss文件中为文本设计对应的样式:

text{
 font-size: 80rpx;
 color: #3C5F81;
}

保持后可以得到以下效果:

④图标设计

在,wxml中添加代码:

<image src="/images/weather_icon/999.png" mode="widthFix"></image>

在.wxss文件中为图片设置对应样式:

image{
 width: 220rpx;
}

当前效果如下:

⑤多行天气信息设计

这一部分需要使用view组件来展示多行天气信息。

.wxml中添加以下代码(只展示一行,其余三个部分类似):

<view class='detail'>
  <view class='bar'>
    <view class='box'>湿度</view>
    <view class='box'>气压</view>
    <view class='box'>能见度</view>
  </view>
 </view>

在.wxss中为其设置样式:

.detail{
 width: 100%;
 display: flex;
 flex-direction: column;
}
.bar{
 display: flex;
 flex-direction: row;
 margin: 20rpx 0;
}
.box{
 width: 33.3%;
 text-align: center;
}

页面设计全部完成,此时的小程序效果如下:

(三)项目设计——代码逻辑

1.动态更新城市信息

修改picker组件中的北京市为{{region}},将其设置为动态数据,同时为picker组件添加监听时间。

.wxml中代码修改如下:

  <picker mode="region" bindchange="regionChange">
   <view>{{region}}</view>
  </picker>

同时在JS文件中定义对应函数:

 data: {
  region:['山东省','青岛市','黄岛区']
 },
 regionChange:function(e){
  this.setData({region:e.detail.value});
 },

现在就可以切换国内的任意城市了。

2.动态获取天气数据

由于使用https://devapi.qweather.com/v7/weather/now获取天气数据时需要用到城市的ID号这个数据,因此我们首先要查询对应城市的ID号,此函数共使用了两次和风天的API。

首先使用下面这段代码来查询对应城市的ID号,这个地方需要注意,需要添加adm来避免重名城市的问题,具体可以查看和风天气的官方API使用文档:城市搜索 for API | 和风天气开发服务

 url: 'https://geoapi.qweather.com/v2/city/lookup',
   data:{
    location:that.data.region[2],
    adm:that.data.region[1],
    key:'开发者key'
   },

利用查到的ID作为参数,再次调用和风天气的API来查询天气信息:

url: 'https://devapi.qweather.com/v7/weather/now',
     data:{
      location:res.data.location[0].id,
      key:'开发者key'
     },

之后将查到的信息通过setData函数来更新数据:

that.setData({now:res.data.now});

完整代码如下:

 getWrather:function(){
  var that=this;
  wx.request({
   url: 'https://geoapi.qweather.com/v2/city/lookup',
   data:{
    location:that.data.region[2],
    adm:that.data.region[1],
    key:'开发者key'
   },
   success:function(res){
    console.log(res.data);
    wx.request({
     url: 'https://devapi.qweather.com/v7/weather/now',
     data:{
      location:res.data.location[0].id,
      key:'开发者key'
     },
     success:function(res)
     {
      console.log(res.data);
      that.setData({now:res.data.now});
     }
   })
  }
  })
 },

同时在生命周期函数中调用一次onLoad函数和自定义函数regionChange中分别调用一次该函数:

regionChange:function(e){
​
  this.setData({region:e.detail.value});
​
  this.getWrather();
​
 },
 onLoad: function (options) {
​
  this.getWrather();
​
 },

达到在页面加载时和切换城市时主动获取一次数据的效果。

3.更新页面信息

首先我们可以在控制台中的appdata页面查询到对应数据的名称:

之后将所有需要更新的数据按照对应的名称修改即可,以下以湿度,气压和能见度给出示例代码:

<view class='bar'>
    <view class='box'>{{now.humidity}}</view>
    <view class='box'>{{now.pressure}}</view>
    <view class='box'>{{now.vis}}</view>
</view>

至此便完成了整个程序的编写。

三、程序运行结果

进入页面:

修改城市地点:

更新数据:

四、问题总结与体会

问题总结

在实验过程中一共遇到了两个问题,首先是关于API的使用问题。

课程说明文档给出的API是旧版的API,在新版的API中是无法直接使用城市名称来查询对应的天气信息的,会返回code:“400”,因此我再次加入了一个API,首先利用城市名查询对应的ID,再利用返回的这个ID来查询对应城市的天气信息。

下图可以看到,首先输出的是城市的ID号,后面是利用该ID号查询到的天气信息。

第二个问题是关于重名城市的问题,这一点是我最开始没有考虑到的,但后来发现到了这个问题,在和风天气的官方文档中给出了解决方案:城市搜索 for API | 和风天气开发服务,也就是在查询时加入adm,为该城市的上级行政区划,这样就可以解决重名问题。

 url: 'https://geoapi.qweather.com/v2/city/lookup',
   data:{
    location:that.data.region[2],
    adm:that.data.region[1],
    key:'开发者key'
   },

实验体会

相较于第一次实验,这一次实现难度虽然提高了,但是过程要顺利地多,由于课程给出的实验文档是利用的旧版API,在调用官方API时是会出错的,在这个地方我也是一点一点摸索出了一个问题的解决方案,通过加入第二个API的使用,成功解决了这个问题,最后的实现效果也比较好,这次实验给了我一些成就感,也希望能在接下来的实验中继续探索和实践。

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OUC数据库复习CSDN是指在中国软件开发者社区CSDN上,通过学习和复习中国海洋大学(OUC)数据库相关的知识。 中国海洋大学数据库课程是计算机相关专业的重要课程之一,强调学生对数据库的理论知识和实践技能的掌握。学生在学习数据库课程期间,可以通过CSDN平台上的相关资源进行复习。 CSDN是中国最大的技术社区之一,拥有大量的技术博客、论坛和教程资源。在CSDN上,有很多关于数据库的博文和教程,涵盖了数据库的基本概念、SQL语言、存储过程、触发器等方面的知识。这些博文和教程不仅可以帮助学生复习数据库的各个方面,还能够深入了解数据库的应用和开发技巧。 另外,CSDN上还有一些数据库相关的实例教程和项目案例,可以帮助学生将理论知识转化为实际应用。这些教程和案例提供了数据库在不同领域的应用实例,如电子商务、社交网络、医疗健康等,能够帮助学生更好地理解数据库的实际应用场景。 通过在CSDN上复习OUC数据库课程,学生可以获得更广泛的数据库知识,并与其他开发者交流和分享经验。另外,CSDN还提供了一些数据库技术的最新动态和行业趋势,帮助学生了解数据库领域的最新发展。 综上所述,OUC数据库复习CSDN是一种便捷高效的学习方式,学生通过CSDN平台可以找到大量的数据库相关资源,帮助他们巩固和提升数据库知识和技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值