소스 검색

得分率计算

zhouj1203@hotmail.com 4 년 전
부모
커밋
1d7c6e6172

+ 7 - 2
TEAMModelFunction/TriggerExam.cs

@@ -312,12 +312,12 @@ namespace TEAMModelFunction
                             losStu = losStu.Intersect(examResult.lostStus).ToList();
                         }
                     }                                      
-                    double ascore = stuCount > 0 ? Math.Round(score * 0.1 / stuCount, 2) : 0;
+                    double ascore = stuCount > 0 ? Math.Round(score * 1.0 / stuCount, 2) : 0;
                     foreach (PaperSimple simple in info.papers)
                     {
                         allScore += simple.point.Sum();
                     }
-                    info.sRate = allScore > 0 ? ascore / allScore * 100 : 0;
+                    info.sRate = allScore > 0 ? Math.Round(ascore / allScore * 100,2) : 0;
                     info.lostStu = losStu;
                     await client.GetContainer("TEAMModelOS", "Common").ReplaceItemAsync<ExamInfo>(info, info.id, new Azure.Cosmos.PartitionKey(info.code));
                     //ActivityData data;
@@ -373,8 +373,10 @@ namespace TEAMModelFunction
             double allScore = info.papers[no].point.Sum();
             List<ClassRange> classRanges = new List<ClassRange>();
             List<string> lostStu = new List<string>();
+            List<double> csRate = new List<double>();
             foreach (ExamClassResult classResult in examClassResults)
             {
+                double classSrate = 0;
                 if (classResult.subjectId.Equals(subject.id))
                 {
                     //记录缺考学生索引位置
@@ -393,6 +395,7 @@ namespace TEAMModelFunction
                             lostStu.Add(classResult.studentIds[index]);
                             //mcount++;
                         }
+                        classSrate += newScores.Sum();
                         score += newScores.Sum();
                         result.studentScores.Add(newScores);
                         index++;
@@ -424,8 +427,10 @@ namespace TEAMModelFunction
                     {
                         result.studentIds.Add(id);
                     }
+                    csRate.Add(result.studentIds.Count > 0 ? Math.Round(classSrate * 1.0 / classResult.studentIds.Count, 2) : 0 / allScore);
                 }
             }
+            result.csRate = csRate;
             result.lostStus = lostStu;
             result.sRate =result.studentIds.Count> 0 ? Math.Round(score *1.0 / result.studentIds.Count ,2 ): 0 / allScore;
             result.classes = classRanges;

+ 1 - 0
TEAMModelOS.SDK/Models/Cosmos/School/ExamResult.cs

@@ -37,6 +37,7 @@ namespace TEAMModelOS.SDK.Models
         public string school { get; set; }
         public int year { get; set; }
         public double sRate { get; set; }
+        public List<double> csRate { get; set; } = new List<double>();
         public List<string> lostStus { get; set; } = new List<string>();
     }
     public class ClassRange {

+ 10 - 6
TEAMModelOS/Controllers/Analysis/AnalysisController.cs

@@ -207,6 +207,8 @@ namespace TEAMModelOS.Controllers.Analysis
                 Dictionary<string, double> paperScore = new Dictionary<string, double>();
                 List<KeyValuePair<string, List<KeyValuePair<string, List<string>>>>> subjectScatter = new List<KeyValuePair<string, List<KeyValuePair<string, List<string>>>>>();
                 List<KeyValuePair<string, Dictionary<string, List<double>>>> gscores = new List<KeyValuePair<string, Dictionary<string, List<double>>>>();
+                //声明全科总分
+                double totalAll = 0;
                 foreach (ExamResult examResult in examResults)
                 {
                     (KeyValuePair<string, List<List<string>>> subjectData, KeyValuePair<string, List<KeyValuePair<string, List<double>>>> classSubjectData , Dictionary<string, List<double>> gscore) =DoExerciseScatteres(examResult, paperKey);
@@ -237,6 +239,7 @@ namespace TEAMModelOS.Controllers.Analysis
                     //gpointList.Add("levelKey", DoLevel(examResult, info));
                     valuePairs.Add(gpointList);
                     //获取一张试卷的满分
+                    totalAll += examResult.paper.point.Sum();
                     paperScore.Add(examResult.subjectId, examResult.paper.point.Sum());
                     List<double> StuSubjectTotals = new List<double>();
                     classReses = examResult.classes;
@@ -264,6 +267,7 @@ namespace TEAMModelOS.Controllers.Analysis
                                 if (y.id.Equals(examResult.subjectId))
                                 {
                                     y.score = score;
+                                    y.sRate = Math.Round(examResult.paper.point.Sum() > 0 ? score / examResult.paper.point.Sum(): 0,2);
                                 }
                             });
                         }
