ReadingPartOption ICedts_ItemXMLRepository.GetRpo(string text, string type)
        {
            ReadingPartOption rpo  = new ReadingPartOption();
            ItemBassInfo      info = new ItemBassInfo();

            doc = new XmlDocument();
            doc.LoadXml(text);
            node        = doc.SelectSingleNode("assessmentItem");//查找<assessmentItem>节点
            elem        = (XmlElement)node;
            info.ItemID = Guid.Parse(elem.GetAttribute("identifier").ToUpper());
            info.Course = elem.GetAttribute("course");
            info.Unit   = elem.GetAttribute("unit");
            XmlNodeList nodeList = node.ChildNodes;//<assessmentItem>下的所有子节点

            info.QuestionCount     = nodeList.Count - 1;
            info.ItemType          = type;
            info.ItemType_CN       = "阅读理解选择题型";
            info.PartType          = "3";
            info.AnswerResposn     = "_";
            info.QustionInterval   = "";
            info.QuestionID        = new List <Guid>();
            info.AnswerValue       = new List <string>();
            info.Tip               = new List <string>();
            info.Problem           = new List <string>();
            info.DifficultQuestion = new List <double>();
            info.ScoreQuestion     = new List <double>();
            info.TimeQuestion      = new List <double>();

            rpo.Choices = new List <string>();

            info.Score     = 0.0;
            info.ReplyTime = 0.0;
            info.Diffcult  = 0.0;

            for (int i = 0; i < nodeList.Count; i++)
            {
                if (i == 0)
                {
                    XmlElement pElem = (XmlElement)nodeList[i];//prompt节点

                    rpo.Content = pElem.InnerXml;

                    continue;
                }

                XmlElement qElem = (XmlElement)nodeList[i]; //question节点

                XmlNodeList qList = nodeList[i].ChildNodes; //question下的所有子节点

                for (int j = 0; j < qList.Count; j++)
                {
                    XmlElement pElem = (XmlElement)qList[j];

                    if (pElem.Name == "prompt")
                    {
                        info.Problem.Add(pElem.InnerXml);
                    }

                    if (pElem.Name == "choice")
                    {
                        XmlNodeList optionList = qList[j].ChildNodes;
                        for (int k = 0; k < optionList.Count; k++)
                        {
                            XmlElement oElem = (XmlElement)optionList[k];
                            if (oElem.Name == "option")
                            {
                                rpo.Choices.Add(oElem.InnerXml);
                            }
                        }
                    }

                    if (pElem.Name == "key")
                    {
                        string[] answers = { "A", "B", "C", "D" };
                        int      temp    = int.Parse(pElem.InnerXml) - 1;
                        info.AnswerValue.Add(answers[temp]);
                    }
                }

                info.Tip.Add("");
                info.ScoreQuestion.Add(1.5);
                info.Score += 1.5;
                info.TimeQuestion.Add(1.5);
                info.ReplyTime += 1.5;
                info.DifficultQuestion.Add(0.4);
                info.Diffcult += 0.4;
            }

            info.Diffcult = info.Diffcult / info.QuestionCount;
            rpo.Info      = info;

            return(rpo);
        }
