打分程序如何计算最高分、最低分和平均分
我用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);
}
}
}
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));