注册 登录
编程论坛 VFP论坛

成绩排名问题

hnsmxyz 发布于 2011-12-22 09:02, 719 次点击
Use 七年级
*(1)根据语文成绩排名次
Index On -语文 To Temp.Idx
Go Top
xx=1
yy=1
zz=语文
Do While !Eof()
If 语文!=zz
zz=语文
xx=yy
EndIf
Replace 语文名次 With xx
yy=yy+1
Skip
EndDo

(那们大侠给我分析一下,这个程序,就这一段看不明白:Do While !Eof()
If 语文!=zz
zz=语文
xx=yy
EndIf
如何让分数一样的时候,名次并列,如:1名,1名,3名........)
5 回复
#2
Tiger53922011-12-22 09:35
该程序实现的功能:分数不一样时,名次修改,并记录下来;分数一样时,名次不变。若有同名次的,下一个分数跳过一个名次,实现了1、1、3的排名要求。
#3
wengjl2011-12-22 12:56
比我自己写的要简洁
#4
cjc10102011-12-22 17:13
成绩排名,用select-sql语句,一句就可以了。
#5
软件服务2011-12-24 10:21
xx=1
 zz=语文
 SCAN
 If 语文!=zz
 zz=语文
 xx=xx+1
 EndIf
 Replace 语文名次 With xx
 EndScan
 
#6
chychychy前天 08:32
回复 5楼 软件服务
测试这样排列结果是1123……,但楼主要求的是1134……
加入成绩是zf字段,名次写入mc字段
程序代码:

INDEX on zf DESCENDING TAG zfpx
i = 0          && 记录逻辑位置计数器
nzf = -1.   && 初始化值为负数,避免与任何成绩相等
nmc = 0       && 记录上一条记录的名次

SCAN
    i=i+1
    IF zf!=nzf
        nmc=i
        nzf=zf
    ENDIF
    REPLACE mc WITH nmc
ENDSCAN

GO TOP
BROWSE  && 显示结果
CLOSE INDEXES
DELETE TAG ALL && 删除产生的索引文件


1