标题:[请教VFP,谢谢]每科补考人数最小值统计问题
只看楼主
mmhunter
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2005-3-4
 问题点数:0 回复次数:1 
[请教VFP,谢谢]每科补考人数最小值统计问题

我有一段学生补考人统计的代码写的不对,可是我又没办法解决,各位师兄给看看,先谢谢了各位: 两个表如下: F04_CJ字段名:bj,xm,yw,sx,yy,wl,hx,zz,ls,dl,ywmc(语文名次),sxmc,yymc,wlmc,hxmc,zzmc,lsmc,dlmc F04_bk字段名:BJ,XM,FS(分数),KM(科目) 1、各科补考人数是这样的:将语文、数学、英语、物理、化学、政治、历史、地理每一科成绩按从高到低的分数排名次,每一科分数高的排第一,分数最低的排最后。则每一科学生成绩的排名越大,成绩越差。 2、对于学生每一科的排名,并不是排名的名次和学生的人数相等。如总人数为500,由于有分数相等的学生,每科可能存在2个或2个以上的学生名次相同,这样比如500人考试,语文排名可能到480,而数学可能排名到460,英语可能排名到490,也就是说考试每一科的排名名次和考试总人数不同,并且每一科的排名名次和顺序也不相同。举例来说就是如果有5个学生的语文成绩都为100分,而101分排名到40,刚这5个学生的语文名次均为41。 3、基于上述原因,在筛选数据时会出现根据各科排名名次不同,补考人数不一样的情况。先根据各科的排名情况,计算出应该补考的人数,但这个补考的总人数,不能大于60人。举例来说,语文应该先用count for ywmc>=i to rs (说明:i-代表名次,rs-语文名次大于i的人数),然后判断rs是否大于60。如果rs不大于60,则继续循环,否则取上一个i,将数据从成绩表中导入到补考表中。 4、在写程序时,我是先将8科定义一个数组km(8),先循环科目,再循环每一科的名次,每科查找出小于60人的时候,将该科数据导入到补考表中。 5、我的问题是,在循环每科名次计算应该有多少人补考,并获取应该补考的名次时,总是计算不正确,mc=0,将所有数据全部导入补考表中!我在调试时总是跳过FOR J=1 TO ZRS 循环,为什么啊? 程序如下: DIME A(4) DIME KM(8) KM(1)="YW" KM(2)="SX" KM(3)="YY" KM(4)="WL" KM(5)="HX" KM(6)="ZZ" KM(7)="LS" KM(8)="DL"

K=0 ZRS=0 KMMC=' '

FOR I=1 TO 8 *(循环8科) SELE 1 USE F04_CJ.DBF

KMMC="&KM(I)"+"MC" *(KMMC-生成科目名次字段名,因为每一科都有这个字段用于存放该科的成绩名次如:YWMC,SXMC,YYMC,WLMC) INDEX ON &KMMC TAG &KMMC DESC   *(每一科循环时,在该科分数上建立索引。我如果想用该科名次建立索引该如何建呢?如语文时用ywmc,数学时用sxmc) SET ORDER TO TAG &KMMC GO TOP COUNT ALL TO ZRS  *(ZRS-统计总人数)

FOR J=1 TO ZRS GO J MC=&KMMCCOUNT ALL FOR &KMMC>=MC TO RS  *(运行中如统计语文则kmmc应为ywmc,数学就为sxmc;RS为每一科名次大于MC的人数) IF RS>60 SKIP ELSE K=J EXIT ENDIF ENDFOR INDEX ON &KMMC TAG &KMMC FOR &KMMC>=K DESC SET ORDER TO &KMMC GO TOP

DO WHILE NOT EOF("F04_CJ") A(1)=BJ A(2)=XM A(3)=&KM(I) A(4)="&KM(I)" if .NOT.USED("F04_BK") SELE 2 USE F04_BK ELSE SELE F04_BK ENDIF APPE FROM ARRA A SELE F04_CJ SKIP ENDDO ENDFOR 再一次谢谢!

搜索更多相关主题的帖子: VFP 统计 
2005-03-11 09:22
mmhunter
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2005-3-4
得分:0 
哪位大哥回答我啊,我在等待中ing

对于编程,原来我什么都不懂!
2005-03-13 10:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-13156-1-1.html




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

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