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

📄 examonline.aspx.cs

📁 用asp写的程序,在线考试系统,功能齐全,是一个非常好用的系统
💻 CS
字号:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class Students_examonline : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        HttpContext.Current.Application.Remove("EndTime");
        //------------------------------------------------防止直接访问
        string strCheck = "exam";
        if (Session["checkUser"].ToString() != strCheck.ToString())
        {
            Response.Redirect("login.aspx");
        }
        //--------------------------------------------------------
        //Session["userID"] = "0301095";  //测试学号

        lblExamTitle.Text = (new ExamOnline.Exam()).getCurrentPageTitle();  //取得试卷的标题
        lblStuInfo.Text = (new ExamOnline.Exam()).getCurrentStudMessage(Session["userID"].ToString());  //取得考生的详细信息
        int paperID = (new ExamOnline.Exam()).getCurrentPaperID();   //取得当前试卷的ID
        //int paperID = 2; //测试试卷
        hidPaperID.Value = Convert.ToString(paperID);
        hidUserID.Value = Convert.ToString(Session["userID"]);
        //--------------------------------------------------------------取得试卷的题型
        DataTable dtStyles = (new ExamOnline.Exam()).getStyles(paperID);
        if (dtStyles.Rows.Count > 0)
        {
            for (int i = 0; i < dtStyles.Rows.Count; i++)
            {
                int styles = Convert.ToInt32(dtStyles.Rows[i][0]);
                if (styles ==Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesJudge))        //判断题
                {
                    Label lblStyles = new Label();
                    lblStyles.Text = "<br>判断题:<br>";
                    lblStyles.Font.Bold = true;
                    panelContext.Controls.Add(lblStyles);

                    DataTable dtQues = (new ExamOnline.Exam()).getQues(paperID, styles);
                    int qnumStart = Convert.ToInt32(dtQues.Rows[0][0]);  //该题型的题目的开始序号
                    int qnumAll = dtQues.Rows.Count;                     //题型的题目总量

                    for (int qnum = qnumStart; qnum < qnumStart + qnumAll; qnum++)
                    {
                        Literal litTitle = new Literal();
                        litTitle.Text = "<br>" + Convert.ToString(dtQues.Rows[qnum - qnumStart][0]) + "、" + Server.HtmlEncode(Convert.ToString(dtQues.Rows[qnum - qnumStart][2])) + "<br>";

                        DataTable dtOptions = (new ExamOnline.Exam()).getOptions(paperID, qnum);
                        int optionsAll = Convert.ToInt32(dtOptions.Rows.Count); //取得选项的数量
                        RadioButtonList rbl = new RadioButtonList();
                        rbl.RepeatDirection = RepeatDirection.Horizontal;
                        rbl.ID = "rbl" + qnum.ToString();
                        for (int j = 0; j <= optionsAll - 1; j++)
                        {
                            string strABC = Convert.ToString(dtOptions.Rows[j][0]);
                            string strOption = Convert.ToString(dtOptions.Rows[j][1]);
                            ListItem li = new ListItem();
                            li.Value = strABC;
                            li.Text = strABC + "、" + strOption;
                            rbl.Items.Add(li);
                        }
                        panelContext.Controls.Add(litTitle);
                        panelContext.Controls.Add(rbl);
                    }

                }
                else if (styles == Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesSingle))  //单选题
                {
                    Label lblStyles = new Label();
                    lblStyles.Text = "<br>单选题:<br>";
                    lblStyles.Font.Bold = true;
                    panelContext.Controls.Add(lblStyles);

                    DataTable dtQues = (new ExamOnline.Exam()).getQues(paperID, styles);
                    int qnumStart = Convert.ToInt32(dtQues.Rows[0][0]);  //该题型的题目的开始序号
                    int qnumAll = dtQues.Rows.Count;                     //题型的题目总量

                    for (int qnum = qnumStart; qnum < qnumStart + qnumAll; qnum++)
                    {
                        Literal litTitle = new Literal();
                        litTitle.Text = "<br>" + Convert.ToString(dtQues.Rows[qnum - qnumStart][0]) + "、" + Server.HtmlEncode(Convert.ToString(dtQues.Rows[qnum - qnumStart][2])) + "<br>";

                        DataTable dtOptions = (new ExamOnline.Exam()).getOptions(paperID, qnum);
                        int optionsAll = Convert.ToInt32(dtOptions.Rows.Count); //取得选项的数量
                        RadioButtonList rbl = new RadioButtonList();
                        rbl.ID = "rbl" + qnum.ToString();
                        for (int j = 0; j <= optionsAll - 1; j++)
                        {
                            string strABC = Convert.ToString(dtOptions.Rows[j][0]);
                            string strOption = Convert.ToString(dtOptions.Rows[j][1]);
                            ListItem li = new ListItem();
                            li.Value = strABC;
                            li.Text = strABC + "、" + strOption;
                            rbl.Items.Add(li);
                        }
                        panelContext.Controls.Add(litTitle);
                        panelContext.Controls.Add(rbl);
                    }
                }
                else if (styles == Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesMulti))   //多选题
                {
                    Label lblStyles = new Label();
                    lblStyles.Text = "<br>多选题:<br>";
                    lblStyles.Font.Bold = true;
                    panelContext.Controls.Add(lblStyles);

                    DataTable dtQues = (new ExamOnline.Exam()).getQues(paperID, styles);
                    int qnumStart = Convert.ToInt32(dtQues.Rows[0][0]);  //该题型的题目的开始序号
                    int qnumAll = dtQues.Rows.Count;                     //题型的题目总量
                    for (int qnum = qnumStart; qnum < qnumStart + qnumAll; qnum++)
                    {
                        Literal litTitle = new Literal();
                        litTitle.Text = "<br>" + Convert.ToString(dtQues.Rows[qnum - qnumStart][0]) + "、" + Server.HtmlEncode(Convert.ToString(dtQues.Rows[qnum - qnumStart][2])) + "<br>";

                        DataTable dtOptions = (new ExamOnline.Exam()).getOptions(paperID, qnum);
                        int optionsAll = Convert.ToInt32(dtOptions.Rows.Count); //取得选项的数量
                        CheckBoxList cbl = new CheckBoxList();
                        cbl.ID = "cbl" + qnum.ToString();
                        for (int j = 0; j <= optionsAll - 1; j++)
                        {
                            string strABC = Convert.ToString(dtOptions.Rows[j][0]);
                            string strOption = Convert.ToString(dtOptions.Rows[j][1]);
                            ListItem li = new ListItem();
                            li.Value = strABC;
                            li.Text = strABC + "、" + strOption;
                            cbl.Items.Add(li);
                        }
                        panelContext.Controls.Add(litTitle);
                        panelContext.Controls.Add(cbl);
                    }
                }
                else if (styles == Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesOther))   //主观题
                {
                    Label lblStyles = new Label();
                    lblStyles.Text = "<br>主观题:<br>";
                    lblStyles.Font.Bold = true;
                    panelContext.Controls.Add(lblStyles);

                    DataTable dtQues = (new ExamOnline.Exam()).getQues(paperID, styles);
                    int qnumStart = Convert.ToInt32(dtQues.Rows[0][0]);  //该题型的题目的开始序号
                    int qnumAll = dtQues.Rows.Count;                     //题型的题目总量
                    for (int qnum = qnumStart; qnum < qnumStart + qnumAll; qnum++)
                    {
                        Literal litTitle = new Literal();
                        litTitle.Text = "<br>" + Convert.ToString(dtQues.Rows[qnum - qnumStart][0]) + "、" + Server.HtmlEncode(Convert.ToString(dtQues.Rows[qnum - qnumStart][2])) + "<br>";

                        string strAnswer = (new ExamOnline.Exam()).getAnswer(paperID, qnum);
                        TextBox tb = new TextBox();
                        tb.TextMode = TextBoxMode.MultiLine;
                        tb.Width = 600;
                        tb.Height = 80;
                        tb.ID = "tb" + qnum.ToString();
                        panelContext.Controls.Add(litTitle);
                        panelContext.Controls.Add(tb);
                    }
                }
            }
        }
    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        int paperID = Convert.ToInt32(hidPaperID.Value);
        string userID = hidUserID.Value;
        DataTable dtQues1 = (new ExamOnline.Exam()).getQues(paperID, Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesJudge));  //取得判断题
        DataTable dtQues2 = (new ExamOnline.Exam()).getQues(paperID, Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesSingle)); //取得单选题
        DataTable dtQues3 = (new ExamOnline.Exam()).getQues(paperID, Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesMulti));  //取得多选题
        DataTable dtQues4 = (new ExamOnline.Exam()).getQues(paperID, Convert.ToInt32(ExamOnline.examEnum.quesStyles.quesOther));  //取得主观题
        int SingleNum = dtQues1.Rows.Count + dtQues2.Rows.Count;          //取得判断题和单选题的题量
        int MultiNum = dtQues3.Rows.Count;                                //取得多选题的题量
        int OtherNum = dtQues4.Rows.Count;                                //取得主观题的题量
        //--------------------------------------------------
        try
        {
            if (SingleNum > 0)  //添加判断题和单选题
            {
                for (int i = 1; i <= SingleNum; i++)
                {
                    RadioButtonList rbl = new RadioButtonList();
                    rbl = (RadioButtonList)panelContext.FindControl("rbl" + i.ToString());
                    string SingleAnswer = (new ExamOnline.Exam()).getSingleAns(rbl);
                    int qid = (new ExamOnline.Exam()).getQuesID(paperID, i);
                    string strexec = "insert into paper_done(paper_id,stu_id,qid,q_num,answer) ";
                    strexec += "values(" + paperID + ",'" + userID + "'," + qid + "," + i + ",'" + SingleAnswer + "')";
                    ExamOnline.Exam exam = new ExamOnline.Exam();
                    exam.exec(strexec);
                }
            }
            if (MultiNum > 0)     //添加多选题
            {
                for (int i = SingleNum + 1; i <= SingleNum + MultiNum; i++)
                {
                    CheckBoxList cbl = (CheckBoxList)panelContext.FindControl("cbl" + i.ToString());
                    string MultiAnswers = (new ExamOnline.Exam()).getMultiAns(cbl);
                    int qid = (new ExamOnline.Exam()).getQuesID(paperID, i);
                    string strexec = "insert into paper_done(paper_id,stu_id,qid,q_num,answer) ";
                    strexec += "values(" + paperID + ",'" + userID + "'," + qid + "," + i + ",'" + MultiAnswers + "')";
                    ExamOnline.Exam exam = new ExamOnline.Exam();
                    exam.exec(strexec);
                }
            }
            if (OtherNum > 0)    //添加主观题
            {
                for (int i = SingleNum + MultiNum + 1; i <= SingleNum + MultiNum + OtherNum; i++)
                {
                    TextBox tb = (TextBox)panelContext.FindControl("tb" + i.ToString());
                    string Answer = tb.Text.ToString();
                    int qid = (new ExamOnline.Exam()).getQuesID(paperID, i);
                    string strexec = "insert into paper_done(paper_id,stu_id,qid,q_num,answer) ";
                    strexec += "values(" + paperID + ",'" + userID + "'," + qid + "," + i + ",'" + Answer + "')";
                    ExamOnline.Exam exam = new ExamOnline.Exam();
                    exam.exec(strexec);
                }
            }
        }
        catch(Exception ee)
        {
            ExamOnline.Common.ShowMess(ee.Message);
        }
        finally
        {
            string strEnd = "update paper_students set stu_state=1 where paper_id='" + hidPaperID.Value + "' and stu_id='" +hidUserID.Value +"'";
            (new ExamOnline.Exam()).exec(strEnd);
            Response.Redirect("end.htm");
        }
        //------------------------------------------------------
    }
}

⌨️ 快捷键说明

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