用户设计

-|学生

-|老师

-|管理员

学生结构设计

-|个人信息管理

-|修改个人信息

-|修改登录密码

-|选课中心

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

-|显示自己已选课程

-|在线考试

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

-|成绩查询

-|查看自己考试成绩

  老师结构设计

-|个人信息管理

-|修改个人信息

-|修改登录密码

-|课程管理

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

-|显示老师开设的课程

-|考试管理

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

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

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

管理员结构设计**

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

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

数据库支撑:

管理员表

老师表

学生表

选择题表 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. Swift开发小技巧--自定义转场动画

    自定义转场动画 个人理解为重写了被弹出控制器的modal样式,根据自己的样式来显示modal出来的控制器 例:presentViewController(aVC, animated: true, co ...

  2. iOS开发小技巧--实现将图片保存到本地相册

    一.报错的代码 错误 -- out of bounds 超出界限的意思 *** Terminating app due to uncaught exception 'NSInvalidArgument ...

  3. 【BZOJ 3083】遥远的国度

    这道题很简单的连剖+分类讨论,但是SDOI Round2要来了,不会手动栈怎么办呢?只好用一下这道题练习一下手动栈了,结果调了一天多QwQ 链剖的第一个dfs用bfs水过就行,但是我自以为是地把倍增写 ...

  4. jsp页面的forEach和判断

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <c:forE ...

  5. 【LintCode】删除链表中的元素

    问题分析: 声明当前指针和上一个指针即可. 问题求解: public class Solution { public ListNode removeElements(ListNode head, in ...

  6. 卸载移动硬盘出现 device is busy

    umount /dev/sdb1 # device is busy fuser -m -v /dev/sdb1 # 查看 fuser -m -k /dev/sdb1 # 杀死进程

  7. Python的禅,“提姆彼得斯”说的非常有道理道出了这门编程语言的真谛!

    The Zen of Python, by Tim Peters Beautiful is better than ugly.Explicit is better than implicit.Simp ...

  8. 【poj1160】 Post Office

    http://poj.org/problem?id=1160 (题目链接) 题意 按照递增顺序给出一条直线上坐标互不相同的n个村庄,要求从中选择p个村庄建立邮局,每个村庄使用离它最近的那个邮局,使得所 ...

  9. wpf中textbox与textblock有什么区别

    textbox是windows.form控件,textblock是WPF控件. 功能类似,但后者功能更强,也节省系统资源 wpf是基于directx技术的系统,向后兼容性更好. textblock只用 ...

  10. xcoj 1208 矩阵

    赛场上一开始以为是递推,交了一发希望以为能卡着线过(毕竟是O(5N)的),结果WA了. 又以为是dp,最后半小时尝试各种YY...各种WA 实际上取每次transfer中最大的概率然后递推是不对的.. ...