回复 8楼 wengjl
有思路了,在对接好里的表中删除甲、乙都是男的,剩上的随机筛选出7场
回复 11楼 bcly0808
思想是有了,测试没通过


程序代码:*!* 表及字段说明
*!* jsmd-监考教师名单,XM-姓名,XB-性别,FZ-分组,1代表甲组-监考1,2代表乙-监考2 ; 如果不想让1组始终是主监考,可以在排好后,同组对调一下。
*!* jkap-安排表,课程名称(也可以考试场次),姓名、性别
*!* kskc-考试课程,kcmc 课程名称,kcs 考场数,wp1,wp2 未安排场次
Close Tables All
Use jsmd
Use jkap In 0
Zap In jkap
Use kskc In 0
Replace wp1 With 0,wp2 With 0 All In kskc
ikskc=Reccount('kskc')
Count For fz='1' To rs1
Count For fz='2' To rs2
If rs1<>rs2 Then
yorn=Messagebox('两组监考人数不相等,1组'+Alltrim(Str(rs1))+'人,2组'+Alltrim(Str(rs2))+'人。'+Chr(13)+'是否继续?',4+32+256,"提示")
If yorn<>6 Then
Return
Else
irs=rs1 && ?max(rs1,rs2) ?min(rs1,rs2)均可
Endif
Endi
Select jkap
For i=1 To ikskc
Go i In kskc
_kcmc=Alltrim(kskc.kcmc)
_kcs=kskc.kcs
For j=1 To _kcs
Insert Into jkap (kcmc ) Values (_kcmc)
Replace xlh With Rand() In jsmd All
Select Top 1 xm,xb From jsmd Order By xlh Desc Where fz='1' And Not( xm In (Select xm1 From jkap Where Alltrim(kcmc)==_kcmc) )Into Curs tmp
If Reccount('tmp')=0
Replace xm1 With "NO" In jkap
Replace wp1 With wp1+1 In kskc
** loop
Else
_js1=Alltrim(tmp.xm)
_xbn=(Alltrim(tmp.xb)='男')
Replace xb1 With tmp.xb,xm1 With _js1 In jkap
Endif
**下面第二个老师
Select Top 1 xm,xb From jsmd Order By xb,xlh Where fz='2' And !(xm In (Select xm2 From jkap Where Alltrim(kcmc)==_kcmc)) And !(xm In (Select xm2 From jkap Where Alltrim(xm1)==_js1)) AND !(xb='男' AND _xbn) Into Curs tmp
* _xbn[color=#808080]=(ALLTRIM(tmp.xb)='男'),(xb='女')=_xbn 性别不能相同[/color]
*_xbn=(ALLTRIM(tmp.xb)='男'),!((xb='男')and_xbn) 性别不能同为男
If Reccount('tmp')=0
Replace xm2 With "NO" In jkap
Replace wp2 With wp2+1 In kskc
** loop
Else
Replace xm2 With tmp.xm,xb2 With tmp.xb In jkap
Endif
Endfor
Endfor
