在线考试程序之火星思路
问题:在线考试程序,共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曾说,掌握正则表达式并不重要,重要的是要掌握用正则的思维方式来思考和解决问题的方法。是的,解决一个问题不重要,重要的是要掌握一种高效的思路。
就本文所属问题来说,我自己感觉这个火星的思路比常规的思路要更有效率也更来得直观,使程序更具可阅读性。写一下做个记录,希望此思路以后能给自己也给朋友们在遇到问题时有所启发。
作者:一想千开