我們在做某某調查問卷,試卷等類型的開發的時候,總會避免不了多選題。然而很多時候,一個多選題的設計,會引來不同的開發結果,這個因人而異。
以下是我對多選題的設計,提出的解決方法。
我們在高中時代,想必大家對集合的概念都很熟悉吧。下面就來介紹集合是如何解決多選題統分的。
有差集,不給分
無交集,不給分(排除上一個后這個是考慮空白答卷的情況,如果確認不會有白卷這句可以不用)
無差集,有交集,交集數量!=答卷,半分
無差集,有交集,交集數量=答卷,滿分(這個可以不寫邏輯,直接用else也行,因為排除上面幾種情況剩下就是交集相等)
附上Linq差集、交集、並集的計算
List<string> ListA = new List<string>(); List<string> ListB = new List<string>(); List<string> ListResult = new List<string>(); ListResult = ListA.Distinct().ToList();//去重 ListResult = ListA.Except(ListB).ToList();//差集 ListResult= ListA.Union(ListB).ToList(); //並集 ListResult = ListA.Intersect(ListB).ToList();//交集
(2)位運算
可以用位運算來計算
A:1 B:2 C:4 D:8
如何選擇AB 則為3
如何選擇ABCD 則為15
比如正確為4 則 看看選擇的結果為N跟4比
if(N==4) 3分
if 4&N==N 2分
其他 0分
位運算是不錯的選擇,很方便。可是位運算有個取值只能在2^64范圍之中,想必超過64個選項的話,就不符合有些項目的實際需求了。