微信小程序實現運動能耗計算

微信小程序實現運動能耗計算

近我做了一個挺有意思的微信小程序,能夠實現運動能耗的計算。只需要輸入性別、年齡、體重、運動時長和運動類型這些信息,就能算出對應的消耗熱量。

具體來說,在小程序里,性別不同,身體基礎代謝和運動時的能耗模式會有差異;年齡影響著身體機能和基礎代謝率;體重是計算能耗的關鍵參數,體重越大,運動時消耗的能量通常越多;運動時長直接關聯能耗總量,時長越長,消耗熱量自然越多;而不同的運動類型,比如跑步、游泳、跳繩等,它們的運動強度和能耗效率各有不同,所以在計算時需要區分開來。通過綜合這些因素,運用特定的算法,就能較為準確地得出運動所消耗的熱量。

這個界面示例已經同步到微信小程序啦,大家在微信里搜索「蒜鳥編程」就能看到運行示例,直觀感受一下這個計算功能是怎么運作的。如果有對編程、小程序開發感興趣的小伙伴,還可以在小紅書、抖音搜索用戶「蒜鳥編程」,上面有更多相關內容分享哦。希望這個小程序和相關分享能給正在學習編程、對運動健康數據計算感興趣的朋友提供一些參考。當然,要是大家在使用過程中發現有不足的地方,或者覺得哪里有問題,真心希望大家能不吝指正,咱們一起交流探討,讓這個小程序能變得更完善。具體圖片如下:
運動能耗計算示例圖片

1、js代碼:

Page({/*** 頁面的初始數據*/data: {current: 'f',metValue: 0,runList: [{id: 1,name: '靜坐/辦公',met: 1.5},{id: 2,name: '慢走(4km/h)',met: 3.5},{id: 3,name: '快走(6km/h)',met: 5.5},{id: 4,name: '慢跑(8km/h)',met: 8.0},{id: 5,name: '跑步(10km/h)',met: 10.0},{id: 6,name: '游泳(自由泳)',met: 8.0},{id: 7,name: '騎自行車(中速)',met: 6.0},{id: 8,name: '籃球(比賽)',met: 8.0},{id: 9,name: '足球',met: 9.0},{id: 10,name: '跳繩(中等強度)',met: 10.0},{id: 11,name: '跳健身操',met: 7.0},{id: 12,name: '登山',met: 7.0},{id: 13,name: '瑜伽',met: 3.0},{id: 14,name: '力量訓練',met: 6.0}],isVisible: false,sexValue: '',ageValue: '',weight: '',runInfo: '',duration: '',blinkTimer: null},onSelectClick(e) {let self = this;let attr = ['男性', '女性', '未知'];wx.showActionSheet({itemList: attr,success(res) {self.setData({sexValue: attr[res.tapIndex]})},fail(res) {console.log(res.errMsg)}})},//選擇監聽selectClick(e) {let old = this.data.current;let info = e.currentTarget.dataset;let tag = info.index;this.setData({current: old == tag ? 'f' : tag,runInfo: old == tag ? 'f' : info.item})},// 輸入綁定onInputClick: function (e) {let keys = e.currentTarget.dataset.key;this.setData({[keys]: e.detail.value});},// 計算能耗calculateClick() {let self = this;const {sexValue,ageValue,weight,runInfo,duration} = this.data;const age = parseInt(ageValue);const wgt = parseFloat(weight);const tim = parseFloat(duration);// 獲取選中的MET值if (sexValue == '') {wx.showToast({title: '請選擇性別',icon: 'none'});return;}if (isNaN(Number(age)) || isNaN(Number(wgt)) || isNaN(Number(tim))) {wx.showToast({title: '輸入的年齡、體重、時長格式存在異常!',icon: 'none'});return;}// 獲取選中的MET值if (!runInfo.met) {wx.showToast({title: '請選擇運動類型',icon: 'none'});return;}let energy = 0;if (sexValue === '男性') {energy = ((0.2 * (runInfo.met) * wgt) + 7) * (tim / 60);} else if (sexValue === '女性') {energy = ((0.15 * (runInfo.met) * wgt) + 7) * (tim / 60);} else {energy = (runInfo.met) * wgt * (tim / 60);}// 更新結果this.setData({metValue: energy,isVisible: true}, () => {wx.pageScrollTo({scrollTop: 0,duration: 300 // 滾動時間,單位為毫秒,可以根據需要調整});setTimeout(() => {self.setData({isVisible: false,blinkTimer: null});}, 2000);});},onUnload() {let timer = this.data.blinkTimer;if (timer) {clearTimeout(timer);}},
})

