CLOSE DATABASES ALL
SET SAFETY OFF
SET COLLATE TO "MACHINE"
str="班级,总分,语文,数学,英语,物理,化学,生物,历史,地理,政治"
=ALINES(ams,str,",")
Syw="班级,全班学生平均,优秀生平均,综合平均"
=ALINES(Ayw,Syw,",")
*Spm="班级,语文全班平均,语文优秀生平均,语文综合平均,语文名次,数学全班平均,数学优秀生平均,数学综合平均,数学名次,英语全班平均,英语优秀生平均,英语综合平均,英语名次" + ","+"物理全班平均,物理优秀生平均,物理综合平均,物理名次,化学全班平均,化学优秀生平均,化学综合平均,化学名次,生物全班平均,生物优秀生平均,生物综合平均,生物名次"+","+"历史全班平均,历史优秀生平均,历史综合平均,历史名次,地理全班平均,地理优秀生平均,地理综合平均,地理名次,政治全班平均,政治优秀生平均,政治综合平均,政治名次"
Szs="班级,语文全班平均,语文优秀生平均,语文综合平均,语文名次,数学全班平均,数学优秀生平均,数学综合平均,数学名次,英语全班平均,英语优秀生平均,英语综合平均,英语名次"
Sws="物理全班平均,物理优秀生平均,物理综合平均,物理名次,化学全班平均,化学优秀生平均,化学综合平均,化学名次,生物全班平均,生物优秀生平均,生物综合平均,生物名次"
Sls="历史全班平均,历史优秀生平均,历史综合平均,历史名次,地理全班平均,地理优秀生平均,地理综合平均,地理名次,政治全班平均,政治优秀生平均,政治综合平均,政治名次"
Spm=Szs+","+Sws+","+Sls
=ALINES(Apm,Spm,",")
cFile="班级 C(2),总分 N(7,2)"
FOR i=3 TO ALEN(ams,1)
cFile=cFile+","+ams[i]+" N(6,2)"
ENDFOR
cYwen="班级 C(2)"
FOR i=2 TO ALEN(Ayw,1)
cYwen=cYwen+","+Ayw[i]+" N(8,2)"
ENDFOR
cPming="班级 C(2)"
FOR i=2 TO ALEN(Apm,1)
cPming=cPming+","+Apm[i]+" N(6,2)"
ENDFOR
CREATE CURSOR 综合平均(&cFile)
CREATE CURSOR 全班学生平均(&cFile)
CREATE CURSOR 优秀生平均(&cFile)
CREATE CURSOR 语文平均(&cYwen)
CREATE CURSOR 数学平均(&cYwen)
CREATE CURSOR 英语平均(&cYwen)
CREATE CURSOR 物理平均(&cYwen)
CREATE CURSOR 化学平均(&cYwen)
CREATE CURSOR 生物平均(&cYwen)
CREATE CURSOR 历史平均(&cYwen)
CREATE CURSOR 地理平均(&cYwen)
CREATE CURSOR 政治平均(&cYwen)
CREATE CURSOR 清北各科排名(&cPming)
SELECT distinct 班级 FROM 学校 INTO ARRAY abc
LOCAL X(ALEN(abc,1),11),Y(ALEN(abc,1),11),Z(ALEN(abc,1),11),H(ALEN(abc,1),4),S(ALEN(abc,1),4),E(ALEN(abc,1),4),W(ALEN(abc,1),4),Hua(ALEN(abc,1),4),Sheng(ALEN(abc,1),4),His(ALEN(abc,1),4),Di(ALEN(abc,1),4),Zh(ALEN(abc,1),4),Qb(4,ALEN(Apm,1))
STORE 0 TO X,Y,Z,H,S,E,W,Hua,Sheng,His,Di,Zh,Qb
SELECT 学校
INDEX on 班级 TAG px
FOR i=1 TO ALEN(abc,1)
X[i,1]=abc[i]
FOR j=2 TO ALEN(ams,1)
Num=0
su=0
SCAN FOR 班级=abc[i]
su=su+&ams[j]
Num=Num+1
ENDSCAN
X[i,j]=ROUND(su/Num,2)
ENDFOR
ENDFOR
FOR i=1 TO ALEN(abc,1)
Y[i,1]=abc[i]
FOR j=2 TO ALEN(ams,1)
INDEX on 班级+STR(&ams[j],7,1) TAG px DESCENDING
Num=0
cs=0
su=0
SCAN FOR 班级=abc[i]
IF &ams[j]!=cs AND Num>=20
EXIT
ENDIF
su=su+&ams[j]
Num=Num+1
cs=&ams[j]
ENDSCAN
Y[i,j]=ROUND(su/Num,2)
ENDFOR
ENDFOR
FOR i=1 TO ALEN(abc)
Z(i,1)=abc(i)
FOR j=2 TO ALEN(ams)
Z(i,j)=X(i,j)*0.6+Y(i,j)*0.4
endfor
ENDFOR
*FOR i=1 TO 3
INSERT INTO 综合平均 FROM ARRAY Z
SELECT * FROM 综合平均 INTO TABLE 综合平均
INSERT INTO 全班学生平均 FROM ARRAY X
SELECT * FROM 全班学生平均 INTO TABLE 全班学生平均
INSERT INTO 优秀生平均 FROM ARRAY Y
SELECT * FROM 优秀生平均 INTO TABLE 优秀生平均
FOR i=1 TO ALEN(abc,1)
H(i,1)=abc(i)
FOR j=2 TO ALEN(Ayw,1)
DO CASE
CASE j==2
H(i,j)=X(i,3)
CASE j==3
H(i,j)=Y(i,3)
OTHERWISE
H(i,j)=Z(i,3)
ENDCASE
ENDFOR
ENDFOR
FOR i=1 TO ALEN(abc,1)
S(i,1)=abc(i)
FOR j=2 TO ALEN(Ayw,1)
DO CASE
CASE j==2
S(i,j)=X(i,4)
CASE j==3
S(i,j)=Y(i,4)
OTHERWISE
S(i,j)=Z(i,4)
ENDCASE
ENDFOR
ENDFOR
FOR i=1 TO ALEN(abc,1)
E(i,1)=abc(i)
FOR j=2 TO ALEN(Ayw,1)
DO CASE
CASE j==2
E(i,j)=X(i,5)
CASE j==3
E(i,j)=Y(i,5)
OTHERWISE
E(i,j)=Z(i,5)
ENDCASE
ENDFOR
ENDFOR
FOR i=1 TO ALEN(abc,1)
W(i,1)=abc(i)
FOR j=2 TO ALEN(Ayw,1)
DO CASE
CASE j==2
W(i,j)=X(i,6)
CASE j==3
W(i,j)=Y(i,6)
OTHERWISE
W(i,j)=Z(i,6)
ENDCASE
ENDFOR
ENDFOR
FOR i=1 TO ALEN(abc,1)
Hua(i,1)=abc(i)
FOR j=2 TO ALEN(Ayw,1)
DO CASE
CASE j==2
Hua(i,j)=X(i,7)
CASE j==3
Hua(i,j)=Y(i,7)
OTHERWISE
Hua(i,j)=Z(i,7)
ENDCASE
ENDFOR
ENDFOR
FOR i=1 TO ALEN(abc,1)
Sheng(i,1)=abc(i)
FOR j=2 TO ALEN(Ayw,1)
DO CASE
CASE j==2
Sheng(i,j)=X(i,8)
CASE j==3
Sheng(i,j)=Y(i,8)
OTHERWISE
Sheng(i,j)=Z(i,8)
ENDCASE
ENDFOR
ENDFOR
FOR i=1 TO ALEN(abc,1)
His(i,1)=abc(i)
FOR j=2 TO ALEN(Ayw,1)
DO CASE
CASE j==2
His(i,j)=X(i,9)
CASE j==3
His(i,j)=Y(i,9)
OTHERWISE
His(i,j)=Z(i,9)
ENDCASE
ENDFOR
ENDFOR
FOR i=1 TO ALEN(abc,1)
Di(i,1)=abc(i)
FOR j=2 TO ALEN(Ayw,1)
DO CASE
CASE j==2
Di(i,j)=X(i,10)
CASE j==3
Di(i,j)=Y(i,10)
OTHERWISE
Di(i,j)=Z(i,10)
ENDCASE
ENDFOR
ENDFOR
FOR i=1 TO ALEN(abc,1)
Zh(i,1)=abc(i)
FOR j=2 TO ALEN(Ayw,1)
DO CASE
CASE j==2
Zh(i,j)=X(i,11)
CASE j==3
Zh(i,j)=Y(i,11)
OTHERWISE
Zh(i,j)=Z(i,11)
ENDCASE
ENDFOR
ENDFOR
INSERT INTO 语文平均 FROM ARRAY H
SELECT * FROM 语文平均 INTO TABLE 语文平均
INSERT INTO 数学平均 FROM ARRAY S
SELECT * FROM 数学平均 INTO TABLE 数学平均
INSERT INTO 英语平均 FROM ARRAY E
SELECT * FROM 英语平均 INTO TABLE 英语平均
INSERT INTO 物理平均 FROM ARRAY W
SELECT * FROM 物理平均 INTO TABLE 物理平均
INSERT INTO 化学平均 FROM ARRAY Hua
SELECT * FROM 化学平均 INTO TABLE 化学平均
INSERT INTO 生物平均 FROM ARRAY Sheng
SELECT * FROM 生物平均 INTO TABLE 生物平均
INSERT INTO 历史平均 FROM ARRAY His
SELECT * FROM 历史平均 INTO TABLE 历史平均
INSERT INTO 地理平均 FROM ARRAY Di
SELECT * FROM 地理平均 INTO TABLE 地理平均
INSERT INTO 政治平均 FROM ARRAY Zh
SELECT * FROM 政治平均 INTO TABLE 政治平均
FOR i=1 TO 2
Qb[i,1]=abc[i]
ii=0
jj=3
FOR j=2 TO ALEN(Apm,1)
DO CASE
CASE j==2+ii*4
Qb[i,j]=X[i,jj]
CASE j==3+ii*4
Qb[i,j]=Y[i,jj]
CASE j==4+ii*4
Qb[i,j]=Z[i,jj]
OTHERWISE
ENDCASE
ii=INT((j-1)/4)
jj=3+ii
ENDFOR
ENDFOR
FOR i=3 TO 4
k=12+i
Qb[i,1]=abc[k]
ii=0
jj=3
FOR j=2 TO ALEN(Apm,1)
DO CASE
CASE j==2+ii*4
Qb[i,j]=X[k,jj]
CASE j==3+ii*4
Qb[i,j]=Y[k,jj]
CASE j==4+ii*4
Qb[i,j]=Z[k,jj]
OTHERWISE
ENDCASE
ii=INT((j-1)/4)
jj=3+ii
ENDFOR
ENDFOR
INSERT INTO 清北各科排名 FROM ARRAY Qb
SELECT * FROM 清北各科排名 INTO TABLE 清北各科排名
*INSERT INTO 平均分 FROM ARRAY Z
*SELECT * FROM 平均分 INTO TABLE 综合平均
*BROWSE
CLOSE DATABASES ALL
ERASE *.IDX
这是代码