Insus.NET一直想把单选项试题实现的想法写成博文。想实现单选项试题,有几个问题需要清楚的:
第一是选项内容,由几个选项组成,一个,二个还是三个四个等,选项的内容是A,B,C,还是其它内容,考员作答选择时,是存储Key值,还是存储显示值?因此有设计这些时,能够实现单选选项能有几种形式。

第二是单选题,标题内容,以及用一个字段来存储标准答案(本次演示),也可以把答案存放入另外一个单独的表中。

第三是,考员的答卷,需要存储,在考试时间之内,可以更改自己的答案。因此此表的字段有 用户ID,试题ID,答案,时间,其实真正的设计,也许需要考虑一个用户可以考几次,选择的题库等等...

本次演示,只是实现试题显示,考员作答存储,以及读取等等功能,试题库创建与产生,在此不作演示。

首先创建一个表,作为存储单选项类型,主要是为了解决单选的选项多少,内容不一样的情况。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:         Insus.NET
-- Create date:     2013-07-17
-- Description:     单选项类别.
-- =============================================
CREATE TABLE [dbo].[SingleChooseType]
([sct_nbr] TINYINT IDENTITY(1,1) NOT NULL PRIMARY KEY,[Type] NVARCHAR(30) NOT NULL
)
GO

View Code

单选项表:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:          Insus.NET
-- Create date:     2013-07-17
-- Description:     单选项.
-- =============================================
CREATE TABLE [dbo].[SingleChoose]
([sc_nbr] TINYINT IDENTITY(1,1) NOT NULL PRIMARY KEY,[sct_nbr] TINYINT NOT NULL FOREIGN KEY REFERENCES [dbo].[SingleChooseType] ([sct_nbr])[Content] NVARCHAR(30)
)
GO

View Code

单选项试题:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:           Insus.NET
-- Create date:        2013-07-17
-- Description:     单选试题。
-- =============================================
CREATE TABLE [dbo].[SC_Questions]
([scq_nbr] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,[Questions] NVARCHAR(500) NOT NULL,[sct_nbr] TINYINT NOT NULL FOREIGN KEY REFERENCES [dbo].[SingleChooseType] ([sct_nbr]),[Std_Answer] TINYINT NULL  FOREIGN KEY REFERENCES [dbo].[SingleChoose] ([sc_nbr])  --考虑到单选项项目多少,还是存储key值。
)

View Code

下面为演示准备,创建一些选项类别,选项以及单选项试题。
选项类别中,Insus.NET创建四种类别,当然这些名字,任你自由发挥。

每种类别选项内容,看实际情况而定,来设定选项。

下面Insus.NET尝试添加一些选择题。

接下来,Insus.NET还要设计一张表,是存储每一位考员的考试题。真正的考试,应该是考员对应题库号,但现在只是演示单选,因此直接存储选择题目。在考员进入考试时,会把题目复制过来。表结构大约如下:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:         Insus.NET
-- Create date:    2013-07-17
-- Description:    用户考卷
-- =============================================
CREATE TABLE [dbo].[Test]
([test_nbr] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,[User_Test_num] VARCHAR(20) NOT NULL,[scq_nbr] INT NOT NULL FOREIGN KEY REFERENCES [dbo].[SC_Questions] ([scq_nbr]),[Answer] TINYINT NULL --考员有可以不选择,因此设为可空--当然还有考试时间,是否提交考卷,得分成绩,评卷情况.....
)GO

View Code

下面是用户注册成功之后,系统需要执行一个存储过程,创建用户的试题,或登录考试系统之后,需要选择一份试题。

-- =============================================
-- Author:         Insus.NET
-- Create date:    2013-07-17
-- Description:    用户注册成功系统产生试卷或是选择一份试卷
-- =============================================
CREATE PROCEDURE [dbo].[usp_test_Examination]
(@User_Test_num VARCHAR(20)
)
AS
IF NOT EXISTS (SELECT TOP 1 1 FROM [dbo].[Test] WHERE [User_Test_num] = @User_Test_num)
INSERT INTO [dbo].[Test] ([User_Test_num],[scq_nbr]) SELECT @User_Test_num,[scq_nbr] FROM [dbo].[SC_Questions]GO

View Code

OK,考员("EU_001")开始作题时,需要把试卷显示于网页上。

-- =============================================
-- Author:         Insus.NET
-- Create date:    2013-07-17
-- Description:    用户作题试卷
-- =============================================
CREATE PROCEDURE [dbo].[usp_Test_GetByUser]
(@User_Test_num VARCHAR(20)
)
AS
--这里需要作些判断,如是否提交,时间过期,试卷状态等等。
SELECT [test_nbr],[User_Test_num],q.[scq_nbr],[Questions],[sct_nbr],[Answer] FROM [dbo].[Test] AS t
LEFT JOIN [dbo].[SC_Questions] AS q ON (t.[scq_nbr] = q.[scq_nbr])
WHERE [User_Test_num] = @User_Test_numGO