@@ -277,6 +281,7 @@ namespace TEAMModelOS.Controllers.Analysis
                                 fieldPoint = fieldStuPerDatas.Where(x => x.Key == examResult.subjectId).SelectMany(va => va.Value).Where(stu => stu.Key == stuid).Select(pi => pi.Value).First()
                             };
                             subject.score = score;
+                            subject.sRate = Math.Round(examResult.paper.point.Sum() > 0 ? score / examResult.paper.point.Sum() : 0, 2);
                             student.subjects.Add(subject);
                         }
                     }
@@ -284,6 +289,7 @@ namespace TEAMModelOS.Controllers.Analysis
                 }
                 foreach (StudentAys student1 in students) {
                     gradeTotal.Add(student1.total);
+                    student1.sRate = totalAll > 0 ? Math.Round(student1.total / totalAll, 2) : 0;
                 }
                 //处理进线分数
                 gradeTotal.Sort((s1, s2) => { return s2.CompareTo(s1); });
@@ -359,7 +365,8 @@ namespace TEAMModelOS.Controllers.Analysis
                             x.name =x.id;
                             x.no = "-";
                         }
-                       
+                        //班级得分率
+                        x.csRate = totalAll > 0 ? Math.Round(totalAverage / totalAll,2) : 0;
                         //标准差
                         powSum += Math.Pow(x.total - totalAverage, 2);
                         //进线人数
@@ -442,7 +449,8 @@ namespace TEAMModelOS.Controllers.Analysis
                             passPercent= passPercent, 
                             passCount= passCount, 
                             average= average ,
-                            name= info.subjects.Where(x => x.id == key).FirstOrDefault().name,
+                            sRate = paperScore[key]> 0 ? Math.Round(average / paperScore[key],2) : 0,
+                            name = info.subjects.Where(x => x.id == key).FirstOrDefault().name,
                             item = classSubjectPaperDatas.Where(subd => subd.Key == key).First().Value.Where(cls => cls.Key == classId).First().Value
                         });
                     }
@@ -1093,10 +1101,6 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             int stuNo = 0;
             exam.studentIds.ForEach(e => {
-               
-                //values.Add(e);
-              
-               
                 List<double> valueKnow = new List<double>();
                 foreach (string know in knowledge) {
                     double anwPoint = 0;

+ 1 - 0
TEAMModelOS/Controllers/Analysis/ClassAys.cs

@@ -31,6 +31,7 @@ namespace TEAMModelOS.Controllers.Analysis
         public string id { get; set; }
         public double passPercent { get; set; }
         public double average { get; set; }
+        public double sRate { get; set; }
         public List<double> item { get; set; }
 
     }

+ 3 - 0
TEAMModelOS/Controllers/Analysis/StudentAys.cs

@@ -19,6 +19,8 @@ namespace TEAMModelOS.Controllers.Analysis
         public string classId { get; set; }
         public string className { get; set; }
         public string gradeId { get; set; }
+        public double csRate { get; set; }
+        public double sRate { get; set; }
        
     }
     public class StudentSubject{
@@ -32,5 +34,6 @@ namespace TEAMModelOS.Controllers.Analysis
         public double score { get; set; }
         public int csort { get; set; }
         public int gsort { get; set; }
+        public double sRate { get; set; }
     }
 }