用户设计

-|学生

-|老师

-|管理员

学生结构设计

-|个人信息管理

-|修改个人信息

-|修改登录密码

-|选课中心

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

-|显示自己已选课程

-|在线考试

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

-|成绩查询

-|查看自己考试成绩

  老师结构设计

-|个人信息管理

-|修改个人信息

-|修改登录密码

-|课程管理

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

-|显示老师开设的课程

-|考试管理

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

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

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

管理员结构设计**

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

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

数据库支撑:

管理员表

老师表

学生表

选择题表 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

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

附加函数:

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

页面代码:

 using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using MySql.Data.MySqlClient;
using DB_; public partial class student3 : System.Web.UI.Page
{
static int[] da = new int[];//存放答案 xz
int daa = ;//记录第几条 ,答案选项0123 xz
public static string[,] tkda = new string[, ];//存放答案 tk 最多十条填空,3用来标识关键字只有k1-k3
public static string[,] jdda = new string[, ];//存放答案 jd 同填空题
DB db = new DB();//创建对象
//------
//生成试卷 选择5 50 填空5 25 简答题 2 25
//
int xzt = , tkt = , jdt = , xzf = , tkf = , jdf = ;
int jdcj = , tkcj = , xzcj = ;
static int tkkk = ;//填空题记录有几个空 填空
static string Kid = "", Tid = "";
protected void Page_Load(object sender, EventArgs e)
{
try
{ if (!IsPostBack)
{
if (Request["kid"] != null && Request["tid"] != null)
{
Kid = Request["kid"].ToString();
Tid = Request["tid"].ToString();
}
XZZ();
TKK();
JDD();
}
}
catch
{ Response.Write("<script>alert('载入有误请重新登录!');window.location.href='Login.aspx';</script>"); } }
protected void XZZ()
{
// MySqlConnection con=null;
try
{
int tm = ;
string sqlstr = "SELECT * from XZe_ where XZe_Type='"+Kid+"' and XZe_TeaId='"+Tid+"' order by rand() limit "+xzt;
// con = db.conntent();
MySqlDataReader selectcom = db.Select1(sqlstr);//, con
while (selectcom.Read())
{
Label j1 = new Label();
RadioButtonList i1 = new RadioButtonList();
//i1.ID = js.ToString();
j1.Text = tm.ToString()+". "+selectcom.GetString("XZe_T");//题目
tm++;//1. 2. 3.
int[] a1 = new int[];//存放随机结果 a[0-3]=>3-6
RepeatDirection Horizontal = new RepeatDirection();//设置单选按钮组为横排
i1.RepeatDirection = Horizontal;//设置单选按钮组为横排+ a1 = db.PaiXu();//使用排序得到随机的3456
for (int j = ; j < ; j++)
{
if (a1[j] == ) { da[daa++] = j; }
ListItem a22 = new ListItem();//建立列表组
a22.Value = j.ToString();//用于取出value 值与答案比较
a22.Text = selectcom.GetString(a1[j]);//将数据付给listItem 对象
i1.Items.Add(a22);//添加数据到列表项
}
XZ.Controls.Add(j1);
XZ.Controls.Add(i1);
}
}
catch(Exception e) { Response.Write("取数据有错误"); }
finally { } }
protected void TKK()
{
tkkk = ;
int a = ;
string sqlstr ="SELECT * from tk_ where TK_Type='"+Kid+"' and TK_TeaId='"+Tid+"' order by rand() limit "+tkt;
MySqlDataReader selectcom = db.Select1(sqlstr);
while (selectcom.Read())
{
for (int j = , i = ; i < ; i++)//数据库中答案字段 3-6
{
tkda[a, j++] = selectcom.GetString(i);
}
Label j1 = new Label();//存放题目
string abc = selectcom.GetString("TK_T");
string[] arr = abc.Split('_');//用 _ 来分割有几个空
j1.Text = "<br />"+ (++a).ToString()+"."+selectcom.GetString("TK_T")+"<br />";//题目
TK.Controls.Add(j1);//添加题目到网页中
for (int i = ; i < arr.Length - ; i++)
{
tkkk++;
TextBox q = new TextBox();
TK.Controls.Add(q);
//生成相应的填空
}
}
}
protected void JDD()
{
int j = ;
string sqlstr = "SELECT * from jd_ where JD_Type='" + Kid + "' and JD_TeaId='" + Tid + "' order by rand() limit "+jdt;
MySqlDataReader selectcom = db.Select1(sqlstr);//, con
while (selectcom.Read())
{ for (int a = , i = ; i < ; i++)
{
jdda[j, a++] = selectcom.GetString(i);//i用来取数,a用来写入数组,j用来表示第几条数据
}
Label j1 = new Label();//存放题目
j1.Text = "<br />"+ (++j).ToString()+"."+selectcom.GetString("JD_T")+"<br />";//题目
TextBox a1 = new TextBox();
a1.TextMode = TextBoxMode.MultiLine;///设置文本框为多行输入
a1.Rows = ;//设置文本框的行数
JD.Controls.Add(j1);//添加题目到网页中
JD.Controls.Add(a1);//添加文本框
}
}
protected void LOOK_Click(object sender, EventArgs e)
{
XZCJ(); TKCJ(); JDCJ();
int zz = xzcj + tkcj + jdcj;
string cjj = "insert into xsks_ values('"+Session["id"]+"','" + Tid + "','" + Kid + "',CURDATE( ),'" + zz + "')";
if (db.ZSG(cjj)) { Response.Write("<script>alert('成绩提交成功!你的成绩是 "+zz.ToString()+"');window.location.href='students.aspx'</script>"); }
else{ Response.Write("<script>alert('成绩提交失败!');</script>"); }
}
protected void XZCJ()
{
int j = xzt, i = ;
try
{
while (i < xzt)
{
int xzx = Convert.ToInt32(Request.Form[j++].ToString());//*得到选择项
if (da[i++] == xzx)
xzcj += (xzf / xzt);
} }
catch
{ }
}
protected void TKCJ()
{ int xx = xzt*;
try
{
for (int i = ; i < tkt; i++)
{
for (int j = ; j < ; j++)
{
if (tkda[i, j] == " ") continue;
if (tkda[i, j] == Request.Form[xx++].ToString())
tkcj += (tkf / tkkk);
}
} }
catch
{ }
}
protected void JDCJ()
{ int xx = *xzt+tkcj;
try
{
for (int i = ; i < tkt; i++)
{
for (int j = ; j < ; j++)
{
if (jdda[i, j] == " ") continue;
if (Request.Form[xx].ToString().IndexOf(jdda[i, j]) + >= )
{ if (jdcj < (jdf / jdt))jdcj += ; else break; }
}
xx++;
} }
catch(Exception e)
{ } }
}

该项目已被学姐要走。=_=!

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

  1. Java在线考试系统(含源码)

    本文demo下载和视频教学观看地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=1076 本实例介绍了在线考 ...

  2. 基于ssh框架的在线考试系统开发的质量属性

    我做的系统是基于ssh框架的在线考试系统.在线考试系统有以下几点特性:(1)系统响应时间需要非常快,可以迅速的出题,答题.(2)系统的负载量也需要非常大,可以支持多人在线考试(3)还有系统的安全性也需 ...

  3. WSB功能分解(在线考试系统)

    对在线考试系统进行WSB功能分解至三级子功能,并且预估每个子功能所需时间. 一级功能 二级功能 三级功能 预估花费时间(小时) 考试管理员功能模块 培训计划 查询 1.5 重置 1 新增计划 1.5 ...

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

    项目名:在线考试系统 组名:金州勇士 测试者:宫丽君(nice!团队) 代码地址: ssh:git@git.coding.net:handsomeman/examm.git     https://g ...

  5. JavaWeb项目开发案例精粹-第3章在线考试系统-007View层

    0.login.jsp <%@ page language="java" import="java.util.*" pageEncoding=" ...

  6. zzzzw_在线考试系统①准备篇

    在弄完购物系统之后,小博也了解了解怎么用struts这个框架捣鼓一个在线考试系统 购物系统用的是MVC模式,现在这个struts2原理上也是基于MVC模式的.那么要做这个东西之前先了解一下难点在哪里 ...

  7. 基于Web在线考试系统的设计与实现

    这是一个课程设计的文档,源码及文档数据库我都修改过了,貌似这里复制过来的时候图片不能贴出,下载地址:http://download.csdn.net/detail/sdksdk0/9361973   ...

  8. 基于Django的在线考试系统

    概述 基于Django的在线考试系统,适配电脑端,可以实现出题,答题,排行榜,倒计时等等等功能 详细 代码下载:http://www.demodashi.com/demo/13923.html 项目目 ...

  9. 超强在线考试系统源码(私有部署&二次开发)

    随着信息化技术的发展,考试系统也在进行着深入的变革.从传统的纸质考试人工评分到现在的在线考试自动评分. 在线考试系统的应用场景也在逐渐扩宽,例如:学校的学生考试.员工培训考试.招聘考试.职称考试等等. ...

  10. 基于B/S架构的在线考试系统的设计与实现

    前言 这个是我的Web课程设计,用到的主要是JSP技术并使用了大量JSTL标签,所有代码已经上传到了我的Github仓库里,地址:https://github.com/quanbisen/online ...

随机推荐

  1. 一个Activity掌握Android4.0新控件 (转)

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51261380 谷歌在推出Android4.0的同时推出了一些新控件,Android4.0中最常 ...

  2. truncate与delete的区别

    TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源 ...

  3. mysql-函数CASE WHEN 语句使用说明

    mysql数据库中CASE WHEN语句. case when语句,用于计算条件列表并返回多个可能结果表达式之一. CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以 ...

  4. lucene-查询query->FuzzyQuery相近词语的搜索

    FuzzyQuery是一种模糊查询,它可以简单地识别两个相近的词语.下面以11.10为例进行详细介绍. package ch11; import org.apache.lucene.analysis. ...

  5. Bootstrap表单布局样式

    1.并排和下拉选项 <form class="form-horizontal" role="form"> <fieldset> < ...

  6. jquery.ui.widget详解

    案例详解 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  7. Quality Trimming Via Trimmomatic

    已经去除接头(adapter) java -jar trimmomatic.jar PE -threads 20 -phred33 \ left.fastq.gz right.fastq.gz \ l ...

  8. c# 文件转换成base64

    private static void ReadFromFile() { FileStream fsForRead = new FileStream("c9a78c8a-29b0-410d- ...

  9. 【BZOJ-2768】冠军调查 最小割

    2768: [JLOI2010]冠军调查 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 971  Solved: 661[Submit][Status ...

  10. C++开发的基于TCP协议的内网聊天工具

    项目相关地址 源码:https://github.com/easonjim/TCPChat bug提交:https://github.com/easonjim/TCPChat/issues