我们在做某某调查问卷,试卷等类型的开发的时候,总会避免不了多选题。然而很多时候,一个多选题的设计,会引来不同的开发结果,这个因人而异。
以下是我对多选题的设计,提出的解决方法。
我们在高中时代,想必大家对集合的概念都很熟悉吧。下面就来介绍集合是如何解决多选题统分的。
有差集,不给分
无交集,不给分(排除上一个后这个是考虑空白答卷的情况,如果确认不会有白卷这句可以不用)
无差集,有交集,交集数量!=答卷,半分
无差集,有交集,交集数量=答卷,满分(这个可以不写逻辑,直接用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个选项的话,就不符合有些项目的实际需求了。
时间: 2024-10-27 14:02:34