コード例 #1
0
        public static string GetTestViewHTML(试卷内容 c试卷内容, string sKey, bool isShowTitle)
        {
            string sHtml = "",
                   sHtml试题 = "";

            序号对象类 序号对象 = new 序号对象类();
            if (isShowTitle)
            {
                sHtml += "<div style=\"font-family:Verdana, Arial,宋体, Sans-Serif, Helvetica;font-size:14px;\">";
                sHtml += "<div style=\"text-align:center;\">" +
                            "<div class=\"ViewTest_I_H_Title\" style=\"font-size:30px;font-weight:bold;\">" + c试卷内容.名称 + "</div>" +
                            "<div class=\"ViewTest_I_H_Count\">总分:" + c试卷内容.总分 + "</div>" +
                        "</div>";
            }
            foreach (试卷中大题 题型 in c试卷内容.试卷中大题集合)
            {
                sHtml试题 = "";
                foreach (试卷大题中试题 试题 in 题型.试卷大题中试题集合)
                {

                    if (sKey != "1")
                    {
                        sHtml试题 += ViewSubject.getMarkItem(试题, 序号对象, 0, false, false);

                    }
                    else
                    {

                        sHtml试题 += ViewSubject.getMarkItem(试题, 序号对象, 0, false, true);
                    }
                }

                sHtml += "<div class=\"ViewTestContent\">";
                sHtml += "<div class=\"C_E_L_I_C_R_C_Title\">" +
                        "<div class=\"C_E_L_I_C_R_C_T_SubType\"><b>" + 题型.名称 + "</b></div>" +
                        "<div class=\"C_E_L_I_C_R_C_T_Explain\">说明:" + 题型.说明 + "</div>" +
                        "</div>";
                sHtml += "<div class=\"C_E_L_I_C_R_C_Content\" >" +
                        "<div class=\"C_E_L_I_C_R_C_Font\">" + sHtml试题 + "</div>" +
                        "</div>";
                sHtml += "</div>";
            }
            if (isShowTitle)
            {
                sHtml += "</div>";

            }
            return sHtml;
        }
コード例 #2
0
 private static LoveKaoServiceReference.试卷内容 把试卷内容转化成试卷内容WCF(试卷内容 content)
 {
     LoveKaoServiceReference.试卷内容 contentWCF = new LoveKaoServiceReference.试卷内容();
     contentWCF.ID = content.ID;
     contentWCF.名称 = content.名称;
     contentWCF.试卷外部信息ID = content.试卷外部信息ID;
     contentWCF.说明 = content.说明;
     contentWCF.提交备注 = content.提交备注;
     contentWCF.提交人ID = content.提交人ID;
     contentWCF.提交时间 = content.提交时间;
     contentWCF.试题图片 = content.试题图片;
     contentWCF.试卷中大题集合 = new List<LoveKaoServiceReference.试卷中大题>();
     foreach (var testType in content.试卷中大题集合)
     {
         LoveKaoServiceReference.试卷中大题 testTypeWCF = 把试卷中大题转化成试卷中大题WCF(testType);
         testTypeWCF.试卷大题中试题集合 = new List<LoveKaoServiceReference.试卷大题中试题>();
         foreach (var testProblem in testType.试卷大题中试题集合)
         {
             LoveKaoServiceReference.试卷大题中试题 testProblemWCF = 把试卷大题中试题转化成试卷大题中试题WCF(testProblem);
             if (testProblem.子小题集合 != null && testProblem.子小题集合.Count > 0)
             {
                 testProblemWCF.子小题集合 = new List<LoveKaoServiceReference.试卷大题中试题>();
                 foreach (var subTestProblem in testProblem.子小题集合)
                 {
                     LoveKaoServiceReference.试卷大题中试题 subTestProblemWCF = 把试卷大题中试题转化成试卷大题中试题WCF(subTestProblem);
                     testProblemWCF.子小题集合.Add(subTestProblemWCF);
                 }
             }
             testTypeWCF.试卷大题中试题集合.Add(testProblemWCF);
         }
         contentWCF.试卷中大题集合.Add(testTypeWCF);
     }
     return contentWCF;
 }
