App Inventor學習記錄94-計算 BMI值,並用 TinyDB把資料給記錄下來

怎麼計算 BMI值,是很多教學都會講到的一塊,主要應該為了熟悉數學方塊的使用。這次我多加了微型資料庫,用 TinyDB,把我們計算出來的資料存起來。
記錄一下:
App Inventor學習記錄94-計算 BMI值,並用 TinyDB把資料給記錄下來


模擬器執行畫面如下:

打開程式 2秒後,會自動跳到 BMI值的計算畫面。
選擇性別的功能……沒有什麼意思,只是會出現不同的圖片。
輸入身高體重後,按下開始計算按鈕的話,就會取得 BMI值。
按下儲存資料按鈕,就會把這裡資料記下來。
按下查看以往記錄按鈕,就會開啟 END這個螢幕,並顯示之前的記錄資料。


Screen1的畫面編排如下:

這裡就是說明主題,我老婆說我做的東西都太陽春,所以之後我都儘量加上開始和結束畫面。
計時器元件在這裡主要的功能,就是讓程式自動的在 2秒後,打開另一個螢幕。


Screen1的程式設計如下:

螢幕一開始的時候,把計時器1的啟用計時設定為真。

當計時器 1開始計時的時候,就關閉計時器,開啟 MAIN這一個螢幕。
這麼做就可以簡單的做一個自動跳轉的感覺。


MAIN的畫面編排如下:

複選盒這裡用的是單選的功能,請參考:checkbox複選框改單選
選擇了性別之後,會有不同的圖片跑出來。這個單純是想要多點變化而已。
BMI值的定義請參考維基百科-身高體重指數(Body Mass Index)

2個文字輸入盒用來輸入體重和身高。
按下計算按鈕之後,就會出現 BMI值的結果。


MAIN螢幕的全部程式碼如下:


第 2-1段程式碼說明:

建立一個叫傳遞資料的資料的變數,它的值是一個空清單。
當 MAIN這個螢幕初始化的時候,
設定標籤 4高度的原因,是因為要對齊版面。在 APP INVENTOR中,要對齊版面,真的挺麻煩。


第 2-2段程式碼說明:

這裡做的是用複選盒做的單選性別選擇
這部份請參考:checkbox複選盒改單選


第 2-3段程式碼說明:

當開始計算按鈕按下之後,加入一個流程判斷。
如果文字盒 1和文字盒 2的文字,都是不是空白的話,則開始計算 BMI值。
我們在計算 BMI值的時候,因為有 BMI公式的關係,所以有很大的可能性會有很多的小數點跑出來。所以我們要再用四捨五入去取 BMI的值到小數點第一位

這裡補充一下,在 APP INVENTOR中,不管是用無條件捨去,無條件進入或是四捨五入,取得的值,都是取到整數的地方。所以不我們要稍做處理一下。請參考:
把數值用四捨五入到小數點後第 1位或第 2位

否則,也就是如果文字盒 1和文字盒 2的文字,有其中一個是空白的話。
就把標籤 8的文字,設定成指定的文字。
把計時器 1的啟用計時,設定為真。


第 2-4段程式碼說明:

當儲存資料按鈕被點擊的時候,加入一個流程判斷式。
如果傳遞資料的資料,這個變數的值是空白的話,就把下面的值加到清單中。
這裡用計時器的功能,去取得系統當下的時間,把年月日給加到清單中,請參考:
用計時器功能,持續顯示當下系統的時間

把相對應的文字都加到清單中。
把標籤 8的文字,設定成傳遞資料的資料的內容。
這是為了確認清單的值是不是正確。

當查看以往記錄按鈕按下之後。
開啟 END螢幕,把傳遞資料的資料傳遞過去。


END螢幕的畫面編排如下:

這裡我們用清單顯示器來顯示歷史資料。


END螢幕的程式說明如下:

建立兩個變數。
取得的值,拿來取得初始值用。
歷史資料,是拿來儲存之前的資料用的。


當 END螢幕初始化的時候
取得的值這個變數的值,設定成初始值。
歷史資料這個變數的值,設定成微型資料庫中,SAVE這個標籤值。
補充一下,TinyDB微型資料庫可以儲存的內容,可以是文字,也可以是清單,這裡因為要把歷史資料存成一個清單,這樣後面比較好用,所以如果在微型資料庫下 SAVE這個標籤下的內容是空白的話,要設定它的回傳值是一個空清單

接下來就是把取得的值的內容,整理一下,再把它存到微型資料庫中。
最後,再把清單顯示器的元素,設定成歷史資料這個清單就完成了。


記錄 BMI值其實對我來說,還不如記錄體重,畢竟活到四十好幾了,身高不可能在長高,體重倒是要好好的控制一下。自從娶了老婆之後,體重一直以每年至少增加 2公斤的速度在成長.……

這次的 aia檔的下載連結如下:
點我下載NO_94_BMI.aia

參考書籍如下:
手機應用程式設計超簡單 App Inventor 2零基礎入門班
TQC+ 創意App程式設計認證指南
TQC+創意App程式設計認證指南解題秘笈
手機應用程式設計超簡單:App Inventor 2初學特訓班
手機應用程式設計超簡單:App Inventor 2小專題特訓班
手機應用程式設計超簡單:App Inventor 2資料庫專題特訓班

之前介紹過的一些 appinventor的使用記錄,都整理在下面這個頁面上了。
APP INVENTOR學習記錄及資源整理頁面

發表迴響