问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

asp.net 开发网络考试系统 倒计时功能

发布网友 发布时间:2022-05-03 08:46

我来回答

4个回答

懂视网 时间:2022-04-23 09:08

这次给大家带来Ajax实现考试倒计时并自动提交试卷功能,Ajax实现考试倒计时并自动提交试卷功能的注意事项有哪些,下面就是实战案例,一起来看一下。

1.概述

在开发网络考试系统时,考试计时并自动提交试卷是必不可少的功能。由于在答卷过程中,试卷不能刷新,所以需要使用Ajax实现无刷新操作。运行本实例,访问准备考试页面index.jsp,在该页面中,单击“开始考试”按钮,将打开新窗口显示开始考试的页面,如图10.1所示,页面会自动计时,当考试时间结束时,将自动提价试卷。

2.技术要点

主要是利用Ajax异步提交技术和Servlet技术实现的。显示在考试页面中的计时时间是在Servlet中设置的,需要通过Ajax的异步提交不断的请求Servlet,从而获得服务器返回的最新的计时时间的数据。为了便于维护和代码的重用,可以将Ajax的请求方法封装到一个JS文件中,该方法可以作为一个公共方法,在程序中使用时可以直接调用。

3.具体实现代码

在JS文件中构建XMLHttpRequest对象以及请求方法,如下代码所示:

/**
* 构建XMLHttpRequest对象并请求服务器
* @param reqType:请求类型(GET或POST)
* @param url:服务器地址
* @param async:是否异步请求
* @param resFun:响应的回调函数
* @param parameter :请求参数
* @return :XMLHttpRequest对象
*/
function httpRequest(reqType,url,async,resFun,parameter){ 
var request = null;
if( window.XMLHttpRequest ){ //非IE浏览器,创建XMLHttpRequest对象
request = new XMLHttpRequest();
}else if( window.ActiveXObject ){ //IE浏览器,创建XMLHttpRequest对象
var arrSignatures = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP", "Microsoft.XMLHTTP", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP"]; 
for( var i = 0; i < arrSignatures.length; i++ ){
request = new ActiveXObject( arrSignatures[i] );
if( request || typeof( request ) == "object" )
break;
}
}
if( request || typeof( request ) == "object" ){
if(reqType.toLowerCase()=="post"){ //以POST方式提交
request.open(reqType, url, true); //打开服务器连接
//设置MIME类型
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.onreadystatechange = resFun; //设置处理响应的回调函数
parameter = encodeURI(parameter); //将参数字符串进行编码
request.send(parameter); //发送请求
}
else{ //以GET方式提交
url = url+"?"+parameter; 
request.open(reqType, url, true); //打开服务器连接
request.onreadystatechange = resFun; //响应回调函数
request.send(null); //发送请求
}
}
else{
alert( "该浏览器不支持Ajax!" );
} 
return request;
}

(1)新建index.jsp页,该页面是用户访问的初始页。在页面中主要包含一个“开始考试”按钮,该按钮的onclick事件将调用打开考试窗口的JavaScript函数,关键代码如下:

function showWindow(){ window.open('StartExam?action=startExam','','width=750,height=500,scrollbars=1');
}

(2)新建名为StartExam的Servlet实现类,该类用创建考试的开始时间和剩余时间。在该类中,创建一个全局变量examTime,用于记录考试时间,该变量的值是在web.xml中设置的,关键代码如下:

<servlet>
<servlet-name>StartExam</servlet-name>
<servlet-class>com.lh.servlet.StartExam</servlet-class>
<init-param>
<param-name>examTime</param-name>
<param-value>20</param-value>
</init-param>
</servlet>

(3)在StartExam类中,编写用于将页面转发到开始考试页面的方法startExam()。关键代码如下:

public void startExam(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
HttpSession session = request.getSession();
request.setAttribute("time", examTime); //保存考试时间
session.setAttribute("startTime1",new Date().getTime()); //保存当前时间的毫秒数
request.getRequestDispatcher("startExam.jsp").forward(request, response);
}

(4)新建showStartTime.jsp页,用于输出计时开始时间。关键代码如下:

<%@page contentType="text/html" pageEncoding="GBK"%>
${showStartTime}

(5)新建showRemainTime.jsp页,用于输出计时剩余时间。关键代码如下:

<%@page contentType="text/html" pageEncoding="GBK"%>
${showRemainTime}

(6)新建开始考试页面startExam.jsp页,在该页中通过调用Ajax请求方法请求StartExam类,获得考试的开始时间和剩余时间。关键代码如下:

