以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]加权计算如何写代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=50312)

--  作者:hrw68529
--  发布时间:2014/5/4 17:48:00
--  [求助]加权计算如何写代码
各位专家:遇到一个问题求解:如例子中的“加权计算”表中,“面试平均值”是指在一个面试室中分别去掉2个最高分和去掉2个最低分,然后计算出其余考生面试成绩得分的平均分数;加权平均值是指,进行加权的面试室(如本例中的第一、第二、第三面试室)的"面试平均值"的平均值(如本例中的第一面试室平均值+第二面试室平均值+第三面试室平均值除以3);加权系数是指:用“加权平均值”除以每个加权的面试室的“面试平均值”;这样的代码怎么写,尤其是“面试平均值”如何去掉2个最高分和2个最低分,然后把剩余的人员的成绩相加除以剩余的人员数,谢谢
如例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:公员面试登分系统_加权成绩计算.rar



--  作者:有点甜
--  发布时间:2014/5/4 18:34:00
--  

 面试室平均值,这样算,剩下的自己试试做

 

        Dim zgf1, zgf2, zdf1, zdf2 As Double
        Dim drs As List(Of DataRow) = DataTables("笔试成绩").Select("天数=\'" & e.DataRow("天数") & "\' and 分组=\'" & e.DataRow("分组") & "\'", "面试成绩")
        zgf1 = drs(drs.Count-1)("面试成绩")
        zgf2 = drs(drs.Count-2)("面试成绩")
        zdf1 = drs(0)("面试成绩")
        zdf2 = drs(1)("面试成绩")
        Dim sum As Double = DataTables("笔试成绩").Compute("sum(面试成绩)","天数=\'" & e.DataRow("天数") & "\' and 分组=\'" & e.DataRow("分组") & "\'")
        e.DataRow("面试室平均值") = (sum - zgf1 - zgf2 - zdf1 - zdf2) / drs.Count - 4


--  作者:hrw68529
--  发布时间:2014/5/5 11:16:00
--  
If e.DataCol.name="天数" OrElse e.DataCol.name="面试室" Then
    If e.DataRow.IsNull("天数")=False AndAlso e.DataRow.IsNull("面试室")=False Then
        Dim zgf1, zgf2, zdf1, zdf2 As Double
        Dim drs As List(Of DataRow) = DataTables("笔试成绩").Select("天数=\'" & e.DataRow("天数") & "\' and 面试室=\'" & e.DataRow("面试室") & "\'", "本场面试成绩")
        zgf1 = drs(drs.Count-1)("本场面试成绩")
        zgf2 = drs(drs.Count-2)("本场面试成绩")
        zdf1 = drs(0)("本场面试成绩")
        zdf2 = drs(1)("本场面试成绩")
        Dim sum As Double = DataTables("笔试成绩").Compute("sum(本场面试成绩)","天数=\'" & e.DataRow("天数") & "\' and 面试室=\'" & e.DataRow("面试室") & "\'")
        e.DataRow("面试室平均值") = (sum - zgf1 - zgf2 - zdf1 - zdf2) /( drs.Count - 4)
        e.DataRow("加权平均值") = e.DataTable.Compute("avg(面试室平均值)") 
        e.DataRow("加权系数") = e.DataRow("加权平均值")/e.DataRow("面试室平均值")
        e.DataRow("计数") = DataTables("笔试成绩").Compute("Count(总成绩)","天数 = \'" & e.DataRow("天数") & "\' and 面试室 = \'" & e.DataRow("面试室") & "\'")
    End If
End If
上述代码,红色部分,怎么也弄不好,请赐教

--  作者:hrw68529
--  发布时间:2014/5/5 11:19:00
--  
加权平均值是指,面试室平均值的平均值,也就是有几个加权的面试室,就把这几个面试室的"面试室平均值"相加除以这几个面试室的数
--  作者:有点甜
--  发布时间:2014/5/5 11:42:00
--  

代码,如下

 

If e.DataCol.name="天数" OrElse e.DataCol.name="面试室" Then
    If e.DataRow.IsNull("天数")=False AndAlso e.DataRow.IsNull("面试室")=False Then
        Dim zgf1, zgf2, zdf1, zdf2 As Double
        Dim drs As List(Of DataRow) = DataTables("笔试成绩").Select("天数=\'" & e.DataRow("天数") & "\' and 面试室=\'" & e.DataRow("面试室") & "\'", "本场面试成绩")
        zgf1 = drs(drs.Count-1)("本场面试成绩")
        zgf2 = drs(drs.Count-2)("本场面试成绩")
        zdf1 = drs(0)("本场面试成绩")
        zdf2 = drs(1)("本场面试成绩")
        Dim sum As Double = DataTables("笔试成绩").Compute("sum(本场面试成绩)","天数=\'" & e.DataRow("天数") & "\' and 面试室=\'" & e.DataRow("面试室") & "\'")
        e.DataRow("面试室平均值") = (sum - zgf1 - zgf2 - zdf1 - zdf2) /( drs.Count - 4)

        e.DataRow("加权平均值") = e.DataTable.Compute("avg(面试室平均值)")
        e.DataRow("加权系数") = e.DataRow("加权平均值")/e.DataRow("面试室平均值")
        e.DataRow("计数") = DataTables("笔试成绩").Compute("Count(总成绩)","天数 = \'" & e.DataRow("天数") & "\' and 面试室 = \'" & e.DataRow("面试室") & "\'")
       
    End If
Else If e.DataCol.Name = "面试室平均值" Then
    For Each dr As DataRow In e.DataTable.DataRows     
        dr("加权平均值") = e.DataTable.Compute("avg(面试室平均值)")
    Next
End If

[此贴子已经被作者于2014-5-5 11:43:32编辑过]

--  作者:hrw68529
--  发布时间:2014/5/5 12:49:00
--  
代码不行啊,我把软件发给你看一下吧
例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:务员面试登分系统_加权计算2.zip


--  作者:有点甜
--  发布时间:2014/5/5 14:10:00
--  

 回复6楼,代码哪里不行?能否具体说说?谁知道你哪里不对啊

 

 你给的项目,没有带有对应的数据库。

[此贴子已经被作者于2014-5-5 14:10:10编辑过]

--  作者:hrw68529
--  发布时间:2014/5/5 14:22:00
--  
对不起,数据库在data中,连接一下就可以了,主要出现下图中的计数和加权平均值 及加权系数上,请看:

图片点击可在新窗口打开查看此主题相关图片如下:截图01.png
图片点击可在新窗口打开查看


--  作者:hrw68529
--  发布时间:2014/5/5 14:23:00
--  
加权平均值数据不对,第一行的加权系数没出现,为0,计数都为0,谢谢


--  作者:hrw68529
--  发布时间:2014/5/5 14:25:00
--  
数据库放在目录下就可以了。数据库为:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:data.rar