我开发了一个程序,该程序根据州标准使用不同类型的承保范围生成保险报价。现在我想添加指定“规则”的功能。例如,我们可能有 3 种覆盖类型(我们将它们称为 UM、BI 和 PD)。好吧,有些州不允许 PD 大于 BI,而其他州不允许 UM 在没有 BI 的情况下存在。因此,我添加了用户创建这些规则的功能,以便在生成报价时遵循规则,因此在程序生成报价时不会违反州法规。
问题
我不希望用户能够选择冲突的规则。用户可以选择任何 VB 数学运算符(>、<、>=、<=、=、<>)并在任一侧设置覆盖范围。他们可以多次执行此操作(但一次只能执行一次),因此他们最终可能会得到如下规则列表:
- A > B
- B > C
- C > A
如您所见,最后一条规则与之前设置的规则冲突。我对此的解决方案是每次用户单击“将规则添加到列表”时验证列表。
假设第三个列表项尚未在列表中,但用户已单击“添加规则”将其放入列表中。验证过程首先检查两个传入变量是否已在同一行上使用。如果没有,它只会在已创建的列表中搜索左侧的传入变量(在本例中为“C”)。如果找到它,则将 tmp1 设置为匹配对面的变量 (tmp1 = 'B')。然后它对右侧的传入变量(在本例中为“A”)执行相同的操作。然后 tmp2 设置为等于 A 对面的变量 (tmp2 = 'B')。如果 tmp1 和 tmp2 相等,则无论使用何种运算符,传入的规则要么是冲突的,要么是不相关的。我很确定这是给定 3 个变量的可靠逻辑。然而,我发现添加任何其他变量都可以轻松绕过我的验证。在任何给定状态下可能有超过 10 种覆盖类型,因此能够验证的不仅仅是 3 种是很重要的。
给定任意数量的变量,是否有任何统一的方法来进行声音验证?任何想法或想法都会受到赞赏。我希望我的解释是有道理的。谢谢