Kaynağa Gözat

排除数据为空的情况

zhouj1203@hotmail.com 5 yıl önce
ebeveyn
işleme
165f4e8d6b

+ 45 - 47
TEAMModelOS/Controllers/Analysis/AchievementController.cs

@@ -1256,8 +1256,6 @@ namespace TEAMModelOS.Controllers.Analysis
                 {
                     { "ExamCode",  e.id}
                 };
-                double weight = 0.5;
-                weightSum += weight;
                 List<string> subjects = new List<string>();
                 List<List<string>> SubjectClassAverage = new List<List<string>>();
                 List<List<string>> SubjectAverage = new List<List<string>>();
@@ -1272,42 +1270,43 @@ namespace TEAMModelOS.Controllers.Analysis
                 iPersons = stuCount * 0.4;
                 //
                 List<List<int>> subSum = new List<List<int>>();
-                if (simples.IsNotEmpty())
+                if (simples.IsEmpty()) continue;
+                double weight = 0.5;
+                weightSum += weight;
+                int classLen = simples[0].Classes.Count;
+                for (int cls = 0; cls < classLen; cls++)
                 {
-                    int classLen = simples[0].Classes.Count;
-                    for (int cls = 0; cls < classLen; cls++)
+                    if (simples[0].Classes[cls].TryGetValue(simples[0].Classes[cls].Keys.ToArray<string>()[0], out int[] indexs))
                     {
-                        if (simples[0].Classes[cls].TryGetValue(simples[0].Classes[cls].Keys.ToArray<string>()[0], out int[] indexs))
-                        {
-                            List<int> stuScore = new List<int>();
-                            int stdLen = indexs[1] - indexs[0] + 1;
+                        List<int> stuScore = new List<int>();
+                        int stdLen = indexs[1] - indexs[0] + 1;
 
-                            for (int i = 0; i < stdLen; i++)
-                            {
-                                stuScore.Add(0);
-                            }
-                            subSum.Add(stuScore);
+                        for (int i = 0; i < stdLen; i++)
+                        {
+                            stuScore.Add(0);
                         }
+                        subSum.Add(stuScore);
                     }
+                }
 
-                    simples.ForEach(s =>
+                simples.ForEach(s =>
+                {
+                    Dictionary<string, object> detail = new Dictionary<string, object>
                     {
-                        Dictionary<string, object> detail = new Dictionary<string, object>
-                        {
                         { "name", s.Subject }
-                        };
-                        subjects.Add(s.Subject);
-                        subjectList.Add(s.Subject);
+                    };
+                    subjects.Add(s.Subject);
+                    subjectList.Add(s.Subject);
                     //计算试卷总分
                     int sum = s.Point.Sum();
                     //int stuSum = 0;
                     int classIndex = 0;
-                        List<string> ClassAverage = new List<string>();
-                        List<string> Average = new List<string>();
-                        List<string> passList = new List<string>();
-                        s.Classes.ForEach(c =>
-                        {
-                            List<List<string>> classPRL = new List<List<string>>();
+                    List<string> ClassAverage = new List<string>();
+                    List<string> Average = new List<string>();
+                    List<string> passList = new List<string>();
+                    s.Classes.ForEach(c =>
+                    {
+                        List<List<string>> classPRL = new List<List<string>>();
 
                         //初始化班级总分
                         int classPoint = 0;
@@ -1321,44 +1320,43 @@ namespace TEAMModelOS.Controllers.Analysis
                         int counts = 0;
                         //c.Keys遍历key值
                         foreach (string key in c.Keys)
-                            {
-                                classList.Add(key);
-                            }
+                        {
+                            classList.Add(key);
+                        }
                         //每个班级平均分
                         foreach (int[] value in c.Values)
+                        {
+                            for (int i = value[0]; i <= value[1]; i++)
                             {
-                                for (int i = value[0]; i <= value[1]; i++)
-                                {
                                 //初始化学生单科个人得分
                                 int stuPoints = s.Result[i].Sum();
 
-                                    subSum[classIndex][i - value[0]] = stuPoints + subSum[classIndex][i - value[0]];
+                                subSum[classIndex][i - value[0]] = stuPoints + subSum[classIndex][i - value[0]];
 
-                                    classPoint += s.Result[i].Sum();
-                                    coreSum += s.Result[i].Sum();
+                                classPoint += s.Result[i].Sum();
+                                coreSum += s.Result[i].Sum();
 
-                                    if (s.Result[i].Sum() == 0)
-                                    {
-                                        classCount++;
-                                    }
+                                if (s.Result[i].Sum() == 0)
+                                {
+                                    classCount++;
                                 }
+                            }                            
                             //每个班级实际参考人数
                             counts = value[1] - value[0] - classCount + 1;
                             //stuSum += counts;
                             points = Convert.ToDouble(classPoint) / counts / sum;
                             //计算每个班级平均得分
                             AveragePoints = Convert.ToDouble(classPoint) / counts;
-                                ClassAverage.Add(points.ToString("0.000"));
-                                Average.Add(AveragePoints.ToString());
-                            }
-                            classIndex += 1;
-                        });
-                        SubjectClassAverage.Add(ClassAverage);
-                        SubjectAverage.Add(Average);
+                            ClassAverage.Add(points.ToString("0.000"));
+                            Average.Add(AveragePoints.ToString());                            
+                        }
+                        classIndex += 1;
+                    });                  
+                    SubjectClassAverage.Add(ClassAverage);
+                    SubjectAverage.Add(Average);
                     //subAverage = subjectPoint / ClassAverage.Count();
                     //subjectAverage.Add(subAverage.ToString("0.00"));
-                    });
-                }
+                });
                 double core = coreSum / stuCount * weight;
                 CoreAverage.Add(core);
                 AllPoint.Add(SubjectClassAverage);