100 likes | 186 Views
Introduction to C Programming. Program 7. Program 7 Address Book. 撰寫 一個通訊錄程式,從檔案中讀入資料,讓使用者執行操作後,並可將 修改後的結果 寫回檔案。 操作 insert : 加入一筆資料 update : 根據 id 更新資料 delete :根據 id 刪除資料 sort :根據 id 排序資料 show :顯示所有聯絡人資料 save :將通訊錄寫回檔案中 exit :離開程式. 檔案內容. 檔案名稱固定為: in.txt
E N D
Introduction to C Programming Program 7
Program 7Address Book • 撰寫一個通訊錄程式,從檔案中讀入資料,讓使用者執行操作後,並可將修改後的結果寫回檔案。 • 操作 • insert:加入一筆資料 • update:根據id更新資料 • delete:根據id刪除資料 • sort:根據id排序資料 • show:顯示所有聯絡人資料 • save:將通訊錄寫回檔案中 • exit:離開程式
檔案內容 • 檔案名稱固定為:in.txt • 內容每行為一筆資料,分別為id,name,email,phone • 每個欄位以逗號分隔 • 例 1,Tammy J. Connors,TammyJConnors@teleworm.us,580-228-1482 2,Lewis S. Archer,LewisSArcher@teleworm.us,904-305-6505 3,Paula D. Nelson,PaulaDNelson@dayrep.com,203-580-7616
操作界面 • 利用印出>提示使用者輸入功能指令
功能 • insert • 以(id) >> 提示使用者輸入id • 以(data) >> 提示使用者輸入name,email,phone (以逗號分隔) • update • 以(id) >> 提示使用者輸入id • 以(data) >> 提示使用者輸入name,email,phone (以逗號分隔) • delete • 以(id) >> 提示使用者輸入id • 刪除後將最後一筆資料取代被刪除資料原來的位置 • sort:根據id排序 • show:顯示所有聯絡人資料,每筆欄位以四個空白分隔 • save:將通訊錄寫回in.txt檔案(覆蓋原本內容) • exit:離開程式
限制 • 每筆資料條目必須以下面的struct實作,不可使用靜態的char陣列儲存 struct Entry { int id; char* name; char* email; char* phone; } • malloc的記憶體必須在結束使用後free • 每行資料長度不會超過128字元
Bonus • 加入一個功能:query,以SQL語法查詢資料,並印出 • 語法的規格為 • SELECT[欄位名]… FROM address_book WHERE [欄位名] = 值...ORDERBY[欄位名] ASC| DESC • 若有語法錯誤,請印出syntax error • WHERE 與 ORDER BY不一定會出現(可選) • 粗體字為一定會出現的固定語法 • SELECT,FROM, WHERE, ORDER BY…等關鍵字不分大小寫 • 例如:選出全部資料的id, name • >> SELECTid, name FROM address_book
Bonus– 語法說明 • WHERE為查詢條件,並可使用AND與OR合併多個條件 • 在此僅實作等於、大於、小於 • 例如:選出id > 3資料的id, name • SELECT id, name FROM address_book WHERE id > '3' • 例如:選出name為peter或id>3的資料的電話欄位 • SELECTphone FROM address_book WHERE name = 'peter' OR id >'3‘ • ORDER BY為排序查詢出來的資料 • 固定只會有一個排序條件 • ASC為遞增與DESC為遞減 • 選出所有的id> 3的name欄位,並依照id遞減排序結果 • SELECT name FROM address_book WHERE id > '3'ORDER BY id DESC
Deadline • 12/27