var request1= false;
var request2 = false;
//请求Servlet获得开始时间 
function showStartTime(){
var url = "StartExam";
//此处需要加&nocache="+new Date().getTime(),否则将出现时间不自动走动的情况
var parameter="action=showStartTime&nocache="+new Date().getTime();
request1 = httpRequest("post",url,true,callbackFunc,parameter); 
}
//回调函数 
function callbackFunc(){
if( request1.readyState==4 ){ 
if( request1.status == 200 ){
showStartTimep.innerHTML=request1.responseText;
}
}
}
//请求Servlet获得剩余时间 
function showRemainTime(){
var url = "StartExam";
var parameter="action=showRemainTime&nocache="+new Date().getTime();
request2 = httpRequest("post",url,true,callbackFunc_R,parameter); 
}
//回调函数 
function callbackFunc_R(){
if( request2.readyState==4 ){ 
if( request2.status == 200 ){
h=request2.responseText;
showRemainTimep.innerHTML=h;
h=h.replace(/s/g,""); //去除字符串中的Unicode空白符
showRemainTimep.innerHTML=h;
if(h=="00:00:00"){
form1.submit();
}
}
}
}

(7)为了实现页面加载后自动计时,需要在开始考试页面的 <body>标签中通过onload事件应用window.setInterval()方法调用showStartTime()函数和showRemailTime()函数,关键代码如下:

<body onLoad="showStartTime();showRemainTime();" onkeydown="keydown()">

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

Ajax的restful接口传输Json数据的方法

ajax怎么对xml文件进行增删改查

热心网友 时间:2022-04-23 06:16

用一个timer控件,把interval设为1000(1秒),在Tick事件里处理。
protected void Timer1_Tick(object sender, EventArgs e)
{
if (minute != 0 && second == 0)
{
second = 60;
minute--;
}
else if (hour != 0 && minute == 0 && second == 0)
{
minute = 60;
hour--;
}
else if (hour == 0 && minute == 0 && second == 0)
{
Timer1.Enabled = false;
hour = 0;
minute = 0;
second = 0;
//调用提交试卷的方法
Send();
}
else
{
second--;
}

if (hour < 10)
{
lbl_hour.Text = "0"+hour.ToString();
}
else
{
lbl_hour.Text = hour.ToString();
}

if (minute < 10)
{
lbl_minute.Text = "0"+minute.ToString();
}
else
{
lbl_minute.Text = minute.ToString();
}

if (second < 10)
{
lbl_second.Text = "0"+second.ToString();
}
else
{
lbl_second.Text = second.ToString();
}
}
其中minute、second、hour是定义的全局静态变量,lbl_hour、lbl_minute、lbl_second是用来显示时间的Label控件的ID;

热心网友 时间:2022-04-23 07:34

后台代码:
public partial class Timer : System.Web.UI.Page
{

private DateTime dtExam = DateTime.Parse("2009-07-22 20:42:00"); //定义时间到期时间

protected void Page_Load(object sender, EventArgs e)
{
}

protected void timerCD_Tick(object sender, EventArgs e)
{
if (this.dtExam < DateTime.Now) //如果设置的时间已过
{
this.timerCD.Enabled = false; //将Timmer置为false
labTimes.Text = "时间到!";
}
else
{
RefreshTime(); //刷新时间
}
}

private void RefreshTime() //刷新时间的方法
{
TimeSpan ts = this.dtExam - DateTime.Now; //时间差
this.labDays.Text = ts.Days.ToString().PadLeft(2, '0') + "天";
this.labTimes.Text = ts.Hours.ToString().PadLeft(2, '0') + ":" + ts.Minutes.ToString().PadLeft(2, '0') + ":" + ts.Seconds.ToString().PadLeft(2, '0');
}
}
前台:
<body>
<form id="form1" runat="server">
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox> 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
时<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>分<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Timer ID="timerCD" runat="server" Interval="1000" OnTick="timerCD_Tick">
</asp:Timer>
<asp:Label ID="labDays" runat="server" Width="155px"></asp:Label><asp:Label ID="labTimes" runat="server" Width="155px"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
根据你自己需求再改下吧

热心网友 时间:2022-04-23 09:09

新建timer实例timer1,点击开始考试时timer1设置可用,然后把它的interval属性设为60000(60秒执行一次),然后在tick事件里写你要进行的判断就行了
asp.net 开发网络考试系统 倒计时功能