Exemple #2
0
        /// <summary>
        /// 查询当前点的阅读理解-选择题型信息
        /// </summary>
        /// <param name="item">AssessmentItemID</param>
        /// <returns>当前点击的阅读理解-选择题型信息</returns>
        ReadingPartOption ICedts_AssignRepository.SelectRpo(Guid item)
        {
            var Assigns = (from As in db.CEDTS_Assign where As.AssessmentItemID == item orderby As.Time descending select As.QuestionID).FirstOrDefault();

            if (Assigns == null)
            {
                return(null);
            }
            else
            {
                string[]    Assign    = Assigns.Split(',');
                var         question1 = (from m in db.CEDTS_Question where m.AssessmentItemID == item orderby m.Order ascending select m).ToList();
                var         question  = (from m in db.CEDTS_Question where m.AssessmentItemID == item orderby m.Order ascending select m).ToList();
                var         assess    = (from m in db.CEDTS_AssessmentItem where m.AssessmentItemID == item select m).First();
                List <Guid> QID       = new List <Guid>();
                int         Count     = 0;
                for (int s = 0; s < Assign.Length; s++)
                {
                    QID.Add(Guid.Parse(Assign[s]));
                }

                foreach (var q in question1)
                {
                    if (!QID.Contains(q.QuestionID))
                    {
                        question.Remove(q);
                        if (Count == 0)
                        {
                            Count = assess.QuestionCount.Value - 1;
                        }
                        else
                        {
                            Count = Count - 1;
                        }
                    }
                }
                if (Count == 0)
                {
                    Count = assess.QuestionCount.Value;
                }
                var Itemtype = (from m in db.CEDTS_ItemType where m.ItemTypeID == assess.ItemTypeID select m).First();
                var PartType = (from m in db.CEDTS_PartType where m.PartTypeID == Itemtype.PartTypeID select m).First();



                ItemBassInfo info = new ItemBassInfo();
                info.AnswerValue       = new List <string>();
                info.Problem           = new List <string>();
                info.Tip               = new List <string>();
                info.QuestionID        = new List <Guid>();
                info.DifficultQuestion = new List <double>();
                info.ScoreQuestion     = new List <double>();
                ReadingPartOption Rpo = new ReadingPartOption();
                info.Knowledge     = new List <string>();
                info.KnowledgeID   = new List <string>();
                Rpo.Choices        = new List <string>();
                info.TimeQuestion  = new List <double>();
                info.ItemID        = item;
                info.Count         = Convert.ToInt32(assess.Count);
                info.ItemType      = Itemtype.TypeName;
                info.ItemType_CN   = Itemtype.TypeName_CN;
                info.PartType      = PartType.TypeName;
                info.QuestionCount = Convert.ToInt32(question.Count);
                info.ReplyTime     = Convert.ToInt32(assess.Duration);
                info.Diffcult      = Convert.ToDouble(assess.Difficult);
                info.Score         = Convert.ToInt32(assess.Score);

                Rpo.Content = assess.Original;

                string QkID = null;
                foreach (var qu in question)
                {
                    var QkList = (from m in db.CEDTS_QuestionKnowledge where m.QuestionID == qu.QuestionID orderby m.Weight ascending select m.QuestionKnowledgeID).ToList();
                    foreach (var q in QkList)
                    {
                        QkID += q + ",";
                    }
                }
                QkID = QkID.Substring(0, QkID.LastIndexOf(","));
                info.QuestionKnowledgeID = QkID;

                foreach (var list in question)
                {
                    info.QuestionID.Add(list.QuestionID);
                    info.Problem.Add(list.QuestionContent);
                    info.ScoreQuestion.Add(list.Score.Value);
                    info.TimeQuestion.Add(list.Duration.Value);
                    info.DifficultQuestion.Add(list.Difficult.Value);
                    Rpo.Choices.Add(list.ChooseA);
                    Rpo.Choices.Add(list.ChooseB);
                    Rpo.Choices.Add(list.ChooseC);
                    Rpo.Choices.Add(list.ChooseD);
                    info.AnswerValue.Add(list.Answer);
                    info.Tip.Add(list.Analyze);
                    string name = string.Empty;
                    string id   = string.Empty;


                    var KnowledgeList = (from m in db.CEDTS_QuestionKnowledge where m.QuestionID == list.QuestionID orderby m.Weight ascending select m.KnowledgePointID).ToList();
                    foreach (var Knowledge in KnowledgeList)
                    {
                        var KnowledgeName = (from m in db.CEDTS_KnowledgePoints where m.KnowledgePointID == Knowledge select m).First();
                        id   += KnowledgeName.KnowledgePointID + ",";
                        name += KnowledgeName.Title + ",";
                    }
                    name = name.Substring(0, name.LastIndexOf(","));
                    id   = id.Substring(0, id.LastIndexOf(','));
                    info.KnowledgeID.Add(id);
                    info.Knowledge.Add(name);
                }
                Rpo.Info = info;
                return(Rpo);
            }
        }
Exemple #3
0
        List <ReadingPartOption> ICedts_TemporaryPaperRepository.SlelectEditRpo(Guid id, int UserID)
        {
            List <ReadingPartOption> RpoList = new List <ReadingPartOption>();
            var AssmentIDList = (from m in db.CEDTS_TemporaryPaperAssessment where m.PaperID == id && m.ItemTypeID == 7 orderby m.Weight ascending select m.AssessmentItemID).ToList();

            foreach (var AssessID in AssmentIDList)
            {
                var question = (from m in db.CEDTS_TemporaryQuestion where m.AssessmentItemID == AssessID orderby m.Order ascending select m).ToList();
                var assess   = (from m in db.CEDTS_TemporaryAssessmentItem where m.AssessmentItemID == AssessID select m).First();

                ItemBassInfo info = new ItemBassInfo();
                info.AnswerValue       = new List <string>();
                info.Problem           = new List <string>();
                info.Tip               = new List <string>();
                info.QuestionID        = new List <Guid>();
                info.DifficultQuestion = new List <double>();
                info.ScoreQuestion     = new List <double>();
                ReadingPartOption Rpo = new ReadingPartOption();
                info.Knowledge     = new List <string>();
                info.KnowledgeID   = new List <string>();
                Rpo.Choices        = new List <string>();
                info.TimeQuestion  = new List <double>();
                info.ItemID        = AssessID.Value;
                info.Count         = assess.Count.Value;
                info.ItemType      = "7";
                info.ItemType_CN   = "阅读选择题型";
                info.PartType      = "4";
                info.QuestionCount = Convert.ToInt32(assess.QuestionCount);
                info.ReplyTime     = Convert.ToInt32(assess.Duration);
                info.Diffcult      = Convert.ToDouble(assess.Difficult);
                info.Score         = Convert.ToInt32(assess.Score);

                Rpo.Content = assess.Original;

                string QkID = null;
                if (UserID == 1)
                {
                    foreach (var qu in question)
                    {
                        var QkList = (from m in db.CEDTS_TemporaryQuestionKnowledge where m.QuestionID == qu.QuestionID orderby m.Weight ascending select m.QuestionKnowledgeID).ToList();
                        foreach (var q in QkList)
                        {
                            QkID += q + ",";
                        }
                    }
                    QkID = QkID.Substring(0, QkID.LastIndexOf(","));
                }
                info.QuestionKnowledgeID = QkID;

                foreach (var list in question)
                {
                    info.QuestionID.Add(list.QuestionID);
                    info.Problem.Add(list.QuestionContent);
                    info.ScoreQuestion.Add(list.Score.Value);
                    info.TimeQuestion.Add(list.Duration.Value);
                    info.DifficultQuestion.Add(list.Difficult.Value);
                    Rpo.Choices.Add(list.ChooseA);
                    Rpo.Choices.Add(list.ChooseB);
                    Rpo.Choices.Add(list.ChooseC);
                    Rpo.Choices.Add(list.ChooseD);
                    info.AnswerValue.Add(list.Answer);
                    info.Tip.Add(list.Analyze);

                    if (UserID == 1)
                    {
                        string name          = string.Empty;
                        string Qkid          = string.Empty;
                        var    KnowledgeList = (from m in db.CEDTS_TemporaryQuestionKnowledge where m.QuestionID == list.QuestionID orderby m.Weight ascending select m.KnowledgePointID).ToList();
                        foreach (var Knowledge in KnowledgeList)
                        {
                            var KnowledgeName = (from m in db.CEDTS_KnowledgePoints where m.KnowledgePointID == Knowledge select m).First();
                            Qkid += KnowledgeName.KnowledgePointID + ",";
                            name += KnowledgeName.Title + ",";
                        }
                        name = name.Substring(0, name.LastIndexOf(","));
                        Qkid = Qkid.Substring(0, Qkid.LastIndexOf(','));
                        info.KnowledgeID.Add(Qkid);
                        info.Knowledge.Add(name);
                    }
                }
                Rpo.Info = info;
                RpoList.Add(Rpo);
            }
            return(RpoList);
        }