跳至頁尾內容
Iron Academy Logo
C#應用程式
C#應用程式

其他類別

構建競賽追蹤器(C# Winform應用) – 來自Tim Corey的見解

[[academy-video-youtube({"vid": "Xt9vke5ic94", "start_time": "0", "title": "C# App Start To Finish Lesson 27 - Wrapping Up (The Final Lesson)", "creator": "Tim Corey", "length": "59m 33s"})]]

C# 是一種用途廣泛的程式語言,以 C# 建立 Windows Forms (WinForms) 應用程式可以幫助您了解從頭到尾的真實世界軟體開發。 在本文中,我們將深入探討如何建構一個功能性的 C# WinForms 應用程式,透過分析 Tim Corey 的 課程"C# From Start to Finish"的第27課。 Tim 示範了完成賽事追蹤應用程式的最後步驟,不僅提供一個 WinForms 開發的實際範例,還帶給我們有價值的事件驅動程式設計、資料處理和應用程式架構的見解。

介紹

當 Tim 在 0:00 開始課程時,他歡迎觀眾進入第27課,並解釋今天的重點是完成賽事追蹤專案。 他回顧了建構一個複雜專案的旅程,並指出完成軟體應用程式使得開發者對於真實世界專案的努力有更深的體會。 根據 Tim 的說法,最後一課涉及四個關鍵步驟:標記賽事完成、確定獎金分配、向參加者發送電子郵件通知,以及關閉賽事檢視器 (0:48–1:10)。

完成賽事邏輯

Tim 開始時打開了進行最後更新的程式碼,並解釋了檢查不僅當前回合,而是整個賽事是否完成的重要性 (1:36–2:05)。 他強調這是應用程式的一個關鍵部分,因為程式必須知道它何時進入最後一輪,以便正確執行後續步驟,例如頒發獎品和發送電子郵件。

他展示了如何修改檢查回合完成的迴圈。 Tim 沒有略過已經標記出勝利者的回合,而是引入了一個檢查機制,當找到一個沒有勝利者的比賽時,立即返回當前回合的輸出 (3:56–4:09)。 如果所有比賽都有勝利者,迴圈完成,表明賽事結束。 這一邏輯確保正確檢測到賽事完成,並允許應用程式觸發進一步的操作。

然後 Tim 建立了一個名為 CompleteTournament 的私人靜態方法,以封裝在賽事完成時所需的所有邏輯 (5:07–5:14)。 他指出,這個方法應保持私有,因為這是把賽事標記為完成的唯一位置,防止使用者或程式的其他部分過早地將其標記為已完成 (5:58–6:05)。

處理不同的資料連接器

Tim 說明賽事模型在資料庫中有一個 Active 字段,但這在應用程式模型中先前並未包含。 為了解決這個問題,他新增了處理文字和 SQL 資料儲存的邏輯 (6:40–10:37)。

對於文字文件,他演示移除已完成的賽事條目以將其移出活動列表。對於 SQL,他修改了儲存過程以將 Active 欄設置為 0,有效地將賽事標記為完成,同時保留歷史資料。 正如 Tim 在 10:02–10:59 所解釋的,這種方式允許資料庫維護相關資訊,同時防止已完成的賽事出現在 UI 中。

這展示了 WinForms 開發中的一個關鍵原則:一致地處理多種資料來源,確保即使應用程式使用文字文件或 SQL,使用者體驗也保持相同。

計算獎金

一旦賽事完成,下一步就是確定每位獲勝者和亞軍需要獲得多少獎金。 Tim 分步解釋了計算過程 (13:30–19:02)。 首先,他通過將團隊數量乘以參賽費用來計算總收入。 然後,他使用 LINQ 表達式來識別最後一輪的勝利者和亞軍,這是一種常用於 C# 中高效查詢集合的技術。

Tim 指出,雖然他的方式只處理第一和第二名,但更複雜的計算可以根據比賽結果或得分比例確定第三名或第四名 (20:07–22:18)。 他強調,這是一種升級,而非必須要求,展示了一種增量地建構應用程式的實踐方法。

對於每個獎項, Tim 展示了如何使用 CalculatePrizePayout 方法處理固定金額和基於百分比的獎項 (24:35–28:21)。 他仔細解釋了資料型別、轉換和計算百分比時可能出現的四舍五入問題 (26:10–28:07)。 這確保使用者始終看到準確的獎金數值,這對實際應用程式中的財務計算至關重要。

發送電子郵件通知

計算完獎金後,Tim 進入到向參加者發送電子郵件的步驟。 他解釋說,雖然應用程式可以單獨向每位參加者發電子郵件,更有效的做法是使用 BCC (密件副本)來通知所有參加者,同時保持電子郵件地址的隱私 (40:05–40:18)。

Tim 通過遍歷所有團隊及其成員,將每個有效的電子郵件地址新增到 BCC 列表中,建立了一個向多個收件人發送郵件的方法 (43:35–44:30)。 這種方法展示了 WinForms 應用可以如何處理像群發通知這樣的真實需求,而不暴露敏感資訊。

他還強調了良好的編碼習慣,例如通過建立方法重載來避免重複程式碼,保持電子郵件發送邏輯的有序和可重用性 (41:16–42:49)。

關閉賽事檢視器表單

應用程式的最後一步是,在賽事完成後關閉賽事檢視器表單。 Tim 解釋了在 C# 中使用事件有效處理此過程的重要性 (46:00–46:16)。

他在賽事模型中引入了一個名為 TournamentComplete 的自定義事件 (48:17–48:36),並演示了如何在賽事完成後調用它 (49:31–50:25)。 Tim 解釋說,C# 中的事件允許訂閱者(在此案例中為賽事檢視器表單)在模型中發生事件時作出反應。 表單監聽該事件,並在觸發時執行 this.Close() 方法以返回到儀表板 (53:09–54:14)。

這一部分的課程強調了事件驅動程式設計——WinForms 開發中的核心概念。 它使邏輯(賽事完成)與 UI 響應(表單關閉)解耦,提高應用程式的可維護性和可擴展性。

測試已完成的應用程式

Tim 展示了建立一個簡單的賽事以測試所有功能,包括計分回合、計算獎勵、發送電子郵件以及關閉表單 (55:07–57:30)。 他強調,測試應包括不尋常的情境,如缺少獎金、沒有參賽費或回合未完成。 這強化了一個關鍵的軟體工程原則:充分測試以確保可靠性,特別是在將用於真實世界情境的應用程式中。

Tim Corey 的課結論要點

Tim 透過總結已完成的應用程式結束課程:賽事追蹤器現在可以全面處理賽事完成,精確計算獎勵,通過電子郵件通知所有參與者,並無縫地返回主儀表板。 他提醒觀眾,軟體通常包含漏洞,建立健全應用程式的最佳方法是反复測試和實際使用。

他還突顯了在教學內容設計中使用者反饋的重要性,指出課程系列是根據觀眾要求設計的。 這對開發者來說是一個有價值的提醒:了解使用者需求並根據反饋進行迭代對成功的軟體開發至關重要。

結論

Tim Corey 在他的 C# From Start to Finish 課程中的最後一 是如何從頭到尾建立一個完整的 WinForms 應用程式的出色範例。 從檢查賽事完成、計算獎勵到發送電子郵件通知和處理 UI 事件,Tim 提供了逐步展示,不僅教授如何編碼還教導如何思考如開發者。

跟隨這個課程允許學習者理解 WinForms 的重要概念例如:

  • 用於應用程式流程的迴圈和條件邏輯

  • 處理不同來源的資料(文字文件與 SQL)

  • 使用 LINQ 查詢和操作集合

  • 用於 UI 更新的事件驅動程式設計

  • 用於使用者通知的電子郵件自動化

  • 漸進開發與測試

通過學習 Tim 的方法,開發者可以在 C# WinForms 中獲得實踐經驗,學習建立可維護、可擴展和使用者友好的應用程式。

這次深入研究賽事追蹤器的最後階段表明,透過仔細規劃、邏輯組織和細節關注,任何人都可以使用 C# 建立專業品質的 Windows Forms 應用程式。

Hero Worlddot related to 構建競賽追蹤器(C# Winform應用) – 來自Tim Corey的見解
Hero Affiliate related to 構建競賽追蹤器(C# Winform應用) – 來自Tim Corey的見解

分享您所愛以賺取更多報酬

您是否為使用 .NET、C#、Java、Python 或 Node.js 的開發者建立內容?將您的專業知識轉化為額外收入!

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話