6-3 紀錄檔案的輸出運用
6-3-1 物件陣列與記錄檔案 電子化管理系統的資料大多有固定格式,每一筆資料就成為一個紀錄。譬如,某一公司的員工管理系統,每一筆紀錄登錄一位員工的資料;也依照系統需求,每一筆資料由若干個屬性所構成。紀錄型態資料大多以一筆接一筆紀錄型態儲存於檔案內,資料系統需要處理這些資料時,再由紀錄檔案讀入主機電腦的記憶體內。然而,紀錄資料於記憶體內儲存方式又有許多格式,譬如陣列、樹狀或鏈路格式等等,即是資料結構的型態。 圖 6-3 為紀錄檔案與陣列資料之間的存取方法。每一陣列元素是一筆紀錄資料(物件變數),其中包含了若干屬性的變數資料。陣列資料輸出到紀錄檔案是方法是,每筆資料是一個屬性接一個屬性寫入,屬性之間利用一個分隔符號(Delimit)區分,可能是『tab』(\t)空白鍵、分號(;)或單一空白鍵等等。一筆資料輸出完畢後,再跳到下一行繼續輸出,與輸出到螢幕的方法非常類似。
圖 6-3 陣列內物件變數輸出到紀錄檔案 6-3-2 範例研討:登錄員工資料 (A)程式功能:Ex6_1.java 請幫志明電器製造公司建立一套人事管理系統,該系統允許輸入員工資料,並儲存於資料檔案內(Human.data)。假設登錄員工資料包含有:員工代號(int)、姓名(String)、工作部門(String)、底薪(int)、職務加級(int)。期望操作介面,以及檔案輸出結果如下: 以及檔案輸出結果如下:
(B)製作技巧研討: 本系統製作要點是,宣告產生一個物件陣列,將連續輸入的員工資料寫入其中,輸入完畢之後,再將物件陣列內容一筆接一筆寫入輸出檔案上。須注意的是,輸出檔案上每一行存放一筆員工資料,資料的每個屬性分別由一個欄位表示。虛擬碼提示如下:
(C)程式範例:
圖 6-4 Ex6_1 程式架構
(D) 程式重點說明: (1) 第 22~23 行:『String file = "Human.data"; BufferedWriter data …』。宣告產生一個緩衝器型的輸出檔案物件,指定該檔案位置為 Human.data。 (2) 第 24 行:『int k;』。利用變數 k 紀錄目前輸入幾筆資料。 (3) 第 53~59 行:『for(int i=0; i<k; i++) { …}』。將物件陣列內資料一筆接一筆連續寫入 data 檔案物件;其中 data.write() 為檔案物件的寫入方法。資料屬性之間以『tab』鍵空格位置(\t),最後屬性輸出後跳至下一行(\n)。 (4) 第 60 行:『data.close();』。關閉檔案。目的是強迫將緩衝器內容輸出到檔案上。 6-3-3 自我挑戰:超商列印購物清單 (A)程式功能:PM6_1.java 擴充範例 Ex5_4.java程式功能(本書第五章)。請擴充『春嬌生鮮超市』販賣系統的功能,除了可由螢幕點選客人購買商品與數量外,最後可由螢幕顯示總購買金額,並印出收據(寫入檔案)。假設僅販賣:可口餅乾(20 元)、味全鮮乳(30 元)、御便當(50 元)、黑松汽水(20 元)、頻果西打(30 元)與脆笛酥(20 元),期望操作介面如下:
(B)製作技巧提示:
圖 6-5 PM6_1 程式架構 吾人僅修改 Ex5_4.java 範例即可,原來購物清單是由螢幕顯示,將轉換到檔案輸出即可,虛擬碼提示如下: 虛擬碼提示如下:
|
翻轉工作室:粘添壽
Java 程式設計(二) 含物件導向
翻轉電子書系列:
|