回复 30楼 泛海孤舟
2个问题1、定向生可以突破计划吗?(同分)
2、多余的定向计划还需要处理吗?(有的学校降分后,定向计划用不完,怎么办?)

dBase有人接盘了。
2021-08-16 16:10
程序代码:**志愿库\计划库各增加一个字符字段,DJ
Set Default To "..\试录取"
Close Tables All &&关闭表就可以了
Use 志愿库 Alias zyk Exclusive In 0
Select zyk
Blank Fields lqdm All
Replace dj With djf All
For i=65 To 69
Replace dj With Strtran(dj,Chr(i),Str(72-i,1)) All && A-7,B-6 E-3
Endfor
INDEX on STR(tdf)+dj TAG tdf DESCENDING
Use 计划库 Alias jhk Exclusive In 0
Select jhk
Set Order To lqdm
Blank Fields lqrs,zhzf,fsx All
Goto Top In jhk
Replace dj With djf All
For i=67 To 69
Replace dj With Strtran(dj,Chr(i),Str(70-i,1)) All&& C-3,D-2 E-1
Endfor
idxyq=3333222222 &&定向等级要求
Use 定向生计划库 Alias dxsjhk Exclusive In 0
Set Order To xxdm In dxsjhk
Blank Fields lqrs,zhzf,fsx All In dxsjhk
Goto Top In dxsjhk
Local kszy As Character && 考生志愿变量
Local zyxh As Integer && 考生志愿序号变量
Goto Top In zyk
Set Order To tdf In zyk && 从考生高分到低分处理
SELECT zyk
GO top
Do While !Eof("zyk")
For zyxh = 1 To 19 && 考生19个普高志愿
kszy = "zyk.zy" + Transform(zyxh)
If !Empty(Evaluate(kszy))
If Evaluate(kszy)<>'113701' &&志愿表中没有 003701!!为3701学校的定向生志愿,定向生条件为3701分数线降52分,zyk.dxs=.t.,等级线为4C6D,计划库参照定向生计划库
Seek Evaluate(kszy) Order lqdm In jhk
bjstr=TRANSFORM(VAL(zyk.dj)-VAL(jhk.dj))
If AT('0',bjstr)+AT('1',bjstr) =0 && 等级分线要求
If zyk.tdf >= jhk.fsx
If jhk.lqrs < jhk.lqjh
Replace zyk.lqdm With Evaluate(kszy) In zyk
Replace jhk.lqrs With jhk.lqrs+1 In jhk
Replace jhk.zhzf With zyk.tdf In jhk
Exit
Else
If zyk.tdf = jhk.zhzf
Replace zyk.lqdm With Evaluate(kszy) In zyk
Replace jhk.lqrs With jhk.lqrs+1 In jhk
Exit
Endif
Endif
Endif
Endif
ELSE
GO TOP IN jhk &&偷懒了,定位到3701。如果它的代码不是最小的可以用Seek
idxfs=jhk.zhzf-52 &&定向分数
Seek zyk.xxdm Order xxdm In dxsjhk
bjstr=TRANSFORM(VAL(zyk.dj)-idxyq)
If zyk.dxs=.T. And AT('0',bjstr)+AT('1',bjstr) =0 AND zyk.tdf>=idxfs && 等级分线要求zyk.dxs=.T.这个条件还需要吗?考生志愿已经有113701了啊。
If dxsjhk.lqrs<dxsjhk.lqjh
Replace zyk.lqdm With '113701' In zyk
Replace dxsjhk.lqrs With dxsjhk.lqrs+1 In dxsjhk
Replace dxsjhk.zhzf With zyk.tdf In dxsjhk
Exit
Else
If zyk.tdf=dxsjhk.zhzf &&数值表达式不用==,=即可。
Replace zyk.lqdm With '113701' In zyk
Replace dxsjhk.lqrs With dxsjhk.lqrs+1 In dxsjhk
Exit
Endif
Endif
Endif
Endif
Endif
Next
Skip In zyk
Enddo
Replace All jhk.fsx With jhk.zhzf In jhk
Replace dxsjhk.fsx With jhk.fsx-52 For jhk.lqdm='3701' && 各校定向生分数线为3701学校分数线下52分,比如3701学校的分数线为652分,则各校定向生分数线为600分.
Close TABLES All

2021-08-16 16:51
2021-08-16 19:59
2021-08-16 23:20



2021-08-17 10:37
2021-08-17 14:46
2021-08-17 17:20
2021-08-18 16:30