【小型系統】抽獎系統-使用Java Swing完成

leesf發表於2016-02-27

一、需求分析

  1. 顯示候選人照片和姓名。

  2. 可以使用多種模式進行抽獎,包括一人單獨抽獎、兩人同時抽獎、三人同時抽獎。

  3. 一個人可以在不同的批次的抽獎中獲取一、二、三等獎,但是不能在同一批次抽獎中獲取多個獎項。

二、系統總體框架

  系統需求比較簡單,採用Java Swing技術可以很好的實現,系統的總體類框架圖如下

  

  說明:基於主要的三個類就可以完成所需要的功能,Frame有Panel型別與MouseAdapter型別的成員,Panel主要使用者存放具體的控制元件和繪製相應的資訊,MouseAdapter主要用於響應滑鼠的點選操作。

三、系統實現細節

  1. 照片輪流顯示效果 - 定時器

  既然是抽獎系統,所以一定要有讓候選人圖片滾動以起來的效果,那麼如何實現呢?採用定時器即可,每100ms出發一次定時器,則可以讓每100ms都顯示不同候選者的照片和姓名。

  2. 同一候選人在同一批次不能獲得多個獎項 - 迴圈演算法

  在進行多人模式進行抽獎的時候,如何保證同一候選人不能獲得多個獎項?使用一個迴圈演算法即可,若隨機生成的幾個數相同,則重新生成,直到同一批次生成的數均不相同。

  3. 候選人照片與姓名如何對應 - 兩個連結串列實現

  使用兩個連結串列保證滾動的照片和姓名相對應,前提是照片名字是用候選人姓名+照片格式構成,如leesf.jpg。這樣,在讀取照片的時候也對照片名進行解析,提取出名字,並將照片和名字分別加入照片連結串列和姓名列表,這樣,在取的時候直接同時取照片連結串列和姓名連結串列的相應項即可。

四、程式碼清單

  本系統程式碼已經上傳到GitHub上。地址為:https://github.com/leesf/LuckDrawSystem.git 歡迎各位園友fork和下載。

五、執行截圖

  

  系統介面

選單欄

六、總結

  一個非常簡單的抽獎系統,讀者有需要的可以根據自己的需求去進行修改。謝謝各位園友的觀看~

  

  

相關文章