コード例 #3
0
        public static Guid 随机生成试卷(取题条件 getProblemCondition, out int 试题充足情况)
        {
            试题充足情况 = 0;
            LoveKaoExamEntities db = new LoveKaoExamEntities();
            if (getProblemCondition.取题题型及数量集合.Count > 15)
            {
                throw new Exception("试卷题型不能超过15个!");
            }
            foreach (取题题型及数量 typeNum in getProblemCondition.取题题型及数量集合)
            {
                if (typeNum.数量 > 200)
                {
                    throw new Exception("每个题型下的题目不能超过200道!");
                }
            }
            试卷外部信息 outside = new 试卷外部信息();
            outside.ID = Guid.NewGuid();
            outside.爱考网ID = outside.ID;
            outside.创建人ID = 用户信息.CurrentUser.用户ID;
            outside.名称 = getProblemCondition.试卷名称;
            outside.说明 = "";
            outside.分类列表 = new List<string>();
            //给试卷内容赋值
            试卷内容 test = new 试卷内容();
            test.ID = Guid.NewGuid();
            test.名称 = getProblemCondition.试卷名称;
            test.说明 = "";
            test.提交人ID = outside.创建人ID;
            test.提交备注 = "";
            test.试卷外部信息ID = outside.ID;
            if (getProblemCondition.网站分类集合 == null || getProblemCondition.网站分类集合 == "")
            {
                throw new Exception("您还没选择分类,请先选择!");
            }
            if (getProblemCondition.网站分类集合 != null && getProblemCondition.网站分类集合 != "")
            {
                string[] sortList = getProblemCondition.网站分类集合.Split(",".ToCharArray());
                if (sortList.Length > 10)
                {
                    throw new Exception("分类选择不能超过10个!");
                }
                foreach (string sortName in sortList)
                {
                    outside.分类列表.Add(sortName);
                }
            }
            test.试卷中大题集合 = new List<试卷中大题>();
            decimal totalScore = 0;
            //遍历题型数量,并赋值
            for (int i = 0; i < getProblemCondition.取题题型及数量集合.Count; i++)
            {
                getProblemCondition.取题题型及数量集合[0] = getProblemCondition.取题题型及数量集合[i];
                List<试题外部信息表> listOutside = 试题外部信息.判断取题条件(getProblemCondition).ToList();
                totalScore += getProblemCondition.取题题型及数量集合[i].每小题分值 * getProblemCondition.取题题型及数量集合[i].数量;
                试卷中大题 type = new 试卷中大题();
                type.ID = Guid.NewGuid();
                type.名称 = getProblemCondition.取题题型及数量集合[i].题型名称;
                type.说明 = "";
                //随机取到的试题内容ID集合
                if (getProblemCondition.取题题型及数量集合[i].数量 != 0)
                {
                    List<Guid> listProblemId = 试题外部信息.随机取题(getProblemCondition.取题题型及数量集合[i].题型Enum,
                        getProblemCondition.取题题型及数量集合[i].数量, listOutside, 用户信息.CurrentUser.用户ID);
                    if (listProblemId.Count < getProblemCondition.取题题型及数量集合[i].数量)
                    {
                        试题充足情况 = 2;
                    }

                    type.试卷大题中试题集合 = new List<试卷大题中试题>();
                    //遍历题目数量,并赋值
                    for (int j = 0; j < listProblemId.Count; j++)
                    {

                        试卷大题中试题 testProblem = new 试卷大题中试题();
                        testProblem.ID = Guid.NewGuid();
                        testProblem.试题内容ID = listProblemId[j];
                        testProblem.每小题分值 = getProblemCondition.取题题型及数量集合[i].每小题分值;
                        testProblem.顺序 = Convert.ToByte(j);
                        type.试卷大题中试题集合.Add(testProblem);
                    }
                    //是复合题和多题干共选项题时给子集赋值
                    if (getProblemCondition.取题题型及数量集合[i].题型Enum > 39 && getProblemCondition.取题题型及数量集合[i].题型Enum < 50 ||
                        getProblemCondition.取题题型及数量集合[i].题型Enum == 80)
                    {
                        List<试题内容表> listSubContent = db.试题内容表.Where(a => listProblemId.Contains(a.父试题内容ID.Value)).ToList();
                        var groupSubContent = listSubContent.GroupBy(a => a.父试题内容ID).ToList();
                        foreach (试卷大题中试题 testProblem in type.试卷大题中试题集合)
                        {
                            testProblem.子小题集合 = new List<试卷大题中试题>();
                            var subContent = groupSubContent.Where(a => a.Key == testProblem.试题内容ID).First();
                            foreach (var sub in subContent)
                            {
                                试卷大题中试题 subTestProblem = new 试卷大题中试题();
                                subTestProblem.ID = Guid.NewGuid();
                                subTestProblem.每小题分值 = getProblemCondition.取题题型及数量集合[i].每小题分值 / subContent.Count();
                                subTestProblem.试题内容ID = sub.ID;
                                testProblem.子小题集合.Add(subTestProblem);
                            }
                        }
                    }
                }
                test.试卷中大题集合.Add(type);
            }
            test.总分 = Convert.ToInt32(totalScore);
            outside.当前试卷内容 = test;
            outside.试卷内容ID = test.ID;
            outside.总分 = Convert.ToInt32(totalScore);
            //加入缓存
            MemoryCache.Default.Add("" + outside.ID + "", outside, cacheRandomTest);
            if (试题充足情况 != 2)
            {
                试题充足情况 = 1;
            }
            return outside.ID;
        }
