首页 > 代码库 > 一个多选题设计引发的“血案”
一个多选题设计引发的“血案”
我们在做某某调查问卷,试卷等类型的开发的时候,总会避免不了多选题。然而很多时候,一个多选题的设计,会引来不同的开发结果,这个因人而异。
以下是我对多选题的设计,提出的解决方法。
我们在高中时代,想必大家对集合的概念都很熟悉吧。下面就来介绍集合是如何解决多选题统分的。
有差集,不给分
无交集,不给分(排除上一个后这个是考虑空白答卷的情况,如果确认不会有白卷这句可以不用)
无差集,有交集,交集数量!=答卷,半分
无差集,有交集,交集数量=答卷,满分(这个可以不写逻辑,直接用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个选项的话,就不符合有些项目的实际需求了。
一个多选题设计引发的“血案”
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。