iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
自我挑戰組

30 天完成:血壓健康追蹤系統系列 第 24

含統計分析的文字報告

  • 分享至 

  • xImage
  •  

可以自動產生「分析結果」──像是平均血壓、最高/最低值、偏高或偏低的天數

新增程式碼:
1.延續昨天的版本只是改進exportReport()方法

public static void exportReport(ArrayList<Record> records) {
    if (records.isEmpty()) {
        System.out.println("目前沒有任何資料可匯出!");
        return;
    }

    try (FileWriter writer = new FileWriter("report.txt")) {
        writer.write("=== 30天血壓紀錄報告 ===\n\n");

        int totalSys = 0, totalDia = 0;
        int highDays = 0, lowDays = 0;
        int maxSys = Integer.MIN_VALUE, minSys = Integer.MAX_VALUE;

totalSys和totalDia為累加所有天數的收縮壓與舒張壓,這樣最後計算平均值比較方便。
hightDays和lowDays分別為計算偏高和偏低。
maxSys為找出30天裡面的最高收縮壓,把初始值設成Integer.MIN_VALUE方便比較,同理minSys。
2.之中的for迴圈

for (Record r : records) {
    writer.write("第 " + r.day + " 天:收縮壓=" + r.systolic +
                 " 舒張壓=" + r.diastolic + " 脈搏=" + r.pulse + "\n");

    // 統計分析
    totalSys += r.systolic;
    totalDia += r.diastolic;

    if (r.systolic > 130 || r.diastolic > 85) highDays++;
    if (r.systolic < 90 || r.diastolic < 60) lowDays++;

    if (r.systolic > maxSys) maxSys = r.systolic;
    if (r.systolic < minSys) minSys = r.systolic;
}

writer.write寫每一天的紀錄到報告中
totalSys += r.systolic;跟totalDia += r.diastolic;分別把收縮壓舒張壓加起來
if迴圈判斷高低,透過比較方式找出最高最低

執行結果:

=== 血壓追蹤系統 ===
1. 新增資料
2. 顯示所有資料
3. 查詢指定日期資料
4. 匯出報告
5. 離開
請選擇功能:1
請輸入收縮壓:120
請輸入舒張壓:80
請輸入脈搏:70
第 1 天資料已新增!

請選擇功能:4
報告已成功匯出!檔名:report.txt

在文字檔上的顯示:

=== 30天血壓紀錄報告 ===

第 1 天:收縮壓=120 舒張壓=80 脈搏=70

上一篇
匯出報告
下一篇
產生報告檔案
系列文
30 天完成:血壓健康追蹤系統28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言