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