コード例 #4
0
 /// <param name="相关ID">考试设置或试卷内容ID</param>
 /// <param name="类型">0练习,1考试</param>          
 public static string 得到在线考试Json(Guid 相关ID,byte 类型, Guid 用户ID)
 {
     int TestDuration = 0;
     试卷内容 content = new 试卷内容();
     if (类型 == 0)
     {
         练习设置 exerciseSet=练习设置.练习设置查询.Where(a => a.试卷内容ID == 相关ID).First();
         if (!exerciseSet.考生ID集合.Contains(用户ID))
         {
             throw new Exception("你不在该练习的考生范围内,无权参加练习!");
         }
         TestDuration = exerciseSet.考试时长;
         content=exerciseSet.试卷内容;
     }
     else
     {
         考试设置 examSet = 考试设置.考试设置查询.Where(a => a.ID == 相关ID).First();
         //判断是否是在考试时间内,是才能进入考试
         if (DateTime.Now < examSet.考试开始时间)
         {
             throw new Exception("考试时间未到,不能进入考试!");
         }
         if (DateTime.Now > examSet.考试结束时间)
         {
             throw new Exception("考试时间已过,不能进入考试!");
         }
         if (!examSet.考生ID集合.Contains(用户ID))
         {
             throw new Exception("你不在该考试的考生范围内,无权参加考试!");
         }
         if (考生做过的试卷.考生做过的试卷查询.Any(a => a.相关ID == 相关ID && a.类型 == 1 && a.考生ID == 用户ID
             && a.是否是已提交的试卷 == true) == true)
         {
             throw new Exception("你已参加过本场考试,不能再次考试!");
         }
         TestDuration = examSet.考试时长;
         content=examSet.试卷内容;
     }
     试卷外部信息 outside = content.试卷外部信息;
     if (outside.试卷状态Enum == 1 || outside.试卷状态Enum == 3)
     {
         throw new Exception("该试卷已被删除!");
     }
     if (outside.试卷状态Enum == 4)
     {
         throw new Exception("该试卷是草稿试卷,您无法参加考试!");
     }
     考生做过的试卷 memberDoneTest = new 考生做过的试卷();
     memberDoneTest.类型 = 类型;
     memberDoneTest.相关ID = 相关ID;
     if (类型 == 0)
     {
         memberDoneTest.练习设置 = new 练习设置();
         memberDoneTest.练习设置.试卷内容 = content;
         memberDoneTest.练习设置.试卷内容ID = content.ID;
     }
     else
     {
         memberDoneTest.考试设置 = new 考试设置();
         memberDoneTest.考试设置.试卷内容 = content;
         memberDoneTest.考试设置.试卷内容ID = content.ID;
     }
     content = 试卷内容.去掉试卷中的试题的答案(content);
     string json = memberDoneTest.转化成Json();
     json = json.Replace("\"考生ID\": null", "\"公共信息\":{\"考生ID\": null");
     if (类型 == 0)
     {
         json = json.Replace(",\r\n  \"练习设置\"", "},\r\n  \"练习设置\"");
     }
     else
     {
         json = json.Replace(",\r\n  \"考试设置\"", "},\r\n  \"考试设置\"");
     }
     //格式化Json
     JObject bo = JObject.Parse(json);
     json = json.Replace("试卷内容\": {", "试卷内容\": {\"考试时长\":" + TestDuration + ",");
     JObject bo1 = JObject.Parse(json);
     string newJson = "{\"公共信息\":";
     string common = bo1["公共信息"].ToString();
     newJson = newJson + common+",\"试卷内容\":";
     string test = string.Empty;
     if (类型 == 0)
     {
         test = bo1["练习设置"]["试卷内容"].ToString();
     }
     else
     {
         test = bo1["考试设置"]["试卷内容"].ToString();
     }
     newJson = newJson + test+"}";
     return newJson;
 }