View Code

他的试卷在数据库初始信息如下:

在显示考员题目时,还是把选择显示出来。

-- =============================================
-- Author:         Insus.NET
-- Create date:    2013-07-17
-- Description:    选项内容
-- =============================================
CREATE PROCEDURE [dbo].[usp_SingleChoose_GetByType]
(@sct_nbr TINYINT
)
AS
SELECT [sc_nbr],[sct_nbr],[Content] FROM [dbo].[SingleChoose] WHERE [sct_nbr] = @sct_nbrGO

View Code

为了试题与选项显示于网页上,Insus.NET两个类别,能让网页与数据连接与通信,即是逻辑层的物件。

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;/// <summary>
/// Summary description for Test
/// </summary>
namespace Insus.NET
{public class Test{private string user_number;public string UserNumber{get { return user_number; }set { user_number = value; }}BusinessBase objBusinessBase = new BusinessBase();public Test(){//// TODO: Add constructor logic here//
        }public DataTable GetTestByUser(){Parameter[] param = { new Parameter ("@User_Test_num",SqlDbType.VarChar,-1,user_number)};return objBusinessBase.GetDataToDataSet("usp_Test_GetByUser", param).Tables[0];}}
}

Test.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;/// <summary>
/// Summary description for SingleChoose
/// </summary>
namespace Insus.NET
{public class SingleChoose{private byte _type;public byte Type{get { return _type; }set { _type = value; }}BusinessBase objBusinessBase = new BusinessBase();public SingleChoose(){//// TODO: Add constructor logic here//
        }public DataTable GetSingleChooseByType(){Parameter[] param = {new Parameter ("@sct_nbr",SqlDbType.TinyInt,1,_type)};return objBusinessBase.GetDataToDataSet("usp_SingleChoose_GetByType", param).Tables[0];        }}
}

SingleChoose.cs

试卷作答,全部选择完成之后,再提交卷。为了更好的互动,Insus.NET把试题与选项分开实现,然后再组合。

为了解决网页Page与用户控件UserControl互动通信,Insus.NET在下面写两接口:

创建选项用户控件:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Options.ascx.cs" Inherits="Options" %>
<asp:RadioButtonList ID="RadioButtonListSingleChoose" runat="server" RepeatColumns="10" RepeatDirection="Horizontal"></asp:RadioButtonList>

Options.ascx

在Options.ascx.cs代码,需要实作上面两个接口:

在显示试题时,还要为每条单选题动态加载用户控件,因此Insus.NET还得设计一个接口:

用户控件OPtions再实作这个接口:

准备好了,我们显示单选题目,使用轻量级的Repeater控件来呈现。

上面有两个地方,一是OnItemDataBound事件,还有是PlaceHolder控件,是用来显示选项的。

上图中,序号0位,是找到Repeater控件的PlaceHolder控件。
序号1位,是动态加载用户控件,并获取用户控件。
序号2位,是为用户控件动态设置参数。

考员看到的单选项题,如下:

我们还要为考员所选择的存储起来。需要创建一个更新的存储过程:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO-- =============================================
-- Author:          Insus.NET
-- Create date:   2013-07-17
-- Description:   员选择作答
-- =============================================
CREATE PROCEDURE [dbo].[usp_Test_UpdateAnswer]
(@test_nbr INT,@Answer TINYINT
)
AS
UPDATE [dbo].[Test]  SET [Answer] = @Answer WHERE [test_nbr] = @test_nbr
GO

View Code

去test.cs类别,添加一个public的方法:

由于Repeater控件没有如GridView的DataKeyNames属性,因此放一个HiddenField控件,还要添加一个铵钮,让用户能交卷的动作。

上图中的序号1,是获取主键;序号2是获取选择的用户控件;序号3是获取用户选择的值。另外,你设计试卷时,应该是交卷之后,再不能看到试卷了,应该是提示信息已交卷。
如果考员作了如下选择:

点击“交卷”铵钮之后,可以看到存储数据表的数据:

好的,整篇的演示完成了。让大家对RadioButtonList控件应用有所护展。本博文有涉及到数据库,存储过程,用户控件,重点在于网页与用户控件之间的互通,这还涉及到接口,动态加载用户控件,怎样在Repeater控件外的铵钮事件中获取repeater控件内的一些值,如主键等。

其实,作为更好的试卷设计,应该让考员能查看已经批改的试卷。系统应该是自动对比标准答案,来判断错与对。

