以下是引用bcly0808在2018-6-7 08:49:35的发言:
考场座位校验,考场内学生来自不同的学校,按5*6蛇形就座,前后左右不能是来自同一所学校的学生
以下是自己写的代码,太笨拙,想不出好的方法,而且测试考场(尾考场)不足30人的会报错,请高手帮助
khsj=GETFILE("dbf") &&指定数据表
*USE &khsj &&打开数据表
SELECT * FROM &khsj Order by kh ASC INTO TABLE zkkh\khzwxy.dbf
CLOSE TABLES &&关闭打开的数据表
USE zkkh\khzwxy.dbf
CALCULATE min(EVALUATE(kch)) TO xkc &&&取最小考场号
CALCULATE max(EVALUATE(kch)) TO dkc &&&取最大考场号
copy stru to zkkh\zwxy.dbf &&生成座位校验表结构
copy stru to zkkh\zwxyjg.dbf &&生成座位校验结果表结构,将存在问题的考场数据添加到此表中
use zkkh\zwxy.dbf &&打开座位校验表
i=xkc-1
do while i<=dkc &&指定考场号范围
i=i+1
appe from zkkh\khzwxy.dbf for VAL(kch)=0+i &&&按考场号添加数据
kc=kch
goto 1
zw1=xxdm
goto 2
zw2=xxdm
goto 3
zw3=xxdm
goto 4
zw4=xxdm
goto 5
zw5=xxdm
goto 6
zw6=xxdm
goto 7
zw7=xxdm
goto 8
zw8=xxdm
goto 9
zw9=xxdm
goto 10
zw10=xxdm
goto 11
zw11=xxdm
goto 12
zw12=xxdm
goto 13
zw13=xxdm
goto 14
zw14=xxdm
goto 15
zw15=xxdm
goto 16
zw16=xxdm
goto 17
zw17=xxdm
goto 18
zw18=xxdm
goto 19
zw19=xxdm
goto 20
zw20=xxdm
goto 21
zw21=xxdm
goto 22
zw22=xxdm
goto 23
zw23=xxdm
goto 24
zw24=xxdm
goto 25
zw25=xxdm
goto 26
zw26=xxdm
goto 27
zw27=xxdm
goto 28
zw28=xxdm
goto 29
zw29=xxdm
goto 30
zw30=xxdm
if (zw1=zw2 or zw1=zw12) or (zw2=zw3 OR zw2=zw11) OR (zw3=zw4 OR zw3=zw10) OR (zw4=zw5 or zw4=zw9) OR (zw5=zw6 OR zw5=zw8) OR (zw6=zw7);
OR (zw7=zw8 OR zw7=zw18) OR (zw8=zw9 OR zw8=zw17) OR (zw9=zw10 OR zw9=zw16) OR (zw10=zw11 OR zw10=zw15) OR (zw11=zw12 OR zw11=zw14) OR (zw12=zw13);
OR (zw13=zw14 OR zw13=zw24) OR (zw14=zw15 OR zw14=zw23) OR (zw15=zw16 OR zw15=zw22) OR (zw16=zw17 OR zw16=zw21) OR (zw17=zw18 or zw17=zw20) OR (zw18=zw19);
OR (zw19=zw20 OR zw19=zw30) OR (zw20=zw21 or zw20=zw29) OR (zw21=zw22 OR zw21=zw28) OR (zw22=zw23 OR zw22=zw27) OR (zw23=zw24 OR zw23=zw26) OR (zw24=zw25);
OR (zw25=zw26) OR (zw26=zw27) OR (zw27=zw28) OR (zw28=zw29) OR (zw29=zw30) then
USE zkkh\zwxyjg.dbf
APPEND FROM zkkh\zwxy.dbf
USE zkkh\zwxy.dbf
messagebox(STR(&kc)+"考场存在前后左右相邻现象",0+32,"提示")
else
messagebox(STR(&kc)+"考场不存在前后左右相邻现象",0+64,"提示")
endif
dele all
pack
enddo
你是排好试场后,再来检查,并调整吗? 这叫西医的治疗法——对着症下药;应该用中医的治疗法——找源头,编试场的时候就不让其有矛盾。