高分求VFP的处理程序
表具有abcd一个字段,存储的是评选答题卡的数据:ABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBA...
表具有abcd一个字段,存储的是评选答题卡的数据:
ABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBA
ABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBA
ABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBA
..........
差不多有50条记录
每条记录都代表一张答题卡数据,
每5个题表示一个同学的评选成绩,A B C D分别代表20分 18分 12分 8分
我想把每条记录中的5个字符 按照ABCD对应的分数,统计并且求出50条记录的平均分,
1号同学对应的是记录的前5个字符
2号同学对应的是记录的第6-10个字符
3号同学对应的是记录的前11-15个字符
4号同学对应的是记录的前16-20个字符
5号同学对应的是记录的前21-25个字符
6号同学对应的是记录的前26-30个字符
7号同学对应的是记录的前31-35个字符
8号同学对应的是记录的前36-40个字符
求高人帮忙!成功后我另加分!
每条记录的1-5都是1号同学 6-10也都是2号同学的 类推 展开
ABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBA
ABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBA
ABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBA
..........
差不多有50条记录
每条记录都代表一张答题卡数据,
每5个题表示一个同学的评选成绩,A B C D分别代表20分 18分 12分 8分
我想把每条记录中的5个字符 按照ABCD对应的分数,统计并且求出50条记录的平均分,
1号同学对应的是记录的前5个字符
2号同学对应的是记录的第6-10个字符
3号同学对应的是记录的前11-15个字符
4号同学对应的是记录的前16-20个字符
5号同学对应的是记录的前21-25个字符
6号同学对应的是记录的前26-30个字符
7号同学对应的是记录的前31-35个字符
8号同学对应的是记录的前36-40个字符
求高人帮忙!成功后我另加分!
每条记录的1-5都是1号同学 6-10也都是2号同学的 类推 展开
3个回答
展开全部
如果第二条记录1-5字符也是1号同学的成绩的话,建议把表格分割成新表格处理
SELECT SUBSTR(score, 1, 5) FROM TAB
UNION ALL
SELECT SUBSTR(score, 6, 5) FROM TAB
UNION ALL
SELECT SUBSTR(score, 11, 5) FROM TAB
UNION ALL
SELECT SUBSTR(score, 16, 5) FROM TAB
UNION ALL
SELECT SUBSTR(score, 21, 5) FROM TAB
然后计算每一条记录的和
CASE(SUBSTR(score, 1, 1) WHEN 'A' THEN 20
WHEN 'B' THEN 18
WHEN 'C' THEN 12
WHEN 'D' THEN 8
ELSE 0 END)
如果要每条记录5个分割计算,
那就substr每个字符,然后用case换算求和。。
SELECT SUBSTR(score, 1, 5) FROM TAB
UNION ALL
SELECT SUBSTR(score, 6, 5) FROM TAB
UNION ALL
SELECT SUBSTR(score, 11, 5) FROM TAB
UNION ALL
SELECT SUBSTR(score, 16, 5) FROM TAB
UNION ALL
SELECT SUBSTR(score, 21, 5) FROM TAB
然后计算每一条记录的和
CASE(SUBSTR(score, 1, 1) WHEN 'A' THEN 20
WHEN 'B' THEN 18
WHEN 'C' THEN 12
WHEN 'D' THEN 8
ELSE 0 END)
如果要每条记录5个分割计算,
那就substr每个字符,然后用case换算求和。。
2010-10-08
展开全部
cX='ABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBA'
LOCAL aM[4]
aM[1]=20
aM[2]=18
aM[3]=12
aM[4]=8
nX=INT(LEN(ALLTRIM(cX))/5)
LOCAL aX[nX]
FOR i=1 TO nX
aX[i]=0
NEXT
FOR i=1 TO nX
cM=SUBSTR(cX,5*(i-1)+1,5)
FOR j=1 TO 5
cK=SUBSTR(cM,j,1)
aX[i]=aX[i] + IIF(cK$'ABCD',aM[ASC(cK)-64],0)
NEXT
NEXT
FOR i=1 TO nX
? i,aX[i]
NEXT
LOCAL aM[4]
aM[1]=20
aM[2]=18
aM[3]=12
aM[4]=8
nX=INT(LEN(ALLTRIM(cX))/5)
LOCAL aX[nX]
FOR i=1 TO nX
aX[i]=0
NEXT
FOR i=1 TO nX
cM=SUBSTR(cX,5*(i-1)+1,5)
FOR j=1 TO 5
cK=SUBSTR(cM,j,1)
aX[i]=aX[i] + IIF(cK$'ABCD',aM[ASC(cK)-64],0)
NEXT
NEXT
FOR i=1 TO nX
? i,aX[i]
NEXT
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
基于你的题目图书管理系统,我们可以提供一份代码,适用于初学者的,
如有具体需求,可以我们联系,,带着你的问题和Email来找我,有时间可以帮你,肯定救急,使用百度_Hi给我留言,
此回复对于所有需求和和来访者有效,
ES:\\50DD09E4023120FE048F684B2DB9887E
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela
如有具体需求,可以我们联系,,带着你的问题和Email来找我,有时间可以帮你,肯定救急,使用百度_Hi给我留言,
此回复对于所有需求和和来访者有效,
ES:\\50DD09E4023120FE048F684B2DB9887E
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询