读书人

打分程序怎么计算最高分、最低分和平均

发布时间: 2013-07-09 09:50:47 作者: rapoo

打分程序如何计算最高分、最低分和平均分
我用ACCESS数据库做一个面试打分程序,我把7位考官对考生的打分成绩记录在数据库“cj”表中,如图(1):
打分程序怎么计算最高分、最低分和平均分
计算的规则是八个要素分别除掉最高分、最低分然后计算出平均分,最后八个要素乘以权重相加为总分。
(八个要素权重分别为:综合分析17%、言语表达20%、应变能力14%、计划组织与协调10%、人际交往14%、情绪控制10%、求职动机7%、举止仪表8%)

详细说明:综合分析的成绩等于7个考官分数除掉最高分、最低分计算出平均分,最后乘以权重得到综合分析的成绩。其他要素一样的计算方法;八个要素成绩计算完成后相加及为该考生的面试总分。

我是初学,请各位高人帮忙帮我看看代码如何实现?


最后计算机的出来的成绩写入到“ks”表中,如图(2)
打分程序怎么计算最高分、最低分和平均分 打分?最高分?最低分?平均分 打分 最高分 最低分 平均分
[解决办法]


using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication3
{
internal class Score
{
public int Id { get; set; }
public int ZKZ { get; set; }
public string KSXM { get; set; }
public string KGXM { get; set; }
public double ZHFX { get; set; }
public double YYBD { get; set; }
public double YBNL { get; set; }
public double JHZZ { get; set; }
public double RJJW { get; set; }
public double ZWQX { get; set; }
public double QZDJ { get; set; }
public double JZYB { get; set; }
}

class Program
{


static void Main(string[] args)
{
var list = new List<Score>()
{
new Score{Id = 1,ZKZ = 53001,KSXM = "张三",KGXM = "陈开军",ZHFX = 9.2,YYBD = 9.3,YBNL = 9.2,JHZZ = 9.1,RJJW = 9.3,ZWQX = 7.5,QZDJ = 8.2,JZYB = 8.2},
new Score{Id = 2,ZKZ = 53001,KSXM = "张三",KGXM = "刘叶鑫",ZHFX = 9.3,YYBD = 9.45,YBNL = 9.3,JHZZ = 9.5,RJJW = 9.4,ZWQX = 9.2,QZDJ = 8.6,JZYB = 9.4},
new Score{Id = 3,ZKZ = 53001,KSXM = "张三",KGXM = "刘晓勇",ZHFX = 9.4,YYBD = 9.5,YBNL = 9.4,JHZZ = 9.6,RJJW = 9.5,ZWQX = 9.6,QZDJ = 8.4,JZYB = 9.5},
new Score{Id = 4,ZKZ = 53001,KSXM = "张三",KGXM = "王琳",ZHFX = 9.6,YYBD = 9.6,YBNL = 9.5,JHZZ = 9.8,RJJW = 9.6,ZWQX = 9.2,QZDJ = 9.5,JZYB = 9.6},
new Score{Id = 5,ZKZ = 53001,KSXM = "张三",KGXM = "刘增雄",ZHFX = 9.1,YYBD = 9.8,YBNL = 9.7,JHZZ = 9.8,RJJW = 9.8,ZWQX = 8.3,QZDJ = 8.6,JZYB = 9.7},
new Score{Id = 6,ZKZ = 53001,KSXM = "张三",KGXM = "方丽琴",ZHFX = 9.2,YYBD = 9.2,YBNL = 9.3,JHZZ = 9.4,RJJW = 9.8,ZWQX = 8.4,QZDJ = 8.7,JZYB = 9.8},
new Score{Id = 7,ZKZ = 53001,KSXM = "张三",KGXM = "李晶",ZHFX = 9.5,YYBD = 9.1,YBNL = 9.54,JHZZ = 9.2,RJJW = 9.9,ZWQX = 8.6,QZDJ = 8.9,JZYB = 9.1}


};

var total = GetScore(list, m => m.ZHFX, 0.17)
+ GetScore(list, m => m.YYBD, 0.2)
+ GetScore(list, m => m.YBNL, 0.14)
+ GetScore(list, m => m.JHZZ, 0.1)
+ GetScore(list, m => m.RJJW, 0.14)
+ GetScore(list, m => m.ZWQX, 0.1)
+ GetScore(list, m => m.QZDJ, 0.07)
+ GetScore(list, m => m.JZYB, 0.08);

Console.WriteLine(total);
Console.Read();
}

private static double GetScore<TEntity>(List<TEntity> list, Func<TEntity, double> prop, double qz)
{
if (list == null
[解决办法]
prop == null)
throw new ArgumentException();

var count = list.Count;

return list
.OrderBy(prop)
.Skip(1)


.Take(count - 2)
.Average(prop);
}
}
}


