计算字段相关,球思路。

2012-09-16 10:50:01
我要做一个新的东西,恩,就是计算字段。
首先,我不知道会有那些字段,因为字段是由用户自己建立的。
然后计算公式也是由用户自定义的。
于是问题来了。
第一、如何检测计算公式的合法性。
第二、计算公式合法了,以什么样的方式存放到数据库中比较好呢?然后要怎么解析?

(请想象一个犹如计算器般的东西,它上面的按钮为:+ - * / if ( ) else <= 等等的符号,然后在这个计算器的上面有三个下拉框:
参与计算的字段(这个下拉框里包含所有值类型为数字的字段,可以任意选择)
第二个是条件字段的名字,第三是条件字段的值(这两个下拉框也是有N多选项供选择的,举例说条件字段为“性别”,那么条件字段值就有两个“男”、“女”)

来个例子吧:
如果我弄了一个计算公式出来:if(产品类型=自产产品]){成本=原材料费用+工人单人工资*工人数量}else{成本=运费+进货价格}
【要怎么检查这个公式的合法性呢?因为要呈现在文本框中,可以任意修改,字段的名称就可能会错误或者少个括号什么的。检查完合法性,保存到数据库中要采用什么样的方式比较好?计算成本的时候,要怎么取出计算公式解析他并按照公式来计算最终值?】


有代码当然好,但是代码不是万能的,主要还是求思路。有具体的例子和详细的思路解析最好~
...全文
109 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
2012-09-18
  • 打赏
  • 举报
回复
木有人回答了么...思路想的差不多了...
来个实例吧,如果我有个计算公式:
计算公式里会有:枚举名、枚举值,参与计算的字段
if([枚举A]=="值2" || [枚举B]== 5){
[需要计算的字段名] = [卖出价格] - [生产成本];
}
else{
[需要计算的字段名] = [卖出价格]- [产品进价];
}

要检测这个公式是否合法,主要有两个方面:
1.[]中的字段名是否存在(字段名都存在list中),[]中的枚举名是否存在,""中的值在该枚举中是否存在。(如果枚举值为int/double型的时候,不会有"")。
2.经过1的校验之后,计算公式应该变成:
if(==||==){=-;}else{=-;}或者在1的检查中将if中的条件全部截取出去,那就是if(){=-;}else{=-;}
然后就是检查在剩下的字符中是否有不符合的符号(比如我在输入计算公式的时候,在最后面加了一段“aaa224fd”那么,剩下来的字符就会是“if(){=-;}else{=-;}aaa224fd”)。
正确的应该是里面只会出现if else和各运算符等。
winner2050 2012-09-17
  • 打赏
  • 举报
回复
自定义字段别弄公式啦,性能很差的,因为没法实现放好索引。
需要弄到自定义公式的字段,说明你们程序不够强大。没法直接实现需求。

检测公式是否正确,可能还是得执行添加字段的时候用try catch 来捕获异常。
2012-09-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

你是要做动态查询吧?

个人以前都是用反射做的。代码量不是很大
[/Quote]

应该不算是动态查询,没那个简单吧。
这个是要将条件保存下来,然后在别的页面去调用,那个时候才会根据保存的条件去数据库获取值并计算的。
xuan.ye 2012-09-17
  • 打赏
  • 举报
回复
你是要做动态查询吧?

个人以前都是用反射做的。代码量不是很大
bdmh 2012-09-17
  • 打赏
  • 举报
回复
你去找一些脚本解析的资料看看
2012-09-17
  • 打赏
  • 举报
