點擊查看更多
點擊關閉

訪客計數

--- 次訪問

快速統計

15
專案
1
更新
1
活躍專案
3
已完成

本日名言

"一個分裂的世界,四分五裂得沒人有機會拼湊得起,仍去嘗試的話有甚麼意義呢?"
— 賽蒙·羅傑斯
返回專案列表
已封存 2023年12月 - 2024年1月

LBN 大巨巢系統模擬

以 C# Windows Forms 實作的多角色電競平台模擬系統,支援五種角色(觀眾、廣告商、選手、聯盟擁有者、管理員)互動操作,採用 JSON 序列化儲存資料並整合 EPPlus 實現 Excel 匯出功能。

lbn-大巨巢系統模擬
C# Simulation GUI School Project

專案簡介

LBN Competitive System Simulation 是一個以 「Golf with Your Friends」遊戲競技系統為靈感設計的綜合性競賽平台模擬系統,旨在提供多角色、多功能的競技聯盟管理解決方案。本專案採用 C# Windows Forms 開發,實作了觀眾瀏覽、廣告商投放、選手管理、聯盟經營、系統管理等完整功能模組,模擬真實電競聯盟運營生態系統,為使用者提供沉浸式的競技系統體驗。

核心理念

  • 多角色系統設計:五大角色(觀眾、廣告商、選手、聯盟擁有者、管理員)各司其職
  • 完整生態模擬:涵蓋賽事瀏覽、廣告投放、選手報名、聯盟管理、系統監控
  • 數據驅動管理:使用 JSON 儲存系統資料,支援匯出與匯入
  • 視覺化互動設計:豐富的 UI 動畫與使用者體驗優化

我的職責

作為本專案的主要開發者,我與協作者 yutao33003qqwnua 共同完成以下工作:

系統架構設計

  • 設計多角色架構,實現角色分離與權限管理
  • 建立 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

應用程式執行截圖