大概等于74.098

粗略代码,具体数据库连接操作,你可以自己扩展
[解决办法]
 
var q = from s in list
group s by s.ZKZ into gs
let count = gs.Count()
from ss in gs
select new
{
ZKZ = ss.ZKZ,
TotalScore = gs.OrderBy(s => s.ZHFX).Skip(1).Take(count - 2).Average(s => s.ZHFX) * 0.17
+ gs.OrderBy(s => s.YYBD).Skip(1).Take(count - 2).Average(s => s.YYBD) * 0.2
+ gs.OrderBy(s => s.YBNL).Skip(1).Take(count - 2).Average(s => s.YBNL) * 0.14
};
q.ForEach(s => Console.WriteLine("ZKZ:{0}---TotalSCORE:{1}", s.ZKZ, s.TotalScore));


把6楼的改了一下
[解决办法]
引用:
我用SQL语言实现,但是一直出错!大家帮忙看看那里的问题
--Step1:计算总分
SELECT ID=准考证号,NAME=考生姓名,TotalScore=(=(SUM(综合分析)-min(综合分析)-max(综合分析))/5*1.7+
(SUM(语言表达)-min(语言表达)-max(语言表达))/5*2+


(SUM(应变能力)-min(应变能力)-max(应变能力))/5*1.4+
(SUM(计划组织)-min(计划组织)-max(计划组织))/7*1+
(SUM(人际交往)-min(人际交往)-max(人际交往))/5*1.4+
(SUM(自我情绪)-min(自我情绪)-max(自我情绪))/5*1+
(SUM(求职动机)-min(求职动机)-max(求职动机))/5*0.7+
(SUM(举止仪表)-min(举止仪表)-max(举止仪表))/5*0.8
FROM cj GROUP BY 考生姓名,准考证号


--Step2:对结果集排序,添加排名。
INSERT INTO ks
SELECT *,COUNT(*) AS 排名 FROM t1
LEFT JOIN t2 ON t1.总分<t2.总分


,TotalScore=(=(SUM(综合分析)- 多了个=(
[解决办法]
引用:
今天还看到一个朋友提供的思路,跟大家分享一下!
--Step1:计算总分
SELECT ID=准考证号,NAME=考生姓名,TotalScore=(SUM(综合分析)-min(综合分析)-max(综合分析))/5*0.17+
(SUM(语言表达)-min(语言表达)-max(语言表达))/5*0.2+
(SUM(应变能力)-min(应变能力)-max(应变能力))/5*0.14+
(SUM(语言计划组织与协调表达)-min(计划组织与协调)-max(计划组织与协调))/7*0.1+
(SUM(人际交往)-min(人际交往)-max(人际交往))/5*0.14
... ...
FROM cj GROUP BY 考生姓名,准考证号
--Step2:对结果集排序,添加排名。

不是除以5, 而应该是除以 Count(*)-1。

顺便说一下这种八股式的绩效评估思路实际上对于管理人员的恶劣影响,可以参考:http://bbs.csdn.net/topics/390495209
[解决办法]
而应该是除以 Count(*)-1 --〉 而应该是除以 Count(*)-2

读书人网 >C#

热点推荐