使用 uniapp 开发标准体重计算小程序

引言

在现代生活中,健康管理越来越受到重视,而体重是衡量健康状况的重要指标之一。为了方便用户快速计算自己的标准体重并了解体重状态,我使用 uniapp 开发了一款简单的标准体重计算小程序。本文将详细介绍开发过程,并分享核心代码。

功能介绍

这款小程序的主要功能包括:

  1. 输入身高和体重:用户可以输入自己的身高(cm)和当前体重(kg)。

  2. 选择性别:用户可以选择性别,因为男性和女性的标准体重计算公式不同。

  3. 计算标准体重:根据世界卫生组织(WHO)的公式计算标准体重。

  4. 判断体重状态:根据当前体重与标准体重的差值,判断用户是偏瘦、正常还是偏胖。

  5. 输入校验:对用户输入的身高和体重进行有效性校验,避免不合理的数据。

技术栈

  • Uniapp:跨平台开发框架,支持一次开发,多端发布(微信小程序、H5、App 等)。

  • Vue.js:前端框架,用于构建用户界面和逻辑。

  • 微信开发者工具:用于调试和预览小程序。

开发步骤

1. 创建 Uniapp 项目

2. 编写页面代码

在 pages/index/index.vue 中编写主页面代码,包括输入框、选择器和计算逻辑。以下是核心代码:

html 复制代码
<template>
  <view class="container">
    <view class="input-group">
      <text>身高 (cm):</text>
      <input v-model="height" type="number" placeholder="请输入身高" />
    </view>

    <view class="input-group">
      <text>性别:</text>
      <picker mode="selector" :range="genders" @change="onGenderChange">
        <view class="picker">{{ genders[genderIndex] }}</view>
      </picker>
    </view>

    <view class="input-group">
      <text>当前体重 (kg):</text>
      <input v-model="currentWeight" type="number" placeholder="请输入当前体重" />
    </view>

    <button @click="calculateWeight">计算标准体重</button>

    <view class="result" v-if="result !== null">
      <text>您的标准体重是: {{ result.standardWeight }} kg</text>
      <text>您的体重状态: {{ result.status }}</text>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      height: '', // 用户输入的身高
      currentWeight: '', // 用户输入的当前体重
      genders: ['男', '女'], // 性别选项
      genderIndex: 0, // 当前选中的性别索引
      result: null, // 计算结果
    };
  },
  methods: {
    // 性别选择器变化事件
    onGenderChange(e) {
      this.genderIndex = e.detail.value;
    },
    // 校验输入是否合理
    validateInput(height, weight) {
      if (height < 50 || height > 250) {
        uni.showToast({
          title: '身高应在 50cm 到 250cm 之间',
          icon: 'none',
        });
        return false;
      }
      if (weight < 10 || weight > 500) {
        uni.showToast({
          title: '体重应在 10kg 到 500kg 之间',
          icon: 'none',
        });
        return false;
      }
      return true;
    },
    // 计算标准体重并判断体重状态
    calculateWeight() {
      const height = parseFloat(this.height);
      const currentWeight = parseFloat(this.currentWeight);

      // 校验输入是否合理
      if (isNaN(height) || isNaN(currentWeight)) {
        uni.showToast({
          title: '请输入有效的数字',
          icon: 'none',
        });
        return;
      }

      if (!this.validateInput(height, currentWeight)) {
        return;
      }

      let standardWeight;

      if (this.genderIndex === 0) {
        // 男性
        standardWeight = (height - 80) * 0.7;
      } else {
        // 女性
        standardWeight = (height - 70) * 0.6;
      }

      // 计算体重差值
      const difference = currentWeight - standardWeight;
      let status;

      if (difference < -5) {
        status = '偏瘦';
      } else if (difference > 5) {
        status = '偏胖';
      } else {
        status = '正常';
      }

      this.result = {
        standardWeight: standardWeight.toFixed(2), // 保留两位小数
        status: status,
      };
    },
  },
};
</script>

3. 运行和调试

在 HBuilderX 中点击运行,选择微信开发者工具进行调试。确保代码无误后,可以在微信开发者工具中预览小程序。

4. 发布小程序

完成开发和测试后,按照微信小程序的发布流程,将代码上传至微信公众平台并提交审核。

总结

通过这个项目,我学习了如何使用 uniapp 快速开发跨平台小程序,并掌握了以下技能:

  • Uniapp 的基本用法和页面开发。

  • Vue.js 的数据绑定和事件处理。

  • 微信小程序的调试和发布流程。

这款小程序虽然简单,但功能实用,适合初学者练手。未来可以进一步扩展功能,例如:

  • 增加 BMI 计算。

  • 保存用户的历史记录。

  • 提供健康建议和饮食计划。

希望本文对大家有所帮助!如果你有任何问题或建议,欢迎在评论区留言。

相关推荐
一木 之林9 小时前
Dify学习笔记 03 · RAG检索增强生成:三代范式、评估与落地(第40-45、55-56集)
笔记·小程序·交互·dify
赵小哥要冲啦13 小时前
社区邻里互助小程序从 0 到 1 复盘:需求拆解与信任机制设计
java·小程序·需求分析
河北清兮网络科技18 小时前
石家庄做一套企业知识库系统多少钱?2026 报价明细
小程序·短剧app·广告联盟
Ai-_Man18 小时前
Coze扣子还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·1024程序员节
微订校园外卖平台20 小时前
新手做校园外卖平台:小程序启动顺序与订单链路验收
小程序·外卖系统·本地生活·微订
FX1317887KP_2 天前
KET口语Part 2看图对话怎么练?“观察—提问—回应”;三步法讲透
小程序·ket口语·pet口语·fce备考·剑桥英语
沃达德软件2 天前
智慧教育教学资源管理系统(PC端+微信小程序)
微信小程序·小程序
CHB2 天前
别再问uni-app x蒸汽模式是否成熟了,已经有大量App案例上架应用商店了
uni-app
阿俊-全栈开发2 天前
LikeShop 小程序商城首页可配置弹窗的设计与实现(Java + uni-app)
小程序·状态模式·likeshop·likeshop开源商城
考拉讲支付2 天前
延迟分账 / 核销分账的技术实现方案:服务完成后再分钱,到底怎么设计?
大数据·运维·人工智能·微信小程序·小程序·系统架构