用一个timer控件,把interval设为1000(1秒),在Tick事件里处理。protected void Timer1_Tick(object sender, EventArgs e){ if (minute != 0 &amp;&amp; second == 0){ second = 60;minute--;} else if (hour != 0 &amp;&amp; minute == 0 &amp;&amp; second == 0){ minute = 60;hour--;} else if (ho...

asp.net怎样限时倒计时按键控制?

1、使用js控制,倒计时前,确定按钮不绑定事件,灰色,倒计时结束,确定按钮可用 2、settimeout(),可以实现倒计时,300秒太长,用户可以通过刷新页面跳过你的倒计时 请等待10秒 function run(){ var s = document.getElementById("timer");if(s.innerHTML == 0){ //执行确定点击事件绑定,ret...

asp 考试系统中,提醒考试时间已到的功能如何实现

做考试系统.你要注意两点,按上面两位说的.有一点不太好控制..那就是时间问题,得到时间,用JS做倒计时,如果客户端JS被禁用了.那他就不会有提示了.这个一个不好控制的地方.我建议你还是做成AJAX的形式.这样时间是后台生成的.如果用户禁用了JS,那他也没办法交卷.这样可以有效控制用户自行取消JS....

asp做考试系统时候,倒计时比如60分钟怎么设计,我有防刷新的javascript代码...

这个用js肯定是实现不了的...不能刷新也能关闭浏览器啊 不能关闭浏览器还能关电脑...这个应该用session去实现 比如说给一个帐号 只能登录一次 会话在60分钟以后超时 之类的...

asp.net中设置一个按钮在倒计时结束时才可以单击按钮,倒计时和按钮是分...

&lt;输入类型=“按钮”值=“倒计时”的onClick =“timedMsg()”&gt; 请细阅通告:sdfljslkfjlksdjglkjsgdkljgkdjgsdlk

asp做了个考试系统,时间到交卷不会自动改卷?

时间到了 使用 document.formid.submit();试一下 时间到了 自动交卷 需要提交form的内容 所以 让form自动提交就可以了 至于页面跳转 这个没什么实际意义 除非你用 get提交方式 将所有的form内容读取赋值给url连接上的参数

高悬赏!我想用asp.net实现一个指定日期的倒计时间?

DateTime.Now int year=int.Parse(DateTime.Now.Year);int month=int.Parse(DateTime.Now.Month);int day=int.Parse(DateTime.Now.Day);int m=0;//天数 if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){ m=31;} else if(month==2){ m=28;} el...

.net倒计时

回答:你是要winform的还是asp.net的?

asp.net 急需web版的button控件60秒倒计时c#语言

alert('手机号码不可为空'); return false; } $("#btnGetMobileCode").attr("disabled", "disabled"); $("#btnGetMobileCode").val("获取中"); $.get("?action=sms&amp;mobile=" + $(

请问我的系统怎么倒计时关机呢?

首先,恭喜你中了病毒.其次,以上的答案都可以试一下,不过我觉得不用重装系统,你下一个防火墙(norton我认为最好)就可以了,再按别人的方法杀毒就行.学术交流,无所谓钱财.呵呵!

带倒计时功能的锁屏 考试倒计时 m.newasp.net asp.net web api 日期倒计时app asp和aspnet的区别 时间倒计时的软件 倒计时计算器 js倒计时
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...把其中任意三面分上、中、下挂在旗杆上表示不同信号,一共可以组成... 质能转换爱因斯坦的形象比喻 质能转换基本概念 如何制作美味的抹茶冰激凌? 在淘宝网上开游戏卡和手机充值卡的店怎么寻找货源?O(∩_∩)O谢谢 ...它们的直径的比是( ),周长的比是( ),面积的比是( )? 很急啊!_百度... ...比是5比3,半径比是多少,直径比是多少,面积比是多少,你发现了什么... ...周长比是5比3,半径比是(),直径比是(),面积比是()。 鸡肝煮多长时间 ...是5:3,他们的直径比是(),周长比是(),面积比是(),他们的周长与自己半... asp.net项目中快速查找一个文件 那里有asp.net项目下载 asp.net项目 asp.net(C#)网站开发实例?在哪里可以下载呀?求助. 想找些asp.net,C#语言的网页开发的基础题做 哪里可以找到 ASP.NET 的开源项目 ASP.NET 的复习资料哪里找?请给详细的。 现在asp.net有没有证书考的啊? 用ASP.NET开发一个在线考试系统 ASP.NET WEB项目开发考试题,大家帮帮忙啊!! 明日科技《asp.net项目开发全程实录》第七章在线考试 asp.net用什么软件可以搜答案? 妈妈的弟弟的儿子叫什么,爸爸与啊公的辈分,啊公的儿子叫什么, 我妈妈的妹妹的儿子,我应该叫他什么?? 小孩叫妈妈的弟弟叫什么 我妈妈弟弟的儿子该把我叫姑姑吗? 妈妈的弟弟的儿子的孩子叫我什么 爸爸的妈妈的弟弟的儿子叫什么? 妈妈的弟弟的儿子称呼妈妈什么拜托各位大神 妈妈弟弟的儿子怎么称呼 人们为什么要把压岁钱放在枕头下 什么到了除夕时长辈们给晚辈钱叫做压岁钱? 把压岁钱放在枕头下的传说 联通营业厅买苹果手机靠谱吗 除夕夜长辈给小孩压岁钱,是想压住小孩的“岁数”,不希望小孩长大吗? 床头挂硬币是干什么用的? 除夕之夜为什么要发压岁钱? 联通卖的苹果与手机商店卖的苹果有什么区别 如果用钱压财是放床头还是放床尾? 想知道在联通买的iphone与苹果店卖的有什么区别? 一块钱用红线绑住放在床头是啥意思? 联通公司卖的苹果12为什么比专卖店的便宜呢? 苹果手机,联通的和专卖店的有个区别? 压岁钱又叫什么 在联通营业厅或专卖店买的iPHONE 是有锁版还是无锁版? 联通iphone5和苹果专卖店卖的有啥区别啊 五帝钱挂在床头上方有何说法 联通的iphone好不好啊?和苹果专卖店卖的有什么区别 在京东,专卖店,联通营业厅,联通网上营业厅买iphone有什么不一样 除夕夜晚阿长将福橘放在床头后向我交代了什么?