在线考试程序之火星思路

网络整理 - 09-05
最近同事老说我火星,貌似真的有点火星。这不,在一个在线考试程序的问题上,产生一个很火星的思路。

  问题:在线考试程序,共A-F六组题(也可能更多)。每组里有4道题(也可能更多),每道题有数量不同的选项,选择每个项有不同的分值。要求在答卷提交时,检查题是否全部完整并计算ABCDEF每组题的总分。

  俺的火星思路:

  表单项这样命名:A组:第一题A1、第二题A2、第三题A3、第四题A4,一直到F组的F1、F2、F3、F4(全部为radio按钮,值就是该选项的分数)。之后,接收表单的程序这样来处理:

<%
Dim i,i2 '用于循环
Dim Atotal,Btotal,Ctotal,Dtotal,Etotal,Ftotal
Atotal = 0 'A组题总分
Btotal = 0 'B组题总分
Ctotal = 0 'C组题总分
Dtotal = 0 'D组题总分
Etotal = 0 'E组题总分
Ftotal = 0 'F组题总分
For i = Asc("A") To Asc("F")
    For i2 = 1 To 4
        If Not  IsNumeric(request.Form(Chr(i) & i2)) Then
            response.Write ("<script>alert(""您还没答完题"");location.href=""javascript:history.back()"";</script>")
            response.End
        End If
        Select Case Chr(i)
            Case "A" Atotal=Atotal+Int(request.Form(Chr(i) & i2))
            Case "B" Btotal=Btotal+Int(request.Form(Chr(i) & i2))
            Case "C" Ctotal=Ctotal+Int(request.Form(Chr(i) & i2))
            Case "D" Dtotal=Dtotal+Int(request.Form(Chr(i) & i2))
            Case "E" Etotal=Etotal+Int(request.Form(Chr(i) & i2))
            Case "F" Ftotal=Ftotal+Int(request.Form(Chr(i) & i2))
        End Select
    Next
Next
'到这里,验证也验证完了,ABCDEF题组的分数也计算出来了
%>



  Friedl曾说,掌握正则表达式并不重要,重要的是要掌握用正则的思维方式来思考和解决问题的方法。是的,解决一个问题不重要,重要的是要掌握一种高效的思路。

  就本文所属问题来说,我自己感觉这个火星的思路比常规的思路要更有效率也更来得直观,使程序更具可阅读性。写一下做个记录,希望此思路以后能给自己也给朋友们在遇到问题时有所启发。

  作者:一想千开