예제 #1
0
        protected void FillPaper()
        {
            // QueryString id stands for EXAM_RESULT_ID
            string strId = Request.QueryString.Get("id");
            string orgid = Request.QueryString.Get("orgid");

            // Not pass id
            if (string.IsNullOrEmpty(strId))
            {
                SessionSet.PageMessage = "参数错误!";

                return;
            }

            RandomExamResultBLL randomExamResultBLL = new RandomExamResultBLL();
            RandomExamResult    randomExamResult    = new RandomExamResult();

            if (ViewState["NowOrgID"].ToString() != orgid)
            {
                randomExamResult = randomExamResultBLL.GetRandomExamResultByOrgID(int.Parse(strId), int.Parse(orgid));
            }
            else
            {
                randomExamResult = randomExamResultBLL.GetRandomExamResultTemp(int.Parse(strId));
            }
            int RandomExamId       = randomExamResult.RandomExamId;
            int randomExamResultId = int.Parse(strId);

            OracleAccess  db     = new OracleAccess();
            RandomExamBLL objBll = new RandomExamBLL();
            int           year   = objBll.GetExam(RandomExamId).BeginTime.Year;

            RandomExamItemBLL              randomItemBLL             = new RandomExamItemBLL();
            RandomExamSubjectBLL           subjectBLL                = new RandomExamSubjectBLL();
            RandomExamResultAnswerBLL      randomExamResultAnswerBLL = new RandomExamResultAnswerBLL();
            IList <RandomExamSubject>      randomExamSubjects        = subjectBLL.GetRandomExamSubjectByRandomExamId(RandomExamId);
            IList <RandomExamResultAnswer> examResultAnswers         = new List <RandomExamResultAnswer>();

            if (ViewState["NowOrgID"].ToString() != orgid)
            {
                examResultAnswers = randomExamResultAnswerBLL.GetExamResultAnswersByOrgID(int.Parse(strId), int.Parse(orgid));
            }
            else
            {
                examResultAnswers = randomExamResultAnswerBLL.GetExamResultAnswers(randomExamResultId);
            }

            int z = 1;

            if (randomExamSubjects != null)
            {
                for (int i = 0; i < randomExamSubjects.Count; i++)
                {
                    RandomExamSubject      paperSubject = randomExamSubjects[i];
                    IList <RandomExamItem> PaperItems   = new List <RandomExamItem>();
                    if (ViewState["NowOrgID"].ToString() != orgid)
                    {
                        PaperItems = randomItemBLL.GetItemsByOrgID(paperSubject.RandomExamSubjectId, randomExamResultId, int.Parse(orgid), year);
                    }
                    else
                    {
                        PaperItems = randomItemBLL.GetItems(paperSubject.RandomExamSubjectId, randomExamResultId, year);
                    }

                    Response.Write("<table width='100%'>");
                    Response.Write(" <tr > <td class='ExamBigTitle' >");
                    Response.Write(" " + GetNo(i) + "");
                    Response.Write(".&nbsp;" + paperSubject.SubjectName + "");
                    Response.Write("  (共" + paperSubject.ItemCount + "题,共" + System.String.Format("{0:0.##}", paperSubject.ItemCount * paperSubject.UnitScore) + "分)</td></tr >");

                    if (PaperItems != null)
                    {
                        for (int j = 0; j < PaperItems.Count; j++)
                        {
                            RandomExamItem paperItem = PaperItems[j];
                            int            k         = j + 1;

                            if (paperItem.TypeId != 5)
                            {
                                z = 1;
                                Response.Write("<tr > <td class='ExamResultItem'>&nbsp;&nbsp;&nbsp;"
                                               + k + ".&nbsp; " + paperItem.Content + "&nbsp;&nbsp;(" +
                                               System.String.Format("{0:0.##}", paperSubject.UnitScore) +
                                               "分)</td></tr >");
                            }
                            else
                            {
                                string strSql = "select * from Random_Exam_Item_" + year + " where Item_ID='" +
                                                paperItem.ItemId + "' and Random_Exam_ID=" + RandomExamId;
                                DataRow dr = db.RunSqlDataSet(strSql).Tables[0].Rows[0];

                                IList <RandomExamItem> randomExamItems = randomItemBLL.GetItemsByParentItemID(Convert.ToInt32(dr["Parent_Item_ID"]), RandomExamId, year);

                                Response.Write("<tr > <td class='ExamResultItem'>&nbsp;&nbsp;&nbsp;("
                                               + z + ").&nbsp; " + paperItem.Content + "&nbsp;&nbsp;(" + System.String.Format("{0:0.##}", (decimal)paperSubject.UnitScore / (decimal)randomExamItems.Count) +
                                               "分)</td></tr >");
                                z++;
                            }

                            // 组织用户答案
                            RandomExamResultAnswer theExamResultAnswer = null;
                            string[] strUserAnswers = new string[0];
                            string   strUserAnswer  = string.Empty;

                            foreach (RandomExamResultAnswer resultAnswer in examResultAnswers)
                            {
                                if (resultAnswer.RandomExamItemId == paperItem.RandomExamItemId)
                                {
                                    theExamResultAnswer = resultAnswer;
                                    break;
                                }
                            }

                            // 若子表无记录,结束页面输出
                            if (theExamResultAnswer == null)
                            {
                                SessionSet.PageMessage = "数据错误!";
                            }

                            // 否则组织考生答案
                            if (theExamResultAnswer.Answer != null || theExamResultAnswer.Answer == string.Empty)
                            {
                                strUserAnswers = theExamResultAnswer.Answer.Split(new char[] { '|' });
                            }


                            for (int n = 0; n < strUserAnswers.Length; n++)
                            {
                                string strN = intToString(int.Parse(strUserAnswers[n]) + 1);
                                if (n == 0)
                                {
                                    strUserAnswer += strN;
                                }
                                else
                                {
                                    strUserAnswer += "," + strN;
                                }
                            }

                            //多选


                            if (paperSubject.ItemTypeId == 2)
                            {
                                string[] strAnswer = paperItem.SelectAnswer.Split(new char[] { '|' });
                                for (int n = 0; n < strAnswer.Length; n++)
                                {
                                    string strN = intToString(n + 1);
                                    Response.Write(" <tr ><td class='ExamItemAnswer'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "
                                                   + strN + "." + strAnswer[n] + "</td></tr >");
                                }
                            }
                            else if (paperSubject.ItemTypeId == 1 || paperSubject.ItemTypeId == 3 || paperItem.TypeId == 5)
                            {
                                //单选


                                string[] strAnswer = paperItem.SelectAnswer.Split(new char[] { '|' });
                                for (int n = 0; n < strAnswer.Length; n++)
                                {
                                    string strN = intToString(n + 1);

                                    Response.Write("<tr > <td class='ExamItemAnswer'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "
                                                   + strN + "." + strAnswer[n] + "</td></tr >");
                                }
                            }

                            if (paperSubject.ItemTypeId == 1 || paperSubject.ItemTypeId == 2 || paperSubject.ItemTypeId == 3 || paperItem.TypeId == 5)
                            {
                                // 组织正确答案
                                string[] strRightAnswers = paperItem.StandardAnswer.Split(new char[] { '|' });
                                string   strRightAnswer  = "";
                                for (int n = 0; n < strRightAnswers.Length; n++)
                                {
                                    string strN = intToString(int.Parse(strRightAnswers[n]) + 1);
                                    if (n == 0)
                                    {
                                        strRightAnswer += strN;
                                    }
                                    else
                                    {
                                        strRightAnswer += "," + strN;
                                    }
                                }

                                string strScore = "0";

                                if (paperItem.TypeId == 5)
                                {
                                    if (strRightAnswer == strUserAnswer)
                                    {
                                        strScore = System.String.Format("{0:0.##}", paperItem.Score);
                                    }
                                }
                                else
                                {
                                    if (strRightAnswer == strUserAnswer)
                                    {
                                        strScore = System.String.Format("{0:0.##}", paperSubject.UnitScore);
                                    }
                                }


                                if (strScore == "0")
                                {
                                    Response.Write(" <tr><td class='ExamAnswerZero'>&nbsp;&nbsp;&nbsp;★标准答案:"
                                                   + "<span id='span-" + paperItem.RandomExamItemId + "-0' name='span-" +
                                                   paperItem.RandomExamItemId
                                                   + "'>" + strRightAnswer + "</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;考生答案:"
                                                   + "<span id='span-" + paperItem.RandomExamItemId + "-1' name='span-" +
                                                   paperItem.RandomExamItemId
                                                   + "'>" + strUserAnswer + "</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;得分:" + strScore + "</td></tr>");
                                }
                                else
                                {
                                    Response.Write(" <tr><td class='ExamAnswer'>&nbsp;&nbsp;&nbsp;★标准答案:"
                                                   + "<span id='span-" + paperItem.RandomExamItemId + "-0' name='span-" +
                                                   paperItem.RandomExamItemId
                                                   + "'>" + strRightAnswer + "</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;考生答案:"
                                                   + "<span id='span-" + paperItem.RandomExamItemId + "-1' name='span-" +
                                                   paperItem.RandomExamItemId
                                                   + "'>" + strUserAnswer + "</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;得分:" + strScore + "</td></tr>");
                                }
                            }
                        }
                    }
                    Response.Write(" </table> ");
                }
            }
            else
            {
                SessionSet.PageMessage = "数据错误!";

                return;
            }
        }
        protected void FillPaper()
        {
            string strId = Request.QueryString.Get("id");

            if (string.IsNullOrEmpty(strId))
            {
                SessionSet.PageMessage = "缺少参数!";

                return;
            }

            RandomExamItemBLL     randomItemBLL = new RandomExamItemBLL();
            RandomExamSubjectBLL  subjectBLL    = new RandomExamSubjectBLL();
            RandomExamStrategyBLL strategyBLL   = new RandomExamStrategyBLL();

            IList <RandomExamSubject> randomExamSubjects = subjectBLL.GetRandomExamSubjectByRandomExamId(int.Parse(strId));

            if (randomExamSubjects != null)
            {
                Hashtable hashTableItemIds = new Hashtable();
                for (int i = 0; i < randomExamSubjects.Count; i++)
                {
                    RandomExamSubject paperSubject = randomExamSubjects[i];
                    int nSubjectId = paperSubject.RandomExamSubjectId;
                    //  int nItemCount = paperSubject.ItemCount;

                    Hashtable htSubjectItemIds           = new Hashtable();
                    IList <RandomExamStrategy> strategys = strategyBLL.GetRandomExamStrategys(nSubjectId);
                    for (int j = 0; j < strategys.Count; j++)
                    {
                        int nStrategyId = strategys[j].RandomExamStrategyId;
                        int nItemCount  = strategys[j].ItemCount;
                        IList <RandomExamItem> itemList = randomItemBLL.GetItemsByStrategyId(nStrategyId, Convert.ToInt32(ViewState["Year"].ToString()));

                        // IList<RandomExamItem> itemList = randomItemBLL.GetItemsBySubjectId(nSubjectId);

                        Random    ObjRandom      = new Random();
                        Hashtable hashTable      = new Hashtable();
                        Hashtable hashTableCount = new Hashtable();
                        while (hashTable.Count < nItemCount)
                        {
                            int k = ObjRandom.Next(itemList.Count);
                            hashTableCount[k] = k;
                            int itemID     = itemList[k].ItemId;
                            int examItemID = itemList[k].RandomExamItemId;
                            if (!hashTableItemIds.ContainsKey(itemID))
                            {
                                hashTable[examItemID]        = examItemID;
                                hashTableItemIds[itemID]     = itemID;
                                htSubjectItemIds[examItemID] = examItemID;
                            }
                            if (hashTableCount.Count == itemList.Count && hashTable.Count < nItemCount)
                            {
                                SessionSet.PageMessage = "随机考试在设定的取题范围内的试题量不够,请重新设置取题范围!";
                                return;
                            }
                        }
                    }

                    IList <RandomExamItem> paperItems = new List <RandomExamItem>();

                    foreach (int key in htSubjectItemIds.Keys)
                    {
                        string         strItemId = htSubjectItemIds[key].ToString();
                        RandomExamItem item      = randomItemBLL.GetRandomExamItem(int.Parse(strItemId), Convert.ToInt32(ViewState["Year"].ToString()));
                        paperItems.Add(item);
                    }


                    Response.Write("<table width='95%' class='ExamContent'>");
                    Response.Write(" <tr> <td class='ExamBigTitle' >");
                    Response.Write(" " + GetNo(i) + "");
                    Response.Write("、" + paperSubject.SubjectName + "");
                    Response.Write("  (共" + paperItems.Count + "题,共" + paperItems.Count * paperSubject.UnitScore + "分)</td></tr >");

                    if (paperItems != null)
                    {
                        int y = 1;
                        for (int j = 0; j < paperItems.Count; j++)
                        {
                            RandomExamItem paperItem = paperItems[j];
                            int            k         = j + 1;

                            if (paperItem.TypeId == PrjPub.ITEMTYPE_FILLBLANK)
                            {
                                k = y;
                                y++;
                            }
                            else if (paperItem.TypeId == PrjPub.ITEMTYPE_FILLBLANKDETAIL)
                            {
                                continue;
                            }

                            Response.Write("<tr><td class='ExamItem'>&nbsp;&nbsp;&nbsp;" + k + ".&nbsp; " + paperItem.Content +
                                           "&nbsp;&nbsp; (" + paperSubject.UnitScore + "分)</td></tr >");

                            if (paperSubject.ItemTypeId == PrjPub.ITEMTYPE_MULTICHOOSE)   //多选
                            {
                                string[] strAnswer = paperItem.SelectAnswer.Split(new char[] { '|' });
                                for (int n = 0; n < strAnswer.Length; n++)
                                {
                                    string strN  = intToString(n + 1);
                                    string strij = "-" + paperItem.RandomExamItemId + "-" + i.ToString() + "-" + j.ToString() +
                                                   "-" + n.ToString();
                                    string strName = i.ToString() + j.ToString();

                                    Response.Write(
                                        "<tr><td class='ExamItemAnswer'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type='checkbox' id='Answer" +
                                        strij + "' name='Answer" + strName + "'> " + strN + "." + strAnswer[n] +
                                        "</td></tr>");
                                }
                            }
                            else if (paperSubject.ItemTypeId == PrjPub.ITEMTYPE_SINGLECHOOSE || paperSubject.ItemTypeId == PrjPub.ITEMTYPE_JUDGE)    //单选
                            {
                                string[] strAnswer = paperItem.SelectAnswer.Split(new char[] { '|' });
                                for (int n = 0; n < strAnswer.Length; n++)
                                {
                                    string strN  = intToString(n + 1);
                                    string strij = "-" + paperItem.RandomExamItemId + "-" + i.ToString() + "-" + j.ToString() +
                                                   "-" + n.ToString();
                                    string strName = i.ToString() + j.ToString();
                                    Response.Write(
                                        "<tr><td class='ExamItemAnswer'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type='Radio' id='RAnswer" +
                                        strij + "' name='RAnswer" + strName + "'> " + strN + "." + strAnswer[n] +
                                        "</td></tr>");
                                }
                            }
                            else if (paperSubject.ItemTypeId == PrjPub.ITEMTYPE_FILLBLANK)
                            {
                                IList <RandomExamItem> randomExamItems =
                                    randomItemBLL.GetItemsByParentItemID(paperItem.ItemId, Convert.ToInt32(strId),
                                                                         Convert.ToInt32(ViewState["Year"].ToString()));

                                int z = 1;
                                foreach (RandomExamItem randomExamItem in randomExamItems)
                                {
                                    Response.Write("<tr><td class='ExamItem'>&nbsp;&nbsp;&nbsp;(" + z + ").&nbsp; " + randomExamItem.Content +
                                                   "&nbsp;&nbsp; (" + System.String.Format("{0:0.##}", (decimal)paperSubject.UnitScore / (decimal)randomExamItems.Count) + "分)</td></tr >");

                                    string[] strAnswer = randomExamItem.SelectAnswer.Split(new char[] { '|' });
                                    for (int n = 0; n < strAnswer.Length; n++)
                                    {
                                        string strN  = intToString(n + 1);
                                        string strij = "-" + randomExamItem.RandomExamItemId + "-" + i.ToString() + "-" + j.ToString() +
                                                       "-" + n.ToString() + "-" + z.ToString();
                                        string strName = i.ToString() + j.ToString() + z.ToString();

                                        Response.Write(
                                            "<tr><td class='ExamItemAnswer'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type='Radio' id='RAnswer" +
                                            strij + "' name='RAnswer" + strName + "'> " + strN + "." + strAnswer[n] +
                                            "</td></tr>");
                                    }
                                    z++;
                                }
                            }
                            else
                            {
                                Response.Write(
                                    "<tr><td class='ExamItemAnswer'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <textarea id='" + paperItem.RandomExamItemId + "' rows='5' cols='120' ></textarea></td></tr>");
                            }
                        }
                    }
                    Response.Write("</table>");
                }

                Response.Write(" <div class='ExamButton'><input id='btnClose' class='button' name='btnClose' type='button' value='关闭' onclick='Save()' /></div>");
            }
            else
            {
                SessionSet.PageMessage = "未找到记录!";
            }
        }
