一個多選題設計引發的“血案”


  我們在做某某調查問卷,試卷等類型的開發的時候,總會避免不了多選題。然而很多時候,一個多選題的設計,會引來不同的開發結果,這個因人而異。

以下是我對多選題的設計,提出的解決方法。

 

  我們在高中時代,想必大家對集合的概念都很熟悉吧。下面就來介紹集合是如何解決多選題統分的。

 

 有差集,不給分

 無交集,不給分(排除上一個后這個是考慮空白答卷的情況,如果確認不會有白卷這句可以不用)

 無差集,有交集,交集數量!=答卷,半分

 無差集,有交集,交集數量=答卷,滿分(這個可以不寫邏輯,直接用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個選項的話,就不符合有些項目的實際需求了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM