protected void btnImportIQTestStandardParametersSet_Click(object sender, EventArgs e) { List <IQTestStandardParametersSet> parametersSetList = new List <IQTestStandardParametersSet>(); string dataDirectoryPath = MapPath("~/App_Data/IQTest"); string[] dataFilePaths = Directory.GetFiles(dataDirectoryPath, "IQTestStandardParametersSet*.xml"); foreach (string dataFilePath in dataFilePaths) { XmlDocument xd = new XmlDocument(); xd.Load(dataFilePath); XmlElement xeElementStandardParametersSet = (XmlElement)xd.SelectSingleNode("StandardParametersSet"); int ageMin = int.Parse(xeElementStandardParametersSet.GetAttribute("AgeMin")); int ageMax = int.Parse(xeElementStandardParametersSet.GetAttribute("AgeMax")); IQTestStandardParametersSet parametersSet = new IQTestStandardParametersSet(ageMin, ageMax); foreach (XmlNode xnParameter in xeElementStandardParametersSet.SelectNodes("Parameter")) { XmlElement xeParameter = (XmlElement)xnParameter; int originalScore = int.Parse(xeParameter.GetAttribute("OriginalScore")); int IQ = int.Parse(xeParameter.GetAttribute("IQ")); IQTestStandardParameter standardParameter = new IQTestStandardParameter(originalScore, IQ); parametersSet.Parameters.Add(standardParameter); } parametersSetList.Add(parametersSet); } if (parametersSetList.Count > 0) { using (var context = new ComputingServicesContext()) { foreach (var parametersSet in parametersSetList) { var oldStandardParametersSet = context.IQTestStandardParametersSets.Where(item => item.AgeMin == parametersSet.AgeMin && item.AgeMax == parametersSet.AgeMax).SingleOrDefault(); if (oldStandardParametersSet != null) { context.IQTestStandardParametersSets.Remove(oldStandardParametersSet); } context.IQTestStandardParametersSets.Add(parametersSet); } context.SaveChanges(); } ltlLog.Text = "成功完成。"; } else { ltlLog.Text = "没有数据。"; } }
private IQTestStandardResult GetIQTestStandardResult(IQTestPaperResult paperResult, IQTestQuestionsSet questionsSet, IQTestStandardParametersSet standardParametersSet) { int originalValue = 0; foreach (var questionAnswer in paperResult.QuestionAnswers) { var question = questionsSet.Questions.Single(item => item.Group == questionAnswer.QuestionGroup && item.Code == questionAnswer.QuestionCode); if (question.CorrectChoice == questionAnswer.Answer) { originalValue += 1; } } IQTestStandardParameter standardParameter = standardParametersSet.Parameters.Where(item => originalValue >= item.OriginalScore).OrderByDescending(item => item.IQ).FirstOrDefault(); if (standardParameter == null) { standardParameter = standardParametersSet.Parameters.OrderBy(item => item.IQ).First(); } int IQ = standardParameter.IQ; IQLevel Level; if (IQ >= 130) { Level = IQLevel.EXCELLENT; } else if (IQ >= 120) { Level = IQLevel.GREAT; } else if (IQ >= 110) { Level = IQLevel.MEDIUM1; } else if (IQ >= 90) { Level = IQLevel.MEDIUM2; } else if (IQ >= 80) { Level = IQLevel.MEDIUM3; } else if (IQ >= 70) { Level = IQLevel.EDGE; } else if (IQ >= 55) { Level = IQLevel.BAD1; } else if (IQ >= 40) { Level = IQLevel.BAD2; } else if (IQ >= 25) { Level = IQLevel.BAD3; } else { Level = IQLevel.BAD4; } IQTestStandardResult standardResult = new IQTestStandardResult(); standardResult.OriginalValue = originalValue; standardResult.Value = IQ; standardResult.Level = Level; standardResult.RefId = paperResult.RefId; return(standardResult); }