在线考试系统(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=‘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 = 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);//, con
120         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=‘students.aspx‘</script>"); }
142         else{ Response.Write("<script>alert(‘成绩提交失败!‘);</script>"); }
143     }
144     protected void XZCJ()
145     {
146         int j = xzt, i = 0;
147         try
148         {
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         catch
158         {
159
160         }
161     }
162     protected void TKCJ()
163     {
164
165         int xx = xzt*2;
166         try
167         {
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         catch
180         {
181
182         }
183     }
184     protected void JDCJ()
185     {
186
187         int xx = 2*xzt+tkcj;
188         try
189         {
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 }
时间: 2024-12-09 11:02:48

在线考试系统(Online Exam System)--ASP.NET的相关文章

在线考试系统

本文demo下载地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=1078 本实例介绍了在线考试系统, 前台使用bootstrap技术,后台使用structs和herbinate, 数据库为mysql, 系统分为管理员和学生二个角色,管理员可以管理学生和试题,学生可以在线进行答题并且实时获得分数 项目对应的实例代码可以通过右侧[下载实例]按钮获取 开发工具: MyEclipse10, JDK1.7, To

在线考试系统测试报告

1.项目名称:                    在线考试系统 2.用户需求规格说明书URL:http://www.cnblogs.com/yinll314/p/6061359.html 3.组长博客URL:              http://www.cnblogs.com/yinll314/ 4.代码git URL:               ssh:[email protected]:handsomeman/examm.git                           

小项目 在线考试系统

mysql+ myeclipse 开发的在线考试系统 无登陆注册,去模拟实现计算机网络考试系统 http://jkx.cxtc.edu.cn/ks/ 浏览即可开始答题 提交后即可以看到答案. 现在的项目没有记分过程,没有将用户的答题记录回显. 框架  仅运用了Hibernate框架对数据库操作的简便. 随机取n条信息语句方面 List<Parper> list= session.createQuery("from Parper order by rand()").setFi

网上在线考试系统Final Review报告

项目:网上在线考试系统 组名:金州勇士 组长:尹良亮 组员:杜月.王汉斌.闫浩楠 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 对学生进行在线的考试,使传统繁琐的考试过程变得更加简便.定义很清楚.典型用户是教师和学生,典型场景是考试. 2.是否有充足的时间来做计划? 有充足的时间来做计划,但是计划会随着项目的推进做出更改. 3.团队在计划阶段是如何解决同事们对于计划的不同意见的? 对不同意见进行讨论,最终由组长决定. 计划 1.原计划的工作是

Bug测试报告--在线考试系统--金州勇士

项目名:在线考试系统 组名:金州勇士 测试者:宫丽君(nice!团队) 代码地址: ssh:[email protected]:handsomeman/examm.git     https://git.coding.net/handsomeman/examm.git 团队产品规格说明书:http://www.cnblogs.com/yinll314/p/6061359.html 看到的现象: 培训签到里点击评论,写完评论内容以后点击提交,虽然提交成功,但是文本框里仍然有之前评论的内容. 期待的

网上在线考试系统需求分析

随着经济的发展,人们对教育的重视,需要上学的人也越来越多 ,随之而来的考试问题也给了老师和考生带来了不小的麻烦.在老师角度,传统的考试方式,要求老师打印考卷,监考,批卷,发卷,使老师的工作量很大,而且这些环节都是由手工完成,非常容易出错.同时,在考生角度,传统考试方式也带来了极大的不便.因此,为降低学校的管理成本和减少人力物力的投入,为老师提高考试效率,为考生提供更全面和灵活的服务,网上在线考试系统会包括在线考试,成绩查询,个人资料修改等功能,以满足老师和考生的需求.

zzzzw_在线考试系统①准备篇

在弄完购物系统之后,小博也了解了解怎么用struts这个框架捣鼓一个在线考试系统 购物系统用的是MVC模式,现在这个struts2原理上也是基于MVC模式的.那么要做这个东西之前先了解一下难点在哪里 1.首先肯定是struts框架的搭建的问题啦.这个肯定是最让人恶心的,上次根据一个基于struts框架的学生信息管理系统成功搭建过struts框架.早上重新试着搭建了一下框架,发现用不了,于是我怒了,果断把上次的项目直接拿出来,把框架留下,其余的东西可以删除掉.不多说,分享一下struts2的框架给

在线考试系统视频教程和源码

购买视频教程QQ:1416759661  淘宝网担保交易 安全便捷 视频教程是高清完整版 放心购买 安心学习 旺旺: QQ: 点击购买 夜鹰教程的忠实粉丝们,经过几周的努力,夜鹰教程网在线考试系统视频教程终于录制完毕了,本套教程重点讲解了在线考试系统的数据库设计和程序开发,主要实现的功能包括的试题的新增和维护,题库的管理,考试主体信息的管理和维护,用户的管理和维护,体型全面覆盖了单选题.多选题.判断题.填空题.主观题(例如:作文),,考试的同时还有倒计时功能.此考试系统实现了主观题人工阅卷,非主

在线考试系统商业项目

本系统是专门针对各种培训机构,学校,政府行政事业单位,入学考试,课程测试训练等需求开发的在线考试系统,可以在线出题(支持Excel批量试题导入导出,支持试卷图片上传下载),在线考试(支持做题模式,背题模式,可以查看答案及解析,真题模式,考试模式,设置考试时间倒计时,到时自动交卷),自动阅卷(交卷自动统计分数,类似考驾照),题型支持单选题,多选题,判断题,问答题等:项目包含学生考试的前台及管理人员出题,权限及管理的后台2部分,项目功能完善,本系统已在多家大型机构上线使用,系统采用jsp,ssh,e

基于Django的在线考试系统

概述 基于Django的在线考试系统,适配电脑端,可以实现出题,答题,排行榜,倒计时等等等功能 详细 代码下载:http://www.demodashi.com/demo/13923.html 项目目录结构: account为扩展的Django用户模块 analysis为用户答题分析模块 api为接口路由 business为机构配置信息模块 competition为比赛核心模块 config为配置文件目录 utlis为python脚本工具 web为前端代码目录 checkcodestyle.sh