在线测试程序之火星思路
作者:一想千开 日期:2009-03-14
最近同事老说我火星,貌似真的有点火星。这不,在一个在线测试程序的问题上,产生一个很火星的思路。
问题:
在线测试程序,共A-F6组题(也可能更多)。每组里有4道题(也可能更多),每道题有数量不同的选项,选择每个项有不同的分值。要求在答卷提交时,检查题是否全部完整并计算ABCDEF每组题的总分.
俺的火星思路:
表单项这样命名:
A组 第一题A1,第二题A2,第三题A3……
一直到F1、F2、F3、F4 (全部为radio按钮,值就是该选项的分数)
之后,接收表单的程序这样来处理:
程序代码
Friedl曾说,掌握正则表达式并不重要,重要的是要掌握用正则的思维方式来思考和解决问题的方法.是的,解决一个问题不重要,重要的是要掌握一种高效的思路.
就本文所属问题来说,我自己感觉这个火星的思路比常规的思路要更有效率也更来得直观,使程序更具可阅读性.写一下做个记录.希望此思路以后能给自己也给朋友们在遇到问题时有所启发.
问题:
在线测试程序,共A-F6组题(也可能更多)。每组里有4道题(也可能更多),每道题有数量不同的选项,选择每个项有不同的分值。要求在答卷提交时,检查题是否全部完整并计算ABCDEF每组题的总分.
俺的火星思路:
表单项这样命名:
A组 第一题A1,第二题A2,第三题A3……
一直到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题组的分数也计算出来了
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曾说,掌握正则表达式并不重要,重要的是要掌握用正则的思维方式来思考和解决问题的方法.是的,解决一个问题不重要,重要的是要掌握一种高效的思路.
就本文所属问题来说,我自己感觉这个火星的思路比常规的思路要更有效率也更来得直观,使程序更具可阅读性.写一下做个记录.希望此思路以后能给自己也给朋友们在遇到问题时有所启发.
评论: 0 | 引用: 0 | 查看次数: -
发表评论
上一篇
下一篇


文章来自:
Tags: