标题:考场座位校验,请高手帮助指导!
只看楼主
bcly0808
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2013-3-22
结帖率:50%
已结贴  问题点数:15 回复次数:17 
考场座位校验,请高手帮助指导!
考场座位校验,考场内学生来自不同的学校,按5*6蛇形就座,前后左右不能是来自同一所学校的学生
测试数据表.rar (48.43 KB)


以下是自己写的代码,太笨拙,想不出好的方法,而且测试考场(尾考场)不足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



[此贴子已经被作者于2018-6-7 08:51编辑过]

搜索更多相关主题的帖子: 校验 dbf 打开 FROM goto 
2018-06-07 08:49
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:565
专家分:1668
注 册:2017-7-16
得分:2 
说真的,能够正常运行即为好!
群里的朋友,也只是看看能否解决个别问题,
谁有闲心来看这么长的代码?
[你能运行了就叫好]
2018-06-07 09:00
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:2 
可否先判断考场人数?不足30人的另行判断?
2018-06-07 13:13
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:2 
以前用Excel帮别人做过一个,代码我再找找,多年前的事情了。
为什么当时要用Excel来做?因为Excel的单元格可以用Cells(行号,列号)来表示,
这样的话,判断相邻就非常方便:如果格子相邻,那么 两个格子
要么行号同且列号之间相差1,
要么列号同且行号之间相差1,
这样非常好判断是否相邻。
感觉这样比数组还方便、直观。

2018-06-07 15:06
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:2 
代表每一个学生的唯一标志是什么

坚守VFP最后的阵地
2018-06-07 20:49
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
心诚佛祖才能保佑

坚守VFP最后的阵地
2018-06-07 21:40
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
当一个考场人数正好是30人时,前后位置的学校代码相减(字符型转换为数值型)为0,同理左右位置也是这样。
当一个考场人数不足30人时,同一个座位号显示的位置都是不一样的。楼主可以自己手工测试一下。

坚守VFP最后的阵地
2018-06-07 21:59
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:2 
问题是查出来了,然后 再用原来 那个代码重排一下,不是还会有问题的。

还是

问题查出来了,像排课软件的调课那样,一个试场一个试场地手工调整?

关键还是在于,排试场的代码如何改进——排完了,除了尾试场,保证是相邻不同校的。

只求每天有一丁点儿的进步就可以了
2018-06-08 13:17
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
问题是查出来了,然后 再用原来 那个代码重排一下,不是还会有问题的。

还是

问题查出来了,像排课软件的调课那样,一个试场一个试场地手工调整?

关键还是在于,排试场的代码如何改进——排完了,除了尾试场,保证是相邻不同校的。

只求每天有一丁点儿的进步就可以了
2018-06-08 13:18
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
得分:2 
为什么不用EXCEL做呢?是编排考场,还是检验已经排好的?

我是来向高手学习的!
2018-06-08 16:49



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




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

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