一、需求分析
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和下載。
五、執行截圖
系統介面
選單欄
六、總結
一個非常簡單的抽獎系統,讀者有需要的可以根據自己的需求去進行修改。謝謝各位園友的觀看~