已封存 2023年12月 - 2024年1月
LBN 大巨巢系統模擬
以 C# Windows Forms 實作的多角色電競平台模擬系統,支援五種角色(觀眾、廣告商、選手、聯盟擁有者、管理員)互動操作,採用 JSON 序列化儲存資料並整合 EPPlus 實現 Excel 匯出功能。
C# Simulation GUI School Project
專案簡介
LBN Competitive System Simulation 是一個以 「Golf with Your Friends」遊戲競技系統為靈感設計的綜合性競賽平台模擬系統,旨在提供多角色、多功能的競技聯盟管理解決方案。本專案採用 C# Windows Forms 開發,實作了觀眾瀏覽、廣告商投放、選手管理、聯盟經營、系統管理等完整功能模組,模擬真實電競聯盟運營生態系統,為使用者提供沉浸式的競技系統體驗。
核心理念
- 多角色系統設計:五大角色(觀眾、廣告商、選手、聯盟擁有者、管理員)各司其職
- 完整生態模擬:涵蓋賽事瀏覽、廣告投放、選手報名、聯盟管理、系統監控
- 數據驅動管理:使用 JSON 儲存系統資料,支援匯出與匯入
- 視覺化互動設計:豐富的 UI 動畫與使用者體驗優化
我的職責
作為本專案的主要開發者,我與協作者 yutao33003 和 qqwnua 共同完成以下工作:
系統架構設計
- 設計多角色架構,實現角色分離與權限管理
- 建立 ID 驗證系統,支援使用者註冊、登入與角色分配
- 設計聯盟(League)資料結構,包含成員管理、賽事資訊、廣告配置
- 實作 JSON 序列化機制,實現資料持久化儲存
核心功能實作
- 主頁面與登入系統:倒數計時自動跳轉、角色識別、歡迎訊息客製化
- 觀眾瀏覽介面:聯盟列表檢視、搜尋篩選、聯盟詳情展示
- 廣告商儀表板:廣告投放管理、預算追蹤、聯盟選擇
- 選手管理系統:個人資料編輯、聯盟加入/退出、成績查詢
- 聯盟擁有者後台:成員管理、賽事排程、廣告商洽談、聯盟設定
- 管理員控制台:系統監控、使用者管理、資料備份與還原
UI/UX 設計
- 設計主題色彩系統(觀眾綠、管理員紅、選手/聯盟藍)
- 實作按鈕動畫效果與場景轉換
- 設計自訂控制項與視覺化資料呈現
核心功能
1. 多角色系統
- 觀眾(Normal):
- 瀏覽所有公開聯盟資訊
- 搜尋與篩選聯盟
- 查看賽事排程與結果
- 廣告商(Advertiser):
- 管理廣告投放預算
- 選擇目標聯盟投放廣告
- 追蹤廣告效益與曝光數據
- 選手(Player):
- 個人資料管理(暱稱、戰績、聯盟歸屬)
- 申請加入聯盟
- 查看個人賽事記錄與排名
- 聯盟擁有者(League Owner):
- 創建與管理聯盟
- 審核選手加入申請
- 設定聯盟規則與賽事排程
- 管理聯盟廣告合作
- 編輯聯盟資訊與 Logo
- 管理員(Admin):
- 系統全域監控
- 使用者帳號管理
- 資料庫備份與還原
- 審核聯盟申請
2. 聯盟管理系統
- 聯盟資訊管理:
- 聯盟名稱、類型(休閒型/競技型)、描述
- 自訂聯盟 Logo(支援圖片上傳)
- 成員列表與角色分配
- 賽事管理:
- 賽事排程建立與編輯
- 賽事結果記錄
- 積分與排名計算
- 成員管理:
- 成員申請審核
- 成員角色調整(一般成員/副聯盟長)
- 成員移除與黑名單管理
3. 資料管理與序列化
- JSON 資料儲存:
- 使用 Newtonsoft.Json 進行序列化/反序列化
- 支援使用者資料、聯盟資料、賽事資料獨立儲存
- 資料匯入/匯出:
- Excel 格式匯出(使用 EPPlus)
- JSON 格式備份與還原
- 資料驗證:
- 唯一性檢查(使用者 ID、聯盟 ID)
- 必填欄位驗證
- 資料格式校驗
4. 搜尋與篩選功能
- 聯盟搜尋:
- 依名稱模糊搜尋
- 依類型篩選(休閒/競技)
- 依成員數量排序
- 選手搜尋:
- 依暱稱搜尋
- 依聯盟歸屬篩選
- 依戰績排序
5. 視覺化與互動設計
- 動畫效果:
- 登入頁面倒數計時動畫
- 按鈕懸停/點擊效果
- 場景淡入淡出轉換
- 主題色彩系統:
- 角色專屬配色(觀眾綠、管理員紅、選手藍)
- 統一的視覺語言與元件風格
- 自訂控制項:
- 自訂按鈕樣式
- 自訂列表項目顯示
- 自訂對話框設計
使用技術
核心框架
- Windows Forms:.NET Framework 4.7.2 桌面應用程式框架
- C#:主要開發語言
- Visual Studio:整合開發環境
資料處理與序列化
- Newtonsoft.Json (13.0.3):JSON 序列化/反序列化
- EPPlus (7.0.5):Excel 檔案讀寫與匯出
- System.ComponentModel.DataAnnotations:資料驗證
UI 組件與多媒體
- PresentationCore:WPF 元件整合
- System.Drawing:圖形處理與繪製
- System.Media.SoundPlayer:音效播放
測試框架
- MSTest (3.1.1):單元測試框架
- Microsoft.VisualStudio.TestPlatform:測試平台
其他依賴
- System.DirectoryServices:目錄服務存取
- System.Configuration:應用程式配置管理
專案狀態
當前版本:已完成(Everything is Done)
- 核心功能狀態:所有主要功能已實作並測試完成
- 已知問題:程式碼清理工作進行中
功能完成度
- ✅ 已完成:
- 五大角色系統(觀眾、廣告商、選手、聯盟擁有者、管理員)
- 聯盟管理完整功能(創建、編輯、成員管理、賽事管理)
- 使用者認證與授權系統
- 資料序列化與持久化儲存
- Excel 資料匯出功能
- 完整的 UI/UX 設計與動畫效果
- 單元測試框架建立
- 🔄 進行中:
- 程式碼重構與清理(Make the codes much more cleaner)
- 📋 已放棄:
- 音效系統(Perhaps adding some SFXs? - Nah I give up)
開發挑戰與收穫
1. 多角色系統架構設計
挑戰:如何在單一應用程式中實作五種不同角色,各自擁有獨立的介面與權限?
解決方案:
- 設計
ID類別作為使用者基礎資料結構,包含角色欄位 - 為每個角色建立獨立的 Form(MainForm、AdminMainForm、PlayerMainForm、LeagueMainForm 等)
- 使用
DialogResult機制在登入後根據角色跳轉至對應介面 - 實作角色檢查邏輯,限制特定功能的存取權限
收穫:
- 深入理解物件導向設計的繼承與多型概念
- 掌握 Windows Forms 多視窗管理技巧
- 學習角色基礎存取控制(RBAC)實作方式
- 理解使用者體驗在多角色系統中的重要性
2. JSON 資料持久化與序列化
挑戰:如何將複雜的物件結構(使用者、聯盟、賽事)儲存為 JSON 格式,並確保資料完整性?
解決方案:
- 使用 Newtonsoft.Json 進行序列化/反序列化
- 設計清晰的資料模型(User、League、Event 等類別)
- 實作自訂 JsonConverter 處理特殊資料類型(如 Guid)
- 建立資料驗證機制,確保載入資料的有效性
- 實作資料備份機制,避免資料遺失
收穫:
- 掌握 JSON 序列化的進階技巧
- 學習資料模型設計的最佳實踐
- 理解資料完整性與一致性的重要性
- 熟悉檔案 I/O 操作與錯誤處理
3. 聯盟管理複雜邏輯實作
挑戰:如何實作聯盟的完整生命週期管理,包含成員申請、審核、賽事排程、廣告合作等複雜業務邏輯?
解決方案:
- 設計
League類別封裝所有聯盟相關資料與方法 - 實作狀態機模式管理聯盟狀態(草稿、活躍、封存)
- 使用集合(List、Dictionary)管理成員與賽事資料
- 建立事件系統通知成員變更與賽事更新
- 實作審核流程(待審核 → 核准/拒絕)
收穫:
- 深入理解業務邏輯層的設計模式
- 掌握狀態機模式的實際應用
- 學習複雜資料關聯的管理技巧
- 提升系統設計與抽象思考能力
4. Excel 資料匯出功能
挑戰:如何將系統資料匯出為結構化的 Excel 檔案,方便使用者進行資料分析?
解決方案:
- 整合 EPPlus 函式庫進行 Excel 操作
- 設計匯出範本(表頭、欄位對應、格式設定)
- 實作資料轉換邏輯,將物件屬性映射至 Excel 欄位
- 使用 SaveFileDialog 提供檔案儲存介面
- 處理大量資料匯出的效能優化
收穫:
- 掌握第三方函式庫整合技巧
- 學習 Excel 檔案格式與操作方式
- 理解資料轉換與映射的設計模式
- 提升檔案處理與 UI 互動設計能力
5. 團隊協作與版本控制
挑戰:如何在三人協作開發中確保程式碼品質與功能整合順利?
解決方案:
- 使用 Git 進行版本控制,建立明確的分支策略
- 定期進行 Code Review 與整合測試
- 使用單元測試框架(MSTest)確保功能正確性
- 建立開發文件與註解規範
- 透過 GitHub Issues 追蹤任務與 Bug
收穫:
- 提升團隊協作與溝通能力
- 掌握 Git 分支管理與衝突解決技巧
- 學習單元測試撰寫與測試驅動開發
- 理解軟體工程流程與專案管理
- 培養程式碼審查與重構意識
協作開發者
- yutao33003
- qqwnua
應用程式執行截圖