![]() |
#2
sdta2021-04-01 07:58
|
只有本站会员才能查看附件,请 登录
VFP9 汉化版 7423
这是一门科目的考试成绩,保存在JMSS1字段中,共有8题(各有129403条记录),以逗号分隔,成绩不但有0分、3分,还有带小数位的成绩(如1.5分),见下图
只有本站会员才能查看附件,请 登录
2,2,2,2,0,3,3,3 分别代表每题得到的分数。
根据这台电脑的配置情况,获取这门科目8题的有关数据耗时4秒。
要求:1、获取每题分值对应的人数,效果图如下
只有本站会员才能查看附件,请 登录
2、尽最大能力缩短程序运行的时间
附上运行代码及相关数据:
只有本站会员才能查看附件,请 登录

t1 = SECONDS()
CLOSE DATABASES
USE 选择\sp ALIAS aa
ln = OCCURS(",", jmss1) + 1 && 获取题目的数量
FOR lnj = 1 TO ln
CREATE CURSOR fz (nfz n(4, 2), nsl I) && 保存分值的
INDEX on nfz TAG fz
SELECT VAL(GETWORDNUM(jmss1, lnj, ",")) nfz FROM aa INTO CURSOR temp
SCAN
IF SEEK(temp.nfz, "fz", "fz") = .T.
REPLACE nsl WITH nsl + 1 IN fz
ELSE
INSERT INTO fz VALUES (temp.nfz, 1)
ENDIF
ENDSCAN
ENDFOR
MESSAGEBOX(SECONDS() - t1)
SELECT fz
BROWSE
CLOSE DATABASES
USE 选择\sp ALIAS aa
ln = OCCURS(",", jmss1) + 1 && 获取题目的数量
FOR lnj = 1 TO ln
CREATE CURSOR fz (nfz n(4, 2), nsl I) && 保存分值的
INDEX on nfz TAG fz
SELECT VAL(GETWORDNUM(jmss1, lnj, ",")) nfz FROM aa INTO CURSOR temp
SCAN
IF SEEK(temp.nfz, "fz", "fz") = .T.
REPLACE nsl WITH nsl + 1 IN fz
ELSE
INSERT INTO fz VALUES (temp.nfz, 1)
ENDIF
ENDSCAN
ENDFOR
MESSAGEBOX(SECONDS() - t1)
SELECT fz
BROWSE