예제 #3
0
        protected void FillPaper()
        {
            // QueryString id stands for EXAM_RESULT_ID
            string strId = Request.QueryString.Get("id");
            string orgid = Request.QueryString.Get("orgid");

            // Not pass id
            if (string.IsNullOrEmpty(strId))
            {
                SessionSet.PageMessage = "参数错误!";
                return;
            }

            RandomExamResultBLL randomExamResultBLL = new RandomExamResultBLL();
            RandomExamResult    randomExamResult    = new RandomExamResult();

            randomExamResult = randomExamResultBLL.GetRandomExamResultStation(int.Parse(strId));
            int RandomExamId       = randomExamResult.RandomExamId;
            int randomExamResultId = int.Parse(strId);

            RandomExamBLL objBll = new RandomExamBLL();
            int           year   = objBll.GetExam(RandomExamId).BeginTime.Year;

            RandomExamItemBLL         randomItemBLL      = new RandomExamItemBLL();
            RandomExamSubjectBLL      subjectBLL         = new RandomExamSubjectBLL();
            IList <RandomExamSubject> randomExamSubjects = subjectBLL.GetRandomExamSubjectByRandomExamId(RandomExamId);

            //RandomExamResultAnswerBLL randomExamResultAnswerBLL = new RandomExamResultAnswerBLL();
            //IList<RandomExamResultAnswer> examResultAnswers = new List<RandomExamResultAnswer>();
            //if (ViewState["NowOrgID"].ToString() != orgid)
            //{
            //    examResultAnswers = randomExamResultAnswerBLL.GetExamResultAnswersStation(randomExamResultId);
            //}
            //else
            //{
            //    examResultAnswers = randomExamResultAnswerBLL.GetExamResultAnswers(randomExamResultId);
            //}

            IList <RandomExamItem> TotalItems = new List <RandomExamItem>();

            //按年取出每张试卷的Random_Exam_Item_Year 表中的记录
            if (ViewState["NowOrgID"].ToString() != orgid)
            {
                TotalItems = randomItemBLL.GetItemsStation(0, randomExamResultId, year);
            }
            else
            {
                TotalItems = randomItemBLL.GetItems(0, randomExamResultId, year);
            }

            OracleAccess db = new OracleAccess();

            //按考试取出每张试卷的完形填空子题
            string    strSql   = "select * from Random_Exam_Item_" + year + " where Type_ID=" + PrjPub.ITEMTYPE_FILLBLANKDETAIL + " and Random_Exam_ID=" + RandomExamId;
            DataTable dtDetail = db.RunSqlDataSet(strSql).Tables[0];

            //按考试取出每张试卷的完形填空主题
            //strSql = "select * from Random_Exam_Item_" + year + " where Type_ID="+ PrjPub.ITEMTYPE_FILLBLANK +" and Random_Exam_ID=" + RandomExamId;
            //DataTable dt= db.RunSqlDataSet(strSql).Tables[0];

            int z       = 1;
            int hasyear = 0;

            if (randomExamSubjects != null)
            {
                for (int i = 0; i < randomExamSubjects.Count; i++)
                {
                    RandomExamSubject      paperSubject = randomExamSubjects[i];
                    IList <RandomExamItem> PaperItems   = new List <RandomExamItem>();

                    PaperItems = GetSubjectItems(TotalItems, paperSubject.RandomExamSubjectId);

                    if (ViewState["NowOrgID"].ToString() != orgid)
                    {
                        //PaperItems = randomItemBLL.GetItemsStation(paperSubject.RandomExamSubjectId, randomExamResultId,  year);
                        hasyear = 1;
                    }
                    else
                    {
                        //PaperItems = randomItemBLL.GetItems(paperSubject.RandomExamSubjectId, randomExamResultId, year);
                        hasyear = 0;
                    }

                    Response.Write("<table width='100%'>");
                    Response.Write(" <tr > <td class='ExamBigTitle' >");
                    Response.Write(" " + GetNo(i) + "");
                    Response.Write(".&nbsp;" + paperSubject.SubjectName + "");
                    Response.Write("  (共" + paperSubject.ItemCount + "题,共" + System.String.Format("{0:0.##}", paperSubject.ItemCount * paperSubject.UnitScore) + "分)</td></tr >");

                    if (PaperItems != null)
                    {
                        int x = 1;
                        for (int j = 0; j < PaperItems.Count; j++)
                        {
                            RandomExamItem paperItem = PaperItems[j];
                            int            k         = j + 1;

                            if (paperItem.TypeId != 5)
                            {
                                if (paperItem.TypeId == 4)
                                {
                                    k = x;
                                    x++;
                                }

                                z = 1;
                                Response.Write("<tr > <td class='ExamResultItem'><a name='Test" + i + j + "' id='Test" + i + j + "'></a>&nbsp;&nbsp;&nbsp;"
                                               + k + ".&nbsp; " + paperItem.Content + "&nbsp;&nbsp;(" +
                                               System.String.Format("{0:0.##}", paperSubject.UnitScore) +
                                               "分)</td></tr >");
                            }
                            else
                            {
                                //string strSql = "select * from Random_Exam_Item_" + year + " where Item_ID='" +
                                //                paperItem.ItemId + "' and Random_Exam_ID=" + RandomExamId;
                                //DataRow dr = db.RunSqlDataSet(strSql).Tables[0].Rows[0];
                                //IList<RandomExamItem> randomExamItems = randomItemBLL.GetItemsByParentItemID(Convert.ToInt32(dr["Parent_Item_ID"]), RandomExamId, year);

                                //查找当前完型子题的主题ID
                                DataRow[] drsDetail = dtDetail.Select("Item_ID=" + paperItem.ItemId);

                                int detailCount = 0;
                                if (drsDetail.Length > 0)
                                {
                                    //通过完形填空的主题ID查找完形填空的子题个数,为计算每个子题分数做准备
                                    DataRow[] drs = dtDetail.Select("Parent_Item_ID=" + drsDetail[0]["Parent_Item_ID"]);
                                    detailCount = drs.Length;
                                }

                                Response.Write("<tr > <td class='ExamResultItem'><a name='Test" + i + j + "' id='Test" + i + j + "'></a>&nbsp;&nbsp;&nbsp;"//+ z + ").&nbsp; "
                                               + paperItem.Content + "&nbsp;&nbsp;(" + System.String.Format("{0:0.##}", (decimal)paperSubject.UnitScore / (decimal)detailCount) +
                                               "分)</td></tr >");
                                z++;
                            }

                            string[] strUserAnswers = new string[0];
                            string   strUserAnswer  = string.Empty;

                            // 组织用户答案
                            //RandomExamResultAnswer theExamResultAnswer = null;
                            //foreach (RandomExamResultAnswer resultAnswer in examResultAnswers)
                            //{
                            //    if (resultAnswer.RandomExamItemId == paperItem.RandomExamItemId)
                            //    {
                            //        theExamResultAnswer = resultAnswer;
                            //        break;
                            //    }
                            //}
                            //// 若子表无记录,结束页面输出
                            //if (theExamResultAnswer == null)
                            //{
                            //    SessionSet.PageMessage = "数据错误!";
                            //}
                            //// 否则组织考生答案
                            //if (theExamResultAnswer.Answer != null || theExamResultAnswer.Answer == string.Empty)
                            //{
                            //    strUserAnswers = theExamResultAnswer.Answer.Split(new char[] { '|' });
                            //}

                            if (paperItem.Answer == null)
                            {
                                SessionSet.PageMessage = "数据错误!";
                            }

                            if (!string.IsNullOrEmpty(paperItem.Answer))
                            {
                                strUserAnswers = paperItem.Answer.Split(new char[] { '|' });
                            }

                            for (int n = 0; n < strUserAnswers.Length; n++)
                            {
                                string strN = intToString(int.Parse(strUserAnswers[n]) + 1);
                                if (n == 0)
                                {
                                    strUserAnswer += strN;
                                }
                                else
                                {
                                    strUserAnswer += "," + strN;
                                }
                            }

                            //多选


                            if (paperSubject.ItemTypeId == PrjPub.ITEMTYPE_MULTICHOOSE)
                            {
                                string[] strAnswer = paperItem.SelectAnswer.Split(new char[] { '|' });
                                for (int n = 0; n < strAnswer.Length; n++)
                                {
                                    string strN  = intToString(n + 1);
                                    string strij = "-" + paperItem.RandomExamItemId + "-" + i.ToString() + "-"
                                                   + j.ToString() + "-" + n.ToString();
                                    string strName = i.ToString() + j.ToString();

                                    Response.Write(" <tr ><td class='ExamItemAnswer'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "
                                                   + strN + "." + strAnswer[n] + "</td></tr >");
                                }
                            }
                            else if (paperSubject.ItemTypeId == PrjPub.ITEMTYPE_JUDGE || paperSubject.ItemTypeId == PrjPub.ITEMTYPE_SINGLECHOOSE || paperItem.TypeId == 5)
                            {
                                //单选


                                string[] strAnswer = paperItem.SelectAnswer.Split(new char[] { '|' });
                                for (int n = 0; n < strAnswer.Length; n++)
                                {
                                    string strN = intToString(n + 1);
                                    Response.Write("<tr > <td class='ExamItemAnswer'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "
                                                   + strN + "." + strAnswer[n] + "</td></tr >");
                                }
                            }

                            if (paperSubject.ItemTypeId == 1 || paperSubject.ItemTypeId == 2 || paperSubject.ItemTypeId == 3 || paperItem.TypeId == 5)
                            {
                                // 组织正确答案
                                string[] strRightAnswers = paperItem.StandardAnswer.Split(new char[] { '|' });
                                string   strRightAnswer  = "";
                                for (int n = 0; n < strRightAnswers.Length; n++)
                                {
                                    string strN = intToString(int.Parse(strRightAnswers[n]) + 1);
                                    if (n == 0)
                                    {
                                        strRightAnswer += strN;
                                    }
                                    else
                                    {
                                        strRightAnswer += "," + strN;
                                    }
                                }

                                string strScore   = "0";
                                string couldScore = "0";
                                if (paperItem.TypeId == 5)
                                {
                                    if (strRightAnswer == strUserAnswer)
                                    {
                                        strScore = System.String.Format("{0:0.##}", paperItem.Score);
                                    }

                                    couldScore = paperItem.Score.ToString();
                                }
                                else
                                {
                                    if (strRightAnswer == strUserAnswer)
                                    {
                                        strScore = System.String.Format("{0:0.##}", paperSubject.UnitScore);
                                    }

                                    couldScore = paperSubject.UnitScore.ToString();
                                }

                                if (strScore == "0")
                                {
                                    if (hfLoginEmployeeID.Value == "0")
                                    {
                                        string strFirst = @"""";
                                        Response.Write(" <tr><td id='span-" + paperItem.RandomExamItemId + "' class='ExamAnswerZero'>&nbsp;&nbsp;&nbsp;★标准答案:"
                                                       + "<span id='span-" + paperItem.RandomExamItemId + "-0' name='span-" +
                                                       paperItem.RandomExamItemId
                                                       + "'>" + strRightAnswer +
                                                       "</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;考生答案:"
                                                       + "<span id='span-" + paperItem.RandomExamItemId + "-1' name='span-" +
                                                       paperItem.RandomExamItemId
                                                       + "'>" + strUserAnswer +
                                                       "</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;得分:" +
                                                       "<span id='span-" + paperItem.RandomExamItemId + "-2'>" + strScore +
                                                       "</span>"
                                                       + "&nbsp;&nbsp;&nbsp;<a id='a-" + paperItem.RandomExamItemId + "' onclick=" + strFirst + "updateScore(" + randomExamResultId + "," + paperItem.RandomExamItemId + "," + couldScore + ",'" + paperItem.StandardAnswer + "'," + hasyear + ")" + strFirst
                                                       + " href='#Test" + i + j + "' style='cursor: hand;'>更改考生答案</a></td></tr>");
                                    }
                                    else
                                    {
                                        Response.Write(" <tr><td class='ExamAnswerZero'>&nbsp;&nbsp;&nbsp;★标准答案:"
                                                       + "<span id='span-" + paperItem.RandomExamItemId + "-0' name='span-" +
                                                       paperItem.RandomExamItemId
                                                       + "'>" + strRightAnswer +
                                                       "</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;考生答案:"
                                                       + "<span id='span-" + paperItem.RandomExamItemId + "-1' name='span-" +
                                                       paperItem.RandomExamItemId
                                                       + "'>" + strUserAnswer +
                                                       "</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;得分:" +
                                                       "<span id='span-" + paperItem.RandomExamItemId + "-2'>" + strScore +
                                                       "</span></td></tr>");
                                    }
                                }
                                else
                                {
                                    Response.Write(" <tr><td class='ExamAnswer'>&nbsp;&nbsp;&nbsp;★标准答案:"
                                                   + "<span id='span-" + paperItem.RandomExamItemId + "-0' name='span-" +
                                                   paperItem.RandomExamItemId
                                                   + "'>" + strRightAnswer +
                                                   "</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;考生答案:"
                                                   + "<span id='span-" + paperItem.RandomExamItemId + "-1' name='span-" +
                                                   paperItem.RandomExamItemId
                                                   + "'>" + strUserAnswer +
                                                   "</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;得分:" + strScore +
                                                   "</td></tr>");
                                }
                            }
                        }
                    }
                    Response.Write(" </table> ");
                }
            }
            else
            {
                SessionSet.PageMessage = "数据错误!";

                return;
            }
        }
        private void GetPaper()
        {
            // 根据 ProgressBar.htm 显示进度条界面
            string       templateFileName = Path.Combine(Server.MapPath("."), "ProgressBar.htm");
            StreamReader reader           = new StreamReader(@templateFileName, System.Text.Encoding.GetEncoding("gb2312"));
            string       html             = reader.ReadToEnd();

            reader.Close();
            Response.Write(html);
            Response.Flush();
            System.Threading.Thread.Sleep(200);

            string jsBlock;

            ViewState["BeginTime"] = DateTime.Now.ToString();
            string strId = Request.QueryString.Get("RandomExamID");

            //获取当前考试的生成试卷的状态和次数
            RandomExamBLL objBll = new RandomExamBLL();

            RailExam.Model.RandomExam obj = objBll.GetExam(Convert.ToInt32(strId));

            int year      = obj.BeginTime.Year;
            int ExamCount = obj.MaxExamTimes;

            RandomExamArrangeBLL eaBll = new RandomExamArrangeBLL();
            IList <RailExam.Model.RandomExamArrange> ExamArranges = eaBll.GetRandomExamArranges(int.Parse(strId));
            string       strChooseID = "";
            OracleAccess db          = new OracleAccess();
            OracleAccess dbCenter    = new OracleAccess(System.Configuration.ConfigurationManager.ConnectionStrings["OracleCenter"].ConnectionString);

            string strSql;

            if (ExamArranges.Count > 0)
            {
                strSql = "select a.* from Random_Exam_Arrange_Detail a "
                         + " inner join Computer_Room b on a.Computer_Room_ID=b.Computer_Room_ID"
                         + " inner join Computer_Server c on c.Computer_server_ID=b.Computer_Server_ID"
                         + " where c.Computer_Server_No='" + PrjPub.ServerNo + "' "
                         + " and Random_Exam_ID=" + strId;

                DataSet ds = db.RunSqlDataSet(strSql);

                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    if (string.IsNullOrEmpty(strChooseID))
                    {
                        strChooseID += dr["User_Ids"].ToString();
                    }
                    else
                    {
                        strChooseID += "," + dr["User_Ids"];
                    }
                }
            }
            else
            {
                strChooseID = "";
            }

            if (strChooseID == "")
            {
                Response.Write("<script>top.returnValue='本场考试未在本单位安排考生!';window.close();</script>");
                return;
            }

            if (db.GetCount("RANDOM_EXAM_ITEM_TEMP_" + year, "TABLE") == 0)
            {
                strSql = "create table RANDOM_EXAM_ITEM_TEMP_" + year + "  as select * from RANDOM_EXAM_ITEM_" + year + " where 1=2 ";
                db.ExecuteNonQuery(strSql);
            }
            strSql = "insert into RANDOM_EXAM_ITEM_TEMP_" + year + " select * from RANDOM_EXAM_ITEM_" + year + " where Random_Exam_ID=" + strId;
            db.ExecuteNonQuery(strSql);

            if (!PrjPub.IsServerCenter)
            {
                if (dbCenter.GetCount("RANDOM_EXAM_ITEM_TEMP_" + year, "TABLE") == 0)
                {
                    strSql = "create table RANDOM_EXAM_ITEM_TEMP_" + year + "  as select * from RANDOM_EXAM_ITEM_" + year + " where 1=2 ";
                    dbCenter.ExecuteNonQuery(strSql);
                }
                strSql = "insert into RANDOM_EXAM_ITEM_TEMP_" + year + " select * from RANDOM_EXAM_ITEM_" + year + " where Random_Exam_ID=" + strId;
                dbCenter.ExecuteNonQuery(strSql);
            }

            System.Threading.Thread.Sleep(10);
            jsBlock = "<script>SetPorgressBar('正在计算生成试卷数量,请等待......','" + ((1 * 100) / ((double)2) + "'); </script>");
            Response.Write(jsBlock);
            Response.Flush();


            //每次生成试卷之前删除已生成的考试试卷
            RandomExamResultCurrentBLL randomExamResultBLL = new RandomExamResultCurrentBLL();

            randomExamResultBLL.DelRandomExamResultCurrent(Convert.ToInt32(strId));
            System.Threading.Thread.Sleep(10);
            jsBlock = "<script>SetPorgressBar('正在计算生成试卷数量,请等待......','" + ((2 * 100) / ((double)2) + "'); </script>");
            Response.Write(jsBlock);
            Response.Flush();

            System.Threading.Thread.Sleep(200);
            jsBlock = string.Empty;

            string[] str = strChooseID.Split(',');

            RandomExamResultAnswerCurrentBLL randomExamResultAnswerBLL = new RandomExamResultAnswerCurrentBLL();
            //定义全局答卷对象List
            IList <RandomExamResultAnswerCurrent> randomExamResultAnswersCurrentAll = new List <RandomExamResultAnswerCurrent>();
            //定义一个考生一次答卷对象List
            IList <RandomExamResultAnswerCurrent> randomExamResultAnswers = null;

            int progressNum = 1;

            for (int n = 1; n <= ExamCount; n++)
            {
                for (int m = 0; m < str.Length; m++)
                {
                    RandomExamResultCurrent randomExamResult = new RandomExamResultCurrent();

                    randomExamResult.RandomExamId    = int.Parse(strId);
                    randomExamResult.AutoScore       = 0;
                    randomExamResult.BeginDateTime   = DateTime.Parse(ViewState["BeginTime"].ToString());
                    randomExamResult.CurrentDateTime = DateTime.Parse(ViewState["BeginTime"].ToString());
                    randomExamResult.ExamTime        = 0;
                    randomExamResult.EndDateTime     = DateTime.Parse(ViewState["BeginTime"].ToString());
                    randomExamResult.Score           = 0;
                    randomExamResult.OrganizationId  = int.Parse(ConfigurationManager.AppSettings["StationID"]);
                    randomExamResult.Memo            = "";
                    randomExamResult.StatusId        = 0;
                    randomExamResult.AutoScore       = 0;
                    randomExamResult.CorrectRate     = 0;
                    randomExamResult.ExamineeId      = int.Parse(str[m]);
                    randomExamResult.ExamSeqNo       = n;

                    int nRandomExamResultPK = randomExamResultBLL.AddRandomExamResultCurrent(randomExamResult);
                    ViewState["RandomExamResultPK"] = nRandomExamResultPK;

                    strSql = "select a.* from Random_Exam_Arrange_Detail a "
                             + " where ','||User_Ids||',' like '%," + str[m] + ",%' "
                             + " and Random_Exam_ID=" + strId;
                    DataRow dr = db.RunSqlDataSet(strSql).Tables[0].Rows[0];

                    //strSql = "insert into Random_Exam_Result_Detail(Random_Exam_Result_Detail_ID,"
                    //         + "Random_Exam_Result_ID,Random_Exam_ID,Employee_ID,Computer_Room_SEAT,Computer_Room_ID) "
                    //         + "values(Random_Exam_Result_Detail_SEQ.NextVal,"
                    //         + nRandomExamResultPK + ","
                    //         + randomExamResult.RandomExamId + ","
                    //         + randomExamResult.ExamineeId + ","
                    //         + "0," + dr["Computer_Room_ID"] + ") ";
                    //db.ExecuteNonQuery(strSql);

                    strSql = "insert into Random_Exam_Result_Detail_Temp(Random_Exam_Result_Detail_ID,"
                             + "Random_Exam_Result_ID,Random_Exam_ID,Employee_ID,Computer_Room_SEAT,Computer_Room_ID,Is_Remove) "
                             + "values(Random_Exam_Result_Detail_SEQ.NextVal,"
                             + nRandomExamResultPK + ","
                             + randomExamResult.RandomExamId + ","
                             + randomExamResult.ExamineeId + ","
                             + "0," + dr["Computer_Room_ID"] + ",0) ";
                    db.ExecuteNonQuery(strSql);

                    RandomExamItemBLL     randomItemBLL = new RandomExamItemBLL();
                    RandomExamSubjectBLL  subjectBLL    = new RandomExamSubjectBLL();
                    RandomExamStrategyBLL strategyBLL   = new RandomExamStrategyBLL();

                    IList <RandomExamSubject> randomExamSubjects =
                        subjectBLL.GetRandomExamSubjectByRandomExamId(int.Parse(strId));

                    if (randomExamSubjects != null)
                    {
                        Hashtable hashTableItemIds = new Hashtable();
                        Hashtable htSubjectItemIds = new Hashtable();
                        for (int i = 0; i < randomExamSubjects.Count; i++)
                        {
                            RandomExamSubject paperSubject = randomExamSubjects[i];
                            int nSubjectId = paperSubject.RandomExamSubjectId;
                            //  int nItemCount = paperSubject.ItemCount;

                            IList <RandomExamStrategy> strategys = strategyBLL.GetRandomExamStrategys(nSubjectId);
                            for (int j = 0; j < strategys.Count; j++)
                            {
                                int nStrategyId = strategys[j].RandomExamStrategyId;
                                int nItemCount  = strategys[j].ItemCount;
                                IList <RandomExamItem> itemList = randomItemBLL.GetItemsByStrategyId(nStrategyId, year);

                                // IList<RandomExamItem> itemList = randomItemBLL.GetItemsBySubjectId(nSubjectId);

                                Random    ObjRandom      = new Random();
                                Hashtable hashTable      = new Hashtable();
                                Hashtable hashTableCount = new Hashtable();
                                int       index          = 0;
                                while (hashTable.Count < nItemCount)
                                {
                                    int k = ObjRandom.Next(itemList.Count);
                                    hashTableCount[index] = k;
                                    index = index + 1;
                                    int itemID     = itemList[k].ItemId;
                                    int examItemID = itemList[k].RandomExamItemId;
                                    if (!hashTableItemIds.ContainsKey(itemID))
                                    {
                                        hashTable[examItemID]        = examItemID;
                                        hashTableItemIds[itemID]     = itemID;
                                        htSubjectItemIds[examItemID] = examItemID;
                                    }
                                    //if (hashTableCount.Count == itemList.Count && hashTable.Count < nItemCount)
                                    //{
                                    //    SessionSet.PageMessage = "随机考试在设定的取题范围内的试题量不够,请重新设置取题范围!";
                                    //    return;
                                    //}
                                }
                            }
                        }


                        foreach (int key in htSubjectItemIds.Keys)
                        {
                            string         strItemId = htSubjectItemIds[key].ToString();
                            RandomExamItem item      = randomItemBLL.GetRandomExamItem(Convert.ToInt32(strItemId), year);

                            string nowSelectAnswer   = string.Empty;
                            string nowStandardAnswer = string.Empty;
                            if (item.TypeId != PrjPub.ITEMTYPE_FILLBLANK)
                            {
                                Pub.GetNowAnswer(item, out nowSelectAnswer, out nowStandardAnswer);
                            }

                            RandomExamResultAnswerCurrent randomExamResultAnswer = new RandomExamResultAnswerCurrent();
                            randomExamResultAnswer.RandomExamResultId = nRandomExamResultPK;
                            randomExamResultAnswer.RandomExamItemId   = int.Parse(strItemId);
                            randomExamResultAnswer.JudgeStatusId      = 0;
                            randomExamResultAnswer.JudgeRemark        = string.Empty;
                            randomExamResultAnswer.ExamTime           = 0;
                            randomExamResultAnswer.Answer             = string.Empty;
                            randomExamResultAnswer.SelectAnswer       = nowSelectAnswer;
                            randomExamResultAnswer.StandardAnswer     = nowStandardAnswer;
                            randomExamResultAnswerBLL.AddExamResultAnswerCurrent(randomExamResultAnswer);

                            //完型填空子题
                            IList <RandomExamItem> randomExamItems = randomItemBLL.GetItemsByParentItemID(item.ItemId, obj.RandomExamId, year);
                            foreach (RandomExamItem randomExamItem in randomExamItems)
                            {
                                Pub.GetNowAnswer(randomExamItem, out nowSelectAnswer, out nowStandardAnswer);

                                randomExamResultAnswer = new RandomExamResultAnswerCurrent();
                                randomExamResultAnswer.RandomExamResultId = nRandomExamResultPK;
                                randomExamResultAnswer.RandomExamItemId   = randomExamItem.RandomExamItemId;
                                randomExamResultAnswer.JudgeStatusId      = 0;
                                randomExamResultAnswer.JudgeRemark        = string.Empty;
                                randomExamResultAnswer.ExamTime           = 0;
                                randomExamResultAnswer.Answer             = string.Empty;
                                randomExamResultAnswer.SelectAnswer       = nowSelectAnswer;
                                randomExamResultAnswer.StandardAnswer     = nowStandardAnswer;
                                randomExamResultAnswerBLL.AddExamResultAnswerCurrent(randomExamResultAnswer);
                            }

                            System.Threading.Thread.Sleep(10);
                            jsBlock = "<script>SetPorgressBar('正在生成试卷,请等待......','" + ((progressNum * 100) / ((double)ExamCount * str.Length * htSubjectItemIds.Count)).ToString("0.00") + "'); </script>";
                            Response.Write(jsBlock);
                            Response.Flush();

                            progressNum++;
                        }
                    }
                    else
                    {
                        SessionSet.PageMessage = "未找到记录!";
                    }
                }
            }

            bool isRefresh = true;

            try
            {
                objBll.UpdateHasPaper(Convert.ToInt32(strId), PrjPub.ServerNo, true);
            }
            catch
            {
                strSql =
                    @"  update Random_Exam_Computer_Server set  has_paper=1
                      where random_exam_id=" + strId + @" and Computer_server_no='" + PrjPub.ServerNo + @"'";
                dbCenter.ExecuteNonQuery(strSql);
                strSql = @"select count(*)  from Random_Exam_Computer_Server where has_paper=1 and  random_exam_id=" + strId;
                int count = Convert.ToInt32(dbCenter.RunSqlDataSet(strSql).Tables[0].Rows[0][0]);
                if (count > 0)
                {
                    strSql = @"update Random_Exam set has_paper=1 where random_exam_id=" + strId;
                    dbCenter.ExecuteNonQuery(strSql);
                }
                else
                {
                    strSql = @"update Random_Exam set has_paper=0 where random_exam_id=" + strId;
                    dbCenter.ExecuteNonQuery(strSql);
                }
            }


            //如果考试是随到随考,考试状态自动变为正在进行
            if (obj.StartMode == 1)
            {
                try
                {
                    objBll.UpdateIsStart(Convert.ToInt32(strId), PrjPub.ServerNo, 1);
                    isRefresh = false;
                }
                catch
                {
                    strSql =
                        @"  update Random_Exam_Computer_Server set  Is_Start=1
                      where random_exam_id=" + strId + @" and Computer_server_no='" + PrjPub.ServerNo + @"'";
                    dbCenter.ExecuteNonQuery(strSql);
                    strSql = @"select count(*)  from Random_Exam_Computer_Server where random_exam_id=" + strId;
                    int totalcount = Convert.ToInt32(dbCenter.RunSqlDataSet(strSql).Tables[0].Rows[0][0]);
                    strSql = @"select count(*)  from Random_Exam_Computer_Server where Is_Start=0 and  random_exam_id=" + strId;
                    int count = Convert.ToInt32(dbCenter.RunSqlDataSet(strSql).Tables[0].Rows[0][0]);
                    if (totalcount == count)
                    {
                        strSql = @"update Random_Exam set Is_Start=0 where random_exam_id=" + strId;
                        dbCenter.ExecuteNonQuery(strSql);
                    }
                    else
                    {
                        strSql = @"select count(*)  from Random_Exam_Computer_Server where Is_Start=1 and  random_exam_id=" + strId;
                        count  = Convert.ToInt32(dbCenter.RunSqlDataSet(strSql).Tables[0].Rows[0][0]);
                        if (count > 0)
                        {
                            strSql = @"update Random_Exam set Is_Start=1 where random_exam_id=" + strId;
                            dbCenter.ExecuteNonQuery(strSql);
                        }
                        else
                        {
                            strSql = @"select count(*)  from Random_Exam_Computer_Server where Is_Start=2 and  random_exam_id=" + strId;
                            count  = Convert.ToInt32(dbCenter.RunSqlDataSet(strSql).Tables[0].Rows[0][0]);
                            if (count == totalcount)
                            {
                                strSql = @"update Random_Exam set Is_Start=2 where random_exam_id=" + strId;
                                dbCenter.ExecuteNonQuery(strSql);
                            }
                        }
                    }
                }
            }
            else
            {
                isRefresh = false;
            }

            if (isRefresh)
            {
                objBll.RandomExamRefresh();
            }

            SystemLogBLL objLogBll = new SystemLogBLL();

            objLogBll.WriteLog("“" + obj.ExamName + "”生成所有考试试卷");

            Response.Write("<script>top.returnValue='true';top.close();</script>");
        }
        public void FillPaper()
        {
            RandomExamItemBLL randomItemBLL = new RandomExamItemBLL();
            OracleAccess      db            = new OracleAccess();

            IList <RandomExamItem> PaperItems = new List <RandomExamItem>();

            PaperItems = randomItemBLL.GetItemsCurrentCheck();

            string    strSql = "select * from System_Exam where System_Exam_ID=1";
            DataTable dt     = db.RunSqlDataSet(strSql).Tables[0];

            int examNumber;

            if (dt.Rows.Count > 0)
            {
                examNumber = Convert.ToInt32(dt.Rows[0]["Exam_Number"]);
            }
            else
            {
                examNumber = 10;
            }

            int totalCount  = examNumber;
            int otherCount  = totalCount / 4;
            int singleCount = totalCount - otherCount * 3;

            int m = 4;

            if (otherCount == 0)
            {
                m = 1;
            }

            for (int i = 0; i < m; i++)
            {
                int    itemCount = 0;
                int    b = 0, e = 0;
                string typeName = string.Empty;

                if (i == 0)
                {
                    itemCount = singleCount;
                    typeName  = "第一大题:单选";
                    b         = 0;
                    e         = singleCount;
                }
                else if (i == 1)
                {
                    itemCount = otherCount;
                    typeName  = "第二大题:多选";
                    b         = singleCount;
                    e         = singleCount + otherCount;
                }
                else if (i == 2)
                {
                    itemCount = otherCount;
                    typeName  = "第三大题:判断";
                    b         = singleCount + otherCount;
                    e         = singleCount + otherCount * 2;
                }
                else if (i == 3)
                {
                    itemCount = otherCount;
                    typeName  = "第四大题:综合选择题";
                    b         = singleCount + otherCount * 2;
                    e         = singleCount + otherCount * 3;
                }

                Response.Write("<br>");
                Response.Write("<span class='StudentLeftInfo'><b> " + typeName + "</b></span>");
                Response.Write("<br>");

                if (PaperItems != null)
                {
                    Response.Write("<table width='100%'  border='1' style='background-color:#ffffff'>");
                    int z     = 1;
                    int tempK = 0;
                    int count = 1;
                    for (int j = b; j < e; j++)
                    {
                        if (j >= PaperItems.Count)
                        {
                            continue;
                        }

                        RandomExamItem paperItem = PaperItems[j];
                        int            k         = j + 1 - b;


                        if (paperItem.TypeId != PrjPub.ITEMTYPE_FILLBLANKDETAIL &&
                            paperItem.TypeId != PrjPub.ITEMTYPE_FILLBLANK)
                        {
                            z = 1;

                            if (k % 5 == 1)
                            {
                                Response.Write("</tr >");
                                Response.Write("<tr><td class='StudentTableInfo' id='Item" + i + j + "' >"
                                               + "<a href='CheckAttendExamNew.aspx?employeeID=" +
                                               Request.QueryString.Get("employeeID")
                                               + "#Test" + i + j + "' target='ifExamInfo' style='cursor: hand;'><b>" + k +
                                               "</b></a></td>");
                            }
                            else
                            {
                                Response.Write("<td class='StudentTableInfo' id='Item" + i + j + "' >"
                                               + "<a href='CheckAttendExamNew.aspx?employeeID=" +
                                               Request.QueryString.Get("employeeID")
                                               + "#Test" + i + j + "' target='ifExamInfo' style='cursor: hand;'><b>" + k +
                                               "</b></a></td>");
                            }
                        }
                        else
                        {
                            if (paperItem.TypeId == PrjPub.ITEMTYPE_FILLBLANK)
                            {
                                z = 1;
                                tempK++;

                                string str = "select * from Random_Exam_Item_" +
                                             DateTime.Today.Year + " where Random_Exam_ID=" + paperItem.RandomExamId
                                             + " and  Parent_Item_ID=" + paperItem.ItemId + " order by Item_Index";
                                DataSet ds = db.RunSqlDataSet(str);

                                foreach (DataRow dr in ds.Tables[0].Rows)
                                {
                                    if (count % 3 == 1)
                                    {
                                        Response.Write("</tr >");
                                        Response.Write("<tr><td class='StudentTableInfo' id='Item" + i + j + z + "' >"
                                                       + "<a href='CheckAttendExamNew.aspx?employeeID=" +
                                                       Request.QueryString.Get("employeeID")
                                                       + "#Test" + i + j + z +
                                                       "' target='ifExamInfo' style='cursor: hand;'><b>" +
                                                       tempK + "-(" + z + ")</b></a></td>");
                                    }
                                    else
                                    {
                                        Response.Write("<td class='StudentTableInfo' id='Item" + i + j + z + "' >"
                                                       + "<a href='CheckAttendExamNew.aspx?employeeID=" +
                                                       Request.QueryString.Get("employeeID")
                                                       + "#Test" + i + j + z +
                                                       "' target='ifExamInfo' style='cursor: hand;'><b>" +
                                                       tempK + "-(" + z + ")</b></a></td>");
                                    }

                                    z++;
                                    count++;
                                }
                            }
                        }
                    }

                    Response.Write("</tr >");
                    Response.Write("</table>");
                }
                else
                {
                    SessionSet.PageMessage = "未找到记录!";
                }
            }
        }
        protected void btnSave_Click(object sender, ImageClickEventArgs e)
        {
            string strId        = Request.QueryString.Get("id");
            string strMode      = ViewState["mode"].ToString();
            string strStartMode = ViewState["startmode"].ToString();

            if (ViewState["mode"].ToString() == "ReadOnly")
            {
                if (strStartMode == "Edit")
                {
                    //Response.Redirect("/RailExamBao/RandomExamOther/RandomExamStudent.aspx?startmode=Edit&mode=Edit&id=" + strId);
                    Response.Redirect("/RailExamBao/RandomExam/SelectEmployeeDetailNew.aspx?startmode=Edit&mode=Edit&id=" + strId);
                    return;
                }
                else
                {
                    Response.Redirect("/RailExamBao/RandomExam/SelectEmployeeDetailNew.aspx?startmode=" + strStartMode + "&mode=" + strMode + "&id=" + strId);
                    return;
                }
            }

            RandomExamStrategyBLL psbcBll = new RandomExamStrategyBLL();

            int Ncount = psbcBll.GetRandomExamStrategysByExamID(int.Parse(strId)).Count;

            if (Ncount == 0)
            {
                SessionSet.PageMessage = "请添加策略!";
                return;
            }

            RandomExamSubjectBLL  subjectBLL  = new RandomExamSubjectBLL();
            RandomExamStrategyBLL strategyBLL = new RandomExamStrategyBLL();
            ItemBLL           itemBLL         = new ItemBLL();
            RandomExamItemBLL randomItemBLL   = new RandomExamItemBLL();

            IList <RandomExamSubject> randomExamSubjects = subjectBLL.GetRandomExamSubjectByRandomExamId(int.Parse(strId));
            int ExamItemCounts = 0;

            for (int i = 0; i < randomExamSubjects.Count; i++)
            {
                int     nSubjectId      = randomExamSubjects[i].RandomExamSubjectId;
                decimal nTotalItemCount = randomExamSubjects[i].ItemCount;

                IList <RandomExamStrategy> strategys = strategyBLL.GetRandomExamStrategys(nSubjectId);
                int nItemCount = 0;
                for (int j = 0; j < strategys.Count; j++)
                {
                    nItemCount += strategys[j].ItemCount;
                }

                ExamItemCounts += nItemCount;
                if (nItemCount != nTotalItemCount)
                {
                    SessionSet.PageMessage = "大题设定的试题数和取题范围设定的总题数不相等,请重新设置!";
                    return;
                }
            }

            if (ExamItemCounts == 0)
            {
                SessionSet.PageMessage = "考试的总题数不能为0,请重新设置!";
                return;
            }

            //获取考试信息
            RandomExamBLL objBll = new RandomExamBLL();

            RailExam.Model.RandomExam obj = objBll.GetExam(Convert.ToInt32(strId));
            int year = obj.BeginTime.Year;

            //删除可能的取题范围
            randomItemBLL.DeleteItems(int.Parse(strId), year);

            Hashtable htItemID  = new Hashtable();
            Hashtable htChapter = new Hashtable();

            for (int i = 0; i < randomExamSubjects.Count; i++)
            {
                IList <RailExam.Model.Item> itemList = new List <RailExam.Model.Item>();
                int     nSubjectId = randomExamSubjects[i].RandomExamSubjectId;
                decimal nUnitScore = randomExamSubjects[i].UnitScore;

                IList <RandomExamStrategy> strategys = strategyBLL.GetRandomExamStrategys(nSubjectId);
                for (int k = 0; k < strategys.Count; k++)
                {
                    //策略
                    int    nChapterId        = strategys[k].RangeId;
                    int    nRangeType        = strategys[k].RangeType;
                    int    typeId            = strategys[k].ItemTypeId;
                    int    StrategyId        = strategys[k].RandomExamStrategyId;
                    int    strDiffId         = strategys[k].ItemDifficultyID;
                    int    strMaxDiffId      = strategys[k].MaxItemDifficultyID;
                    string excludesChapterID = strategys[k].ExcludeChapterId;

                    IList <RailExam.Model.Item> itemListTemp = new List <RailExam.Model.Item>();
                    itemListTemp = itemBLL.GetItemsByStrategyNew(nRangeType, strDiffId, strMaxDiffId, nChapterId, typeId, excludesChapterID);

                    if (itemListTemp.Count < strategys[k].ItemCount)
                    {
                        SessionSet.PageMessage = "大题" + (i + 1).ToString() + "在设定的取题范围内的试题量不够,请重新设置取题范围!";
                        return;
                    }

                    for (int m = 0; m < itemListTemp.Count; m++)
                    {
                        itemListTemp[m].StrategyId = StrategyId;
                        if (itemListTemp[m].StatusId == 1)
                        {
                            if (htChapter.ContainsKey(itemListTemp[m].ChapterId))
                            {
                                ArrayList objList = (ArrayList)htChapter[itemListTemp[m].ChapterId];

                                if (objList.IndexOf(itemListTemp[m].KeyWord) < 0)
                                {
                                    itemList.Add(itemListTemp[m]);
                                    if (itemListTemp[m].KeyWord != "" && itemListTemp[m].KeyWord != null)
                                    {
                                        objList.Add(itemListTemp[m].KeyWord);
                                    }
                                }
                            }
                            else
                            {
                                ArrayList objList = new ArrayList();
                                if (itemListTemp[m].KeyWord != "" && itemListTemp[m].KeyWord != null)
                                {
                                    objList.Add(itemListTemp[m].KeyWord);
                                }

                                itemList.Add(itemListTemp[m]);

                                htChapter.Add(itemListTemp[m].ChapterId, objList);
                            }
                        }
                    }
                }

                if (itemList.Count < randomExamSubjects[i].ItemCount)
                {
                    SessionSet.PageMessage = "大题" + (i + 1).ToString() + "在设定的取题范围内符合要求的试题量不够,请重新设置取题范围!";
                    return;
                }

                IList <RandomExamItem> randomExamItems = new List <RandomExamItem>();

                int n = 0;
                foreach (RailExam.Model.Item item in itemList)
                {
                    if (string.IsNullOrEmpty(item.StandardAnswer) && (item.TypeId == PrjPub.ITEMTYPE_SINGLECHOOSE || item.TypeId == PrjPub.ITEMTYPE_MULTICHOOSE || item.TypeId == PrjPub.ITEMTYPE_JUDGE))
                    {
                        n = n + 1;
                        break;
                    }
                    if (!htItemID.ContainsKey(item.ItemId))
                    {
                        htItemID.Add(item.ItemId, item.ItemId);
                    }
                    else
                    {
                        continue;
                    }
                    RandomExamItem paperItem = new RandomExamItem();
                    paperItem.SubjectId      = nSubjectId;
                    paperItem.StrategyId     = item.StrategyId;
                    paperItem.RandomExamId   = int.Parse(strId);
                    paperItem.AnswerCount    = item.AnswerCount;
                    paperItem.BookId         = item.BookId;
                    paperItem.CategoryId     = item.CategoryId;
                    paperItem.ChapterId      = item.ChapterId;
                    paperItem.CompleteTime   = item.CompleteTime;
                    paperItem.Content        = item.Content;
                    paperItem.CreatePerson   = item.CreatePerson;
                    paperItem.CreateTime     = item.CreateTime;
                    paperItem.Description    = item.Description;
                    paperItem.DifficultyId   = item.DifficultyId;
                    paperItem.ItemId         = item.ItemId;
                    paperItem.Memo           = item.Memo;
                    paperItem.OrganizationId = item.OrganizationId;
                    paperItem.OutDateDate    = item.OutDateDate;
                    paperItem.Score          = nUnitScore;
                    paperItem.SelectAnswer   = item.SelectAnswer;
                    paperItem.Source         = item.Source;
                    paperItem.StandardAnswer = item.StandardAnswer;
                    paperItem.StatusId       = item.StatusId;
                    paperItem.TypeId         = item.TypeId;
                    paperItem.UsedCount      = item.UsedCount;
                    paperItem.Version        = item.Version;
                    randomExamItems.Add(paperItem);
                }

                if (n == 1)
                {
                    SessionSet.PageMessage = "大题" + (i + 1).ToString() + "有无标准答案的试题,请重新设置取题范围!";
                    return;
                }

                if (randomExamItems.Count > 0)
                {
                    randomItemBLL.AddItem(randomExamItems, year);
                }
            }

            /*
             * Hashtable hashTableItemIds = new Hashtable();
             * for (int i = 0; i < randomExamSubjects.Count; i++)
             * {
             *      int nSubjectId = randomExamSubjects[i].RandomExamSubjectId;
             *      //int nItemCount = randomExamSubjects[i].ItemCount;
             *
             *      IList<RandomExamStrategy> strategys = strategyBLL.GetRandomExamStrategys(nSubjectId);
             *      for (int j = 0; j < strategys.Count; j++)
             *      {
             *              int nStrategyId = strategys[j].RandomExamStrategyId;
             *              int nItemCount = strategys[j].ItemCount;
             *
             *              IList<RandomExamItem> itemList = randomItemBLL.GetItemsByStrategyId(nStrategyId, year);
             *              Random ObjRandom = new Random();
             *              Hashtable hashTable = new Hashtable();
             *              Hashtable hashTableCount = new Hashtable();
             *              while (hashTable.Count < nItemCount)
             *              {
             *                      int k = ObjRandom.Next(itemList.Count);
             *                      hashTableCount[k] = k;
             *                      int itemID = itemList[k].ItemId;
             *                      if (!hashTableItemIds.ContainsKey(itemID))
             *                      {
             *                              hashTable[itemID] = itemID;
             *                              hashTableItemIds[itemID] = itemID;
             *                      }
             *
             *                      if (hashTableCount.Count == itemList.Count && hashTable.Count < nItemCount)
             *                      {
             *                              SessionSet.PageMessage = "随机考试在设定的取题范围内的试题量不够,请重新设置取题范围!";
             *                              return;
             *                      }
             *              }
             *      }
             * }*/
            Response.Redirect("/RailExamBao/RandomExam/SelectEmployeeDetailNew.aspx?startmode=" + strStartMode + "&mode=" + strMode + "&id=" + strId);
        }
        private void GetPaperAfter()
        {
            // 根据 ProgressBar.htm 显示进度条界面
            string       templateFileName = Path.Combine(Server.MapPath("."), "ProgressBar.htm");
            StreamReader reader           = new StreamReader(@templateFileName, System.Text.Encoding.GetEncoding("gb2312"));
            string       html             = reader.ReadToEnd();

            reader.Close();
            Response.Write(html);
            Response.Flush();
            System.Threading.Thread.Sleep(200);

            ViewState["BeginTime"] = DateTime.Now.ToString();
            string strId = Request.QueryString.Get("RandomExamID");

            //获取当前考试的生成试卷的状态和次数
            RandomExamBLL objBll = new RandomExamBLL();

            RailExam.Model.RandomExam obj = objBll.GetExam(Convert.ToInt32(strId));

            int year      = obj.BeginTime.Year;
            int ExamCount = obj.MaxExamTimes;

            System.Threading.Thread.Sleep(10);
            string jsBlock = "<script>SetPorgressBar('正在计算生成试卷数量,请等待......','" + ((1 * 100) / ((double)1) + "'); </script>");

            Response.Write(jsBlock);
            Response.Flush();

            if (!PrjPub.IsServerCenter)
            {
                RandomExamArrangeBLL objArrangeBll = new RandomExamArrangeBLL();
                objArrangeBll.RefreshRandomExamArrange();
            }

            //RandomExamArrangeBLL eaBll = new RandomExamArrangeBLL();
            //IList<RailExam.Model.RandomExamArrange> ExamArranges = eaBll.GetRandomExamArranges(int.Parse(strId));
            //string strChooseID = "";
            //if (ExamArranges.Count > 0)
            //{
            //    strChooseID = ExamArranges[0].UserIds;
            //}
            //else
            //{
            //    strChooseID = "";
            //}

            //RandomExamResultCurrentBLL objResultCurrentBll = new RandomExamResultCurrentBLL();
            //IList<RandomExamResultCurrent> examResults = objResultCurrentBll.GetRandomExamResultInfo(Convert.ToInt32(strId));
            //for (int i = 0; i < examResults.Count; i++)
            //{
            //    strChooseID = ("," + strChooseID + ",").Replace("," + examResults[i].ExamineeId + ",", ",");
            //}

            //strChooseID = strChooseID.TrimStart(',').TrimEnd(',');

            string strChooseID = Request.QueryString.Get("addIds");

            if (strChooseID == string.Empty)
            {
                return;
            }

            string[] str = strChooseID.Split('|');

            System.Threading.Thread.Sleep(10);
            jsBlock = "<script>SetPorgressBar('正在计算生成试卷数量,请等待......','" + ((2 * 100) / ((double)2) + "'); </script>");
            Response.Write(jsBlock);
            Response.Flush();

            OracleAccess db = new OracleAccess();
            string       strSql;

            RandomExamResultAnswerCurrentBLL randomExamResultAnswerBLL = new RandomExamResultAnswerCurrentBLL();
            //定义全局答卷对象List
            IList <RandomExamResultAnswerCurrent> randomExamResultAnswersCurrentAll = new List <RandomExamResultAnswerCurrent>();
            //定义一个考生一次答卷对象List
            IList <RandomExamResultAnswerCurrent> randomExamResultAnswers = null;

            System.Threading.Thread.Sleep(200);
            jsBlock = string.Empty;
            int progressNum = 1;

            for (int n = 1; n <= ExamCount; n++)
            {
                for (int m = 0; m < str.Length; m++)
                {
                    RandomExamResultCurrentBLL randomExamResultBLL = new RandomExamResultCurrentBLL();
                    RandomExamResultCurrent    randomExamResult    = new RandomExamResultCurrent();

                    randomExamResult.RandomExamId    = int.Parse(strId);
                    randomExamResult.AutoScore       = 0;
                    randomExamResult.BeginDateTime   = DateTime.Parse(ViewState["BeginTime"].ToString());
                    randomExamResult.CurrentDateTime = DateTime.Parse(ViewState["BeginTime"].ToString());
                    randomExamResult.ExamTime        = 0;
                    randomExamResult.EndDateTime     = DateTime.Parse(ViewState["BeginTime"].ToString());
                    randomExamResult.Score           = 0;
                    randomExamResult.OrganizationId  = int.Parse(ConfigurationManager.AppSettings["StationID"]);
                    randomExamResult.Memo            = "";
                    randomExamResult.StatusId        = 0;
                    randomExamResult.AutoScore       = 0;
                    randomExamResult.CorrectRate     = 0;
                    randomExamResult.ExamineeId      = int.Parse(str[m]);
                    randomExamResult.ExamSeqNo       = n;

                    int nRandomExamResultPK = randomExamResultBLL.AddRandomExamResultCurrent(randomExamResult);
                    ViewState["RandomExamResultPK"] = nRandomExamResultPK;

                    strSql = "select a.* from Random_Exam_Arrange_Detail a "
                             + " where ','||User_Ids||',' like '%," + str[m] + ",%' "
                             + " and Random_Exam_ID=" + strId;
                    DataRow dr = db.RunSqlDataSet(strSql).Tables[0].Rows[0];


                    //strSql = "insert into Random_Exam_Result_Detail(Random_Exam_Result_Detail_ID,"
                    //         + "Random_Exam_Result_ID,Random_Exam_ID,Employee_ID,Computer_Room_SEAT,Computer_Room_ID) "
                    //         + "values(Random_Exam_Result_Detail_SEQ.NextVal,"
                    //         + nRandomExamResultPK + ","
                    //         + randomExamResult.RandomExamId + ","
                    //         + randomExamResult.ExamineeId + ","
                    //         + "0," + dr["Computer_Room_ID"] + ") ";
                    //db.ExecuteNonQuery(strSql);


                    strSql = "insert into Random_Exam_Result_Detail_Temp(Random_Exam_Result_Detail_ID,"
                             + "Random_Exam_Result_ID,Random_Exam_ID,Employee_ID,Computer_Room_SEAT,Computer_Room_ID,Is_Remove) "
                             + "values(Random_Exam_Result_Detail_SEQ.NextVal,"
                             + nRandomExamResultPK + ","
                             + randomExamResult.RandomExamId + ","
                             + randomExamResult.ExamineeId + ","
                             + "0," + dr["Computer_Room_ID"] + ",0) ";
                    db.ExecuteNonQuery(strSql);

                    RandomExamItemBLL     randomItemBLL = new RandomExamItemBLL();
                    RandomExamSubjectBLL  subjectBLL    = new RandomExamSubjectBLL();
                    RandomExamStrategyBLL strategyBLL   = new RandomExamStrategyBLL();

                    IList <RandomExamSubject> randomExamSubjects =
                        subjectBLL.GetRandomExamSubjectByRandomExamId(int.Parse(strId));

                    if (randomExamSubjects != null)
                    {
                        Hashtable hashTableItemIds = new Hashtable();
                        Hashtable htSubjectItemIds = new Hashtable();
                        for (int i = 0; i < randomExamSubjects.Count; i++)
                        {
                            RandomExamSubject paperSubject = randomExamSubjects[i];
                            int nSubjectId = paperSubject.RandomExamSubjectId;
                            //  int nItemCount = paperSubject.ItemCount;

                            IList <RandomExamStrategy> strategys = strategyBLL.GetRandomExamStrategys(nSubjectId);
                            for (int j = 0; j < strategys.Count; j++)
                            {
                                int nStrategyId = strategys[j].RandomExamStrategyId;
                                int nItemCount  = strategys[j].ItemCount;
                                IList <RandomExamItem> itemList = randomItemBLL.GetItemsByStrategyId(nStrategyId, year);

                                // IList<RandomExamItem> itemList = randomItemBLL.GetItemsBySubjectId(nSubjectId);

                                Random    ObjRandom      = new Random();
                                Hashtable hashTable      = new Hashtable();
                                Hashtable hashTableCount = new Hashtable();
                                int       index          = 0;
                                while (hashTable.Count < nItemCount)
                                {
                                    int k = ObjRandom.Next(itemList.Count);
                                    hashTableCount[index] = k;
                                    index = index + 1;
                                    int itemID     = itemList[k].ItemId;
                                    int examItemID = itemList[k].RandomExamItemId;
                                    if (!hashTableItemIds.ContainsKey(itemID))
                                    {
                                        hashTable[examItemID]        = examItemID;
                                        hashTableItemIds[itemID]     = itemID;
                                        htSubjectItemIds[examItemID] = examItemID;
                                    }
                                    //if (hashTableCount.Count == itemList.Count && hashTable.Count < nItemCount)
                                    //{
                                    //    SessionSet.PageMessage = "随机考试在设定的取题范围内的试题量不够,请重新设置取题范围!";
                                    //    return;
                                    //}
                                }
                            }
                        }
                        randomExamResultAnswers = new List <RandomExamResultAnswerCurrent>();
                        foreach (int key in htSubjectItemIds.Keys)
                        {
                            string strItemId = htSubjectItemIds[key].ToString();

                            RandomExamItem item = randomItemBLL.GetRandomExamItem(Convert.ToInt32(strItemId), year);

                            string nowSelectAnswer   = string.Empty;
                            string nowStandardAnswer = string.Empty;
                            if (item.TypeId != PrjPub.ITEMTYPE_FILLBLANK)
                            {
                                Pub.GetNowAnswer(item, out nowSelectAnswer, out nowStandardAnswer);
                            }

                            RandomExamResultAnswerCurrent randomExamResultAnswer = new RandomExamResultAnswerCurrent();
                            randomExamResultAnswer.RandomExamResultId = nRandomExamResultPK;
                            randomExamResultAnswer.RandomExamItemId   = int.Parse(strItemId);
                            randomExamResultAnswer.JudgeStatusId      = 0;
                            randomExamResultAnswer.JudgeRemark        = string.Empty;
                            randomExamResultAnswer.ExamTime           = 0;
                            randomExamResultAnswer.Answer             = string.Empty;
                            randomExamResultAnswer.SelectAnswer       = nowSelectAnswer;
                            randomExamResultAnswer.StandardAnswer     = nowStandardAnswer;
                            randomExamResultAnswerBLL.AddExamResultAnswerCurrent(randomExamResultAnswer);

                            //完型填空子题
                            IList <RandomExamItem> randomExamItems = randomItemBLL.GetItemsByParentItemID(item.ItemId, obj.RandomExamId, year);
                            foreach (RandomExamItem randomExamItem in randomExamItems)
                            {
                                Pub.GetNowAnswer(randomExamItem, out nowSelectAnswer, out nowStandardAnswer);

                                randomExamResultAnswer = new RandomExamResultAnswerCurrent();
                                randomExamResultAnswer.RandomExamResultId = nRandomExamResultPK;
                                randomExamResultAnswer.RandomExamItemId   = randomExamItem.RandomExamItemId;
                                randomExamResultAnswer.JudgeStatusId      = 0;
                                randomExamResultAnswer.JudgeRemark        = string.Empty;
                                randomExamResultAnswer.ExamTime           = 0;
                                randomExamResultAnswer.Answer             = string.Empty;
                                randomExamResultAnswer.SelectAnswer       = nowSelectAnswer;
                                randomExamResultAnswer.StandardAnswer     = nowStandardAnswer;
                                randomExamResultAnswerBLL.AddExamResultAnswerCurrent(randomExamResultAnswer);
                            }

                            System.Threading.Thread.Sleep(10);
                            jsBlock = "<script>SetPorgressBar('正在生成试卷,请等待......','" + ((progressNum * 100) / ((double)ExamCount * str.Length * htSubjectItemIds.Count)).ToString("0.00") + "'); </script>";
                            Response.Write(jsBlock);
                            Response.Flush();

                            progressNum++;
                        }
                    }
                    else
                    {
                        SessionSet.PageMessage = "未找到记录!";
                    }
                }
            }

            //临时添加考生无需更改考试状态,因为考试状态肯定是正在进行和生成试卷
            //objBll.UpdateHasPaper(Convert.ToInt32(strId), PrjPub.ServerNo, true);
            ////如果考试是随到随考,考试状态自动变为正在进行
            //if (obj.StartMode == 1)
            //{
            //    objBll.UpdateIsStart(Convert.ToInt32(strId), PrjPub.ServerNo, 1);
            //}

            SystemLogBLL objLogBll = new SystemLogBLL();

            objLogBll.WriteLog("“" + obj.ExamName + "”生成新增考生试卷");

            Response.Write("<script>top.returnValue='true';top.close();</script>");
        }
예제 #8
0
        protected void btnSave_Click(object sender, ImageClickEventArgs e)
        {
            string strId        = Request.QueryString.Get("id");
            string strMode      = ViewState["mode"].ToString();
            string strStartMode = ViewState["startmode"].ToString();

            if (ViewState["mode"].ToString() == "ReadOnly")
            {
                //if (strStartMode == "Edit")
                //{
                //    Response.Redirect("SelectEmployeeDetailNew.aspx?startmode=Edit&mode=Edit&id=" + strId);
                //    return;
                //}
                //else
                //{
                //    Response.Redirect("SelectEmployeeDetailNew.aspx?startmode=" + strStartMode + "&mode=" + strMode + "&id=" + strId);
                //    return;
                //}

                Response.Redirect("SelectEmployeeDetailNew.aspx?startmode=" + strStartMode + "&mode=" + strMode + "&id=" + strId);
                return;
            }

            if (Pub.HasPaper(Convert.ToInt32(strId)))
            {
                Response.Write("<script>alert('该考试已生成试卷,不能被编辑!');window.close();</script>");
                return;
            }

            RandomExamStrategyBLL psbcBll = new RandomExamStrategyBLL();

            int Ncount = psbcBll.GetRandomExamStrategysByExamID(int.Parse(strId)).Count;

            if (Ncount == 0)
            {
                SessionSet.PageMessage = "请添加策略!";
                return;
            }

            RandomExamSubjectBLL  subjectBLL  = new RandomExamSubjectBLL();
            RandomExamStrategyBLL strategyBLL = new RandomExamStrategyBLL();
            ItemBLL           itemBLL         = new ItemBLL();
            RandomExamItemBLL randomItemBLL   = new RandomExamItemBLL();


            IList <RandomExamSubject> randomExamSubjects = subjectBLL.GetRandomExamSubjectByRandomExamId(int.Parse(strId));
            int ExamItemCounts = 0;

            for (int i = 0; i < randomExamSubjects.Count; i++)
            {
                int     nSubjectId      = randomExamSubjects[i].RandomExamSubjectId;
                decimal nTotalItemCount = randomExamSubjects[i].ItemCount;

                IList <RandomExamStrategy> strategys = strategyBLL.GetRandomExamStrategys(nSubjectId);
                int nItemCount = 0;
                for (int j = 0; j < strategys.Count; j++)
                {
                    nItemCount += strategys[j].ItemCount;  //改动2011-10-17
                }

                ExamItemCounts += nItemCount;
                if (nItemCount != nTotalItemCount)
                {
                    SessionSet.PageMessage = "大题设定的试题数和取题范围设定的总题数不相等,请重新设置!";
                    return;
                }
            }

            if (ExamItemCounts == 0)
            {
                SessionSet.PageMessage = "考试的总题数不能为0,请重新设置!";
                return;
            }

            RandomExamBLL objBll = new RandomExamBLL();

            RailExam.Model.RandomExam obj = objBll.GetExam(Convert.ToInt32(strId));
            int year = obj.BeginTime.Year;

            randomItemBLL.DeleteItems(int.Parse(strId), year);

            Hashtable htItemID = new Hashtable();
            int       count    = 0;

            for (int i = 0; i < randomExamSubjects.Count; i++)
            {
                IList <RailExam.Model.Item> itemList = new List <RailExam.Model.Item>();
                int     nSubjectId = randomExamSubjects[i].RandomExamSubjectId;
                decimal nUnitScore = randomExamSubjects[i].UnitScore;

                IList <RandomExamStrategy> strategys = strategyBLL.GetRandomExamStrategys(nSubjectId);
                for (int k = 0; k < strategys.Count; k++)
                {
                    //策略
                    int    nChapterId    = strategys[k].RangeId;
                    int    nRangeType    = strategys[k].RangeType;
                    int    typeId        = strategys[k].ItemTypeId;
                    int    StrategyId    = strategys[k].RandomExamStrategyId;
                    string strExcludeIDs = strategys[k].ExcludeChapterId;
                    int    ndr           = 0;
                    IList <RailExam.Model.Item> itemListTemp = new List <RailExam.Model.Item>();
                    itemListTemp = itemBLL.GetItemsByStrategy(nRangeType, ndr, nChapterId, typeId, strExcludeIDs, StrategyId);

                    if (itemListTemp.Count < strategys[k].ItemCount)
                    {
                        SessionSet.PageMessage = "大题" + (i + 1).ToString() + "在设定的取题范围内的试题量不够,请重新设置取题范围!";
                        return;
                    }

                    Hashtable htChapter = new Hashtable();
                    for (int m = 0; m < itemListTemp.Count; m++)
                    {
                        itemListTemp[m].StrategyId = StrategyId;
                        if (itemListTemp[m].StatusId == 1)
                        {
                            if (htChapter.ContainsKey(itemListTemp[m].ChapterId))
                            {
                                ArrayList objList = (ArrayList)htChapter[itemListTemp[m].ChapterId];

                                if (objList.IndexOf(itemListTemp[m].MotherCode) < 0)
                                {
                                    itemList.Add(itemListTemp[m]);
                                    if (itemListTemp[m].MotherCode != "" && itemListTemp[m].MotherCode != null)
                                    {
                                        objList.Add(itemListTemp[m].MotherCode);
                                    }
                                }
                            }
                            else
                            {
                                ArrayList objList = new ArrayList();
                                if (itemListTemp[m].MotherCode != "" && itemListTemp[m].MotherCode != null)
                                {
                                    objList.Add(itemListTemp[m].MotherCode);
                                }

                                itemList.Add(itemListTemp[m]);

                                htChapter.Add(itemListTemp[m].ChapterId, objList);
                            }
                        }
                    }
                }

                if (itemList.Count < randomExamSubjects[i].ItemCount)
                {
                    SessionSet.PageMessage = "大题" + (i + 1).ToString() + "在设定的取题范围内的试题量不够,请重新设置取题范围!";
                    return;
                }

                IList <RandomExamItem> randomExamItems = new List <RandomExamItem>();

                int n = 0;
                foreach (RailExam.Model.Item item in itemList)
                {
                    if (string.IsNullOrEmpty(item.StandardAnswer) && (item.TypeId == PrjPub.ITEMTYPE_SINGLECHOOSE || item.TypeId == PrjPub.ITEMTYPE_MULTICHOOSE || item.TypeId == PrjPub.ITEMTYPE_JUDGE))
                    {
                        n = n + 1;
                        break;
                    }
                    if (!htItemID.ContainsKey(item.ItemId))
                    {
                        htItemID.Add(item.ItemId, item.ItemId);
                    }
                    else
                    {
                        count = count + 1;
                        break;
                    }

                    RandomExamItem paperItem = new RandomExamItem();
                    paperItem.SubjectId      = nSubjectId;
                    paperItem.StrategyId     = item.StrategyId;
                    paperItem.RandomExamId   = int.Parse(strId);
                    paperItem.AnswerCount    = item.AnswerCount;
                    paperItem.BookId         = item.BookId;
                    paperItem.CategoryId     = item.CategoryId;
                    paperItem.ChapterId      = item.ChapterId;
                    paperItem.CompleteTime   = item.CompleteTime;
                    paperItem.Content        = item.Content;
                    paperItem.CreatePerson   = item.CreatePerson;
                    paperItem.CreateTime     = item.CreateTime;
                    paperItem.Description    = item.Description;
                    paperItem.DifficultyId   = item.DifficultyId;
                    paperItem.ItemId         = item.ItemId;
                    paperItem.Memo           = item.Memo;
                    paperItem.OrganizationId = item.OrganizationId;
                    paperItem.OutDateDate    = item.OutDateDate;
                    paperItem.Score          = nUnitScore;
                    paperItem.SelectAnswer   = item.SelectAnswer;
                    paperItem.Source         = item.Source;
                    paperItem.StandardAnswer = item.StandardAnswer;
                    paperItem.StatusId       = item.StatusId;
                    paperItem.TypeId         = item.TypeId;
                    paperItem.UsedCount      = item.UsedCount;
                    paperItem.Version        = item.Version;
                    paperItem.ParentItemID   = 0;
                    paperItem.MotherCode     = item.MotherCode;
                    paperItem.ItemIndex      = item.ItemIndex;
                    randomExamItems.Add(paperItem);

                    //完型填空
                    if (item.TypeId == PrjPub.ITEMTYPE_FILLBLANK)
                    {
                        IList <RailExam.Model.Item> itemDetails = itemBLL.GetItemsByParentItemID(item.ItemId);

                        foreach (RailExam.Model.Item itemDetail in itemDetails)
                        {
                            paperItem                = new RandomExamItem();
                            paperItem.SubjectId      = nSubjectId;
                            paperItem.StrategyId     = itemDetail.StrategyId;
                            paperItem.RandomExamId   = int.Parse(strId);
                            paperItem.AnswerCount    = itemDetail.AnswerCount;
                            paperItem.BookId         = itemDetail.BookId;
                            paperItem.CategoryId     = itemDetail.CategoryId;
                            paperItem.ChapterId      = itemDetail.ChapterId;
                            paperItem.CompleteTime   = itemDetail.CompleteTime;
                            paperItem.Content        = itemDetail.Content;
                            paperItem.CreatePerson   = itemDetail.CreatePerson;
                            paperItem.CreateTime     = itemDetail.CreateTime;
                            paperItem.Description    = itemDetail.Description;
                            paperItem.DifficultyId   = itemDetail.DifficultyId;
                            paperItem.ItemId         = itemDetail.ItemId;
                            paperItem.Memo           = itemDetail.Memo;
                            paperItem.OrganizationId = itemDetail.OrganizationId;
                            paperItem.OutDateDate    = itemDetail.OutDateDate;
                            paperItem.Score          = Math.Round(nUnitScore / itemDetails.Count, 2);
                            paperItem.SelectAnswer   = itemDetail.SelectAnswer;
                            paperItem.Source         = itemDetail.Source;
                            paperItem.StandardAnswer = itemDetail.StandardAnswer;
                            paperItem.StatusId       = itemDetail.StatusId;
                            paperItem.TypeId         = itemDetail.TypeId;
                            paperItem.UsedCount      = itemDetail.UsedCount;
                            paperItem.Version        = itemDetail.Version;
                            paperItem.ParentItemID   = item.ItemId;
                            paperItem.MotherCode     = itemDetail.MotherCode;
                            paperItem.ItemIndex      = itemDetail.ItemIndex;
                            randomExamItems.Add(paperItem);
                        }
                    }
                }

                if (count == 1)
                {
                    SessionSet.PageMessage = "组卷策略不能重复,请重新设置取题范围!";
                    return;
                }

                if (n == 1)
                {
                    SessionSet.PageMessage = "大题" + (i + 1).ToString() + "有无标准答案的试题,请重新设置取题范围!";
                    return;
                }

                if (randomExamItems.Count > 0)
                {
                    randomItemBLL.AddItem(randomExamItems, year);
                }
            }

            Hashtable hashTableItemIds = new Hashtable();

            for (int i = 0; i < randomExamSubjects.Count; i++)
            {
                int nSubjectId = randomExamSubjects[i].RandomExamSubjectId;
                //int nItemCount = randomExamSubjects[i].ItemCount;

                IList <RandomExamStrategy> strategys = strategyBLL.GetRandomExamStrategys(nSubjectId);
                for (int j = 0; j < strategys.Count; j++)
                {
                    int nStrategyId = strategys[j].RandomExamStrategyId;
                    int nItemCount  = strategys[j].ItemCount;

                    IList <RandomExamItem> itemList = randomItemBLL.GetItemsByStrategyId(nStrategyId, year);
                    Random    ObjRandom             = new Random();
                    Hashtable hashTable             = new Hashtable();
                    Hashtable hashTableCount        = new Hashtable();
                    while (hashTable.Count < nItemCount)
                    {
                        int k = ObjRandom.Next(itemList.Count);
                        hashTableCount[k] = k;
                        int itemID = itemList[k].ItemId;
                        if (!hashTableItemIds.ContainsKey(itemID))
                        {
                            hashTable[itemID]        = itemID;
                            hashTableItemIds[itemID] = itemID;
                        }
                        if (hashTableCount.Count == itemList.Count && hashTable.Count < nItemCount)
                        {
                            SessionSet.PageMessage = "随机考试在设定的取题范围内的试题量不够,请重新设置取题范围!";
                            return;
                        }
                    }
                }
            }

            objBll.UpdateVersion(Convert.ToInt32(strId));

            if (obj.IsComputerExam)
            {
                Response.Redirect("SelectEmployeeDetailNew.aspx?startmode=" + strStartMode + "&mode=" + strMode + "&id=" + strId);
            }
            else
            {
                Response.Write("<script>top.window.opener.form1.Refresh.value='true';top.window.opener.form1.submit();top.window.close();</script>");
            }
        }
예제 #9
0
        public void FillPaper()
        {
            string strId = Request.QueryString.Get("id");

            RandomExamBLL randomExamBLL = new RandomExamBLL();

            RailExam.Model.RandomExam randomExam = randomExamBLL.GetExam(int.Parse(strId));
            ViewState["Year"] = randomExam.BeginTime.Year.ToString();

            RandomExamResultCurrentBLL objResultCurrentBll = new RandomExamResultCurrentBLL();

            RailExam.Model.RandomExamResultCurrent randomExamResult = objResultCurrentBll.GetNowRandomExamResultInfo(Convert.ToInt32(Request.QueryString.Get("employeeID")), Convert.ToInt32(strId));

            int RandomExamId       = Convert.ToInt32(strId);
            int randomExamResultId = randomExamResult.RandomExamResultId;

            RandomExamItemBLL         randomItemBLL      = new RandomExamItemBLL();
            RandomExamSubjectBLL      subjectBLL         = new RandomExamSubjectBLL();
            IList <RandomExamSubject> randomExamSubjects = subjectBLL.GetRandomExamSubjectByRandomExamId(RandomExamId);

            RandomExamResultAnswerCurrentBLL      randomExamResultAnswerBLL = new RandomExamResultAnswerCurrentBLL();
            IList <RandomExamResultAnswerCurrent> examResultAnswers         = new List <RandomExamResultAnswerCurrent>();

            examResultAnswers = randomExamResultAnswerBLL.GetExamResultAnswersCurrent(randomExamResultId);

            OracleAccess db = new OracleAccess();

            if (randomExamSubjects != null)
            {
                for (int i = 0; i < randomExamSubjects.Count; i++)
                {
                    RandomExamSubject      paperSubject = randomExamSubjects[i];
                    IList <RandomExamItem> PaperItems   = new List <RandomExamItem>();
                    PaperItems = randomItemBLL.GetItemsCurrent(paperSubject.RandomExamSubjectId, randomExamResultId, Convert.ToInt32(ViewState["Year"].ToString()));

                    Response.Write("<br>");
                    Response.Write("<span class='StudentLeftInfo'><b> 第" + GetNo(i) + "大题:" + paperSubject.SubjectName + "</b></span>");
                    Response.Write("<br>");

                    if (PaperItems != null)
                    {
                        Response.Write("<table width='100%'  border='1'>");
                        int z     = 1;
                        int tempK = 0;
                        int count = 1;
                        for (int j = 0; j < PaperItems.Count; j++)
                        {
                            RandomExamItem paperItem = PaperItems[j];
                            int            k         = j + 1;


                            if (paperItem.TypeId != PrjPub.ITEMTYPE_FILLBLANKDETAIL && paperItem.TypeId != PrjPub.ITEMTYPE_FILLBLANK)
                            {
                                z = 1;

                                if (k % 5 == 1)
                                {
                                    Response.Write("</tr >");
                                    Response.Write("<tr><td class='StudentTableInfo' id='Item" + i + j + "' >"
                                                   + "<a href='AttendExamNew.aspx?id=" + strId + "&employeeID=" + Request.QueryString.Get("employeeID")
                                                   + "#Test" + i + j + "' target='ifExamInfo' style='cursor: hand;'><b>" + k + "</b></a></td>");
                                }
                                else
                                {
                                    Response.Write("<td class='StudentTableInfo' id='Item" + i + j + "' >"
                                                   + "<a href='AttendExamNew.aspx?id=" + strId + "&employeeID=" + Request.QueryString.Get("employeeID")
                                                   + "#Test" + i + j + "' target='ifExamInfo' style='cursor: hand;'><b>" + k + "</b></a></td>");
                                }
                            }
                            else
                            {
                                if (paperItem.TypeId == PrjPub.ITEMTYPE_FILLBLANK)
                                {
                                    z = 1;
                                    tempK++;
                                }

                                if (count % 3 == 1)
                                {
                                    Response.Write("</tr >");
                                    Response.Write("<tr><td class='StudentTableInfo' id='Item" + i + j + "' >"
                                                   + "<a href='AttendExamNew.aspx?id=" + strId + "&employeeID=" + Request.QueryString.Get("employeeID")
                                                   + "#Test" + i + j + "' target='ifExamInfo' style='cursor: hand;'><b>" + tempK + "-(" + z + ")</b></a></td>");
                                }
                                else
                                {
                                    Response.Write("<td class='StudentTableInfo' id='Item" + i + j + "' >"
                                                   + "<a href='AttendExamNew.aspx?id=" + strId + "&employeeID=" + Request.QueryString.Get("employeeID")
                                                   + "#Test" + i + j + "' target='ifExamInfo' style='cursor: hand;'><b>" + tempK + "-(" + z + ")</b></a></td>");
                                }

                                z++;
                                count++;
                            }
                        }

                        Response.Write("</tr >");
                        Response.Write("</table>");
                    }
                }

                //ClientScript.RegisterStartupScript(GetType(), "StartStyle", "<script>StartStyle()</script>");
            }
            else
            {
                SessionSet.PageMessage = "未找到记录!";
            }
        }
        protected void FillPaper()
        {
            OracleAccess           db            = new OracleAccess();
            RandomExamItemBLL      randomItemBLL = new RandomExamItemBLL();
            IList <RandomExamItem> PaperItems    = randomItemBLL.GetItemsCurrentCheck();

            int totalCount  = Convert.ToInt32(ViewState["ExamNumber"]);
            int otherCount  = totalCount / 4;
            int singleCount = totalCount - otherCount * 3;

            int m = 4;

            if (otherCount == 0)
            {
                m = 1;
            }

            for (int i = 0; i < m; i++)
            {
                int    itemCount = 0;
                int    b = 0, e = 0;
                string typeName = string.Empty;

                if (i == 0)
                {
                    itemCount = singleCount;
                    typeName  = "单选";
                    b         = 0;
                    e         = singleCount;
                }
                else if (i == 1)
                {
                    itemCount = otherCount;
                    typeName  = "多选";
                    b         = singleCount;
                    e         = singleCount + otherCount;
                }
                else if (i == 2)
                {
                    itemCount = otherCount;
                    typeName  = "判断";
                    b         = singleCount + otherCount;
                    e         = singleCount + otherCount * 2;
                }
                else if (i == 3)
                {
                    itemCount = otherCount;
                    typeName  = "综合选择题";
                    b         = singleCount + otherCount * 2;
                    e         = singleCount + otherCount * 3;
                }

                Response.Write("<table width='95%' class='ExamContent'>");
                Response.Write(" <tr> <td class='ExamBigTitle'");
                if (i == 3)
                {
                    Response.Write(" colspan='3' ");
                }
                Response.Write(">" + GetNo(i) + "");
                Response.Write("、" + typeName + "");
                Response.Write("  (共" + itemCount + "题)</td></tr >");

                if (PaperItems != null)
                {
                    int z = 1;
                    int x = 1;
                    for (int j = b; j < e; j++)
                    {
                        if (j >= PaperItems.Count)
                        {
                            continue;
                        }
                        RandomExamItem paperItem = PaperItems[j];
                        int            k         = j + 1 - b;

                        if (paperItem.TypeId != PrjPub.ITEMTYPE_FILLBLANKDETAIL)
                        {
                            z = 1;

                            if (paperItem.TypeId == PrjPub.ITEMTYPE_FILLBLANK)
                            {
                                k = x;
                                x++;

                                Response.Write("<tr><td id='Item" + i + j + "' class='ExamItem' colspan='3'><a name='Test" + i + j + "' id='Test" + i + j + "'></a>&nbsp;&nbsp;&nbsp;" + k +
                                               ".&nbsp; " + paperItem.Content +
                                               "&nbsp;&nbsp; </td></tr >");
                            }
                            else
                            {
                                Response.Write("<tr><td id='Item" + i + j + "' class='ExamItem' colspan='3'><a name='Test" + i + j + "' id='Test" + i + j + "'></a>&nbsp;&nbsp;&nbsp;" + k +
                                               ".&nbsp; " + paperItem.Content +
                                               "&nbsp;&nbsp;"
                                               + "<a href='#Test" + i + j + "' id='Empty" + i + j + "' onclick='clickEmpty(this)'style='cursor: hand;' title='清空选择'>"
                                               + "<img src='../images/clear.png'  style='border:0'/></a>"
                                               + "</td></tr >");
                            }
                        }

                        // 组织用户答案



                        if (paperItem.TypeId == PrjPub.ITEMTYPE_MULTICHOOSE)   //多选
                        {
                            string[] strAnswer = paperItem.SelectAnswer.Split(new char[] { '|' });
                            for (int n = 0; n < strAnswer.Length; n++)
                            {
                                string strN  = intToString(n + 1);
                                string strij = "-" + paperItem.RandomExamItemId + "-" + i.ToString() + "-" + j.ToString() +
                                               "-" + n.ToString();
                                string strName = i.ToString() + j.ToString();


                                Response.Write(
                                    "<tr><td class='ExamItemAnswer' colspan='3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input onclick='CheckStyle(this)' type='checkbox' id='Answer" +
                                    strij + "' name='Answer" + strName + "'><label for='Answer" + strij + "'> " + strN + "." + strAnswer[n] +
                                    "</label></td></tr>");
                            }
                        }
                        else if (paperItem.TypeId == PrjPub.ITEMTYPE_SINGLECHOOSE || paperItem.TypeId == PrjPub.ITEMTYPE_JUDGE)    //单选
                        {
                            string[] strAnswer = paperItem.SelectAnswer.Split(new char[] { '|' });
                            for (int n = 0; n < strAnswer.Length; n++)
                            {
                                string strN  = intToString(n + 1);
                                string strij = "-" + paperItem.RandomExamItemId + "-" + i.ToString() + "-" + j.ToString() +
                                               "-" + n.ToString();
                                string strName = i.ToString() + j.ToString();

                                Response.Write(
                                    "<tr><td class='ExamItemAnswer' colspan='3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input onclick='CheckStyle(this)' type='Radio' id='RAnswer" +
                                    strij + "' name='RAnswer" + strName + "'> <label for='RAnswer" + strij + "' >" + strN + "." + strAnswer[n] +
                                    "</label></td></tr>");
                            }
                        }
                        else if (paperItem.TypeId == PrjPub.ITEMTYPE_FILLBLANK)
                        {
                            string str = "select * from Random_Exam_Item_" +
                                         DateTime.Today.Year + " where Random_Exam_ID=" + paperItem.RandomExamId
                                         + " and  Parent_Item_ID=" + paperItem.ItemId + " order by Item_Index";
                            DataSet ds = db.RunSqlDataSet(str);

                            foreach (DataRow dr in ds.Tables[0].Rows)
                            {
                                string[] strAnswer = dr["Select_Answer"].ToString().Split(new char[] { '|' });
                                for (int n = 0; n < strAnswer.Length; n++)
                                {
                                    string strN  = intToString(n + 1);
                                    string strij = "-" + paperItem.RandomExamItemId + "-" + i.ToString() + "-" + j.ToString() +
                                                   "-" + n.ToString() + "-" + z.ToString();
                                    string strName = i.ToString() + j.ToString() + z.ToString();

                                    if (n == 0)
                                    {
                                        int row = strAnswer.Length % 2 == 0 ? strAnswer.Length / 2 : strAnswer.Length / 2 + 1;
                                        Response.Write("<tr><td id='Item" + i + j + z + "' class='ExamItem' style='width:10%' RowSpan='" + row + "'><a name='Test" + i + j + z + "' id='Test" + i + j + z + "'></a>"
                                                       + "&nbsp;(" + z + ").&nbsp;"
                                                       + "<a href='#Test" + i + j + z + "' id='Empty" + i + j + z + "' onclick='clickEmpty(this)'style='cursor: hand;' title='清空选择'>"
                                                       + "<img src='../images/clear.png'  style='border:0'/></a>"
                                                       + "</td>");
                                    }

                                    if (n % 2 == 0 && n != 0)
                                    {
                                        Response.Write("<tr>");
                                    }

                                    Response.Write(
                                        "<td class='ExamItemAnswer'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input onclick='CheckStyle(this)' type='Radio' id='RAnswer" +
                                        strij + "' name='RAnswer" + strName + "'><label for='RAnswer" + strij + "'> " + strN + "." + strAnswer[n] +
                                        "</label></td>");

                                    if (n % 2 == 1)
                                    {
                                        Response.Write("</tr>");
                                    }
                                }
                                z++;
                            }
                        }
                    }
                }
                Response.Write("</table>");
            }
            Response.Write(" <div class='ExamButton'><input id='btnClose' class='button' name='btnSave' type='button' value='提交答卷'  onclick='SaveRecord()'/> </div><br><br><br><br><br><br>");
            ClientScript.RegisterStartupScript(GetType(), "StartStyle", "<script>StartStyle()</script>");
        }
예제 #11
0
        protected void FillPaper()
        {
            // QueryString id stands for EXAM_RESULT_ID
            string strId = Request.QueryString.Get("id");
            string orgid = Request.QueryString.Get("orgid");

            // Not pass id
            if (string.IsNullOrEmpty(strId))
            {
                SessionSet.PageMessage = "参数错误!";

                return;
            }

            RandomExamResultCurrentBLL randomExamResultBLL = new RandomExamResultCurrentBLL();
            RandomExamResultCurrent    randomExamResult    = new RandomExamResultCurrent();

            randomExamResult = randomExamResultBLL.GetRandomExamResult(int.Parse(strId));

            int RandomExamId       = randomExamResult.RandomExamId;
            int randomExamResultId = int.Parse(strId);

            RandomExamBLL objBll = new RandomExamBLL();
            int           year   = objBll.GetExam(RandomExamId).BeginTime.Year;

            RandomExamItemBLL                     randomItemBLL             = new RandomExamItemBLL();
            RandomExamSubjectBLL                  subjectBLL                = new RandomExamSubjectBLL();
            RandomExamResultAnswerCurrentBLL      randomExamResultAnswerBLL = new RandomExamResultAnswerCurrentBLL();
            IList <RandomExamSubject>             randomExamSubjects        = subjectBLL.GetRandomExamSubjectByRandomExamId(RandomExamId);
            IList <RandomExamResultAnswerCurrent> examResultAnswers         = new List <RandomExamResultAnswerCurrent>();

            examResultAnswers = randomExamResultAnswerBLL.GetExamResultAnswersCurrent(randomExamResultId);

            if (randomExamSubjects != null)
            {
                for (int i = 0; i < randomExamSubjects.Count; i++)
                {
                    RandomExamSubject      paperSubject = randomExamSubjects[i];
                    IList <RandomExamItem> PaperItems   = new List <RandomExamItem>();
                    PaperItems = randomItemBLL.GetItemsCurrent(paperSubject.RandomExamSubjectId, randomExamResultId, year);

                    Response.Write("<table width='100%'>");
                    Response.Write(" <tr > <td class='ExamBigTitle' >");
                    Response.Write(" " + GetNo(i) + "");
                    Response.Write(".&nbsp;" + paperSubject.SubjectName + "");
                    Response.Write("  (共" + paperSubject.ItemCount + "题,共" + System.String.Format("{0:0.##}", paperSubject.ItemCount * paperSubject.UnitScore) + "分)</td></tr >");

                    if (PaperItems != null)
                    {
                        for (int j = 0; j < PaperItems.Count; j++)
                        {
                            RandomExamItem paperItem = PaperItems[j];
                            int            k         = j + 1;

                            Response.Write("<tr > <td class='ExamResultItem'>&nbsp;&nbsp;&nbsp;"
                                           + k + ".&nbsp; " + paperItem.Content + "&nbsp;&nbsp;(" + System.String.Format("{0:0.##}", paperSubject.UnitScore) +
                                           "分)</td></tr >");

                            // 组织用户答案
                            RandomExamResultAnswerCurrent theExamResultAnswer = null;
                            string[] strUserAnswers = new string[0];
                            string   strUserAnswer  = string.Empty;

                            foreach (RandomExamResultAnswerCurrent resultAnswer in examResultAnswers)
                            {
                                if (resultAnswer.RandomExamItemId == paperItem.RandomExamItemId)
                                {
                                    theExamResultAnswer = resultAnswer;
                                    break;
                                }
                            }

                            // 若子表无记录,结束页面输出


                            if (theExamResultAnswer == null)
                            {
                                SessionSet.PageMessage = "数据错误!";
                            }

                            // 否则组织考生答案
                            if (theExamResultAnswer.Answer != null || theExamResultAnswer.Answer == string.Empty)
                            {
                                strUserAnswers = theExamResultAnswer.Answer.Split(new char[] { '|' });
                            }
                            for (int n = 0; n < strUserAnswers.Length; n++)
                            {
                                string strN = intToString(int.Parse(strUserAnswers[n]) + 1);
                                if (n == 0)
                                {
                                    strUserAnswer += strN;
                                }
                                else
                                {
                                    strUserAnswer += "," + strN;
                                }
                            }

                            //多选


                            if (paperSubject.ItemTypeId == 2)
                            {
                                string[] strAnswer = paperItem.SelectAnswer.Split(new char[] { '|' });
                                for (int n = 0; n < strAnswer.Length; n++)
                                {
                                    string strN  = intToString(n + 1);
                                    string strij = "-" + paperItem.RandomExamItemId + "-" + i.ToString() + "-"
                                                   + j.ToString() + "-" + n.ToString();
                                    string strName = i.ToString() + j.ToString();

                                    Response.Write(" <tr ><td class='ExamItemAnswer'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "
                                                   + strN + "." + strAnswer[n] + "</td></tr >");
                                }
                            }
                            else
                            {
                                //单选


                                string[] strAnswer = paperItem.SelectAnswer.Split(new char[] { '|' });
                                for (int n = 0; n < strAnswer.Length; n++)
                                {
                                    string strN  = intToString(n + 1);
                                    string strij = "-" + paperItem.RandomExamItemId + "-" + i.ToString() + "-" + j.ToString()
                                                   + "-" + n.ToString();
                                    string strName = i.ToString() + j.ToString();

                                    Response.Write("<tr > <td class='ExamItemAnswer'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "
                                                   + strN + "." + strAnswer[n] + "</td></tr >");
                                }
                            }

                            // 组织正确答案
                            string[] strRightAnswers = paperItem.StandardAnswer.Split(new char[] { '|' });
                            string   strRightAnswer  = "";
                            for (int n = 0; n < strRightAnswers.Length; n++)
                            {
                                string strN = intToString(int.Parse(strRightAnswers[n]) + 1);
                                if (n == 0)
                                {
                                    strRightAnswer += strN;
                                }
                                else
                                {
                                    strRightAnswer += "," + strN;
                                }
                            }

                            string strScore = "0";
                            if (strRightAnswer == strUserAnswer)
                            {
                                strScore = System.String.Format("{0:0.##}", paperSubject.UnitScore);
                            }

                            Response.Write(" <tr><td class='ExamAnswer'>&nbsp;&nbsp;&nbsp;★标准答案:"
                                           + "<span id='span-" + paperItem.RandomExamItemId + "-0' name='span-" +
                                           paperItem.RandomExamItemId
                                           + "'>" + strRightAnswer + "</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;考生答案:"
                                           + "<span id='span-" + paperItem.RandomExamItemId + "-1' name='span-" +
                                           paperItem.RandomExamItemId
                                           + "'>" + strUserAnswer + "</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;得分:" + strScore + "</td></tr>");
                        }
                    }
                    Response.Write(" </table> ");
                }
            }
            else
            {
                SessionSet.PageMessage = "数据错误!";

                return;
            }
        }
예제 #12
0
        private void AddResultToDB(string strId)
        {
            RandomExamSubjectBLL       subjectBLL          = new RandomExamSubjectBLL();
            RandomExamItemBLL          randomItemBLL       = new RandomExamItemBLL();
            RandomExamResultCurrentBLL randomExamResultBLL = new RandomExamResultCurrentBLL();
            RandomExamStrategyBLL      strategyBLL         = new RandomExamStrategyBLL();

            RandomExamResultAnswerCurrentBLL randomExamResultAnswerBLL = new RandomExamResultAnswerCurrentBLL();
            IList <RandomExamItem>           randomExamItems           = new List <RandomExamItem>();

            RailExam.Model.RandomExamResultCurrent randomExamResult = new RailExam.Model.RandomExamResultCurrent();

            randomExamResult.RandomExamId    = int.Parse(strId);
            randomExamResult.AutoScore       = 0;
            randomExamResult.BeginDateTime   = DateTime.Parse(ViewState["BeginTime"].ToString());
            randomExamResult.CurrentDateTime = DateTime.Parse(ViewState["BeginTime"].ToString());
            randomExamResult.ExamTime        = 0;
            randomExamResult.EndDateTime     = DateTime.Parse(ViewState["BeginTime"].ToString());
            randomExamResult.Score           = 0;
            randomExamResult.OrganizationId  = int.Parse(ViewState["OrgID"].ToString());
            randomExamResult.Memo            = "";
            randomExamResult.StatusId        = 1;
            randomExamResult.AutoScore       = 0;
            randomExamResult.CorrectRate     = 0;
            randomExamResult.ExamineeId      = int.Parse(ViewState["EmployeeID"].ToString());

            int    nRandomExamResultPK = randomExamResultBLL.AddRandomExamResultCurrent(randomExamResult);
            string strSql = "select a.* from Computer_Room a "
                            + "inner join Computer_Server b on a.Computer_Server_ID=b.Computer_Server_ID "
                            + "where Computer_Server_No='" + PrjPub.ServerNo + "'";
            OracleAccess db             = new OracleAccess();
            DataSet      ds             = db.RunSqlDataSet(strSql);
            string       computerRoomID = string.Empty;

            if (ds.Tables[0].Rows.Count > 0)
            {
                computerRoomID = ds.Tables[0].Rows[0]["Computer_Room_ID"].ToString();
            }

            strSql = @"insert into Random_Exam_Result_Detail values("
                     + nRandomExamResultPK + "," + int.Parse(strId) + ","
                     + ViewState["EmployeeID"].ToString() + ",0,null,null,null,Random_Exam_Result_Detail_Seq.Nextval,"
                     + "0,null," + (computerRoomID == string.Empty ? "null" : computerRoomID) + ",null,null,null,null)";
            db.ExecuteNonQuery(strSql);

            ViewState["RandomExamResultID"] = nRandomExamResultPK;

            IList <RandomExamSubject> randomExamSubjects = subjectBLL.GetRandomExamSubjectByRandomExamId(int.Parse(strId));

            Hashtable hashTableItemIds    = new Hashtable();
            Hashtable htRandomExamItemIds = new Hashtable();

            for (int i = 0; i < randomExamSubjects.Count; i++)
            {
                int nSubjectId = randomExamSubjects[i].RandomExamSubjectId;
                // int nItemCount = randomExamSubjects[i].ItemCount;

                IList <RandomExamStrategy> strategys = strategyBLL.GetRandomExamStrategys(nSubjectId);
                for (int j = 0; j < strategys.Count; j++)
                {
                    int nStrategyId = strategys[j].RandomExamStrategyId;
                    int nItemCount  = strategys[j].ItemCount;
                    IList <RandomExamItem> itemList = randomItemBLL.GetItemsByStrategyId(nStrategyId, Convert.ToInt32(ViewState["Year"].ToString()));
                    Random    ObjRandom             = new Random();
                    Hashtable hashTable             = new Hashtable();
                    Hashtable hashTableCount        = new Hashtable();
                    while (hashTable.Count < nItemCount)
                    {
                        int k = ObjRandom.Next(itemList.Count);
                        hashTableCount[k] = k;
                        int itemID     = itemList[k].ItemId;
                        int examItemID = itemList[k].RandomExamItemId;
                        if (!hashTableItemIds.ContainsKey(itemID))
                        {
                            hashTable[examItemID]           = examItemID;
                            hashTableItemIds[itemID]        = itemID;
                            htRandomExamItemIds[examItemID] = examItemID;
                        }
                        if (hashTableCount.Count == itemList.Count && hashTable.Count < nItemCount)
                        {
                            SessionSet.PageMessage = "随机考试在设定的取题范围内的试题量不够,请重新设置取题范围!";
                            return;
                        }
                    }
                }
            }

            string strAll = "";

            foreach (int key in htRandomExamItemIds.Keys)
            {
                if (strAll == "")
                {
                    strAll += htRandomExamItemIds[key].ToString();
                }
                else
                {
                    strAll += "," + htRandomExamItemIds[key].ToString();
                }
            }
            randomExamResultAnswerBLL.AddExamResultAnswerCurrent(nRandomExamResultPK, strAll);
        }
예제 #13
0
        protected void FillPaper()
        {
            string strId = Request.QueryString.Get("id");

            if (string.IsNullOrEmpty(strId))
            {
                SessionSet.PageMessage = "缺少参数!";

                return;
            }

            int RandomExamId       = Convert.ToInt32(strId);
            int randomExamResultId = Convert.ToInt32(ViewState["RandomExamResultID"]);

            RandomExamItemBLL         randomItemBLL      = new RandomExamItemBLL();
            RandomExamSubjectBLL      subjectBLL         = new RandomExamSubjectBLL();
            IList <RandomExamSubject> randomExamSubjects = subjectBLL.GetRandomExamSubjectByRandomExamId(RandomExamId);

            //RandomExamResultAnswerCurrentBLL randomExamResultAnswerBLL = new RandomExamResultAnswerCurrentBLL();
            //IList<RandomExamResultAnswerCurrent> examResultAnswers = new List<RandomExamResultAnswerCurrent>();
            //examResultAnswers = randomExamResultAnswerBLL.GetExamResultAnswersCurrent(randomExamResultId);

            IList <RandomExamItem> totalItems = randomItemBLL.GetItemsCurrent(0, randomExamResultId, Convert.ToInt32(ViewState["Year"].ToString()));

            if (randomExamSubjects != null)
            {
                for (int i = 0; i < randomExamSubjects.Count; i++)
                {
                    RandomExamSubject      paperSubject = randomExamSubjects[i];
                    IList <RandomExamItem> PaperItems   = new List <RandomExamItem>();
                    //PaperItems = randomItemBLL.GetItemsCurrent(paperSubject.RandomExamSubjectId, randomExamResultId, Convert.ToInt32(ViewState["Year"].ToString()));
                    PaperItems = GetSubjectItems(totalItems, paperSubject.RandomExamSubjectId);

                    int itemCount = 0;

                    if (paperSubject.ItemTypeId == PrjPub.ITEMTYPE_FILLBLANK)
                    {
                        foreach (RandomExamItem randomExamItem in PaperItems)
                        {
                            if (randomExamItem.TypeId == PrjPub.ITEMTYPE_FILLBLANK)
                            {
                                itemCount++;
                            }
                        }
                    }
                    else
                    {
                        itemCount = PaperItems.Count;
                    }

                    Response.Write("<table width='95%' class='ExamContent'>");
                    Response.Write(" <tr> <td class='ExamBigTitle' colspan='3'>");
                    Response.Write(" " + GetNo(i) + "");
                    Response.Write("、" + paperSubject.SubjectName + "");
                    Response.Write("  (共" + itemCount + "题,共" + System.String.Format("{0:0.##}", itemCount * paperSubject.UnitScore) + "分)</td></tr >");

                    if (PaperItems != null)
                    {
                        int z = 1;
                        int x = 1;
                        for (int j = 0; j < PaperItems.Count; j++)
                        {
                            RandomExamItem paperItem = PaperItems[j];
                            int            k         = j + 1;

                            if (paperItem.TypeId != PrjPub.ITEMTYPE_FILLBLANKDETAIL)
                            {
                                z = 1;

                                if (paperItem.TypeId == PrjPub.ITEMTYPE_FILLBLANK)
                                {
                                    k = x;
                                    x++;

                                    IList <RandomExamItem> randomExamItems = randomItemBLL.GetItemsByParentItemID(paperItem.ItemId, RandomExamId, Convert.ToInt32(ViewState["Year"].ToString()));
                                    Response.Write("<tr><td id='Item" + i + j + "' class='ExamItem' colspan='3'><a name='Test" + i + j + "' id='Test" + i + j + "'></a>&nbsp;&nbsp;&nbsp;" + k +
                                                   ".&nbsp; " + paperItem.Content +
                                                   "&nbsp;&nbsp; (共" + System.String.Format("{0:0.##}", paperSubject.UnitScore) + "分,其中"
                                                   + "每题" + System.String.Format("{0:0.##}", (randomExamItems.Count != 0 ? (decimal)paperSubject.UnitScore / (decimal)randomExamItems.Count : 0)) + "分)"
                                                   + "</td></tr >");
                                }
                                else
                                {
                                    Response.Write("<tr><td id='Item" + i + j + "' class='ExamItem' colspan='3'><a name='Test" + i + j + "' id='Test" + i + j + "'></a>&nbsp;&nbsp;&nbsp;" + k +
                                                   ".&nbsp; " + paperItem.Content +
                                                   "&nbsp;&nbsp; (" + System.String.Format("{0:0.##}", paperSubject.UnitScore) + "分)&nbsp;&nbsp;"
                                                   + "<a href='#Test" + i + j + "' id='Empty" + i + j + "' onclick='clickEmpty(this)'style='cursor: hand;' title='清空选择'>"
                                                   + "<img src='../images/clear.png'  style='border:0'/></a>"
                                                   + "</td></tr >");
                                }
                            }
                            //else
                            //{
                            //    string strSql = "select * from Random_Exam_Item_" + ViewState["Year"] + " where Item_ID='" +
                            //                     paperItem.ItemId + "' and Random_Exam_ID=" + strId;
                            //    DataRow dr = db.RunSqlDataSet(strSql).Tables[0].Rows[0];

                            //    IList<RandomExamItem> randomExamItems = randomItemBLL.GetItemsByParentItemID(Convert.ToInt32(dr["Parent_Item_ID"]),RandomExamId,Convert.ToInt32(ViewState["Year"].ToString()));

                            //    Response.Write("<tr><td id='Item" + i + j + "' class='ExamItem' colspan='2'><a name='Test" + i + j + "' id='Test" + i + j + "'></a>"
                            //            +"&nbsp;&nbsp;&nbsp;(" + z + ").&nbsp; " + paperItem.Content +
                            //            "&nbsp;&nbsp; (" + System.String.Format("{0:0.##}", (decimal)paperSubject.UnitScore / (decimal)randomExamItems.Count) + "分)&nbsp;&nbsp;"
                            //            + "<a href='#Test" + i + j + "' id='Empty" + i + j + "' onclick='clickEmpty(this)'style='cursor: hand;' title='清空选择'>"
                            //            + "<img src='../images/clear.png'  style='border:0'/></a>"
                            //            +"</td></tr >");
                            //    z++;
                            //}


                            // 组织用户答案
                            string[] strUserAnswers = new string[0];
                            string   strUserAnswer  = string.Empty;

                            //RandomExamResultAnswerCurrent theExamResultAnswer = null;
                            //foreach (RandomExamResultAnswerCurrent resultAnswer in examResultAnswers)
                            //{
                            //    if (resultAnswer.RandomExamItemId == paperItem.RandomExamItemId)
                            //    {
                            //        theExamResultAnswer = resultAnswer;
                            //        break;
                            //    }
                            //}
                            // 若子表无记录,结束页面输出
                            //if (theExamResultAnswer == null)
                            //{
                            //    SessionSet.PageMessage = "数据错误!";
                            //}
                            //// 否则组织考生答案
                            //if (theExamResultAnswer.Answer != null || theExamResultAnswer.Answer == string.Empty)
                            //{
                            //    strUserAnswers = theExamResultAnswer.Answer.Split(new char[] { '|' });
                            //}

                            if (paperItem.Answer == null)
                            {
                                SessionSet.PageMessage = "数据错误!";
                            }

                            if (!string.IsNullOrEmpty(paperItem.Answer))
                            {
                                strUserAnswers = paperItem.Answer.Split(new char[] { '|' });
                            }

                            for (int n = 0; n < strUserAnswers.Length; n++)
                            {
                                string strN = intToString(int.Parse(strUserAnswers[n]) + 1);
                                if (n == 0)
                                {
                                    strUserAnswer += strN;
                                }
                                else
                                {
                                    strUserAnswer += "," + strN;
                                }
                            }


                            if (paperSubject.ItemTypeId == PrjPub.ITEMTYPE_MULTICHOOSE)                               //多选
                            {
                                string[] strAnswer = paperItem.SelectAnswer.Split(new char[] { '|' });
                                for (int n = 0; n < strAnswer.Length; n++)
                                {
                                    string strN  = intToString(n + 1);
                                    string strij = "-" + paperItem.RandomExamItemId + "-" + i.ToString() + "-" + j.ToString() +
                                                   "-" + n.ToString();
                                    string strName = i.ToString() + j.ToString();

                                    if (("," + strUserAnswer + ",").IndexOf("," + strN + ",") != -1)
                                    {
                                        Response.Write(
                                            "<tr><td class='ExamItemAnswer' colspan='3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input onclick='CheckStyle(this)' type='checkbox' checked='checked' id='Answer" +
                                            strij + "' name='Answer" + strName + "'><label for='Answer" + strij + "'> " + strN + "." + strAnswer[n] +
                                            "</label></td></tr>");
                                    }
                                    else
                                    {
                                        Response.Write(
                                            "<tr><td class='ExamItemAnswer' colspan='3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input onclick='CheckStyle(this)' type='checkbox' id='Answer" +
                                            strij + "' name='Answer" + strName + "'><label for='Answer" + strij + "'> " + strN + "." + strAnswer[n] +
                                            "</label></td></tr>");
                                    }
                                }
                            }
                            else if (paperSubject.ItemTypeId == PrjPub.ITEMTYPE_SINGLECHOOSE || paperSubject.ItemTypeId == PrjPub.ITEMTYPE_JUDGE)    //单选
                            {
                                string[] strAnswer = paperItem.SelectAnswer.Split(new char[] { '|' });
                                for (int n = 0; n < strAnswer.Length; n++)
                                {
                                    string strN  = intToString(n + 1);
                                    string strij = "-" + paperItem.RandomExamItemId + "-" + i.ToString() + "-" + j.ToString() +
                                                   "-" + n.ToString();
                                    string strName = i.ToString() + j.ToString();

                                    if (strUserAnswer == strN)
                                    {
                                        Response.Write(
                                            "<tr><td class='ExamItemAnswer' colspan='3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input onclick='CheckStyle(this)' type='Radio' checked='checked' id='RAnswer" +
                                            strij + "' name='RAnswer" + strName + "'>  <label for='RAnswer" + strij + "' >" + strN + "." + strAnswer[n] +
                                            "</label></td></tr>");
                                    }
                                    else
                                    {
                                        Response.Write(
                                            "<tr><td class='ExamItemAnswer' colspan='3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input onclick='CheckStyle(this)' type='Radio' id='RAnswer" +
                                            strij + "' name='RAnswer" + strName + "'> <label for='RAnswer" + strij + "' >" + strN + "." + strAnswer[n] +
                                            "</label></td></tr>");
                                    }
                                }
                            }
                            else if (paperItem.TypeId == PrjPub.ITEMTYPE_FILLBLANKDETAIL)
                            {
                                string[] strAnswer = paperItem.SelectAnswer.Split(new char[] { '|' });
                                for (int n = 0; n < strAnswer.Length; n++)
                                {
                                    string strN  = intToString(n + 1);
                                    string strij = "-" + paperItem.RandomExamItemId + "-" + i.ToString() + "-" + j.ToString() +
                                                   "-" + n.ToString();
                                    string strName = i.ToString() + j.ToString();

                                    if (n == 0)
                                    {
                                        int row = strAnswer.Length % 2 == 0 ? strAnswer.Length / 2 : strAnswer.Length / 2 + 1;
                                        Response.Write("<tr><td id='Item" + i + j + "' class='ExamItem' style='width:10%;vertical-align: top' RowSpan='" + row + "'><a name='Test" + i + j + "' id='Test" + i + j + "'></a>"
                                                       + "&nbsp;(" + z + ").&nbsp;"
                                                       + "<a href='#Test" + i + j + "' id='Empty" + i + j + "' onclick='clickEmpty(this)'style='cursor: hand;' title='清空选择'>"
                                                       + "<img src='../images/clear.png'  style='border:0'/></a>"
                                                       + "</td>");
                                    }

                                    if (n % 2 == 0 && n != 0)
                                    {
                                        Response.Write("<tr>");
                                    }

                                    if (strUserAnswer == strN)
                                    {
                                        Response.Write(
                                            "<td class='ExamItemAnswer'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input onclick='CheckStyle(this)' type='Radio' checked='checked' id='RAnswer" +
                                            strij + "' name='RAnswer" + strName + "'><label for='RsAnswer" + strij + "'>" + strN + "." + strAnswer[n] +
                                            "</label></td>");
                                    }
                                    else
                                    {
                                        Response.Write(
                                            "<td class='ExamItemAnswer'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input onclick='CheckStyle(this)' type='Radio' id='RAnswer" +
                                            strij + "' name='RAnswer" + strName + "'><label for='RAnswer" + strij + "'> " + strN + "." + strAnswer[n] +
                                            "</label></td>");
                                    }

                                    if (n % 2 == 1)
                                    {
                                        Response.Write("</tr>");
                                    }
                                }

                                z++;
                            }
                        }
                    }
                    Response.Write("</table>");
                }
                //<input id='btnEmpty' class='buttonLong' name='btnEmpty' type='button' value='标记未做试题' onclick='CheckEmpty()'/>&nbsp;&nbsp;&nbsp;&nbsp;
                Response.Write(" <div class='ExamButton'><input id='btnClose' class='button' name='btnSave' type='button' value='提交答卷'  onclick='SaveRecord()'/> </div><br><br><br><br><br><br>");
                ClientScript.RegisterStartupScript(GetType(), "StartStyle", "<script>StartStyle()</script>");
            }
            else
            {
                SessionSet.PageMessage = "未找到记录!";
            }
        }
예제 #14
0
        private void SaveAnswerToDB(string strAnswer)
        {
            string strId = Request.QueryString.Get("id");

            RandomExamItemBLL          randomItemBLL       = new RandomExamItemBLL();
            RandomExamResultCurrentBLL objResultCurrentBll = new RandomExamResultCurrentBLL();

            RailExam.Model.RandomExamResultCurrent objResultCurrent = objResultCurrentBll.GetNowRandomExamResultInfo(Convert.ToInt32(ViewState["EmployeeID"].ToString()), Convert.ToInt32(strId));

            //更新考试成绩表时传入的主键应为站段的成绩表的主键ID
            objResultCurrent.RandomExamResultId = int.Parse(ViewState["RandomExamResultID"].ToString());
            objResultCurrent.RandomExamId       = int.Parse(strId);
            objResultCurrent.AutoScore          = 0;
            objResultCurrent.CurrentDateTime    = DateTime.Parse(ViewState["EndTime"].ToString());
            objResultCurrent.ExamTime           = Convert.ToInt32(ViewState["LastExamTime"].ToString()) +
                                                  GetSecondBetweenTwoDate(DateTime.Parse(ViewState["EndTime"].ToString()),
                                                                          DateTime.Parse(ViewState["BeginTime"].ToString()));
            objResultCurrent.EndDateTime    = DateTime.Parse(ViewState["EndTime"].ToString());
            objResultCurrent.Score          = 0;
            objResultCurrent.OrganizationId = int.Parse(ViewState["OrgID"].ToString());
            objResultCurrent.Memo           = "";
            objResultCurrent.StatusId       = 2;
            objResultCurrent.AutoScore      = 0;
            objResultCurrent.CorrectRate    = 0;
            objResultCurrent.ExamineeId     = int.Parse(ViewState["EmployeeID"].ToString());

            string[] str1 = strAnswer.Split(new char[] { '$' });
            RandomExamResultAnswerCurrentBLL randomExamResultAnswerBLL = new RandomExamResultAnswerCurrentBLL();
            //randomExamResultAnswerBLL.DeleteExamResultAnswerCurrent(Convert.ToInt32(ViewState["RandomExamResultID"].ToString()));
            //IList<RandomExamResultAnswerCurrent> randomExamResultAnswers = new List<RandomExamResultAnswerCurrent>();
            int randomExamResultId = int.Parse(ViewState["RandomExamResultID"].ToString());

            for (int n = 0; n < str1.Length; n++)
            {
                string   str2           = str1[n].ToString();
                string[] str3           = str2.Split(new char[] { '|' });
                string   strPaperItemId = str3[0].ToString();
                string   strTrueAnswer  = str2.ToString().Substring(strPaperItemId.Length + 1);

                RandomExamResultAnswerCurrent randomExamResultAnswer = new RandomExamResultAnswerCurrent();
                randomExamResultAnswer.RandomExamResultId = randomExamResultId;
                randomExamResultAnswer.RandomExamItemId   = int.Parse(strPaperItemId);
                randomExamResultAnswer.JudgeStatusId      = 0;
                randomExamResultAnswer.JudgeRemark        = string.Empty;
                randomExamResultAnswer.ExamTime           = 0;
                randomExamResultAnswer.Answer             = strTrueAnswer;
                //randomExamResultAnswers.Add(randomExamResultAnswer);
                randomExamResultAnswerBLL.UpdateExamResultAnswerCurrent(randomExamResultAnswer);
            }

            try
            {
                //将更新答卷信息
                //randomExamResultAnswerBLL.AddExamResultAnswerCurrentSave(randomExamResultId, randomExamResultAnswers);

                //更新实时考试记录
                objResultCurrentBll.UpdateRandomExamResultCurrent(objResultCurrent);

                //获取最后考试成绩
                //RandomExamResultCurrent randomExamResultCurrent = objResultCurrentBll.GetRandomExamResult(Convert.ToInt32(ViewState["RandomExamResultID"].ToString()));
                //decimal nowScore = randomExamResultCurrent.Score;

                //将实时考试记录(临时表)转存到正式考试成绩表和答卷表
                RandomExamResultBLL objResultBll = new RandomExamResultBLL();
                //int randomExamResultID = objResultBll.RemoveResultAnswer(Convert.ToInt32(ViewState["RandomExamResultID"].ToString()));

                //将实时考试记录(临时表)转存到中间考试成绩表和答卷表
                int randomExamResultID = objResultBll.RemoveResultAnswerCurrent(Convert.ToInt32(ViewState["RandomExamResultID"].ToString()));

                //删除登录信息
                SystemUserLoginBLL objloginBll = new SystemUserLoginBLL();
                objloginBll.DeleteSystemUserLogin(Convert.ToInt32(ViewState["EmployeeID"].ToString()));

                Response.Write("<script>window.parent.parent.location = '/RailExamBao/Online/Exam/ExamSuccess.aspx?ExamType=1&ExamResultID=" + randomExamResultID + "'</script>");
            }
            catch
            {
                SystemUserLoginBLL objloginBll = new SystemUserLoginBLL();
                objloginBll.DeleteSystemUserLogin(Convert.ToInt32(ViewState["EmployeeID"].ToString()));

                string       strSql = "update Random_Exam_Result_Current set Exam_Time=Exam_Time-180 where Random_Exam_ID=" + strId + " and Examinee_ID=" + ViewState["EmployeeID"];
                OracleAccess db     = new OracleAccess();
                db.ExecuteNonQuery(strSql);

                Response.Write("<script>window.parent.parent.location = '/RailExamBao/Common/OtherError.aspx?error=提交试卷失败,请重新进入考试再次进行提交'</script>");
            }


            //如果在站段是随到随考考试,成绩自动上传至路局
            //if(ViewState["NowStartMode"].ToString() == PrjPub.START_MODE_NO_CONTROL.ToString() && !PrjPub.IsServerCenter)
            //{
            //    objResultBll.RemoveRandomExamResultToServer(Convert.ToInt32(strId), Convert.ToInt32(ConfigurationManager.AppSettings["StationID"]));
            //}
        }