• 沒有找到結果。

營養大師子系統實作

在文檔中 行動營養顧問 (頁 42-47)

第三章 系統實作

3.2 營養大師子系統實作

營養大師系統實作的說明細分為「 病患資訊管理子模組」、「病患飲 食規劃試算模組」、「食品營養生料查詢子模組」、「食物代換表查詢與 瀏覽子模組」、「餐實份數表設計子模組」等五個實作部分來說明之,

而每個部分的說明會再分下屬的細部功能來說明。

3.2.1 病 患 資 訊 管 理 子 模 組 實 作

病人資訊管理子模組實作的說明細分為「病患基本資料維護功 能」、「病患每日紀錄瀏覽功能」等兩個部分來說明之。

3.2.1.1 病 患 基 本 資 料 維 護 功 能 實 作 3.2.1.1.1 目 的 說 明

維護 food_patient 中病患的基本資料、病史以及營養師對於病人 的備註。

3.2.1.1.2 控 制 流 程 圖

圖 21 病患基本資料維護功能控制流程圖 3.2.1.1.3 實 作 方 法 說 明

在基本資料維護中,提供了新增、刪除、修改以及尋找等功能,進

電子書資料庫

瀏覽畫面 點選電子

將內容填

病患資料庫 病患基本資料清單

使用者

營養師 點選病患列表

入功能首頁後,會先把病人的列表畫出來,提供使用者選擇要觀看的 病人,列表會顯示出病人的身分證字號跟姓名,接下來點選某為病人 選項後會進入病患基本資料表單。在病人基本資料輸入部分比較特別 的是輸入生日的方法是使用 Palm 內建的 Selectday 函式實作,因此 使用者可以透過萬年曆的方式來快速選擇日期。

修改完病人的資料時,按下「完成」的按鈕回到病患列表後,程式 會對已經修改的資料做儲存的動作,比較值得注意的是這邊做修改資 料的動作並不是直接去修改已存在資料庫中的資料,而是把原本已存 在的資料刪除後再做新增一筆資料的動作,為什麼要這樣做呢?Palm 裡面的 Database 跟我們一般的資料庫是不同的,應該把它視為是一 種檔案型的紀錄檔,而存在紀錄檔中的每一筆資料的長度大小在新增 進入資料庫後即是固定的,如果之後要對這筆資料作修改,要修改進 入的長度大小可以小於或等於原本資料的程度,但是不可大於原本的 資料長度,否則會發生寫入檢查錯誤,因為我們紀錄的欄位內容,像 是病人備註、電話、地址等欄位的長度不會固定,如果我們直接去修 改原本資料庫中的資料會有上述的問題發生,因此若我們把原本存在 的資料刪除再新增後,即可避開這個問題,之後有些地方做變動長度 資料儲存時,也都是用這樣的方法。

病人列表每次進入時會先對資料庫進行排序,在排序的方法上,

Palm 函式庫中提供了兩種排序的方式,一種是 Insertion Sort,另 一種是 Quick Sort,理論上用 Quick Sort 會比較好,不過如果我們 的資料筆數不多,且資料庫中大部分的資料已經排序過的話,建議使 用 Insertion Sort 比較恰當。

新增病患的動作用了一點小技巧,理論上要做新增的話應該要多做 一張新增專用的表單畫面,不過這樣做的話程式碼會有很多地方重 複,使程式變大,因此這邊偷用了 columnTable 這個變數來表示現在 的狀態,如果 columnTable 等於-1 的話,代表是新增的狀態,所以 就不用去讀資料,如果不是-1 的話就要去把資料讀出來,做存檔的 時候也是一樣的判斷。

3.2.1.2 病 患 每 日 紀 錄 瀏 覽 功 能 實 作 3.2.1.2.1 目 的 說 明

營養師點選要瀏覽的日期後,可以查到當日的飲食、運動、生理紀 錄,並可對於病人做當日的注記。

3.2.1.2.2 控 制 流 程 圖

3.2.2.1.3 實 作 方 法 說 明

圖 26 user_menu 資料格式

MathLab 這套浮點數函式庫,可是這兩種方法都會忽略了小數點的存 在,因此我們自己寫了一個運算方法 AddFChar 來計算小數點,在 AddFChar 這個函式不用傳入任何的值,要計算的數字分別存在全域 變數 diet_a 跟 diet_b 中,最後算完的結果再存到 diet_a。

在餐食份數表畫面切換上,程式是採取在畫面貼圖的效果,而畫面 的切換則是不斷的將前面的畫面給貼上覆蓋,然後再把數字寫入。

3.3 資 料 傳 輸 實 作

在文檔中 行動營養顧問 (頁 42-47)

相關文件