回复
自定义可参加计算的字段在页面加载的时候都会预加载到第一个下拉框里的。
基于二阶段聚类的车辆品牌聚类分析python源码+说明文档+数据集 1. 项目背景 基于项目提供的汽车相关数据,通过聚类分析的方法实现汽车产品聚类,以构建汽车产品画像、分析产品定位、完成汽车竞品分析等要求。 2. 项目数据 项目提供的汽车数据包括26个字段共205条数据,数据文件为“car_price.csv” 26个字段可以划分为类别型变量和数值型变量两种,包括汽车的长/宽/高、汽车净重、燃油系统、燃油类型、驱动类型、峰值转速、里程数、汽车价格等。 3. 项目要求 通过聚类的方法构建汽车产品画像、分析不同类别汽车的产品定位,寻找Volkswagen大众汽车的竞品品牌。 4. 项目思路 第一步:数据字段理解 根据项目所提供的数据,对数据中26个字段进行理解。结合汽车行业的相关知识,26个字段可以大致归为两类:第一类是车辆自身属性(如燃油系统、燃油类型、汽缸数、峰值转速、汽车长宽高等);第二类是车辆的市场属性(如车辆名称、车辆价格、风险评估等级)。 26个字段主要分为数值型变量和类别型变量两类。 第二步:原始数据描述性统计及变量分布可视化 对原始数据进行描述性统计并对数据中的字段分布进行可视化(详情见主文档)。通过对原始数据的观察,数据不存在缺失值、不存在重复值,“CarName”字段存在部分车辆品牌名称错误的情况。 第三步:确定聚类方法,明确聚类要求 通过对原始数据的变量观察,该数据变量主要为数值型变量和类别型变量两类,且类别型变量数量较多,常用的K-means聚类只能分析数值型变量,无法考虑类别型变量所包含的信息。二阶段聚类法适用于包含数值型和类别型变量的混合数据,因此考虑使用二阶段聚类法分析数据。 二阶段聚类法的要求是:类别型变量符合多项式分布(即变量的值分属几个类别);数值型变量间要相互独立,且数值型变量近似服从正态分布。项目所给出的数据中,类别型变量符合多项式分布,因此仅需进一步观察并处理数值型变量。 第四步:特征工程 数据清洗与新变量生成。原始数据指给出了车辆的名称,没有给出车辆所属品牌,结合最终聚类分析的需要,根据“CarName”字段提取出车辆所属品牌信息,命名为“brand”。同时对品牌名称中的错误拼写进行清洗。 变量相关性分析与可视化。由于二阶段聚类要求数值型变量间相互独立,所以需要对数值型变量间的相关性进行查看与处理。相关性分析结果表示14个数值型变量之间存在高相关性情况,需要结合汽车知识背景与变量特征进行进一步处理。 高相关变量的处理——“highwaympg”和“citympg”呈高度正相关。其实不管是高速mpg还是城市mpg,其本质都是mpg指标,而且通过观察数据,二者之间的差异较小(极值、均值),因此考虑将二者合并为一个指标'mpg',计算方式为取二者均值:mpg=(highwaympg+citympg)/2; 高相关性变量的处理——“price”变量与其余变量产生高相关性的频数最多,可能是因为车辆自身属性和配置的变动会直接影响着车辆的市场价格。此外,与其他变量相比,price属性属于车辆的市场销售属性(而非车辆自身属性),在聚类中更适合作为类别型变量,对车辆的价位进行划分,因此,考虑将price变量转换为类别型变量,按照其价格分布划分为Low price(<=10000), medium price(10000-20000), high price(>20000)三类; 高相关性变量的处理——对于其余数值型变量,变量数目较多且多个变量之间存在相关性,因此考虑使用因子分析对数值型变量进行降维,以减少数值型变量的数目并使变量间相互独立。 第五步:数值型变量因子分析结果(基于SPSS实现) 利用SPSS对数值型变量进行因子分析,KMO值>0.8,巴特利形检验p值=0,说明参与因子分析的变量间存在相关性,可以进行因子分析。最终得到两个因子。 第一个因子包括:车长、车宽、车净重、引擎尺寸、车轴距、mpg、马力、车内径比。简单将该因子归纳为车辆截面与马力因子; 第二个因子包括:车高、峰值转速、车压缩比。简单将该因子归纳为车辆垂面与转速因子; 第六步:两阶段聚类及结果(基于SPSS实现) 对处理后的数据进行两阶段聚类,最终将205辆车聚为两类。 根据SPSS聚类结果,第一类中包含120条车辆数据,占总数据的58.5%;第二类中包含85条车辆数据,占总数据的41.5%。两类簇数据规模近似,没有过大或过小的类簇。 根据SPSS聚类结果,聚类质量属于“良好”范围,仍有进一步改进和优化的空间。 根据SPSS聚类结果,显著区分两类类簇的变量(重要性>0.6)按重要性大小排序依次是驱动类型、燃油系统、车辆截面与马力因子、价格范围。 汽车产品画像与产品定位 根据区分类簇的四个重要标签来对数据中的汽车产品进行产品画

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