我在做一个网上考试系统,是用vb.net开发的,请教高手,怎样定时结束考试。越详细越好,小女子这厢有礼了。

解决方案 »

  1.   

    这是我很久前做的一个考试的:也是用VB做的呢<%@ Page Language="vb" AutoEventWireup="false" Codebehind="ExamPaper.aspx.vb" Inherits="exam.ExamPaper"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>ExamPaper</title>
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    <meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    <LINK href="../Styles.css" type="text/css" rel="stylesheet">
    <script language="javascript">
    var hoursms = 60*60
    var Secondms = 60
    var mytime=(<%=strExamTime%> /1000)


    function clock()
    {
    mytime=mytime-1;
    var myhour=Math.floor(mytime/3600);
    var mymm = Math.floor((mytime-myhour* 3600)/60);
    var myss =mytime-myhour*3600-mymm*60;
    timecount.innerText="考试时间还剩:"+ myhour +" 时 "+ mymm +" 分 "+ myss +" 秒 ";
    setTimeout("clock()",1000);
    }
    setTimeout("document.getElementById('Button1').click()",<%=strExamTime%>); 
    </script>
    </HEAD>
    <body onload="clock()"> 这注意有:onload="clock()"<asp:button id="Button1" runat="server" Text="  交  卷  "></asp:button><FONT face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </FONT><span onclick="javascript:return confirm('确定要返回不考试了吗?')">
    <asp:HyperLink id="HyperLink1" runat="server" NavigateUrl="../Default.aspx">返回</asp:HyperLink><INPUT id="mystartTime" type="hidden" runat="server">
    </span>
    ----------------------------------
        Public strExamTime As Integer = mybiz.GetConfig().Rows(0).Item("ExamTime") '考试时间
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            If Not IsPostBack Then
                mystartTime.Value = Date.Now
                'getdata()
            End If
        End Sub
      

  2.   

    如果要详细的就留下mail这是我好久前别人叫我给他做的。。结果还有一点没有完成别人就不要了。。不过基本的功能都完成了的。。
      

  3.   

    我的思路是服务器端按照开始考试时候的DateTime.Now来计算结束时间,你在考试的时候比如获取题目啊,提交某题答案啊,总要和服务器交互吧??交互的时候再判断一次,如果“快到了”给点提示人家,到了就收掉。注意判断的应该是服务器的系统时间,防止客户端靠改系统时间来作弊。
      

  4.   

    比较不严密的办法,在页面的脚本中设置一个setTimeOut,直接定义你考试时间为第二次动作的时间,用户一打开页面,它就开始计时,时间到,自动用脚本点击提交按钮,但这种方式较不严密(取的是客户端脚本).
    另外一种,我们一样使用setTimeOut,但,是通过xmlhttp方式向服务器取时间,这样,用户打开页面时,将打开页面的时间记录在服务器上,然后不断地向服务器取时间进行比较,时间一到,强制提交页面.
    下面给你一个示例:
    //以XML求取数据
    //webFileUrl:要读取的页面地址,可带参数
    function XmlPost()
    {
      //到xxx.aspx求取时间间隔
      var webFileUrl = "xxx.aspx";
      var result = "";
      var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
      xmlHttp.open("POST", webFileUrl, false);
      xmlHttp.send("");  //获取服务端计算时间
      result = xmlHttp.responseText;  result = new Number(result);
      if(result <= 0)
      {
        //如果服务端剩余时间小于0,则强制提交
        document.all("按钮名称").click();
      }
      else
      {
        //否则,继续求取时间,一分钟求取一次
        setTimeOut("XmlPost()",60*1000);
      }
    }
    在xxx.aspx页面,求取出时间之后,可用如下方式写:
    this.Response.Write("取到的时间值");
    this.Response.End();
      

  5.   

    [email protected]学习一下,谢谢!
      

  6.   

    因为一些原因,很久没有上来,在这里感谢大家的回复,特别感谢nycun兄,我的email是[email protected]
      

  7.   

    希望nycun兄不要因为小妹回复的晚而生气。