| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 780 人关注过本帖
标题:[求助]还有问题(Tiger5392再进一下)
只看楼主 加入收藏
snail008
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-6-27
收藏
 问题点数:0 回复次数:9 
[求助]还有问题(Tiger5392再进一下)

如何用表单设计一个考试系统的单项选择题,将用户提交的答案放在文本框中(答案要实现刷新功能,防止统计出错),并且在最后与正确答案比较,统计出分数?
后面怎么做呀
谢谢大家了

已经设计好单项选择的代码如下
form1.init
use 考试题
thisform.label1.caption=试题名
thisform.optiongroup1.option1.caption=选项1
thisform.optiongroup1.option2.caption=选项2
thisform.optiongroup1.option3.caption=选项3
thisform.optiongroup1.option4.caption=选项4
thisform.optiongroup1.value=0

form1.load
public pp(20),aa(20)
pp=0
aa=""

optiongroup.click &&单项选择题
pp(recno())=thisform.optiongroup1.value
if pp(recno())=答案编号
thisform.label2.caption="√"
else
thisform.label2.caption="×"
endif
aa(recno())=thisform.label2.caption

command1.click &&下一题按钮
skip
if not eof() thisform.command1.enabled=.t.
thisform.optiongroup1.value=pp(recno())
thisform.label1.caption=试题名
thisform.optiongroup1.option1.caption=选项1
thisform.optiongroup1.option2.caption=选项2
thisform.optiongroup1.option3.caption=选项3
thisform.optiongroup1.option4.caption=选项4
thisform.label2.caption=aa(recno())
else
skip -1
thisform.command1.enabled=.f.
endif
thisform.command2.enabled=.t.

skip -1
if not bof()

thisform.command2.enabled=.t.
thisform.label2.caption=aa(recno())
thisform.optiongroup1.value=pp(recno())
thisform.label1.caption=试题名
thisform.optiongroup1.option1.caption=选项1
thisform.optiongroup1.option2.caption=选项2
thisform.optiongroup1.option3.caption=选项3
thisform.optiongroup1.option4.caption=选项4

command2.click &&上一题按钮
skip -1
if not bof() thisform.command2.enabled=.t.
thisform.label2.caption=aa(recno())
thisform.optiongroup1.value=pp(recno())
thisform.label1.caption=试题名
thisform.optiongroup1.option1.caption=选项1
thisform.optiongroup1.option2.caption=选项2
thisform.optiongroup1.option3.caption=选项3
thisform.optiongroup1.option4.caption=选项4

[此贴子已经被作者于2006-6-28 23:46:07编辑过]

搜索更多相关主题的帖子: thisform 单项 选项 系统 
2006-06-27 19:55
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
搞那么麻烦干什么?
表单中有EDIT1放题目,OPTIONGROUP1放4个选项,COMMANDGROUP1放若干命令按钮,TEXT1放分数

(1)初始化FORM1.INIT
CLOSE ALL
USE 选择题
THISFORM.EDIT1.READONLY=.T.
THISFORM.EDIT1.CONTROLRESOURCE="选择题.题目"
THISFORM.OPTIONGROUP1.OPTION1.CAPTION=选择题.选项1
THISFORM.OPTIONGROUP1.OPTION2.CAPTION=选择题.选项2
THISFORM.OPTIONGROUP1.OPTION3.CAPTION=选择题.选项3
THISFORM.OPTIONGROUP1.OPTION4.CAPTION=选择题.选项4
THISFORM.OPTIONGROUP1.VALUE=IIF(选择题.用户答案="A",1,IIF(选择题.用户答案="B",2,IIF(选择题.用户答案="C",3,4)))

(2)OPTIONGROUP1.INTERACTIVATECHANGE()
REPLACE 用户答案 WITH IIF(THIS.VALUE=1,"A",IIF(THIS.VALUE=2,"B",IIF(THIS.VALUE=3,"C","D")))

(3)COMMANDGROUP1.CLICK()
DO CASE
CASE THIS.VALUE=1 &&第一题
GO TOP
CASE THIS.VALUE=2 &&上一题
SKIP -1
IF BOF()
GO TOP
ENDIF
CASE THIS.VALUE=3 &&下一题
SKIP
IF EOF()
GO BOTTOM
ENDIF
CASE THIS.VALUE=4 &&最后一题
GO BOTTOM
CASE THIS.VALUE=5 &&统计分数
COUNT TO X FOR 用户答案=标准答案
THISFORM.TEXT1.VALUE=X
CASE THIS.VALUE=6 &&结束
THISFORM.RELEASE
ENDCASE
THISFORM.OPTIONGROUP1.VALUE=IIF(选择题.用户答案="A",1,IIF(选择题.用户答案="B",2,IIF(选择题.用户答案="C",3,4)))
THISFORM.COMMANDGROUP1.COMMAND1.ENABLED=IIF(RECNO()=1,.F.,.T.)
THISFORM.COMMANDGROUP1.COMMAND2.ENABLED=IIF(RECNO()=1,.F.,.T.)
THISFORM.COMMANDGROUP1.COMMAND3.ENABLED=IIF(RECNO()=RECCOUNT(),.F.,.T.)
THISFORM.COMMANDGROUP1.COMMAND4.ENABLED=IIF(RECNO()=RECCOUNT(),.F.,.T.)
THISFORM.REFRESH

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-06-27 20:49
snail008
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-6-27
收藏
得分:0 
好像有问题哦,只能读取题目,却无法刷新选择题的选项。。。
不过仍然感谢!

