?? createtest.aspx.cs.bak
字號:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Configuration;
namespace TestOnline
{
/// <summary>
/// createTest 的摘要說明。
/// </summary>
public class createTest : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label lbl_stuId;
protected System.Web.UI.WebControls.Label lbl_stuName;
protected System.Web.UI.WebControls.Label lbl_courseName;
protected System.Web.UI.WebControls.ImageButton Ibtn_submit;
protected System.Web.UI.WebControls.ImageButton Ibtn_createTest;
protected System.Web.UI.WebControls.Panel Panel2;
protected System.Web.UI.WebControls.LinkButton LinkButton2;
protected System.Web.UI.WebControls.Panel Panel1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此處放置用戶代碼以初始化頁面
if(Session["stuId"]==null)
{
Response.Redirect("login.aspx");
}else
{
Ibtn_submit.Attributes.Add("OnClick","return confirm('你的確要交卷嗎?交卷后將不能再考試!');");
string courseId=Convert.ToString(Session["courseId"]);
string stuId=Convert.ToString(Session["stuId"]);
string stuName=(new projClass()).getUserName(stuId);
string courseName=(new projClass()).getCourseNameAsCourseId(courseId);
lbl_stuId.Text=stuId;
lbl_stuName.Text=stuName;
lbl_courseName.Text=courseName;
/*
以下生成試題的思路:
通過存儲過程在試題庫里隨機的選擇出50道題,一旦生成后即往分數(shù)表里面添加記錄,分數(shù)為0.
試題生成后,將試題的ID都存入一個哈希表,如果用戶刷新,則從哈希表里取出試題的ID,再次生成,從而達到了防刷新的目的.(傳統(tǒng)的考試系統(tǒng)在刷新之后能
再次生成試題)
*/
//ifCreate表示是否已經(jīng)生成過試題
int ifCreate=(new projClass()).ifCourseHasTest(stuId,courseId);
if(ifCreate!=1)
//if(!Page.IsPostBack)
{
SqlDataReader reader=(new projClass()).createTest(courseId);
//一旦生成的試題就向分數(shù)表score里面添加記錄,分數(shù)為0,并且在學(xué)生表student里面改學(xué)生的狀態(tài)
int count=(new projClass()).insertStuStatusToScore(stuId,courseId,0,0);
int count1=(new projClass()).updateStuStatus(stuId,courseId,1);
if(count==0||count1==0)
Response.Write("<script>alert(\"更新狀態(tài)錯誤!\");</script>");
Hashtable ht_rightAnswer=new Hashtable();
Hashtable ht_stuTest=new Hashtable();//存儲學(xué)生第一次進入頁面時產(chǎn)生的題目ID,以免刷新時題目改變.
int num=1;
while(reader.Read())
{
Literal lit_testContent=new Literal();
RadioButtonList rbtnList=new RadioButtonList();
rbtnList.ID="rbtnList"+num.ToString();
//rbtnList.RepeatDirection=RepeatDirection.Horizontal;
lit_testContent.Text="<br>"+num.ToString()+"、"+Server.HtmlEncode(reader["testContent"].ToString())+"<br>";
rbtnList.Items.Add("A. "+Server.HtmlEncode(reader["testAns1"].ToString()));
rbtnList.Items.Add("B. "+Server.HtmlEncode(reader["testAns2"].ToString()));
rbtnList.Items.Add("C. "+Server.HtmlEncode(reader["testAns3"].ToString()));
rbtnList.Items.Add("D. "+Server.HtmlEncode(reader["testAns4"].ToString()));
//得到題目的正確答案,并添加到哈希表中
string testId=reader["testId"].ToString();
ht_stuTest.Add(num.ToString(),testId.ToString());
int rightAns=(new projClass()).getRightAnsAsTestId(testId);
ht_rightAnswer.Add(num.ToString(),rightAns);
// Response.Write(rightAns.ToString());
for(int j=1;j<=4;j++)
{
rbtnList.Items[j-1].Value=j.ToString();
}
if(num<=25)
{
Panel1.Controls.Add(lit_testContent);
Panel1.Controls.Add(rbtnList);
}
else
{
Panel2.Controls.Add(lit_testContent);
Panel2.Controls.Add(rbtnList);
}
num++;
}
Session["rightAnswer"]=ht_rightAnswer;
Session["stuTest"]=ht_stuTest;
}
//不是第一次進入頁面
else
{ // int num=1;
//if(Session["ht_stuTest"]==null)
//Response.Write("<script>alert(\"由于刷新產(chǎn)生了錯誤!請重新登錄或聯(lián)系管理員!\");</script>");
Hashtable ht_stuTest=(Hashtable)Session["stuTest"];
string testId="";
DataSet ds;
bool find;
for(int num=1;num<=50;num++)
{
find=false;
IDictionaryEnumerator myEnumerator = ht_stuTest.GetEnumerator();
while(myEnumerator.MoveNext()&&!find)
if(myEnumerator.Key.Equals(num.ToString()))
{
testId=myEnumerator.Value.ToString();
find=true;
ds=(new projClass()).getTestInfoAsId(testId);
DataTable dt=ds.Tables["testInfo"];
DataRow dataRow=dt.Rows[0];
Literal lit_testContent=new Literal();
RadioButtonList rbtnList=new RadioButtonList();
rbtnList.ID="rbtnList"+num.ToString();
lit_testContent.Text="<br>"+num.ToString()+"、"+Server.HtmlEncode(Convert.ToString(dataRow["testContent"]))+"<br>";
rbtnList.Items.Add("A. "+Server.HtmlEncode(Convert.ToString(dataRow["testAns1"])));
rbtnList.Items.Add("B. "+Server.HtmlEncode(Convert.ToString(dataRow["testAns2"])));
rbtnList.Items.Add("C. "+Server.HtmlEncode(Convert.ToString(dataRow["testAns3"])));
rbtnList.Items.Add("D. "+Server.HtmlEncode(Convert.ToString(dataRow["testAns4"])));
//得到題目的正確答案,并添加到哈希表中
//ht_stuTest.Add(num.ToString(),testId.ToString());
int rightAns=(new projClass()).getRightAnsAsTestId(testId);
for(int j=1;j<=4;j++)
{
rbtnList.Items[j-1].Value=j.ToString();
}
if(num<=25)
{
Panel1.Controls.Add(lit_testContent);
Panel1.Controls.Add(rbtnList);
}
else
{
Panel2.Controls.Add(lit_testContent);
Panel2.Controls.Add(rbtnList);
}
}
}
}
}
}
#region Web 窗體設(shè)計器生成的代碼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 該調(diào)用是 ASP.NET Web 窗體設(shè)計器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 設(shè)計器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內(nèi)容。
/// </summary>
private void InitializeComponent()
{
this.Ibtn_submit.Click += new System.Web.UI.ImageClickEventHandler(this.Ibtn_submit_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Ibtn_submit_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
Hashtable ht_stuAnswer=new Hashtable();
/*RadioButtonList list1=(RadioButtonList)Panel1.FindControl("rbtnList1");
string ans1="";
if(Page.IsPostBack)
ans1+="back";
if(list1!=null)
ans1=list1.SelectedValue.ToString();
//RadioButtonList list;
string ans="";
ans=ans1;*/
string ans="";
for(int i=1;i<=50;i++)
{RadioButtonList list;
if(i<=25)
{
list=(RadioButtonList)Panel1.FindControl("rbtnList"+i.ToString());
}else list=(RadioButtonList)Panel2.FindControl("rbtnList"+i.ToString());
if(list!=null)
{ ans=list.SelectedValue.ToString();
if(!ht_stuAnswer.Contains(i.ToString()))
ht_stuAnswer.Add(i.ToString(),ans);
}else ans+=i.ToString()+"null";
}
Session["stuAnswer"]=ht_stuAnswer;
Session["ans"]=ans;
Response.Redirect("result.aspx?stuId="+Convert.ToString(Session["stuId"])+"courseId="+Convert.ToString(Session["courseId"]));
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -