コード例 #1
0
        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 = "没有数据。";
            }
        }
コード例 #2
0
        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);
        }