?? showreadexercise.aspx.cs.svn-base
字號:
?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.Sql;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using System.IO;
public partial class Student_UnitEx_ShowReadExercise : System.Web.UI.Page
{
//主要的變量
public static String[] strAnswer = new String[20];//答案
public int TestNumber = 4;//題量,閱讀4道
public int QuesNumber = 5;//每題的問題數量
public static String strHard;//難度
public static readonly string ConnectionString =
ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
String StrUserID; String StrUserName;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["USERSTYLE"] == "STUDENT")
{
LabName.Text = "姓名:"+Session["USERNAME"].ToString();
StrUserID = Session["USERID"].ToString();
StrUserName = Session["USERNAME"].ToString();
}
else
{
Dialog("對不起,你沒有權限訪問這個頁面!");
Response.Redirect("~/SystemManage/Login.aspx");
}
if (!IsPostBack)
{
strHard = Request.QueryString["deep"];
if (strHard == null) strHard = "4";//=
String[] MainKey = getMainKey("TAB_TESTREAD", "TRGRADE", strHard);
if (MainKey.Length < TestNumber)
{
Dialog(MainKey[0]);//題庫題量不夠
}
lstReadBindData(MainKey);
QueBindData(MainKey);
RdBindData(MainKey);
}
}
private void Dialog(String Str)
{
Response.Write(@"<script type='text/JavaScript'>");
Response.Write(@"alert('" + Str + "');");
//Response.Write(@"window.location='./list_logingroup.aspx';");
Response.Write(@"</script>");
}
//
//主要功能:對滿足難度要求的題目隨機抽取,某些行等于一字符串,并隨機取一行,返回該行主鍵值
//主要作用:用于要求隨機生成若干個互不相同的隨機數
//
public String[] getMainKey(String TableName, String ColumnName, String Str)
{
SqlConnection myConnection = new SqlConnection(ConnectionString);
String conString = "SELECT * FROM " + TableName + " where " + ColumnName + "='" + Str + "'";
String[] strMainKey = new String[TestNumber];
try
{
SqlDataAdapter myAdapter = new SqlDataAdapter(conString, myConnection);
DataSet myDateSet = new DataSet();
myAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
myAdapter.Fill(myDateSet, "getTestRead");
DataTable Table = myDateSet.Tables[0];
int i = Table.Rows.Count;
if (i < TestNumber)
{
TestNumber = i;//題庫題目太少,出不了一張完整的試卷!
}
int[] a;//聲明一個數組用來接收返回的隨機數
a = getRandomNum(TestNumber, 0, i + 1);//從0-(i-1)中產生4個不一樣的數裝入數組a中
for (int j = 0; j < TestNumber; j++)
{
strMainKey[j] = (String)Table.Rows[a[j] - 1].ItemArray[0];
}
}
finally
{
myConnection.Close();
}
return strMainKey;
}
//產生真正的隨機數
public int getNum(int[] arrNum, int tmp, int minValue, int maxValue, Random ra)
{
bool IsRan = false;
while (!IsRan)
{
int n;
for (n = 0; n <= arrNum.Length - 1; n++)
{
if (arrNum[n] == tmp)
{
tmp = ra.Next(minValue, maxValue);
break;
//getNum(arrNum, tmp, minValue, maxValue, ra);
}
}
if (n == arrNum.Length)
IsRan = true;
}
return tmp;
}
//產生一組隨機數
public int[] getRandomNum(int num, int minValue, int maxValue)
{
Random ra = new Random(unchecked((int)DateTime.Now.Ticks));
int[] arrNum = new int[num];
int tmp = 0;
for (int i = 0; i <= num - 1; i++)
{
tmp = ra.Next(minValue, maxValue);
arrNum[i] = getNum(arrNum, tmp, minValue, maxValue, ra);
}
return arrNum;
}
//主要功能:實現對TextBox控件的數據綁定
//主要作用:用于大量數據的顯示
//
public void lstReadBindData(String[] Str)
{
SqlConnection myConnection = new SqlConnection(ConnectionString);
try
{
String TableName = "TAB_TESTREAD";
String ColumnName1 = "TRCONTENT";
String ColumnName2 = "TRNO";
TextBox[] txtRead ={ TxtRead1, TxtRead2, TxtRead3, TxtRead4 };
for (int i = 0; i < TestNumber; i++)
{
String conString = "SELECT " + ColumnName1 + " FROM " + TableName + " where " + ColumnName2 + "='" + Str[i] + "'";
SqlDataAdapter da = new SqlDataAdapter(conString, myConnection);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable Table = ds.Tables[0];
if (Table.Rows.Count == 0)
continue;
String strTmp = (String)Table.Rows[0].ItemArray[0];
txtRead[i].Text = readData(strTmp);
}
}
finally
{
myConnection.Close();
}
}
//將問題數據綁定上去
public void QueBindData(String[] Str)
{
SqlConnection myConnection = new SqlConnection(ConnectionString);
try
{
String TableName = "TAB_TESTREADKEY";
String ColumnName1 = "TRQESTION";
String ColumnName2 = "TRNO";
String ColumnName3 = "QNO";
String[] strQno ={ "1", "2", "3", "4", "5" }; //Str[0] = "1";
TextBox[] txtAnswer ={ txtAnswer1, txtAnswer2, txtAnswer3, txtAnswer4, txtAnswer5, txtAnswer6, txtAnswer7, txtAnswer8, txtAnswer9, txtAnswer10, txtAnswer11, txtAnswer12, txtAnswer13, txtAnswer14, txtAnswer15, txtAnswer16, txtAnswer17, txtAnswer18, txtAnswer19, txtAnswer20 };
for (int i = 0; i < TestNumber; i++)
for (int j = 0; j < QuesNumber; j++)
{
String conString = "SELECT " + ColumnName1 + " FROM " + TableName + " where " + ColumnName2 + "='" + Str[i] + "'and " + ColumnName3 + "='" + strQno[j] + "'";
SqlDataAdapter da = new SqlDataAdapter(conString, myConnection);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable Table = ds.Tables[0];
if (Table.Rows.Count == 0)
continue;
String strTmp = (String)Table.Rows[0].ItemArray[0];
txtAnswer[i * QuesNumber + j].Text = strTmp;
}
}
finally
{
myConnection.Close();
}
}
public void RdBindData(String[] Str)
{
SqlConnection myConnection = new SqlConnection(ConnectionString);
try
{
String TableName = "TAB_TESTREADKEY";
String ColumnName1 = "A";
String ColumnName2 = "B";
String ColumnName3 = "C";
String ColumnName4 = "D";
String ColumnName5 = "TRNO";
String ColumnName6 = "QNO";
String ColumnName7 = "TRKEY";
String[] strQno ={ "1", "2", "3", "4", "5" }; //Str[0] = "1";
String[] strOption ={ "A.", "B.", "C.", "D." };
RadioButtonList[] Rd ={ Rd1, Rd2, Rd3, Rd4, Rd5, Rd6, Rd7, Rd8, Rd9, Rd10, Rd11, Rd12, Rd13, Rd14, Rd15, Rd16, Rd17, Rd18, Rd19, Rd20 };
for (int i = 0; i < 4; i++)
for (int j = 0; j < QuesNumber; j++)
{
String conString = "SELECT " + ColumnName1 + "," + ColumnName2 + "," + ColumnName3 + "," + ColumnName4 + "," + ColumnName7 + " FROM " + TableName + " where " + ColumnName5 + "='" + Str[i] + "'and " + ColumnName6 + "='" + strQno[j] + "'";
SqlDataAdapter da = new SqlDataAdapter(conString, myConnection);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable Table = ds.Tables[0];
if (Table.Rows.Count == 0)
{
strAnswer[i * QuesNumber + j] = "題為空";
continue;
}
for (int k = 0; k < 4; k++)
{
Rd[i * QuesNumber + j].Items[k].Value = strOption[k] + (String)Table.Rows[0].ItemArray[k];
}
strAnswer[i * QuesNumber + j] = (String)Table.Rows[0].ItemArray[4];
}
}
finally
{
myConnection.Close();
}
}
protected void BltNext_Click(object sender, EventArgs e)
{
RadioButtonList[] Rd ={ Rd1, Rd2, Rd3, Rd4, Rd5, Rd6, Rd7, Rd8, Rd9, Rd10, Rd11, Rd12, Rd13, Rd14, Rd15, Rd16, Rd17, Rd18, Rd19, Rd20 };
String[] strOption ={ "A", "B", "C", "D" };
String[] strAn ={ "test1", "test2", "test3", "test4", "test5", "test6", "test7", "test8", "test9", "test10", "test11", "test12", "test13", "test14", "test15", "test16", "test17", "test18", "test19", "test20" };
for (int i = 0; i < 20; i++)
{
int j;
for (j = 0; j < 4; j++)
{
if (Rd[i].Items[j].Selected)
{
strAnswer[i] += "&" + strOption[j];
break;
}
}
if (j == 4)
strAnswer[i] += "&" + "未選";
}
Session.Clear();
Session["USERSTYLE"] = "STUDENT";
Session["USERID"] = StrUserID;
Session["USERNAME"] = StrUserName;
for (int i = 0; i < 20; i++)
{
Session[strAn[i]] = strAnswer[i];
}
String sParam = "?strHard=" + strHard;
Response.Redirect("ShowReadExerciseGrade.aspx" + sParam);
}
public String readData(String FileName)
{
String ss = "";
String A = Server.MapPath("Exercise.asps");
String delimStr = "Wed";
string[] sArray = Regex.Split(A, delimStr, RegexOptions.None);
int j = 0;
String[] str = new string[2];
foreach (string filePath in sArray)
{
str[j] = filePath.ToString(); j++;
}
try
{
FileStream fs = new FileStream(str[0] + "\\Wed\\SubjectManage\\Read\\" + FileName, FileMode.Open);
StreamReader sr = new StreamReader(fs);
ss = sr.ReadToEnd();
sr.Close();
}
catch (Exception ex)
{
Console.Write(ex);
}
return ss;
}
protected void BtnReturn_Click(object sender, EventArgs e)
{
Response.Redirect("~/SystemManage/Main.aspx");
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -