在线考试系统(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
在线考试页面,设计细节:
附加函数:
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的更多相关文章
- Java在线考试系统(含源码)
本文demo下载和视频教学观看地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=1076 本实例介绍了在线考 ...
- 基于ssh框架的在线考试系统开发的质量属性
我做的系统是基于ssh框架的在线考试系统.在线考试系统有以下几点特性:(1)系统响应时间需要非常快,可以迅速的出题,答题.(2)系统的负载量也需要非常大,可以支持多人在线考试(3)还有系统的安全性也需 ...
- WSB功能分解(在线考试系统)
对在线考试系统进行WSB功能分解至三级子功能,并且预估每个子功能所需时间. 一级功能 二级功能 三级功能 预估花费时间(小时) 考试管理员功能模块 培训计划 查询 1.5 重置 1 新增计划 1.5 ...
- Bug测试报告--在线考试系统--金州勇士
项目名:在线考试系统 组名:金州勇士 测试者:宫丽君(nice!团队) 代码地址: ssh:git@git.coding.net:handsomeman/examm.git https://g ...
- JavaWeb项目开发案例精粹-第3章在线考试系统-007View层
0.login.jsp <%@ page language="java" import="java.util.*" pageEncoding=" ...
- zzzzw_在线考试系统①准备篇
在弄完购物系统之后,小博也了解了解怎么用struts这个框架捣鼓一个在线考试系统 购物系统用的是MVC模式,现在这个struts2原理上也是基于MVC模式的.那么要做这个东西之前先了解一下难点在哪里 ...
- 基于Web在线考试系统的设计与实现
这是一个课程设计的文档,源码及文档数据库我都修改过了,貌似这里复制过来的时候图片不能贴出,下载地址:http://download.csdn.net/detail/sdksdk0/9361973 ...
- 基于Django的在线考试系统
概述 基于Django的在线考试系统,适配电脑端,可以实现出题,答题,排行榜,倒计时等等等功能 详细 代码下载:http://www.demodashi.com/demo/13923.html 项目目 ...
- 超强在线考试系统源码(私有部署&二次开发)
随着信息化技术的发展,考试系统也在进行着深入的变革.从传统的纸质考试人工评分到现在的在线考试自动评分. 在线考试系统的应用场景也在逐渐扩宽,例如:学校的学生考试.员工培训考试.招聘考试.职称考试等等. ...
- 基于B/S架构的在线考试系统的设计与实现
前言 这个是我的Web课程设计,用到的主要是JSP技术并使用了大量JSTL标签,所有代码已经上传到了我的Github仓库里,地址:https://github.com/quanbisen/online ...
随机推荐
- Gitlab的搭建
从网上看了一大堆的资料,最终选定按照github上的文档来搭建,虽然本人英文不好,就这样看着 这个博客弯曲完全是拷贝过来的,只为了做个笔记 原文地址:https://github.com/gitlab ...
- ViewPager导航栏TabLayout
ViewPager中加入TabLayout导航 需要导入依赖包: 'com.android.support:appcompat-v7:xxxxx' compile 'com.android.supp ...
- maven2打包不同jdk版本的包
通常在一些特别情况下,我们需要为单独某一个构件打包多个不同jdk版本的包,用来支持不同的jdk,基于maven我们就可以很方便的做到这点. 1.在项目的pom文件中加入如下配置 <project ...
- JavaScript的DOM操作-重点部分-第一部分
Window.document 对象 一.找到元素 document.getElementById("id"); 根据id找,最多找一个: var a = document.get ...
- spring第一课,beans配置(上)
1.通过property配置bean <!-- 配置一个 bean --> <bean id="helloWorld" class="com.atgui ...
- 【BZOJ-1103】大都市meg 树状数组 + DFS序
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2009 Solved: 1056[Submit][Sta ...
- 【poj2741】 Colored Cubes
http://poj.org/problem?id=2741 (题目链接) 题意 给出n个骰子,每一面都有一种颜色,问最少更改多少个面的颜色可以使所有骰子通过旋转后完全相同. solution 迷之d ...
- 【uoj58】 WC2013—糖果公园
http://uoj.ac/problem/58 (题目链接) 题意 给定一棵树,每个点有一个颜色,提供两种操作: 1.询问两点间路径上的${\sum{v[a[i]]*w[k]}}$,其中${a[i] ...
- oracle大数据量。表分区提示查询效率
现在业务有一张usertrack 日志记录表.每天会产生30万条数据.数据量大查询效率会非常慢 所以我考虑通过表分区来提示效率 逻辑上是一张表.但是分区后会按照分区条件将数据分在不同的物理文件 优点 ...
- Bzoj2753 [SCOI2012]滑雪与时间胶囊
2753: [SCOI2012]滑雪与时间胶囊 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 2282 Solved: 796 Descriptio ...