iT邦幫忙

2025 iThome 鐵人賽

DAY 2
0
自我挑戰組

飲食營養追蹤 + 健康分析 Web 系統系列 第 10

改成Console互動版,測試新增與查詢功能

  • 分享至 

  • xImage
  •  

目的

使用Console輸入輸出,確認能否正常查詢、新增資料。
將Main改成Console互動版。

1.Main
Scanner sc = new Scanner(System.in):建立一個新的Scanner物件,從鍵盤(System.in)讀取資料。
while break用法:只要條件成立就一直執行,遇到break停止。
印出選項。
https://ithelp.ithome.com.tw/upload/images/20251013/20178845AoktZTLKvf.jpg
int choice =sc.nextInt():從鍵盤讀取一個整數,存在變數choice。
sc.nextLine():吸收上一步輸入後的換行符號\n,避免後續讀字串出現空值。
switch(choice):根據choice值執行不同程式碼區塊:
case 1 :如果使用者輸入1,就執行這裡的程式碼。
sc.nextLine:這放在份量和日期中間是因為,在數字輸入後,通常要吸收換行、讀整行文字,避免讀字串出錯。
dao.addFoodLog(userId,foodId,date,quantity):呼叫FoodLog的addFodLog方法,把剛剛輸入的資料存進資料庫
https://ithelp.ithome.com.tw/upload/images/20251013/20178845WhuE45MGWJ.jpg


case 2(查詢):
跟1差不多,但這只需要userId跟date就可以查。
在日期前需加上sc.nextLine,避免出錯。
List< FoodLog > records = dao.getUserRecord(userId,date):呼叫FoodLog的getUserRecord方法查詢記錄,結果存到records。
records.isEmpt():檢查查詢結果是否為空,不是空的就用for讀取records的資料然後存入log,最後印出。
https://ithelp.ithome.com.tw/upload/images/20251013/20178845fFvDmh6G6r.jpg


case 3(更新):
double newQty = sc.nextDouble():從鍵盤讀取一個double,存在變數newQty。
dao.updateFoodLog(userId,foodId,date,newQty):呼叫updateFoodLig方法,更新資料。
https://ithelp.ithome.com.tw/upload/images/20251013/20178845g7u8Fjg2DM.jpg


case 4(刪除)
dao.deleteFoodLig(userId,foodId,date):呼叫deleteFoodLog方法,刪除資料。
case 0(離開):
return:跳出main,程式結束執行。
default:switch-case裡的預設情況,如果使用者輸入選項不是任一case,則會顯示這裡。
catch:捕捉資料庫操作的例外。
https://ithelp.ithome.com.tw/upload/images/20251013/20178845FHcNQtD9su.jpg


2.執行結果
https://ithelp.ithome.com.tw/upload/images/20251013/20178845UZneYym3JR.jpg
https://ithelp.ithome.com.tw/upload/images/20251013/20178845yaBQpmQMxP.jpg
https://ithelp.ithome.com.tw/upload/images/20251013/20178845oSOna5g5po.jpg
https://ithelp.ithome.com.tw/upload/images/20251013/20178845Liu7PeKfuR.jpg


上一篇
改良功能(程式碼)
下一篇
優化輸入介面
系列文
飲食營養追蹤 + 健康分析 Web 系統16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言