📄 exam.cs
字号:
/// <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 + -