コード例 #5
0
 public static void 修改草稿试卷(List<string> 分类列表, 试卷内容 试卷内容, Guid 试卷外部信息ID, byte 试卷状态Enum)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     试卷外部信息表 outsideTable = db.试卷外部信息表.FirstOrDefault(a => a.ID == 试卷外部信息ID);
     List<string> listBelongSort = 所属分类.所属分类处理(分类列表, outsideTable.创建人ID, db);
     if (outsideTable.试卷状态Enum == 1)
     {
         throw new Exception("该试卷已被删除!");
     }
     outsideTable.试卷状态Enum = 试卷状态Enum;
     outsideTable.最新更新时间 = DateTime.Now;
     所属分类.修改相关信息更新所属分类(listBelongSort, 1, outsideTable.创建人ID, outsideTable.ID, db);
     if (试卷内容 != null)
     {
         试卷内容表 dbContent = db.试卷内容表.FirstOrDefault(a => a.ID == 试卷内容.ID);
         db.试卷内容表.DeleteObject(dbContent);
         //db.SaveChanges();
         试卷内容.保存(db, 试卷内容.ID);
         db.SaveChanges();
     }
 }
コード例 #6
0
        public static void 修改正常试卷(List<string> 分类列表, 试卷内容 试卷内容, Guid 试卷外部信息ID, int 试卷状态Enum)
        {
            if (试卷状态Enum == 4)
            {
                throw new Exception("正常试卷不能改为草稿!");
            }
            LoveKaoExamEntities db = new LoveKaoExamEntities();
            试卷外部信息表 outside = db.试卷外部信息表.FirstOrDefault(a => a.ID == 试卷外部信息ID);
            异常处理.删除修改权限判断(outside.创建人ID);
            List<string> listBelongSort = 所属分类.所属分类处理(分类列表, outside.创建人ID, db);
            if (outside.试卷状态Enum == 1)
            {
                throw new Exception("该试卷已被删除!");
            }
            outside.最新更新时间 = DateTime.Now;
            if (试卷内容 != null)
            {
                outside.名称 = 试卷内容.名称;
                outside.试卷状态Enum = 0;
                outside.试卷内容ID = 试卷内容.ID;
                //计算试卷总分
                decimal totalScore= 试卷外部信息.计算试卷总分(试卷内容);
                outside.总分 = Convert.ToInt32(totalScore);
            }
            using (TransactionScope scope = new TransactionScope())
            {
                所属分类.修改相关信息更新所属分类(listBelongSort, 1, outside.创建人ID, outside.ID, db);

                if (试卷内容 != null)
                {
                    试卷内容.保存(db, 试卷内容.ID);
                }
                scope.Complete();
            }
        }
コード例 #7
0
 /// <param name="类型">0保存本站试卷,1保存下载试卷</param>
 public static void 保存试卷相关信息(试卷内容 试卷内容, 试卷外部信息 试卷外部信息,int 类型)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     List<string> listSort = 试卷外部信息.分类列表.ToList();
     if (类型 == 0)
     {
         listSort=所属分类.所属分类处理(listSort, 试卷外部信息.创建人ID, db);
     }
     else
     {
         所属分类.所属分类处理(listSort, 用户信息.CurrentUser.用户ID, db);
     }
     试卷外部信息表 testOutside = new 试卷外部信息表();
     testOutside.ID = 试卷内容.试卷外部信息ID;
     if (类型 == 0)
     {
         testOutside.创建人ID = 试卷内容.提交人ID;
     }
     else
     {
         testOutside.创建人ID = 用户信息.CurrentUser.用户ID;
     }
     testOutside.创建时间 = DateTime.Now;
     testOutside.最新更新时间 = DateTime.Now;
     testOutside.说明 = 试卷内容.说明;
     testOutside.试卷内容ID = 试卷内容.ID;
     testOutside.爱考网ID = 试卷外部信息.爱考网ID;
     testOutside.试卷类型 = 试卷外部信息.试卷类型;
     testOutside.名称 = 试卷内容.名称;
     testOutside.试卷状态Enum = 试卷外部信息.试卷状态Enum;
     //保存的是正常试卷,则计算总分,是草稿则不需计算
     if (试卷外部信息.试卷状态Enum == 0)
     {
         //计算试卷总分
         decimal totalScore =  试卷外部信息.计算试卷总分(试卷内容);
         testOutside.总分 = Convert.ToInt32(totalScore);
     }
     using (TransactionScope scope = new TransactionScope())
     {
         if (类型 == 0)
         {
             所属分类.添加相关信息所属分类(listSort, testOutside.创建人ID, testOutside.ID, 1, db);
         }
         else
         {
             所属分类.添加相关信息所属分类(listSort, 用户信息.CurrentUser.用户ID, testOutside.ID, 1, db);
         }
         db.试卷外部信息表.AddObject(testOutside);
         if (类型 == 0)
         {
             试卷内容.保存(db, 试卷内容.ID);
         }
         else
         {
             试卷内容.保存下载试卷(db, listSort);
         }
         scope.Complete();
     }
 }
コード例 #8
0
 private static decimal 计算试卷总分(试卷内容 试卷内容)
 {
     //计算试卷总分
     decimal totalScore = 0;
     for (int i = 0; i < 试卷内容.试卷中大题集合.Count; i++)
     {
         for (int j = 0; j < 试卷内容.试卷中大题集合[i].试卷大题中试题集合.Count; j++)
         {
             totalScore += 试卷内容.试卷中大题集合[i].试卷大题中试题集合[j].每小题分值;
         }
     }
     return totalScore;
 }
コード例 #9
0
 public static string 转化成完整Json字符串试题内容带答案(试卷内容 试卷内容, 试卷外部信息 试卷外部信息)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     试卷内容 content = 给试卷内容中试题内容Json赋值(试卷内容, true);
     替换Json的扛(content);
     string 试卷内容Json字符串 = content.转化成Json字符串();
     string 试卷外部信息Json字符串 = 试卷外部信息.转化成Json字符串();
     string json = "{\"content\":" + 试卷内容Json字符串 + ",\"outside\":" + 试卷外部信息Json字符串 + "}";
     json = 还原Json的扛(json);
     json = json.Replace("\"试题内容Json\": \"", "\"试题内容Json\":");
     json = json.Replace("\\r\\n", "");
     json = json.Replace("\"outside\":null}\"", "\"outside\":null}");
     json = json.Replace("\"00000000-0000-0000-0000-000000000000\"", "null");
     return json;
 }
コード例 #10
0
 public static string 转化成完整Json字符串试题内容不带答案(试卷内容 试卷内容, 试卷外部信息 试卷外部信息)
 {
     试卷内容 = 去掉试卷中的试题的答案(试卷内容);
     替换Json的扛(试卷内容);
     string 试卷内容Json字符串 = 试卷内容.转化成Json字符串();
     string 试卷外部信息Json字符串 = 试卷外部信息.转化成Json字符串();
     string json = "{\"content\":" + 试卷内容Json字符串 + ",\"outside\":" + 试卷外部信息Json字符串 + "}";
     json = 还原Json的扛(json);
     json = json.Replace("\"试题内容Json\": \"", "\"试题内容Json\":");
     json = json.Replace("\\r\\n", "");
     json = json.Replace("\\n", "");
     json = json.Replace("\\", "");
     json = json.Replace("\"outside\":null}\"", "\"outside\":null}");
     json = json.Replace("\"00000000-0000-0000-0000-000000000000\"", "null");
     return json;
 }
コード例 #11
0
 public static 试卷内容 给试卷内容中试题内容Json赋值(试卷内容 试卷内容, bool 是否加null的连线题回答)
 {
     List<Guid> listProblemId = new List<Guid>();
     foreach (试卷中大题 type in 试卷内容.试卷中大题集合)
     {
         foreach (试卷大题中试题 testProblem in type.试卷大题中试题集合)
         {
             listProblemId.Add(testProblem.试题内容ID);
             if (testProblem.子小题集合 != null)
             {
                 foreach (试卷大题中试题 subTestProblem in testProblem.子小题集合)
                 {
                     listProblemId.Add(subTestProblem.试题内容ID);
                 }
             }
         }
     }
     List<试题内容> listProblem = 试题内容.试题内容查询.Where(a => listProblemId.Contains<Guid>(a.ID)).ToList();
     试卷内容.试题图片 = new Dictionary<string, byte[]>();
     foreach (试题内容 content in listProblem)
     {
         Dictionary<string, byte[]> oneDic = 试题外部信息.获取试题图片(content.Json字符串);
         foreach (var subOneDic in oneDic)
         {
             试卷内容.试题图片.Add(subOneDic.Key, subOneDic.Value);
         }
         content.Json字符串 = "{\"content\":" + content.Json字符串 + ",\"outside\":null}";
     }
     //给试卷大题中试题的试题内容属性赋值
     foreach (试卷中大题 type in 试卷内容.试卷中大题集合)
     {
         foreach (试卷大题中试题 testProblem in type.试卷大题中试题集合)
         {
             foreach (试题内容 content in listProblem)
             {
                 if (testProblem.试题内容ID == content.ID)
                 {
                     //加一个null的回答,界面有需求
                     if (content.小题型Enum == 30 && 是否加null的连线题回答 == true)
                     {
                         考生连线题回答 memberLinkAnswer = new 考生连线题回答();
                         memberLinkAnswer.连线题回答集合 = new List<连线题回答>();
                         连线题回答 linkAnswer = new 连线题回答();
                         memberLinkAnswer.连线题回答集合.Add(linkAnswer);
                         testProblem.该题考试回答 = memberLinkAnswer;
                     }
                     testProblem.试题内容Json = content.Json字符串;
                     break;
                 }
                 if (testProblem .子小题集合!= null)
                 {
                     试卷大题中试题 subTestProblem = testProblem.子小题集合.FirstOrDefault(a => a.试题内容ID == content.ID);
                     if (subTestProblem != null)
                     {
                         subTestProblem.试题内容Json = content.Json字符串;
                     }
                 }
             }
         }
     }
     //回答的题中是复合题和多题干共选项题的小题集合
     int hh = 0;
     var listSubContent = listProblem.Where(a => a.父试题内容ID != null).OrderBy(a => a.本题在复合题中顺序)
         .GroupBy(a => a.父试题内容ID).ToList();
     for (int n = 0; n < listSubContent.Count; n++)
     {
         var aa = listSubContent[n].OrderBy(a => a.本题在复合题中顺序).ToList();
         List<试卷大题中试题> listSubTestProblem = new List<试卷大题中试题>();
         foreach (试题内容 content in aa)
         {
             //找到对应的试卷大题中试题
             foreach (试卷中大题 type in 试卷内容.试卷中大题集合)
             {
                 试卷大题中试题 testProblem = type.试卷大题中试题集合.Where(a => a.试题内容ID == content.ID).FirstOrDefault();
                 if (testProblem != null)
                 {
                     listSubTestProblem.Add(testProblem);
                     //去掉子小题
                     type.试卷大题中试题集合.Remove(testProblem);
                     break;
                 }
                 foreach (试卷大题中试题 TestProblem in type.试卷大题中试题集合)
                 {
                     if (TestProblem.子小题集合 != null)
                     {
                         试卷大题中试题 subTestProblem = TestProblem.子小题集合.Where(a => a.试题内容ID == content.ID).FirstOrDefault();
                         if (subTestProblem != null)
                         {
                             listSubTestProblem.Add(subTestProblem);
                             break;
                         }
                     }
                 }
             }
         }
         foreach (试卷中大题 type in 试卷内容.试卷中大题集合)
         {
             foreach (试卷大题中试题 testProblem in type.试卷大题中试题集合)
             {
                 if (testProblem.试题内容ID == listSubContent[n].Key)
                 {
                     testProblem.子小题集合 = listSubTestProblem;
                     hh = 1;
                     break;
                 }
             }
             if (hh == 1)
             {
                 hh = 0;
                 break;
             }
         }
     }
     return 试卷内容;
 }
