# 簽到簽退 ## 畫面 * MainForm 上的 tabPage1 * 上面有兩個區域:預約報名、現場報到 * 使用銜接鍵盤介面的二維碼掃描器來掃碼 ### 預約報名 * txtQRCode 為掃碼輸入框 * 掃碼之後查詢本地數據庫的 SignUp 表的 QRCode 欄位 * 查到時 * 依照 cbCheckMode 的值(簽到 / 簽退)更新本地數據庫欄位(CheckInTime / CheckOutTime) * 本地數據庫 CheckIn 表新增一筆 * lbCheckResult 顯示綠底白字 "報到成功" * lbName 顯示 Name * lbMobile 顯示 Mobile * lbCheckInTime 顯示 CheckInTime * lbCheckOutTime 顯示 CheckOutTime * 未查到 * lbCheckResult 顯示紅底白字 "無此筆資料" * lbName 內容清空 * lbMobile 內容清空 * lbCheckInTime 內容清空 * lbCheckOutTime 內容清空 ### 現場報到 * txtName 輸入姓名 (必須輸入) * txtMobile 輸入手機號 (必須輸入) * 點擊 btnMenualCheckIn 按鈕執行現場報到 * cbCheckMode 的值 = "簽到" 時 * 用姓名與手機號查找本地數據庫 SignUp 表 * 查到: * 本地數據庫 SignUp 表更新 CheckInTime * 本地數據庫 CheckIn 表新增一筆 * 未查到: * 本地數據庫 SignUp 表新增一筆 * 本地數據庫 CheckIn 表新增一筆 * lbMenualCheckInTime 顯示 CheckInTime * lbMenualCheckOutTime 空白 * cbCheckMode 的值 = "簽退" 時 * 用姓名與手機號查找本地數據庫 SignUp 表 * 查到: * 本地數據庫 SignUp 表更新 CheckOutTime * 本地數據庫 CheckIn 表新增一筆 * 未查到: * 本地數據庫 SignUp 表新增一筆 * 本地數據庫 CheckIn 表新增一筆 * lbMenualCheckInTime 顯示 CheckInTime * lbMenualCheckOutTime 顯示 CheckOutTime ## 資料庫表結構 * 已有數據庫表結構以及存取類別,在 Data/Models 和 Data/Repositories 目錄 * 亦可參照 資料儲存服務.md ## 邏輯澄清 * CheckInTime/CheckOutTime:若已有值則不覆蓋,只在為 NULL 時才寫入 * 異常處理:數據庫操作失敗時顯示錯誤訊息,不清空UI