⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exam.cs

📁 在线考试系统
💻 CS
📖 第 1 页 / 共 2 页
字号:
        /// <summary>
        /// 通过试卷ID和题目q_num来取得某个题目(选择题)的选项和正确答案标识 table[optionname,options,answer]
        /// </summary>
        /// <param name="paperID"></param>
        /// <param name="q_num"></param>
        /// <returns></returns>
        public DataTable getOptions(int paperID,int q_num)
        {
            SqlConnection con = new SqlConnection(strcon);
            string strcmdExam = "select a.optionsname,a.options,a.answer from answers a left join testpaper t on a.qid = t.qid where t.q_num =@q_num and t.paper_id =@paperID";
            SqlCommand cmdExam = new SqlCommand(strcmdExam, con);
            cmdExam.Parameters.Add("@q_num", SqlDbType.Int).Value = q_num;
            cmdExam.Parameters.Add("@paperID", SqlDbType.Int).Value = paperID;
            con.Open();
            SqlDataAdapter da = new SqlDataAdapter(cmdExam);
            DataTable dt = new DataTable();
            DataSet ds = new DataSet();
            da.Fill(ds, "table");
            dt = ds.Tables["table"];
            con.Close();
            return dt;
        }


        /// <summary>
        /// 取得选择题的正确答案
        /// </summary>
        /// <param name="paperID"></param>
        /// <param name="q_num"></param>
        /// <returns></returns>
        public string getSelectAnswer(int paperID, int q_num)
        {
            string answers = "";
            DataTable dt = getOptions(paperID, q_num);
            int AnswersNum = Convert.ToInt32(dt.Rows.Count);
            if (AnswersNum > 0)
            {
                for (int i = 0; i <= AnswersNum - 1;i++)
                {
                    if(Convert.ToString(dt.Rows[i][2]) == "1")
                    {
                        answers += Convert.ToString(dt.Rows[i][0]);
                    }
                }
            }
            return answers;
        }
        /// <summary>
        /// 通过试卷ID和题目q_num来取得某个题目(简答题)正确答案
        /// </summary>
        /// <param name="paperID"></param>
        /// <param name="q_num"></param>
        /// <returns></returns>
        public string getAnswer(int paperID, int q_num)
        {
            SqlConnection con = new SqlConnection(strcon);
            string quesResult = "";
            string strcmdExam = "select t.q_num,a.options from answers a left join testpaper t on a.qid = t.qid where t.q_num =@q_num and t.paper_id =@paperID";
            SqlCommand cmdExam = new SqlCommand(strcmdExam, con);
            cmdExam.Parameters.Add("@q_num", SqlDbType.Int).Value = q_num;
            cmdExam.Parameters.Add("@paperID", SqlDbType.Int).Value = paperID;
            con.Open();
            SqlDataReader dr = cmdExam.ExecuteReader();
            if (dr.Read())
            {
                quesResult = dr.GetString(1).ToString();
            }
            con.Close();
            return quesResult;
        }

        /// <summary>
        /// 取得RadioButtonList被选中的项的value
        /// </summary>
        /// <param name="rbl"></param>
        /// <returns></returns>
        public string getSingleAns(RadioButtonList rbl)  
        {
            string Answer = "";
            if (rbl.SelectedIndex != -1)
            {
                Answer = rbl.SelectedValue;
            }
            else
            {
                Answer = "";
            }
            return Answer;
        }
        /// <summary>
        /// 取得CheckBoxList被选中的项的value
        /// </summary>
        /// <param name="cbl"></param>
        /// <returns></returns>
        public string getMultiAns(CheckBoxList cbl)
        {
            string Answers = "";
            foreach(ListItem li in cbl.Items )
            {
                if (li.Selected)
                {
                    Answers += li.Value.ToString();
                }
            }
            return Answers;
        }

        /// <summary>
        /// 通过试卷ID和题目序号来取得题目的真实ID
        /// </summary>
        /// <param name="qnum"></param>
        /// <returns></returns>
        public int getQuesID(int paperID,int qnum)
        {
            SqlConnection con = new SqlConnection(strcon);
            con.Open();
            string strcmd = "select qid from testpaper where paper_id=@paper_id and q_num=@q_num";
            SqlCommand cmd = new SqlCommand(strcmd, con);
            cmd.Parameters.Add("@paper_id",SqlDbType.Int).Value = paperID;
            cmd.Parameters.Add("@q_num", SqlDbType.Int).Value = qnum;
            int qid =Convert.ToInt32(cmd.ExecuteScalar());
            con.Close();
            return qid;
        }

        /// <summary>
        /// 执行sql语句
        /// </summary>
        /// <param name="strcmd"></param>
        public void exec(string strcmd)
        {
            SqlConnection con = new SqlConnection(strcon);
            con.Open();
            SqlCommand cmd = new SqlCommand(strcmd, con);
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (Exception ee)
            {
                ExamOnline.Common.ShowMess(ee.Message);
            }
            finally
            {
                con.Close();
            }
        }

        /// <summary>
        /// 取得考试还剩下的时间,没有用到,后来使用了WSEndTime.asmx里的函数。
        /// </summary>
        /// <returns></returns>
        public string getTimeLeave()
        {
            SqlConnection con = new SqlConnection(strcon);
            con.Open();
            string strcmd = "select endtime from testpaper_list where paper_id=" + (new ExamOnline.Exam()).getCurrentPaperID();
            //string strcmd = "select endtime from testpaper_list where paper_id=1";  //测试
            SqlCommand cmd = new SqlCommand(strcmd, con);
            DateTime dt = Convert.ToDateTime(cmd.ExecuteScalar());
            con.Close();
            TimeSpan ts = dt - DateTime.Now;
            string hours = "";
            string minutes = "";
            if (ts.Hours < 10)
            {
                hours = "0" + ts.Hours.ToString();
            }
            else
            {
                hours = ts.Hours.ToString();
            }
            if (ts.Minutes < 10)
            {
                minutes = "0" + ts.Minutes.ToString();
            }
            else
            {
                minutes = ts.Minutes.ToString();
            }
            return hours + ":" + minutes;
        }

        /// <summary>
        /// 取得考试结束的时间,供WSEndTime.asmx调用,控制考试时间
        /// </summary>
        /// <returns></returns>
        public DateTime getEndTime()
        {
            SqlConnection con = new SqlConnection(strcon);
            string strcmd = "select endtime from testpaper_list where paper_id=" + (new ExamOnline.Exam()).getCurrentPaperID();
            SqlCommand cmd = new SqlCommand(strcmd, con);
            con.Open();
            DateTime dt = Convert.ToDateTime(cmd.ExecuteScalar());
            return dt;
        }

        /// <summary>
        /// 绑定listbox,用于页面exerciselogin.aspx
        /// </summary>
        /// <param name="lb"></param>
        /// <param name="selID">为0时绑定课程,其他时候绑定特定课程ID(selID)绑定练习卷</param>
        public void bindListBox(ListBox lb, string selID)
        {
            SqlConnection con = new SqlConnection(strcon);
            con.Open();
            string strcmd = "";
            if (selID == "0")
            {
                strcmd = "select cid,cname from course";
            }
            else
            {
                strcmd = "select paper_id,paper_name from testpaper_list where test=0 and cid='" + selID + "'";
            }
            SqlCommand cmd = new SqlCommand(strcmd, con);
            SqlDataReader dr = cmd.ExecuteReader();
            while(dr.Read())
            {
                ListItem li = new ListItem();
                li.Value =Convert.ToString(dr.GetValue(0));
                li.Text = dr.GetString(1);
                lb.Items.Add(li);
            }
            con.Close();
        }
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -