統整目前為止的程式碼跟功能
程式碼:
import java.util.ArrayList;
import java.util.Scanner;
class Main{
String name;
int systolic; // 收縮壓
int diastolic; // 舒張壓
String level; // 等級
public BloodPressureRecord(String name, int systolic, int diastolic) {
this.name = name;
this.systolic = systolic;
this.diastolic = diastolic;
this.level = classify(systolic, diastolic);
}
// 判定血壓等級
private String classify(int s, int d) {
if (s < 90 || d < 60) return "低血壓";
else if ((s >= 90 && s <= 119) && (d >= 60 && d <= 79)) return "正常";
else if ((s >= 120 && s <= 139) || (d >= 80 && d <= 89)) return "高血壓一級";
else return "高血壓二級";
}
@Override
public String toString() {
return String.format("%-10s 收縮壓:%3d 舒張壓:%3d → %-6s",
name, systolic, diastolic, level);
}
}
public class BloodPressureSystem {
private static final ArrayList<BloodPressureRecord> records = new ArrayList<>();
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("=== 血壓管理系統===");
while (true) {
System.out.println("\n------ 主選單 ------");
System.out.println("1. 新增血壓紀錄");
System.out.println("2. 顯示所有紀錄");
System.out.println("3. 統計報表");
System.out.println("4. 離開系統");
System.out.print("請選擇功能(1-4):");
String choice = scanner.nextLine();
switch (choice) {
case "1" -> addRecord();
case "2" -> showRecords();
case "3" -> showReport();
case "4" -> {
System.out.println("系統結束,感謝使用!");
return;
}
default -> System.out.println("輸入錯誤,請重新選擇!");
}
}
}
private static void addRecord() {
System.out.print("請輸入姓名:");
String name = scanner.nextLine();
System.out.print("請輸入收縮壓(systolic):");
int s = Integer.parseInt(scanner.nextLine());
System.out.print("請輸入舒張壓(diastolic):");
int d = Integer.parseInt(scanner.nextLine());
BloodPressureRecord record = new BloodPressureRecord(name, s, d);
records.add(record);
System.out.println("已新增紀錄:" + record);
}
private static void showRecords() {
if (records.isEmpty()) {
System.out.println("目前沒有任何血壓紀錄。");
return;
}
System.out.println("\n=== 所有血壓紀錄 ===");
for (BloodPressureRecord r : records) {
System.out.println(r);
}
}
private static void showReport() {
if (records.isEmpty()) {
System.out.println("沒有資料可統計。");
return;
}
int sumS = 0, sumD = 0;
int low = 0, normal = 0, high1 = 0, high2 = 0;
for (BloodPressureRecord r : records) {
sumS += r.systolic;
sumD += r.diastolic;
switch (r.level) {
case "低血壓" -> low++;
case "正常" -> normal++;
case "高血壓一級" -> high1++;
case "高血壓二級" -> high2++;
}
}
double avgS = (double) sumS / records.size();
double avgD = (double) sumD / records.size();
System.out.println("\n=== 血壓統計報表 ===");
System.out.printf("平均收縮壓:%.1f mmHg%n", avgS);
System.out.printf("平均舒張壓:%.1f mmHg%n", avgD);
System.out.println("----------------------");
System.out.printf("低血壓:%d%n", low);
System.out.printf("正常:%d%n", normal);
System.out.printf("高血壓一級:%d%n", high1);
System.out.printf("高血壓二級:%d%n", high2);
System.out.println("----------------------");
System.out.println("紀錄總數:" + records.size());
}
}
執行結果:
用隨便取的名字跟亂寫的血壓數值來測試
=== 血壓管理系統===
------ 主選單 ------
1. 新增血壓紀錄
2. 顯示所有紀錄
3. 統計報表
4. 離開系統
請選擇功能(1-4):1
請輸入姓名:王小明
請輸入收縮壓(systolic):135
請輸入舒張壓(diastolic):85
已新增紀錄:王小明 收縮壓:135 舒張壓: 85 → 高血壓一級
------ 主選單 ------
請選擇功能(1-4):1
請輸入姓名:李小華
請輸入收縮壓(systolic):118
請輸入舒張壓(diastolic):76
已新增紀錄:李小華 收縮壓:118 舒張壓: 76 → 正常
------ 主選單 ------
請選擇功能(1-4):3
=== 血壓統計報表 ===
平均收縮壓:126.5 mmHg
平均舒張壓:80.5 mmHg
----------------------
低血壓:0
正常:1
高血壓一級:1
高血壓二級:0
----------------------
紀錄總數:2