[此贴子已经被作者于2006-6-27 21:26:08编辑过]

2006-06-27 21:22
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 

THISFORM.OPTIONGROUP1.OPTION1.CAPTION=选择题.选项1
THISFORM.OPTIONGROUP1.OPTION2.CAPTION=选择题.选项2
THISFORM.OPTIONGROUP1.OPTION3.CAPTION=选择题.选项3
THISFORM.OPTIONGROUP1.OPTION4.CAPTION=选择题.选项4
放在第(3)部分里

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-06-28 00:20
snail008
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-6-27
收藏
得分:0 
刚学VFP,麻烦版主了。
COUNT TO X FOR 用户答案=答案编号
THISFORM.TEXT1.VALUE=X
CASE THIS.VALUE=6 &&结束
THISFORM.RELEASE
ENDCASE
THISFORM.OPTIONGROUP1.VALUE=IIF(单选题.用户答案="A",1,IIF(单选题.用户答案="B",2,IIF(单选题.用户答案"C",3,4))) &&这里说操作符/操作类型不匹配
THISFORM.COMMANDGROUP1.COMMAND1.ENABLED=IIF(RECNO()=1,.F.,.T.)
THISFORM.COMMANDGROUP1.COMMAND2.ENABLED=IIF(RECNO()=1,.F.,.T.)
THISFORM.COMMANDGROUP1.COMMAND3.ENABLED=IIF(RECNO()=RECCOUNT(),.F.,.T.)
THISFORM.COMMANDGROUP1.COMMAND4.ENABLED=IIF(RECNO()=RECCOUNT(),.F.,.T.)
THISFORM.REFRESH

请问一下,IIF()函数里的“用户答案”字段应该设置成什么类型?
要避免操作数据类型不匹配

[此贴子已经被作者于2006-6-28 16:55:22编辑过]

2006-06-28 16:39
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
很显然是C(字符型)的

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-06-28 20:59
snail008
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-6-27
收藏
得分:0 

非常感谢你,可是,这个计分系统第一次使用以后就把用户答案写到表里去了
我却不知道如何在运行这个系统时,怎样将用户答案清空?

2006-06-28 22:47
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
REPLACE ALL 用户答案 WITH []

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-06-28 22:55
snail008
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-6-27
收藏
得分:0 
谢谢,不过还是有问题呀
就是把做对了的题目改成错的,统计正确答案还是有问题
比如说是作对了2题,结果,我点击上一题把答案修改成错的,但是,统计结果还是2
我的用户答案字段设置成了数值型的。
commandgroup1.click 代码如下
DO CASE
CASE THIS.VALUE=1
GO TOP
CASE THIS.VALUE=2
SKIP -1
IF BOF()
GO TOP
ENDIF
CASE THIS.VALUE=3
SKIP
IF EOF()
GO BOTTOM
ENDIF
CASE THIS.VALUE=4
GO BOTTOM
CASE THIS.VALUE=5
thisform.commandgroup1.command1.VISIBLE=.F.
thisform.commandgroup1.command2.VISIBLE=.F.
thisform.commandgroup1.command3.VISIBLE=.F.
thisform.commandgroup1.command4.VISIBLE=.F.
store 0 to X
COUNT TO X FOR 用户答案=答案编号
THISFORM.TEXT1.VALUE=X
CASE THIS.VALUE=6
THISFORM.RELEASE
ENDCASE
THISFORM.OPTIONGROUP1.VALUE=IIF(单选题.用户答案=1,1,IIF(单选题.用户答案=2,2,IIF(单选题.用户答案=3,3,4)))
THISFORM.COMMANDGROUP1.COMMAND1.ENABLED=IIF(RECNO()=1,.F.,.T.)
THISFORM.COMMANDGROUP1.COMMAND2.ENABLED=IIF(RECNO()=1,.F.,.T.)
THISFORM.COMMANDGROUP1.COMMAND3.ENABLED=IIF(RECNO()=RECCOUNT(),.F.,.T.)
THISFORM.COMMANDGROUP1.COMMAND4.ENABLED=IIF(RECNO()=RECCOUNT(),.F.,.T.)
THISFORM.REFRESH

[此贴子已经被作者于2006-6-28 23:45:34编辑过]

2006-06-28 23:42
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
统计的时候用的条件是"用户答案=标准答案",因此,必须设定用户答案及标准答案两个字段,而且做题目的时候,修改的是用户答案字段的值而不是标准答案的值(标准答案永远不能修改).你再看看你的程序,然后修改

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-06-28 23:48
快速回复:[求助]还有问题(Tiger5392再进一下)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051883 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved