首页 > 代码库 > 在线考试系统(Online Exam System)--ASP.NET

在线考试系统(Online Exam System)--ASP.NET

用户设计

    -|学生

    -|老师

    -|管理员

学生结构设计

    -|个人信息管理

       -|修改个人信息

       -|修改登录密码

    -|选课中心

       -|显示所有老师所开课的信息可进行选课

       -|显示自己已选课程

    -|在线考试

       -|对已选老师开设的课程选择进行考试

    -|成绩查询

       -|查看自己考试成绩

 

  老师结构设计

    -|个人信息管理

       -|修改个人信息

       -|修改登录密码

    -|课程管理

       -|显示学校开设的课程(老师可选择添加课程)

       -|显示老师开设的课程

    -|考试管理

       -|显示老师自己开设的课程

       -|对课程添加试题(选择、填空、简答)

       -|查看所开设课程的考试信息(查看该课程学生考试情况)

管理员结构设计**

    -|初始教师信息(写入老师编号,老师根据编号才能注册)

    -|初始课程信息(写入课程信息,老师可选择课程进行开设)

数据库支撑:

技术分享管理员表

技术分享老师表

技术分享学生表

技术分享选择题表 XZe_yi存放正确答案,在前台进行调整选项,减少数据冗余。

XZe_Type:该选择题属于哪个科目,直接写课程ID。XZe_Zl:是真题还是练习题。XZe_Zj:题目章节。

技术分享填空题表 这里TK_k1, 该题第一个空的答案,TK_k2 第二个空的答案,类推

【这里TK_F字段,判断这几个答案是否可以乱序回答,例如,请说出四书是那四书,那么此时的答案可能是乱序的。答辩时碰到导师问道这个问题//0.0,后加上的】

技术分享简答题表

 技术分享课程表

技术分享老师选课表

技术分享学生选课表

界面支撑:

 技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

 

其他页面不在展示......

 总结点(大牛勿喷):

在本次实训中,对学过的ASP.net进行了实践,个人感觉关键点:对整体考试系统的把握、数据库的分析与创建、在线考试页面的技术支撑。

再细一点,整个系统运行的流程,三个不同角色的功能。数据库表的分析,尽量的“优”。各个页面技术的实现细节。

整个系统不再赘述。数据库要分析好【如果读者觉得本次数据库设计还有什么好的意见请留言博主,先谢谢】。

各页面技术的实现。

对数据的操作封装,代码设计细节参见:http://www.cnblogs.com/A--Q/p/5172009.html

前台三个角色的登录,设计细节参见:http://www.cnblogs.com/A--Q/p/5323971.html

在线考试页面,设计细节:

附加函数:

 1         public Random a = new Random();//对试卷选项进行排序生成随机顺序 2         public int[] PaiXu() //随机排序,返回一个整形数组,长度为4,值为3 4 5 6,不确定值的顺序,用于选择题的选项排序 3         { 4             int[] i = new int[4]; 5  6             i[0] = a.Next(3, 6); 7             switch (i[0]) 8             { 9                 case 3: i[1] = a.Next(4, 5); i[2] = 6; i[3] = 9 - i[1]; break;10                 case 4: i[1] = a.Next(5, 6); i[2] = 3; i[3] = 11 - i[1]; break;11                 case 5: i[1] = a.Next(3, 4); i[2] = 7 - i[1]; i[3] = 6; break;12                 case 6: i[1] = a.Next(3, 4); i[2] = 5; i[3] = 7 - i[1]; break;13             }14             return i;15         }16         

页面代码:

  1 using System;  2 using System.Collections;  3 using System.Configuration;  4 using System.Data;  5 using System.Linq;  6 using System.Web;  7 using System.Web.Security;  8 using System.Web.UI;  9 using System.Web.UI.HtmlControls; 10 using System.Web.UI.WebControls; 11 using System.Web.UI.WebControls.WebParts; 12 using System.Xml.Linq; 13 using MySql.Data.MySqlClient; 14 using DB_; 15  16 public partial class student3 : System.Web.UI.Page 17 { 18     static int[] da = new int[6];//存放答案 xz 19     int daa = 0;//记录第几条 ,答案选项0123  xz 20     public static string[,] tkda = new string[10, 3];//存放答案 tk 最多十条填空,3用来标识关键字只有k1-k3 21     public static string[,] jdda = new string[10, 6];//存放答案 jd 同填空题 22     DB db = new DB();//创建对象 23     //------ 24     //生成试卷 选择5 50 填空5 25 简答题 2 25 25     // 26     int xzt = 5, tkt = 5, jdt = 2, xzf = 50, tkf = 25, jdf = 25; 27     int jdcj = 0, tkcj = 0, xzcj = 0; 28     static int tkkk = 0;//填空题记录有几个空 填空 29     static string Kid = "", Tid = ""; 30     protected void Page_Load(object sender, EventArgs e) 31     { 32         try 33         { 34  35             if (!IsPostBack) 36             { 37                 if (Request["kid"] != null && Request["tid"] != null) 38                 { 39                     Kid = Request["kid"].ToString(); 40                     Tid = Request["tid"].ToString(); 41                 } 42                 XZZ(); 43                 TKK(); 44                 JDD(); 45             } 46         } 47         catch 48         { Response.Write("<script>alert(‘载入有误请重新登录!‘);window.location.href=http://www.mamicode.com/‘Login.aspx‘;</script>"); } 49  50          51     } 52     protected void XZZ() 53     { 54       //  MySqlConnection con=null; 55         try 56         { 57             int tm = 1; 58             string sqlstr = "SELECT * from XZe_ where XZe_Type=‘"+Kid+"‘ and XZe_TeaId=‘"+Tid+"‘ order by rand() limit "+xzt;  59             // con = db.conntent(); 60             MySqlDataReader selectcom = db.Select1(sqlstr);//, con 61             while (selectcom.Read()) 62             { 63                 Label j1 = new Label(); 64                 RadioButtonList i1 = new RadioButtonList(); 65                 //i1.ID = js.ToString(); 66                 j1.Text = tm.ToString()+". "+selectcom.GetString("XZe_T");//题目 67                 tm++;//1.  2.  3.  68                 int[] a1 = new int[4];//存放随机结果 a[0-3]=>3-6 69                 RepeatDirection Horizontal = new RepeatDirection();//设置单选按钮组为横排 70                 i1.RepeatDirection = Horizontal;//设置单选按钮组为横排+ 71                  72                 a1 = db.PaiXu();//使用排序得到随机的3456 73                 for (int j = 0; j < 4; j++) 74                 { 75                     if (a1[j] == 3) { da[daa++] = j; } 76                     ListItem a22 = new ListItem();//建立列表组 77                     a22.Value = http://www.mamicode.com/j.ToString();//用于取出value 值与答案比较 78                     a22.Text = selectcom.GetString(a1[j]);//将数据付给listItem 对象 79                     i1.Items.Add(a22);//添加数据到列表项 80                 } 81                 XZ.Controls.Add(j1); 82                 XZ.Controls.Add(i1); 83             } 84         } 85         catch(Exception e) { Response.Write("取数据有错误"); } 86         finally {   } 87  88     } 89     protected void TKK() 90     { 91         tkkk = 0; 92         int a = 0; 93         string sqlstr ="SELECT * from tk_ where TK_Type=‘"+Kid+"‘ and TK_TeaId=‘"+Tid+"‘ order by rand() limit "+tkt; 94         MySqlDataReader selectcom = db.Select1(sqlstr); 95         while (selectcom.Read()) 96         { 97             for (int j = 0, i = 3; i < 6; i++)//数据库中答案字段 3-6 98             { 99                 tkda[a, j++] = selectcom.GetString(i);100             }101             Label j1 = new Label();//存放题目102             string abc = selectcom.GetString("TK_T");103             string[] arr = abc.Split(_);//用 _ 来分割有几个空104             j1.Text = "<br />"+ (++a).ToString()+"."+selectcom.GetString("TK_T")+"<br />";//题目105             TK.Controls.Add(j1);//添加题目到网页中106             for (int i = 0; i < arr.Length - 1; i++)107             {108                 tkkk++;109                 TextBox q = new TextBox();110                 TK.Controls.Add(q);111                 //生成相应的填空112             }113         }114     }115     protected void JDD()116     {117         int j = 0;118         string sqlstr = "SELECT * from jd_ where JD_Type=‘" + Kid + "‘ and JD_TeaId=‘" + Tid + "‘ order by rand() limit "+jdt;119         MySqlDataReader selectcom = db.Select1(sqlstr);//, con120         while (selectcom.Read())121         {122 123             for (int a = 0, i = 3; i < 9; i++)124             {125                 jdda[j, a++] = selectcom.GetString(i);//i用来取数,a用来写入数组,j用来表示第几条数据126             } 127             Label j1 = new Label();//存放题目128             j1.Text = "<br />"+ (++j).ToString()+"."+selectcom.GetString("JD_T")+"<br />";//题目129             TextBox a1 = new TextBox();130             a1.TextMode = TextBoxMode.MultiLine;///设置文本框为多行输入131             a1.Rows = 4;//设置文本框的行数132             JD.Controls.Add(j1);//添加题目到网页中133             JD.Controls.Add(a1);//添加文本框134         }135     }136     protected void LOOK_Click(object sender, EventArgs e)137     {138         XZCJ(); TKCJ(); JDCJ();139         int zz = xzcj + tkcj + jdcj;140         string cjj = "insert into xsks_ values(‘"+Session["id"]+"‘,‘" + Tid + "‘,‘" + Kid + "‘,CURDATE( ),‘" + zz + "‘)";141         if (db.ZSG(cjj)) { Response.Write("<script>alert(‘成绩提交成功!你的成绩是 "+zz.ToString()+"‘);window.location.href=http://www.mamicode.com/‘students.aspx‘</script>"); }142         else{ Response.Write("<script>alert(‘成绩提交失败!‘);</script>"); }143     }144     protected void XZCJ()145     {146         int j = xzt, i = 0;147         try148         {149             while (i < xzt)150             {151                 int xzx = Convert.ToInt32(Request.Form[j++].ToString());//*得到选择项152                 if (da[i++] == xzx)153                     xzcj += (xzf / xzt);154             }155 156         }157         catch158         {159 160         }161     }162     protected void TKCJ()163     {164 165         int xx = xzt*2;166         try167         {168             for (int i = 0; i < tkt; i++)169             {170                 for (int j = 0; j < 3; j++)171                 {172                     if (tkda[i, j] == " ") continue;173                     if (tkda[i, j] == Request.Form[xx++].ToString())174                         tkcj += (tkf / tkkk);175                 }176             }177 178         }179         catch180         {181 182         }183     }184     protected void JDCJ()185     {186 187         int xx = 2*xzt+tkcj;188         try189         {190             for (int i = 0; i < tkt; i++)191             {192                 for (int j = 0; j < 6; j++)193                 {194                     if (jdda[i, j] == " ") continue;195                     if (Request.Form[xx].ToString().IndexOf(jdda[i, j]) + 1 >= 1)196                     { if (jdcj < (jdf / jdt))jdcj += 3; else break; }197                 }198                 xx++;199             }200 201         }202         catch(Exception e)203         {        }204 205     }206 }

 

在线考试系统(Online Exam System)--ASP.NET