相关疑难解决方法(0)

如何在Web表单GUI中实现用户友好的布尔逻辑?

目前我有一个Web应用程序,用户可以使用下拉列表生成SQL SELECT语句,如下所示:

列选择下拉列表| 运算符下拉(=!=> << =>)| 值选择下拉列表

用户可以多次执行此操作,并且"过滤器"当前全部与AND编号在一起.

我想添加创建OR语句的可能性.在列相同的情况下,我可以很容易地添加OR,但是复杂的逻辑语句如何

((或或B或C)和(D或E))或(F和G)?

如何让用户以用户友好的方式创建此类语句?

编辑:为一般受众指定,用户友好.目前,我与开发人员合作,偶尔为需要我们数据库中特定信息的非技术客户端手动编写SQL查询.我们的目标是通过为客户提供易于使用的工具来自行完成,这个Web应用程序将无需我们手动编码.

EDIT2:目前最终用户没有使用该应用.我使用的唯一数据是以前的手写SQL查询,因此客户端要求的查询类型.鉴于我可以简化它(例如限制用户为他们倾向于要求的查询类型生成查询的能力),但我想看看是否有人在GUI中简单而完整地传达布尔逻辑的经验.

感谢您的时间.

user-interface boolean-logic

33
推荐指数
3
解决办法
2万
查看次数

优化布尔逻辑树评估

我有很多真/假结果保存为long[]数组中的位.我确实拥有大量的这些(数百万和数百万的长).

例如,假设我只有五个结果,我会:

+----- condition 5 is true
|
|+---- condition 4 is false
||
||+--- condition 3 is true
|||
|||+-- condition 2 is true
||||
||||+- condition 1 is false
10110
Run Code Online (Sandbox Code Playgroud)

我也有一些树代表如下的语句:

condition1 AND (condition2 OR (condition3 AND condition 4))
Run Code Online (Sandbox Code Playgroud)

树很简单但很长.他们基本上看起来像这样(下面是过于简单化,只是为了表明我得到了什么):

class Node {    
    int operator();
    List<Node> nodes;
    int conditionNumber();    
}
Run Code Online (Sandbox Code Playgroud)

基本上,Node是一个叶子,然后有一个条件号(匹配long []数组中的一个位)或者Node不是叶子,因此引用了几个子节点.

它们很简单,但它们允许表达复杂的布尔表达式.它很棒.

到目前为止一切都很好,一切都很好.但是我确实有一个问题:我需要评估很多表达式,确定它们是真还是假.基本上我需要对一个问题进行一些暴力计算,而这个问题除了暴力破解之外还没有比这更好的解决方案.

所以我需要走树然后回答,true或者false取决于树的内容和内容long[].

我需要优化的方法如下所示:

boolean solve( Node node, long[] trueorfalse ) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

在第一次调用时,它node …

java optimization boolean-logic bytecode-manipulation

5
推荐指数
1
解决办法
2526
查看次数