| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2573 人关注过本帖
标题:关于处理考试成绩数据问题,急求!
只看楼主 加入收藏
lijihe8866
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-9-14
收藏
得分:0 
回复 26楼 cxzbzgz
原贴没有第3名
2012-09-16 14:17
cxzbzgz
Rank: 8Rank: 8
来 自:云南楚雄
等 级:贵宾
威 望:24
帖 子:296
专家分:808
注 册:2012-6-15
收藏
得分:0 
回复 41楼 lijihe8866
USE ee

INDEX on 班级+STR(1000-总分) TO bjzf   && 以下为处理班级名次
 GO TOP
  DO whil NOT EOF()
    bj=班级
    i=1
    j=1
    DO whil NOT EOF() AND 班级=bj
     zf=总分
     REPLACE 班级名次 WITH i
     j=0
   DO whil NOT EOF() AND 班级=bj AND 总分=zf      
     REPLACE 班级名次 WITH i
     j=j+1   
    SKIP  
    ENDDO
    i=i+j   
   ENDDO
  ENDDO  && 以上为处理班级名次
  
  INDEX on STR(1000-总分) TO bjzf  && 以下为处理年级名次  
   GO TOP
  
    i=1
    DO whil NOT EOF()
     zf=总分
     REPLACE 年级名次 WITH i
    j=0
   DO whil NOT EOF() AND 总分=zf      
     REPLACE 年级名次 WITH i
     j=j+1   
    SKIP  
    ENDDO
    i=i+j   
  ENDDO  && 以上为处理年级名次
现在可以了,看看行不行?
ee.rar (1.29 KB)

学习交流VFP,QQ:248561326。
2012-09-16 15:28
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9832
专家分:27165
注 册:2012-2-5
收藏
得分:0 
以下是引用cxzbzgz在2012-9-16 15:28:08的发言:

USE ee

INDEX on 班级+STR(1000-总分) TO bjzf   && 以下为处理班级名次
 GO TOP
  DO whil NOT EOF()
    bj=班级
    i=1
    j=1
    DO whil NOT EOF() AND 班级=bj
     zf=总分
     REPLACE 班级名次 WITH i
     j=0
   DO whil NOT EOF() AND 班级=bj AND 总分=zf      
     REPLACE 班级名次 WITH i
     j=j+1   
    SKIP  
    ENDDO
    i=i+j   
   ENDDO
  ENDDO  && 以上为处理班级名次
  
  INDEX on STR(1000-总分) TO bjzf  && 以下为处理年级名次  
   GO TOP
  
    i=1
    DO whil NOT EOF()
     zf=总分
     REPLACE 年级名次 WITH i
    j=0
   DO whil NOT EOF() AND 总分=zf      
     REPLACE 年级名次 WITH i
     j=j+1   
    SKIP  
    ENDDO
    i=i+j   
  ENDDO  && 以上为处理年级名次
现在可以了,看看行不行?
能否加上注释,让大家能看得的明白。

坚守VFP最后的阵地
2012-09-16 16:11
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:0 
楼主要的排名不连续,看起来不好看吧?如果非要那样:
USE ee
INDEX ON VAL(班级)*10000+1-总分 to my_index
Nbj=""
Nzf=0
n=1
FOR i=1 to RECCOUNT()
    IF 班级<>Nbj
        n=1
    ENDIF
     REPLACE 班级名次 with IIF(Nzf=总分,n-1,n)
    n=n+1
    Nbj=班级   
    Nzf=总分
    SKIP
NEXT

相互学习,互相交流,共同提高。
2012-09-16 16:17
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9832
专家分:27165
注 册:2012-2-5
收藏
得分:0 
以下是引用qjbzjp在2012-9-16 16:17:54的发言:

楼主要的排名不连续,看起来不好看吧?如果非要那样:
USE ee
INDEX ON VAL(班级)*10000+1-总分 to my_index
Nbj=""
Nzf=0
n=1
FOR i=1 to RECCOUNT()
    IF 班级<>Nbj
        n=1
    ENDIF
     REPLACE 班级名次 with IIF(Nzf=总分,n-1,n)
    n=n+1
    Nbj=班级   
    Nzf=总分
    SKIP
NEXT
结果对?

坚守VFP最后的阵地
2012-09-16 16:20
cxzbzgz
Rank: 8Rank: 8
来 自:云南楚雄
等 级:贵宾
威 望:24
帖 子:296
专家分:808
注 册:2012-6-15
收藏
得分:3 
回复 43楼 sdta
USE ee

INDEX on 班级+STR(1000-总分) TO bjzf   && 以下为处理班级名次
 GO TOP
  DO whil NOT EOF()
    bj=班级
    i=1
    j=1
    DO whil NOT EOF() AND 班级=bj &&当班级为同一班级时,只对本班级的名次进行操作
     zf=总分
     REPLACE 班级名次 WITH i
     j=0                            &&此为计算考分相同的考生数
   DO whil NOT EOF() AND 班级=bj AND 总分=zf   &&考分相同时名次相同   
     REPLACE 班级名次 WITH i
     j=j+1   
    SKIP  
    ENDDO
    i=i+j    &&当考分不相同时,增加计数
   ENDDO
  ENDDO  && 以上为处理班级名次
  
  INDEX on STR(1000-总分) TO bjzf  && 以下为处理年级名次  
   GO TOP   
    i=1
    DO whil NOT EOF()
     zf=总分
     REPLACE 年级名次 WITH i
    j=0
   DO whil NOT EOF() AND 总分=zf &&处理考分相同时的名次      
     REPLACE 年级名次 WITH i
     j=j+1   
    SKIP  
    ENDDO
    i=i+j                      &&当考分不相同时,增加计数   
  ENDDO  && 以上为处理年级名次

学习交流VFP,QQ:248561326。
2012-09-16 16:23
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9832
专家分:27165
注 册:2012-2-5
收藏
得分:0 
回复 46楼 cxzbzgz
用得着那么多循环吗,换个思路考虑。
比如:FOR  ENDFOR、SCAN  ENDSCAN
DO ENDDO 速度不如上面两个命令。

[ 本帖最后由 sdta 于 2012-9-16 16:30 编辑 ]

坚守VFP最后的阵地
2012-09-16 16:28
lijihe8866
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-9-14
收藏
得分:0 
经过调试,qjbzjp和cxzbzgz结果都正确,正在学习中,谢谢!
2012-09-16 16:38
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9832
专家分:27165
注 册:2012-2-5
收藏
得分:0 
以下是引用lijihe8866在2012-9-16 16:38:36的发言:

经过调试,qjbzjp和cxzbzgz结果都正确,正在学习中,谢谢!
楼主用上面的代码运行这个表,看看是否能达到你的要求
ee.rar (1.27 KB)

坚守VFP最后的阵地
2012-09-16 16:51
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9832
专家分:27165
注 册:2012-2-5
收藏
得分:0 
楼主上传的表中数据有一定的局限性,看了49楼的表,你就知道什么原因了。
统计学上叫取样[不知是否恰当]错误。样本的局限性造成了最终结果的错误。
最终谁的代码能达到你的要求,运行49楼的数据表,结果自明。

坚守VFP最后的阵地
2012-09-16 16:57
快速回复:关于处理考试成绩数据问题,急求!
数据加载中...
 
   



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

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