功能需求與資料結構
2024年11月26日大约 3 分鐘
學習內容:
- 理解如何分析程式功能需求
- 學習設計專案所需的資料結構
- 條列待完成的工作項目
功能需求分析
在設計一個 To-Do List 專案時,我們需要先明確功能需求。以下為典型的 To-Do List 功能需求:
- 新增任務:
- 使用者可以輸入任務內容,將其加入待辦清單。
- 可選填完成期限或優先順序。
- 查看所有任務:
- 清單會顯示所有待辦事項,按某種順序排列(如加入順序、優先順序等)。
- 完成任務:
- 使用者可以標記任務為已完成,該任務從待辦清單中移至完成清單。
- 刪除任務:
- 使用者可以移除已完成或不再需要的任務。
- 查詢任務:
- 可以根據關鍵字或條件(如優先順序、期限)篩選任務。
- 存檔與讀檔
- 可以儲存檔案及讀取檔案。
資料結構設計
為了實現上述功能,我們需要一個合適的資料結構來儲存和操作任務資料。
任務的資料結構
每個任務可用一個字典表示,基本上應包含以下屬性:
id
: 任務的唯一編碼(可選,數值或字串)。title
: 任務名稱(字串)。description
: 任務描述(可選,字串)。completed
: 是否已完成(布林值)。due_date
: 完成期限(可選,日期)。priority
: 優先順序(可選,數值或枚舉類型,如高、中、低)。
範例:
{
"id": 1,
"title": "寫報告",
"description": "完成期末專案報告",
"due_date": "2024-12-01",
"priority": "高",
"completed": False
}
全部任務的資料結構
任務清單可以用一個列表來儲存,每個元素是一個任務的字典:
tasks = [
{"id": 1, "title": "寫報告", "description": "完成期末專案報告", "due_date": "2024-12-01", "priority": "高", "completed": False},
{"id": 2, "title": "買菜", "description": "超市購物清單", "due_date": None, "priority": "低", "completed": False},
]
我們可以用兩個列表分別儲存 待辦任務 和 已完成任務:
pending_tasks = [ ... ] # 待完成的任務
completed_tasks = [ ... ] # 已完成的任務
條列待完成的工作項目
增加一個 todo.md 檔案(也可以使用 Readme.md)列出所有要做的工作項目,之後每次完成一個項目,將核取方塊勾選起來。
#### 系統需求與資料結構設計
- [x] 設計系統的基本功能需求
- [x] 設計單個任務的資料結構
- [x] 設計儲存多個任務的清單結構
- [ ] 設計數據儲存結構
#### 程式實作進度
- [ ] 設計查看所有任務功能
- [ ] 設計新增任務功能
- [ ] 設計完成任務功能
- [ ] 設計刪除任務功能
- [ ] 設計篩選任務功能(根據優先順序或完成期限)
- [ ] 設計數據儲存功能(儲存到檔案中)
- [ ] 設計數據讀取功能(從檔案讀取數據)
#### 測試進度
- [x] 測試新增任務
- [x] 測試查看任務
- [ ] 測試完成任務
- [ ] 測試刪除任務
- [ ] 測試過期任務的篩選功能
...
之後可以參考這個 Markdown 檔案來追蹤專案進度,並隨著完成每個功能或測試,將對應的項目從 [ ]
修改為 [x]
,以視覺化方式掌握進度。
練習
自行修改上述的軟體需求,例如擴充任務的欄位功能或任務的處理功能,並建立上述的 todo.md 檔案內容。