首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么设计这样的一个动态算法啊

2012-02-21 
如何设计这样的一个动态算法啊?我有这样一个数据表B,B中的任一个数据都是以A表的数据为参数,然后进行相应

如何设计这样的一个动态算法啊?
我有这样一个数据表B,B中的任一个数据都是以A表的数据为参数,然后进行相应的计算方法进行运算得到B中的数据的值,例如:
B数据表:                                                            
数据项目ID         数据名称       数据值
1001                           C                  
1002                           P
1003                           Q

A数据表:                                                            
数据项目ID         数据名称       数据值
2001                           D                  
2002                           F
2003                           Y

B表中的C的值是由A表中的D,F,Y的值来进行相应的运算[(sum(D)+avg(Y))/2*sum(F)   ]而得,像这样若单对B表中的一个个来写程序可以做得到,但是为了方便以后的扩展,所以我想做一个窗口来让用户随时在B表中添加数据和它的参数,计算方法,以后便可获取该数据的值,设想如下:
数据ID号:
数据名:
所需参数来自的表名:
所需参数的ID号:
运算法则:
问题是它所需的参数不是一个,而是多个,像上面的就有三个,所以想请教高手,如何设计这样的动态算法呢?若做出来就方便用户随时添加自己想要的数据了,反正基础数据都是那三个表中的数据,只不过运算方法,和所要参数不一样罢了!

[解决办法]
听起来像是一个公式解析器。
题目没看得十分明白,如果函数和算子是固定个数的话,比如只有+,-,*,/和sum,avg等,那么可以做个列表,把算子和参数做在界面上候选,在用户编辑公式的时候,使用堆栈存储公式算子和参数,计算过程就是按出栈顺序结算的步骤了。
[解决办法]
简单的,可以考虑字符串处理;复杂点的,我建议还是用编译原理吧。

不然处理起优先级来,我觉得会比较复杂。
[解决办法]
解析公式不需要这么麻烦。
SQL自带的公式功能就足够用了。

例如在表中有这样一个公式:

sum(D)+avg(Y))/2*sum(F)

在给表B赋值时,
在DELPHI中读取这个公式,
然后组合成这样一个语句:
update b set 数据值 = sum(D)+avg(Y))/2*sum(F) from A where ...
执行即可。
[解决办法]
数据库后台建立触发器
[解决办法]
如果要扩展性好,就做一个映射表,把基础数据的各个字段映射到一张表,然后做个公式设置模板,对映射表进行设置,最后应用时,通过映射表找到原始数据进行计算得到结果

热点排行