コード例 #12
0
 public static void 替换Json的扛(试卷内容 testContent)
 {
     foreach (试卷中大题 type in testContent.试卷中大题集合)
     {
         foreach (试卷大题中试题 testProblem in type.试卷大题中试题集合)
         {
             if (testProblem.子小题集合 != null)
             {
                 foreach (试卷大题中试题 subTestProblem in testProblem.子小题集合)
                 {
                     subTestProblem.试题内容Json = subTestProblem.试题内容Json.Replace("\"", "@2#3$4%5");
                     subTestProblem.试题内容Json = subTestProblem.试题内容Json.Replace("\\", "*8&7%5##");
                 }
             }
             testProblem.试题内容Json = testProblem.试题内容Json.Replace("\"", "@2#3$4%5");
             testProblem.试题内容Json = testProblem.试题内容Json.Replace("\\", "*8&7%5##");
         }
     }
 }
コード例 #13
0
 public static 试卷内容 去掉试卷中的试题的答案(试卷内容 试卷内容)
 {
     List<Guid> listProblemId = new List<Guid>();
     foreach (试卷中大题 type in 试卷内容.试卷中大题集合)
     {
         foreach (试卷大题中试题 testProblem in type.试卷大题中试题集合)
         {
             listProblemId.Add(testProblem.试题内容ID);
         }
     }
     List<试题内容> listProblem = 试题内容.试题内容查询.Where(a => listProblemId.Contains<Guid>(a.ID)).ToList();
     foreach (试题内容 content in listProblem)
     {
         content.Json字符串 = 试题内容.去掉答案(content.Json字符串);
         content.Json字符串 = "{\"content\":" + content.Json字符串 + ",\"outside\":null}";
     }
     //给试卷大题中试题的试题内容属性赋值
     foreach (试卷中大题 type in 试卷内容.试卷中大题集合)
     {
         foreach (试卷大题中试题 testProblem in type.试卷大题中试题集合)
         {
             foreach (试题内容 content in listProblem)
             {
                 if (testProblem.试题内容ID == content.ID)
                 {
                     //加一个null的回答,界面有需求
                     if (content.小题型Enum == 30)
                     {
                         考生连线题回答 memberLinkAnswer = new 考生连线题回答();
                         memberLinkAnswer.连线题回答集合 = new List<连线题回答>();
                         连线题回答 linkAnswer = new 连线题回答();
                         memberLinkAnswer.连线题回答集合.Add(linkAnswer);
                         testProblem.该题考试回答 = memberLinkAnswer;
                     }
                     testProblem.试题内容Json = content.Json字符串;
                     break;
                 }
             }
         }
     }
     //回答的题中是复合题和多题干共选项题的小题集合
     int hh = 0;
     var listSubContent = listProblem.Where(a => a.父试题内容ID != null).GroupBy(a => a.父试题内容ID).ToList();
     for (int n = 0; n < listSubContent.Count; n++)
     {
         var aa = listSubContent[n].OrderBy(a => a.本题在复合题中顺序).ToList();
         List<试卷大题中试题> listSubTestProblem = new List<试卷大题中试题>();
         foreach (试题内容 content in aa)
         {
             //找到对应的试卷大题中试题
             foreach (试卷中大题 type in 试卷内容.试卷中大题集合)
             {
                 试卷大题中试题 testProblem = type.试卷大题中试题集合.Where(a => a.试题内容ID == content.ID).FirstOrDefault();
                 if (testProblem != null)
                 {
                     listSubTestProblem.Add(testProblem);
                     //去掉子小题
                     type.试卷大题中试题集合.Remove(testProblem);
                     break;
                 }
             }
         }
         foreach (试卷中大题 type in 试卷内容.试卷中大题集合)
         {
             foreach (试卷大题中试题 testProblem in type.试卷大题中试题集合)
             {
                 if (testProblem.试题内容ID == listSubContent[n].Key)
                 {
                     testProblem.子小题集合 = listSubTestProblem;
                     hh = 1;
                     break;
                 }
             }
             if (hh == 1)
             {
                 hh = 0;
                 break;
             }
         }
     }
     return 试卷内容;
 }