2、wxml代碼:

<view class="level top-box"><view class="top-dot"><text class="top-num {{isVisible?'blink-text':''}}">{{metValue}} 卡路里</text><text class="top-text">消耗熱量</text></view><view class="top-tip"><text class="top-tip-text">注:平臺僅提供參考示例,不作為其他依據</text></view>
</view>
<view class="input-section"><view class="input-group"><text class="label">性別 (♀)</text><input class="input" disabled bind:tap="onSelectClick" value="{{sexValue}}" placeholder="點擊選擇性別" /></view><view class="input-group"><text class="label">年齡 (歲)</text><input class="input" type="number" bindinput="onInputClick" maxlength="3" data-key="ageValue" value="{{ageValue}}" placeholder="請輸入年齡" /></view><view class="input-group"><text class="label">體重 (kg)</text><input class="input" type="number" bindinput="onInputClick" maxlength="5" data-key="weight" value="{{weight}}" placeholder="請輸入體重" /></view><view class="input-group"><text class="label">運動時長</text><input class="input" type="number" bindinput="onInputClick" maxlength="5" data-key="duration" value="{{duration}}" placeholder="請輸入運動時長 (分鐘)" /></view><view class="input-group"><text class="label">運動類型</text><input class="input" disabled value="{{runInfo.name}}" placeholder="點擊下方選擇運動類型" /></view>
</view>
<view class="run-box"><view class="run-title">選擇運動類型</view><view class="label-box"><block wx:for="{{runList}}" wx:key="item"><text bindtap="selectClick" data-item="{{item}}" data-index="{{index}}"class="label-run {{current==index?'select':''}}">{{item.name}}</text></block></view>
</view><button class="calculate-btn" bindtap="calculateClick">開始計算
</button>

3、wxss代碼:

page {font-size: 32rpx;padding-bottom: 20rpx;background-color: #f1f1f1;
}.level {display: flex;flex-direction: row;align-items: center;
}.top-box {position: relative;padding: 40rpx 20rpx 60rpx 20rpx;background-color: #3CB371;justify-content: center;
}.top-text {margin: 0 20rpx;font-size: 28rpx;color: #696969;
}.top-num {padding-bottom: 10rpx;font-weight: bold;color: #3CB371;
}.top-dot {display: flex;flex-direction: column;background-color: white;color: #000000;border-radius: 200rpx;width: 60%;height: 150rpx;align-items: center;justify-content: center;box-shadow: 0 0 10rpx 10rpx #61a07d;
}.top-tip {position: absolute;left: 0;right: 0;bottom: -20rpx;text-align: center;
}.top-tip-text {background-color: #ffffff;padding: 15rpx 10%;font-size: 24rpx;border-radius: 50rpx;color: #909399;
}.input-section {background-color: #fff;padding: 30rpx;margin-bottom: 25rpx;margin-top: 50rpx;
}.input-group {display: flex;align-items: center;margin-bottom: 30rpx;
}.label {width: 25%;font-size: 28rpx;color: #666;
}.input {flex: 1;height: 80rpx;font-size: 32rpx;padding: 0 10rpx;border-bottom: 1rpx solid #eee;
}.run-box {margin-top: 20rpx;padding: 30rpx;background-color: white;
}.run-title {font-size: 30rpx;margin-bottom: 10rpx;color: #666666;
}.label-box {margin-top: 10rpx;flex-wrap: wrap;display: inline-flex;flex-direction: row;
}.label-run {background-color: white;color: #3CB371;margin: 10rpx 25rpx 15rpx 0;font-size: 28rpx;padding: 8rpx 20rpx;border-radius: 50rpx;text-align: center;border: 1rpx solid #3CB371;
}.select {background-color: #3CB371;color: white;
}.calculate-btn {background-color: #4CAF50;color: white;font-size: 32rpx;margin-top: 20rpx;border-radius: 40rpx;height: 88rpx;line-height: 88rpx;padding: 0;box-shadow: 0 4rpx 12rpx rgba(76, 175, 80, 0.3);
}.calculate-btn[disabled] {background-color: #ccc;box-shadow: none;
}.calculate-btn::after {box-shadow: none;border: none;
}/* 定義閃爍動畫 */
.blink-text {color: #da7828;animation: blink 1s infinite;
}@keyframes blink {0%,100% {opacity: 1;}50% {opacity: 0;}
}

