堅持學習Java100天第011天 QuickPoll專案04 實現統計投票結果功能

實現統計投票結果功能

我們想要拿到某次投票的結果資訊,這個資訊應該長成下面的樣子:

{總投票數:100,[{張三:80}, {李四:20}]}

大概的含義就是:某次投票,總參與人數有100人,每人投了1票。其中,張三獲得了80票,李四獲得了20票。他們的票數總共加起來有100票。其餘未被統計的,都是票。

根據結果的資料格式,我們需要新增兩個結果類。第一個是選項統計類,用於實現“{張三:80}”這樣的統計效果。

新增:dto。OptionCount。java

第二個結果類用於實現統計,得到類似“,{李四:20}]}”這樣的效果。

新增:dto。VoteResult。java

從這一點上來說,Java和Go是比較類似的,都是強型別語言,都需要有一個物件去承載某種資料結構。如果是Python的話,這裡直接就是一個字典,就完全沒有這麼麻煩了。這裡是題外話,具體哪種語言更好,需要大家自己隨著使用經驗的積累,自行判斷。

有了上面兩個結果類以後,我們就可以實現結果統計的介面了。

新增:controller。ComputeResultController。java

這段程式碼也很好理解。先查詢出所有的Vote,然後遍歷Vote資訊,將其按照option id進行分組,統計每個option的vote數量。最後將資料封裝為指定的資料結構再返回。

關於此介面,我們設計如下的測試流程:

1、新增一個投票資訊,選擇你最喜歡的程式語言,配置4個選項,分別是Java,Python,Golang,Rust。

2、查詢剛新增的投票資訊。

3、查詢所有的投票資訊。

4、給Java投10票,Python投8票,Goalng投3票,Rust投1票。

5、查詢關於程式語言的所有投票資訊。

6、統計關於程式語言的投票資訊。

使用ApiFox,能夠完美實現我們的測試思路:

堅持學習Java100天第011天 QuickPoll專案04 實現統計投票結果功能

測試結果如下:

堅持學習Java100天第011天 QuickPoll專案04 實現統計投票結果功能

TAG: 投票統計資訊結果100