|
@@ -339,6 +339,10 @@ namespace TEAMModelFunction
|
|
|
double score = 0;
|
|
|
double allScore = 0;
|
|
|
int stuCount = 0;
|
|
|
+ //整体平均分
|
|
|
+ double average = 0;
|
|
|
+ //标准差
|
|
|
+ double powSum = 0;
|
|
|
List<string> losStu = new List<string>();
|
|
|
//先与第一个值取并集
|
|
|
if (examResults.Count >0 ) {
|
|
@@ -353,19 +357,31 @@ namespace TEAMModelFunction
|
|
|
}
|
|
|
stuCount = examResult.studentIds.Count;
|
|
|
}
|
|
|
+ //powSum += Math.Pow(score - examResult.studentIds.Count > 0 ? Math.Round(score * 1.0 / examResult.studentIds.Count, 2) : 0, 2);
|
|
|
//取交集
|
|
|
losStu = losStu.Intersect(examResult.lostStus).ToList();
|
|
|
}
|
|
|
- }
|
|
|
- double ascore = stuCount > 0 ? Math.Round(score * 1.0 / stuCount, 2) : 0;
|
|
|
+ }
|
|
|
+ double NewsRateScore = stuCount > 0 ? Math.Round(score * 1.0 / stuCount, 2) : 0;
|
|
|
foreach (PaperSimple simple in info.papers)
|
|
|
{
|
|
|
allScore += simple.point.Sum();
|
|
|
}
|
|
|
- double NewsRate= allScore > 0 ? Math.Round(ascore / allScore * 100,2) : 0;
|
|
|
+ //计算全科标准差
|
|
|
+ foreach (string id in examResults[0].studentIds) {
|
|
|
+ double sc = 0;
|
|
|
+ foreach (ExamResult result in examResults) {
|
|
|
+ sc += result.studentScores[result.studentIds.IndexOf(id)].Sum();
|
|
|
+ }
|
|
|
+ powSum += Math.Pow(sc - examResults[0].studentIds.Count > 0 ? Math.Round(score * 1.0 / examResults[0].studentIds.Count, 2) : 0, 2);
|
|
|
+ }
|
|
|
+ info.standard = examResults[0].studentIds.Count > 0 ? Math.Pow(powSum / examResults[0].studentIds.Count, 0.5) : 0;
|
|
|
+ double NewsRate= allScore > 0 ? Math.Round(NewsRateScore / allScore * 100,2) : 0;
|
|
|
info.lostStu = losStu;
|
|
|
- if (info.sRate != NewsRate) {
|
|
|
+ //判断均分是否发生变化,便于实时的更新评测基本信息
|
|
|
+ if (info.sRate != NewsRate || info.average != NewsRateScore) {
|
|
|
info.sRate = NewsRate;
|
|
|
+ info.average = NewsRateScore;
|
|
|
await client.GetContainer("TEAMModelOS", "Common").ReplaceItemAsync<ExamInfo>(info, info.id, new Azure.Cosmos.PartitionKey(info.code));
|
|
|
}
|
|
|
|
|
@@ -420,6 +436,8 @@ namespace TEAMModelFunction
|
|
|
int Count = 0;
|
|
|
int m = 0;
|
|
|
double score = 0;
|
|
|
+ //标准差
|
|
|
+ double powSum = 0;
|
|
|
double allScore = info.papers[no].point.Sum();
|
|
|
List<ClassRange> classRanges = new List<ClassRange>();
|
|
|
List<string> lostStu = new List<string>();
|
|
@@ -478,11 +496,36 @@ namespace TEAMModelFunction
|
|
|
result.studentIds.Add(id);
|
|
|
}
|
|
|
csRate.Add(result.studentIds.Count > 0 ? Math.Round(classSrate * 1.0 / classResult.studentIds.Count, 2) : 0 / allScore);
|
|
|
+ //powSum += Math.Pow(classSrate - result.average, 2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ foreach (ExamClassResult classResult in examClassResults) {
|
|
|
+
|
|
|
+ double classSrate = 0;
|
|
|
+ if (classResult.subjectId.Equals(subject.id))
|
|
|
+ {
|
|
|
+
|
|
|
+ foreach (List<double> scores in classResult.studentScores)
|
|
|
+ {
|
|
|
+ List<double> newScores = new List<double>();
|
|
|
+ foreach (double sc in scores)
|
|
|
+ {
|
|
|
+ newScores.Add(sc > -1 ? sc : 0);
|
|
|
+
|
|
|
+ }
|
|
|
+ classSrate += newScores.Sum();
|
|
|
+ }
|
|
|
}
|
|
|
+ foreach (string id in classResult.studentIds)
|
|
|
+ {
|
|
|
+ powSum += Math.Pow(classSrate - result.studentIds.Count > 0 ? Math.Round(score * 1.0 / result.studentIds.Count, 2) : 0, 2);
|
|
|
+ }
|
|
|
}
|
|
|
+ result.standard = Math.Round(result.studentIds.Count > 0 ? Math.Pow(powSum / result.studentIds.Count, 0.5) : 0,2);
|
|
|
result.csRate = csRate;
|
|
|
result.lostStus = lostStu;
|
|
|
result.sRate =result.studentIds.Count> 0 ? Math.Round(score *1.0 / result.studentIds.Count ,2 ): 0 / allScore;
|
|
|
+ result.average = result.studentIds.Count > 0 ? Math.Round(score * 1.0 / result.studentIds.Count, 2) : 0;
|
|
|
result.classes = classRanges;
|
|
|
result.code = "ExamResult-" + info.id;
|
|
|
result.school = info.school;
|