4、json代碼:

{"usingComponents": {},"navigationBarBackgroundColor": "#3CB371","navigationBarTitleText": "運動能耗計算"
}

如需查看運動能耗計算的完整源碼及運行示例,可在微信小程序、小紅書、抖音等平臺搜索「蒜鳥編程」獲取相關技術內容。平臺內提供的示例界面支持直觀了解算法實現邏輯,適合學習小程序開發、能耗計算模型的朋友作為參考案例。后續將圍繞編程技術持續更新更多實踐示例,歡迎開發者針對技術細節進行交流探討。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908135.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908135.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908135.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

三軸地磁傳感器的主要應用場景

隨著材料科學、微電子技術以及傳感器技術的不斷進步&#xff0c;三軸地磁傳感器的性能將不斷提升&#xff0c;包括提高精度、降低功耗、增強抗干擾能力等。 RAMSUN提供的是一款三軸地磁傳感器采用第三代AMR技術&#xff0c;帶有自動溫度補償的三軸磁傳感器&#xff0c;該產品因…

使用 SseEmitter 實現 Spring Boot 后端的流式傳輸和前端的數據接收

1.普通文本消息的發送和接收 GetMapping("/stream")public SseEmitter streamResponse() {SseEmitter emitter new SseEmitter(0L); // 0L 表示永不超時Executors.newSingleThreadExecutor().execute(() -> {try {for (int i 1; i < 5; i) {emitter.send(&q…

nssm配置springboot項目環境,注冊為windows服務

NSSM 的官方下載地址是&#xff1a;NSSM - the Non-Sucking Service Manager1 使用powershell輸入命令,java項目需要手動配置和依賴nacos .\nssm.exe install cyMinio "D:\minio\啟動命令.bat" .\nssm.exe install cyNacos "D:\IdeaProject\capacity\nacos-s…

WinCC學習系列-基礎概念

從本節起&#xff0c;學習和了解西門子最新SCADA軟件WinCC 8.0&#xff0c;將從基礎概念開始&#xff0c;到入門操作&#xff08;創建項目、組態通信、組態過程畫面、組態面板類型和變量結構、歸檔和顯示值、組態消息&#xff09;&#xff0c;到高級應用&#xff08;WinCC選件、…

數據分析圖表類型及其應用場景

說明&#xff1a;頂部HTML文件下載后可以直接查看&#xff0c;帶有示圖。 摘要 數據可視化作為現代數據分析的核心環節&#xff0c;旨在將復雜、抽象的數據轉化為直觀、易懂的圖形形式。這種轉化顯著提升了業務決策能力&#xff0c;優化了銷售與營銷活動&#xff0c;開辟了新…

《江西棒壘球》敗方mvp叫什么·棒球1號位

敗方mvp也是MVP&#xff0c;以棒球運動為例&#xff0c;MLB&#xff08;美國職棒大聯盟&#xff09;的個人獎項旨在表彰球員在不同領域的卓越表現&#xff0c;涵蓋常規賽和季后賽的杰出成就。 常規賽核心獎項 最有價值球員獎&#xff08;MVP&#xff09; 定義&#xff1a;表彰…

CD43.vector模擬實現(2)

目錄 1.拷貝構造函數 寫法1 寫法2 測試代碼 調試找bug 解決方法:修改拷貝構造函數 測試代碼 2.operator[ ] 測試代碼 1.沒有const修飾 2.有const修飾 3.insert 迭代器失效問題 承接CD42.vector模擬實現(1)文章 1.拷貝構造函數 設置start、finish和end_of_storag…

【C/C++】入門grpc的idl

文章目錄 grpc idl 簡單介紹1. 文件結構組織規范文件命名包結構&#xff1a;推薦&#xff1a;一個文件只定義一個 service&#xff0c;如果 service 很復雜&#xff0c;可拆分多個 proto 文件。 2. 消息定義規范命名風格字段編號&#xff1a;示例&#xff1a; 3. 服務與 RPC 設…

安全-JAVA開發-第二天

Web資源訪問的流程 由此可見 客戶訪問JAVA開發的應用時 會先通過 監聽器&#xff08;Listener&#xff09;和 過濾器&#xff08;Filter&#xff09; 今天簡單的了解下這兩個模塊的開發過程 監聽器&#xff08;Listener&#xff09; 主要是監聽 我們觸發了什么行為 并進行反應…

使用 Ansys Q3D 進行電容提取

精確的電容提取在高速和 RF 設計中至關重要。雖然簡單的公式可以提供一個很好的起點&#xff0c;但它們往往無法捕捉 fringing fields 和 layout-dependent parasitics 的影響。在本博客中&#xff0c;我們演示了如何使用Ansys Q3D Extractor來計算電容值&#xff0c;從基本的平…

卡西歐模擬器:Windows端功能強大的計算器

引言 大家還記得初中高中時期用的計算器嗎&#xff1f;今天給大家分享的就是一款windows端的卡西歐計算器。 軟件介紹 大家好&#xff0c;我是逍遙小歡。 CASIO fx-9860G是一款功能強大的圖形計算器&#xff0c;適用于數學、科學和工程計算。以下是其主要功能和特點的詳細介…

【Bluedroid】藍牙啟動之gatt_init 流程源碼解析

本文圍繞Android藍牙協議棧中 GATT(通用屬性配置文件)模塊的初始化函數gatt_init展開,深入解析其核心實現邏輯與關鍵步驟。通過分析gatt_init及其關聯子函數(如L2CA_RegisterFixedChannel、gatt_profile_db_init、EattExtension::Start等),以及相關數據結構(如tGATT_CB控…

Vue 3 中ref 結合ts 獲取 DOM 元素的實踐指南。

文章目錄 前言一、為什么需要為 ref 添加類型&#xff1f;二、基本用法&#xff1a;引用 DOM 元素1. 引用通用 DOM 元素&#xff08;HTMLElement&#xff09;2. 引用特定類型的 DOM 元素&#xff08;如 HTMLDivElement&#xff09; 三、<script setup> 語法中的類型定義四…

Axure形狀類組件圖標庫(共8套)

點擊下載《月下倚樓圖標庫(形狀組件)》 原型效果&#xff1a;https://axhub.im/ax9/02043f78e1b4386f/#g1 摘要 本圖標庫集錦精心匯集了8套專為Axure設計的形狀類圖標資源&#xff0c;旨在為產品經理、UI/UX設計師以及開發人員提供豐富多樣的設計素材&#xff0c;提升原型設計…

01串(二進制串)與集合之間存在天然的對應關系 ← bitset

【集合的二進制表示?】 ● 01 串&#xff08;二進制串&#xff09;與集合之間存在天然的對應關系。對應機理為每個二進制位可以表示集合中一個元素的存在&#xff08;1&#xff09;或不存在&#xff08;0&#xff09;。例如&#xff0c;集合 {a, b, c} 的子集 {a, c} 可以表示…

vba學習系列(10)--外觀報表

系列文章目錄 文章目錄 系列文章目錄前言一、外觀報表1.產能統計2.單板數3.固定傷排查4.件號良率5.鏡片批退率6.鏡筒批退率 總結 前言 一、外觀報表 1.產能統計 Sub ProcessInspectionData()Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As WorksheetDim lastRow1 As Long, …

machine_env_loader must have been assigned before creating ssh child instance

在主機上執行roslaunch命令時&#xff0c;報錯&#xff1a;machine_env_loader must have been assigned before creating ssh child instance。 解決辦法&#xff1a; 打開hostos文件&#xff0c;檢查local host 前的內部ip是否正常。操作示例&#xff1a; 先輸入下方指令打…

CSS radial-gradient函數詳解

目錄 基本語法 關鍵參數詳解 1. 漸變形狀&#xff08;Shape&#xff09; 2. 漸變大小&#xff08;Size&#xff09; 3. 中心點位置&#xff08;Position&#xff09; 4. 顏色斷點&#xff08;Color Stops&#xff09; 常見應用場景 1. 基本圓形漸變 2. 橢圓漸變 3. 模…

分析Web3下數據保護的創新模式

在這個信息爆炸的時代&#xff0c;我們正站在 Web3 的門檻上&#xff0c;迎接一個以去中心化、用戶主權和數據隱私為核心的新時代。Web3 不僅僅是技術的迭代&#xff0c;它更是一場關于數據權利和責任的結構性變革。本文將探討 Web3 下數據保護的創新模式&#xff0c;以期為用戶…

RabbitMQ-Go 性能分析

更多個人筆記見&#xff1a; &#xff08;注意點擊“繼續”&#xff0c;而不是“發現新項目”&#xff09; github個人筆記倉庫 https://github.com/ZHLOVEYY/IT_note gitee 個人筆記倉庫 https://gitee.com/harryhack/it_note 個人學習&#xff0c;學習過程中還會不斷補充&…