亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

利用ASP.NET構建網上考試系統

2019-11-18 19:21:48
字體:
來源:轉載
供稿:網友

  隨著計算機網絡的普及,基于數據庫的B/S網上考試系統得到廣泛地應用,現以asp.net(C#)+SQL server(或access)為例說明開發網上考試系統的實現方法。

  一、數據庫的設計: 

  建立數據庫netexam,在庫中添加考生信息表StuInfo,分別建立以下字段:考號ExamId(c)(主鍵)、考生姓名Name(c)、是否登錄考試LogYn(c)、得分Score(c)、隨機生成的試題答案mca(c) (注:此處以多選題為例,單選題、判斷題同理)。添加多選題題庫表mc,建立以下字段:題目question(c)、四個選choice1(c)、choice2(c)、choice3(c)、choice4(c)、答案answer(c)(注:多選題答案用0表示未選,1表示選擇,如選擇ABD就用1101表示)。

  二、考生登錄:

  在此處將考生信息插入表StuInfo,此處要防止考生重復登錄!給指定唯一的考號,并將考號字段ExamId(c)設為主鍵,當重復登錄時,用Catch捕獲錯誤,給出相應提示,部分代碼如下(login.aspx):

PRivate void ButOk_Click(object sender, System.EventArgs e)
{
 ...
 SqlConnection StuConn=new SqlConnection("Data Source=localhost;Integrated Security=SSPI;
 Initial Catalog=netexam");
 SqlCommand LoginCmd=StuConn.CreateCommand(); //可根據不同情況選擇不同的數據庫連接
 ...
 LoginCmd.CommandText="Insert into StuInfo(ExamId,Name)  values('"+TxtId.Text.Trim()+"','"+TxtName.Text.Trim()+"')";
 //將考號、姓名插入相應字段,其中TxtId,TxtName分別是輸入考號和姓名的文本框
 try
 {
  ...
  session["Id"]=TxtId.Text.Trim();
  StuConn.Open();
  LoginCmd.ExecuteReader();
  Response.Redirect("test.aspx");
 }
 catch(Exception) //捕獲相應錯誤
 {
  Response.Write("<script language=/"javascript/">"+"/n");
  Response.Write("alert(/"不能重復登錄,或考號、姓名、密碼是否有誤!/")"+"/n</script>");
 }
 ...
}
  三、試題生成:

  1、防止考生刷新頁面:

  由于加載試題頁面時將從數據庫中隨機抽取試題,所以應防止考生刷新面頁(刷新頁面會重新生成新的試題)。方法是將表StuInfo中的LogYn字段默認值設為0,加載試題后設為1,交卷評分后設為2,加載試題頁面時進行相應檢查,以防止頁面的刷新,代碼如下(test.aspx):

private void Page_Load(object sender, System.EventArgs e)
{
 if(!IsPostBack)
 {
  ...
  QuestCmd.CommandText="select LogYn from StuInfo where ExamId= '"+ Session["Id"].ToString()+"'";
  QuestConn.Open();
  SqlDataReader QuestRd=QuestCmd.ExecuteReader();
  QuestRd.Read();
  if(QuestRd["LogYn"].ToString().Trim().Equals("1")||QuestRd["LogYn"].ToString().Trim().Equals("2"))
  //判斷是否已加載試題或是否已評分
  {
   ...
   Response.Write("<script language=/"Javascript/">"+"/n");
   Response.Write("alert(/"不能刷新!請與管理員聯系,重新登錄。/")"+"/n</script>");
   ...
  }
  else
  {
   ...
   QuestCmd.CommandText="update StuInfo set LogYn='1'"; //已成功加載試題
   QuestCmd.ExecuteReader();
   ...
  }
 }
 ...
}

  2、隨機生成試題:

  網上考試系統的關鍵是試題的隨機生成,即對于不同的計算機訪問系統時將從題庫中隨機地抽取不同的試題。

  在此我們可使用SQL語句"select top n * from mc order by newid()"從題庫中隨機抽取n條記錄,其中newid()生成 uniqueidentifier 值(若是ACCESS數據庫則用"select top n * from mc order by rnd(id)",其中id為自動編號字段)。

  在test.aspx頁面上放置一個Panel容器控件,以便動態生成綁定到試題的控件,并將從表mc中隨機生成的試題答案寫入表StuInfo表中的mca字段,代碼如下(test.aspx):

private void Page_Load(object sender, System.EventArgs e)
{
 if(!IsPostBack)
 {
  ...
  QuestCmd.CommandText="select top 10 * from mc order by newid()";//以隨機生成10道題為例
  QuestConn.Open();
  QuestRd=QuestCmd.ExecuteReader();
  while(QuestRd.Read())
  {
   Literal LitTxt=new Literal();
   Literal LitBl=new Literal();
   CheckBoxList ChkMc=new CheckBoxList();
   ChkMc.ID="ChkMc"+i.ToString();
   LitTxt.Text=i.ToString()+"、 "+Server.HtmlEncode(QuestRd["Question"].ToString())+"<BR><Blockquote>";
   LitBl.Text="</Blockquote>";
   ChkMc.Font.Size=11;
   for(int j=1;j<=4;j++)
   {
    ChkMc.Items.Add(Server.HtmlEncode(QuestRd["Choice"+j.ToString()].ToString()));
    ChkMc.Items[j-1].Value=j.ToString();
   }
   mcStr+=QuestRd["Answer"].ToString().Trim(); //mcStr是存儲隨機生成試題答案的字符串變量
   MyPanel.Controls.Add(LitTxt);
   MyPanel.Controls.Add(ChkMc);
   MyPanel.Controls.Add(LitBl);
   i++;
  }
  ...
  QuestCmd.CommandText="update StuInfo set Mca='"+mcStr+"' where ExamId= '" +Session["Id"].ToString()+"'";   //將隨機生成試題答案寫入數據表
  QuestConn.Open();
  QuestRd=QuestCmd.ExecuteReader();
  ...
 }
 ...
}
  四、交卷評分:

  當用戶點擊交卷按鈕后,應將用戶的答題結果與試題答案進行比對,并給出相應的分值寫入數據表,最后將表StuInfo中的LogYn字段設置為2,顯示考試得分,代碼如下(test.aspx):

private void ButSend_Click(object sender, System.EventArgs e)
{
 ...
 for(int i=1;i<=10;i++) //由于隨機生成了10道題,所以循環10次
 {
  for(int j=0;j<4;j++)
   if(Request.Form["ChkMc"+i.ToString()+":"+j.ToString()]!=null)
    mcs+="1"; //mcs是存儲考生所選答案的字符串變量,已選用"1"表示,未選用"0"表示
   else
    mcs+="0";
 }
 ...
 QuestCmd.CommandText="select mca from StuInfo where ExamId= '" +Session["Id"].ToString()+"'";
 QuestConn.Open();
 SqlDataReader QuestRd=QuestCmd.ExecuteReader();
 QuestRd.Read();
 int StuScore=0; //存儲得分的變量
 for(i=0;i<10;i+=4)
 {
  if(QuestRd["mca"].ToString().Substring(i,4).Equals(mcs.Substring(i,4)))
   StuScore+=2; //從字段mca和mcs中每次取四個字符進行比對,如相等則加上2分
 }
 ...
 QuestCmd.CommandText="update StuInfo set score="+StuScore.ToString()+",LogYn='2' where ExamId= '" + Session["Id"].ToString()+"'and LogYn='1'"; //設置已評分標志
 QuestRd=QuestCmd.ExecuteReader();
 ...
 Response.Redirect("score.aspx"); //顯示考試得分頁
 ...

  限于篇幅,在此只列出了實現網上考試系統的幾個要點,讀者可根據自已的需要進一步完善相應的數據驗證、后臺管理及界面設計。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲免费影视第一页| 欧美日韩免费网站| 91久久精品一区| 亚洲精品国偷自产在线99热| 97香蕉久久超级碰碰高清版| 性夜试看影院91社区| 亚洲国产精品久久久久秋霞蜜臀| 欧美日韩在线视频一区二区| 亚洲最大的成人网| 国产一区二区三区视频在线观看| 久久久免费精品| 亚洲欧美精品一区| 丁香五六月婷婷久久激情| 日韩亚洲在线观看| 色偷偷偷综合中文字幕;dd| 国产精品va在线播放| 精品欧美国产一区二区三区| 久久久伊人日本| 国产精品视频不卡| 亚洲精品欧美日韩专区| 日韩在线视频观看| 亚洲男女自偷自拍图片另类| 亚洲一区二区三区毛片| 丰满岳妇乱一区二区三区| 欧美视频13p| 欧美亚洲国产精品| 欧美一区二区.| 亚洲免费一级电影| 日韩av色在线| 欧美亚洲视频在线看网址| 亚洲国产91精品在线观看| 久久久精品在线观看| 欧美一级视频一区二区| 欧美午夜片在线免费观看| 日韩av电影在线播放| 日韩电影中文字幕av| 久久手机精品视频| 91亚洲精品一区二区| 国产偷国产偷亚洲清高网站| 亚洲福利在线播放| 国产91久久婷婷一区二区| 久久五月情影视| 久久久亚洲精选| 成人精品久久一区二区三区| 奇米四色中文综合久久| 国产欧美久久久久久| 国内成人精品视频| 日韩av片永久免费网站| 国产一区二区三区毛片| 欧美二区乱c黑人| 久久久成人的性感天堂| 91日本在线视频| 欧美激情视频在线| 欧美激情成人在线视频| 在线播放国产一区中文字幕剧情欧美| 日韩男女性生活视频| 久久久国产视频91| 欧美国产视频日韩| 国产精品夫妻激情| 伊人伊成久久人综合网站| 亚洲国产欧美一区二区三区同亚洲| 欧美日韩国产在线播放| 一区二区国产精品视频| 亚洲一品av免费观看| 中文字幕亚洲综合| 成人网欧美在线视频| 国产精品稀缺呦系列在线| 精品香蕉一区二区三区| 在线国产精品播放| 全色精品综合影院| 日韩激情视频在线播放| 永久免费看mv网站入口亚洲| 久久免费在线观看| 国产成人精品久久二区二区91| 欧美精品激情blacked18| 久久久久国产精品免费网站| 色爱精品视频一区| 日韩在线视频国产| 国产精品欧美激情在线播放| 国产激情视频一区| 欧美在线视频一区二区| 91国语精品自产拍在线观看性色| 成人av资源在线播放| 久久精品国产亚洲一区二区| 亚洲黄页视频免费观看| 久久精品久久久久电影| 欧美日韩国产精品一区二区不卡中文| 日韩在线观看免费网站| 最近2019中文字幕一页二页| 欧美成人小视频| 国产欧美精品va在线观看| 欧美精品久久久久久久久| 久久久久久中文字幕| 2018日韩中文字幕| 91精品久久久久| 亚洲va欧美va在线观看| 国产91精品久久久| 欧美激情视频一区二区三区不卡| 欧美最顶级丰满的aⅴ艳星| 亚洲欧美日韩高清| 欧美成人黄色小视频| 日韩免费在线视频| 日韩高清免费观看| 久久久久999| 国产www精品| 久久精品国产成人精品| 亚洲人高潮女人毛茸茸| 91精品国产91久久| 久久久精品国产亚洲| 538国产精品一区二区免费视频| 国产精品丝袜一区二区三区| 国产精品中文字幕在线观看| 亚洲欧美一区二区三区久久| 欧美高清一级大片| 欧美一级大片在线观看| 欧美一级大片视频| 久久中国妇女中文字幕| 国产+成+人+亚洲欧洲| 国产精品久久精品| 日本欧美一二三区| 成人精品久久av网站| 欧美怡春院一区二区三区| 国产不卡在线观看| 91精品久久久久久久久久久久久| 亚洲美腿欧美激情另类| 国产日本欧美一区二区三区| 国产成+人+综合+亚洲欧美丁香花| 国产精品久久久久久影视| 伊人久久大香线蕉av一区二区| 久久精品国产96久久久香蕉| 亚洲国产精彩中文乱码av| 黑人欧美xxxx| 欧美大片在线免费观看| 国产精品吹潮在线观看| 亚洲综合中文字幕68页| 国产精品视频午夜| 欧美成人自拍视频| 91免费的视频在线播放| 97人人做人人爱| 日韩一区视频在线| 欧美成人小视频| 亚洲精品永久免费| 亚洲成人久久网| 亚洲性69xxxbbb| 在线精品国产成人综合| 另类专区欧美制服同性| 中文字幕自拍vr一区二区三区| 国产拍精品一二三| 91av视频在线播放| 欧美韩日一区二区| www.日本久久久久com.| 国产福利视频一区| 久久夜色精品国产亚洲aⅴ| 国产伦精品一区二区三区精品视频| 成人黄色免费网站在线观看| 欧美影院成年免费版| 国产成人精品日本亚洲专区61| 国产精品日韩在线观看| 日韩欧美国产一区二区| 精品一区二区三区四区在线| 欧美精品成人91久久久久久久| 亚洲视频在线观看网站| 91在线高清视频| 欧美日本黄视频|