考试系统试题实现(单选项)相关推荐

  1. c语言试题生成系统,C语言在线考试系统——试题生成模块.doc

    C语言在线考试系统--试题生成模块 PAGE 15摘要现如今,我们生活在信息大爆炸的时代,网络信息的应用已经进入我们的生活的各方各面.尤其在网络教学中,网上在线考试系统在其中扮演了重要的角色,相比于传 ...

  2. LINUX主机上架设网上调查和在线考试系统

    LINUX主机上架设网上调查和在线考试系统 2009-12-11 11:27:26 标签: LINUX 休闲 职场 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 引言 如今已进入WEB 2 ...

  3. 用ASP开发试题库与在线考试系统

    摘 要 利用网络和数据库技术,结合目前硬件价格普遍下跌与宽带网大力建设的有利优势,我们基于B/S模式研究开发了试题库与在线考试系统这一ASP应用程序.它运用方便.操作简单,效率很高,现阶段虽只实现了试 ...

  4. 基于javaweb的在线考试系统(单选,多选,判断,填空,简答题)(java+springboot+ssm+mysql+html)

    基于javaweb的在线考试系统(单选,多选,判断,填空,简答题)(java+springboot+ssm+mysql+html) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse ...

  5. Java web对试卷进行单选多选答题进行打分_java + vue 考试系统,适配各种题型,包含微信小程序端...

    介绍 学之思考试系统是一款基于k12教育的考试平台,小学.初中.高中和不同学科均可以均可以使用,支持各种题型(单选.多选.判断.填空.解答),里面包含了三大系统:学生系统.教师系统(TODO).管理员 ...

  6. 桌面计算机密码应由哪项组成,计算机应用能力考试模拟试题

    计算机应用能力考试模拟试题 单选 1.在WORD编辑状态下,若要调整左边界,利用下列(D )更直接.快捷? A.工具栏B.格式栏C.菜单D.标尺 2.程序必须被调入(A ),才能运行. A.内存B.硬 ...

  7. 计算机专业云平台管理试题,练习题云平台/计算机软考考试试题-考试系统

    练习题云平台/计算机软考考试试题-考试系统 为有考试需求的个人用户提供从试题库建设到快速组卷.试卷输出.开放练习.安排考试和成绩分析的整体在线考试服务,用户可随时随地完成考试相关工作. 快速建题 提供 ...

  8. 基于PHP网上考试系统,试卷、试题——基于php网上考试系统.doc

    试卷.试题--基于php网上考试系统.doc 学 生 姓 名 ______ ______ 学 号 ____ 班 级 _ __ __ 所属院(系)__ 指 导 教 师 ______ 2014 年11 月 ...

  9. 2020起重机司机(限桥式起重机)模拟考试系统及起重机司机(限桥式起重机)考试试题

    题库来源:安全生产模拟考试一点通公众号小程序 2020起重机司机(限桥式起重机)模拟考试系统及起重机司机(限桥式起重机)考试试题,包含起重机司机(限桥式起重机)模拟考试系统答案解析及起重机司机(限桥式 ...

最新文章

  1. CSS How to align a div center
  2. 基于Apache Spark的机器学习及神经网络算法和应用
  3. tensorflow量化策略详解
  4. Harbor的安装部署
  5. wireshark找不到接口_wireshark网络小故障分析定位
  6. ubuntu创建用户的两种方式
  7. CAD图纸管理用什么软件?
  8. 如何在Firefox中播放MID文件?
  9. lenovo L480 进入bios_联想笔记本BIOS升级教程
  10. R语言plot函数参数合集
  11. chronodex怎么用_滴答清单使用全攻略:如何把手帐搬到滴答清单上,提升效率?...
  12. 李某同案律师下挑战书
  13. 【selenium】126官网邮箱登录
  14. 三、Spring Cloud 之旅 -- Eureka 服务实例的健康自检
  15. 小鹏用计算机计算38X596时,物理化学-表面化学部分选择题
  16. window.print() 表格打印 完美实现分页
  17. VisionPro二次开发——C#计算旋转中心
  18. KNN分类——matlab(转载)
  19. 使用集集快速添加公众号预约功能
  20. 下篇 | 大数据公司挖掘数据价值的49个典型案例(值得收藏)

热门文章

  1. Spring Boot项目优雅的全局异常处理方式(全网最新)
  2. EXEC和sp_executesql的区别
  3. .NET 项目开发总结
  4. Visio2007 与Microsoft Studio 2008不兼容
  5. Magento教程 2:Magento 社群版安装教学!
  6. Python实例讲解 -- 发送邮件带附件 (亲测)
  7. 仿微软Office 迷你工具条(简易编辑器)
  8. 部署DNS split分离解析服务
  9. Linux批量复制文件夹里的文件到另一个文件夹(问题:linux sh: /bin/cp: Argument list too long )
  10. Linux(debian7)操作基础(十三)之shell脚本同时执行多个应用程序