| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1510 人关注过本帖
标题:再次请教学生如何分派
只看楼主 加入收藏
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1788
专家分:3389
注 册:2012-2-29
收藏
得分:0 
回复 27楼 chychychy
这是一个老教务告诉我的方法,如何用VFP来实现?确实没有想到好的办法,所以才放到Excel中去粘贴的。
VFP可否可以使用数组来填充录取信息?有空时试一下。
2024-12-10 06:56
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1788
专家分:3389
注 册:2012-2-29
收藏
得分:0 
回复 28楼 my2318
随机的话,应该也是可以的哈。但我觉得这样硬性分配更直观、具体一点,不知理解对否?
2024-12-10 06:58
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1788
专家分:3389
注 册:2012-2-29
收藏
得分:0 
回复 30楼 chychychy
请问:如何理解 2B2C2D 以上考生?
我的理解对吗?注意删除部分(即不能参与录取的)是否合理?
满足2B2C2D以上条件的考生.rar (185.42 KB)


经过自动 + 手动,结果如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

录取数据表
录取表.rar (90.96 KB)


[此贴子已经被作者于2024-12-10 09:26编辑过]

2024-12-10 08:39
chychychy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:105
注 册:2015-4-18
收藏
得分:0 
回复 33楼 schtg
cjk.rar (175.39 KB)
您的这个数和我们这边要求的有出入,我将您的xkzh字段按下面语句重新排序,将lqxxdm字段标记31对比了一下,我计算符合条件的有5974条,您的是6621条,
关于BBCCDD(2B2C2D)这个我多年前在https://bbs.bccn.net/thread-495360-1-1.html讨论求助过,在这个要求里(2B2C2D)是最低标准,而且目前是不能折合替代,比如有的地方有一个A可以多一个D
2009370982001810262这个BBBCCD,3B2C1D,是符合要求的,高于2B2C2D最低要求;
2009370982100510041这个BCCCCC,1B5C是不符合要求的了,少一个B;
我借助论坛程序,将等级排列组合重新排序,然后逐个对位比较的,方法比较笨但是安全可靠,论坛大佬的其他方式当时有的我没能理解透
程序代码:
BLANK FIELDS xkzh ALL
BROWSE
**提取并排序
SCAN
    SCATTER FIELDS wldj,hxdj,zzdj,lsdj,dldj,swdj TO px6
    = ASORT(px6)
    REPLACE xkzh WITH ALLTRIM(px6[1] - px6[2] - px6[3] - px6[4] - px6[5] - px6[6] )
ENDSCAN
**对位比较,因为最低组合是BBCCDD;排序后利用A<B<C<D逻辑逐个对位比较
REPLACE ALL lqxxdm  WITH '31' FOR SUBSTR(xkzh,1,1)<='B' AND SUBSTR(xkzh,2,1)<='B' AND SUBSTR(xkzh,3,1)<='C' AND SUBSTR(xkzh,4,1)<='C'AND SUBSTR(xkzh,5,1)<='D'AND SUBSTR(xkzh,6,1)<='D'




[此贴子已经被作者于2024-12-10 11:00编辑过]

2024-12-10 09:48
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1788
专家分:3389
注 册:2012-2-29
收藏
得分:0 
回复 34楼 chychychy
好的,我就是不太理解 2B2C2D 的含义,我还在那里参与讨论,好像还是没有搞懂,谢谢纠正!

[此贴子已经被作者于2024-12-10 13:01编辑过]

2024-12-10 12:43
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
2B2C2D 的含义,应该是:
最多2个B
最多2个C
最多2个D


坚守VFP最后的阵地
2024-12-10 13:06
chychychy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:105
注 册:2015-4-18
收藏
得分:0 
回复 36楼 sdta
这个地方确实有点绕,当年您指导过,您的排序等语句给很大的帮助
CREATE CURSOR TT (X1 C(1));FOR I = 65 TO 68
    INSERT INTO TT VALUES(CHR(I))
ENDFOR
……
这样我测试过,具体结果忘了
当年我参与时,在执行中,BBCCDD(2B2C2D)是底线要求,而且A不能向下抵
BBBCCD,3B2C1D高于(BBCCDD)要求,符合
BCCCCC,1B5C,低于(BBCCDD)要求,不符合,少一个B;
ACCCCD,1A3C1D,低于(BBCCDD)要求,不符合,少一个B;
ACDDDD,1A1C4D,低于(BBCCDD)要求,不符合,D多了两个,B少一个;
如果简单整体判断,因为A<B<C<D<E,所以导致ACCCCD\ACDDDD等不符合2B2C2D(BBCCDD)的情况也被计算为合格了。
后来没再参与这个工作,而且后续文件也有了改变,指导意见表述内容如下:
统招生。生物、道德与法治、历史、地理等级成绩的基本要求为 2C1D。在进行等级科目成绩比较时,4 门等级科目之间可进行等级置换,
即一科目降低一个等级,另一科目可提高一个等级。如:某考生生物等级成绩为 A,道德与法治等级成绩为 D,当生物降低一个等级变为 B 后,道德与法治可提高一个等级变为 C,即 1A1D=1B1C

4个科目是2C1D以上是基本要求,重点高中的是2B1C1D,一般高中直接表述的 2C1D,这样判断又变的更复杂了,
我没测试,但我觉得您当年判断(下面蓝色语句)应该适合上面的这种要求(即一科目降低一个等级,另一科目可提高一个等级)
过去判断BCCC(1B3C)条件
OCCURS("D", 字符串) = 0 AND OCCURS("C", 字符串) <= 3 AND 字符串 <= "BCCC"

现在一个同事商讨集团内部已录取考生均衡分派,因人数不均衡也不成倍数比例,所以又来爬论坛求教了。



[此贴子已经被作者于2024-12-11 08:18编辑过]

2024-12-10 14:20
凝聚双眼
Rank: 2
等 级:论坛游民
帖 子:37
专家分:32
注 册:2023-12-1
收藏
得分:0 
以下是引用schtg在2024-12-8 09:33:50的发言:

前面位次录取,在Excel中做的(这次取了前384名作为位次录取),剩余考生按照你提供的代码做的哈,所以才有 自动 + 手动,才有难度
提供 位次考生 录取 规则:

按照这个规则,比较好地体现位次均衡,同时方便平衡总分。
结果:


检验文件


这个位次怎么个规律?有实现的代码吗?
2024-12-10 16:42
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1788
专家分:3389
注 册:2012-2-29
收藏
得分:0 
回复 38楼 凝聚双眼
这个办法是一个老教务老师告诉我的,这是他从事这项工作的经验吧,类似于S型,但又不完全相同。
我将总分从高到低排序,在Excel的一列中粘贴这个顺序(手动),暂时没有VFP代码哈。
2024-12-11 06:14
chychychy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:105
注 册:2015-4-18
收藏
得分:0 
回复 36楼 sdta
再次请教探讨关于满足2B1C1D(BBCD)条件组合,如何更好的交给程序去判断
程序代码:
**判断是否满足BBCD,2B1C1D条件
***建立4科等级排列
CREATE CURSOR tt (x1 c(1))
FOR i = 65 TO 69
    INSERT INTO tt VALUES (CHR(i))
ENDFOR
SELECT aa.x1 + bb.x1 + cc.x1 + dd.x1  ZH FROM tt aa ;
    INNER JOIN tt bb ON bb.x1 >= aa.x1 ;
    INNER JOIN tt cc ON cc.x1 >= bb.x1 ;
    INNER JOIN tt dd ON dd.x1 >= cc.x1 ;
    ORDER BY 1 INTO CURSOR  tmp1 READWRITE
*BROWSE  &&查看测试用
SELECT *,RECNO() xh ,00 SFHG FROM tmp1 INTO DBF zh4 &&SFHG为是否合格

BROWSE

***所以包含E的均为不合格,将SFHG字段标记为2
REPLACE SFHG WITH 2 FOR "E" $ ZH &&去掉35条

***手动判断去掉11条不合格的,将SFHG字段标记为3
**----------------------------
*ACDD,ADDD,
*BBDD,BCCD,BCDD,BDDD
*CCCC,CCCD,CCDD,CDDD,
*DDDD
** 70-35-11=24条 所有符合条件的组合
REPLACE sfhg WITH 3 FOR zh='ACDD' OR zh='ADDD' OR zh='BBDD'OR zh='BCCD' OR zh='BCDD' OR zh='BDDD' OR zh='CCCC' OR zh='CCCD' OR zh='CCDD' OR zh='CDDD' OR zh='DDDD'
**---------------------------
SELECT * FROM zh4 WHERE sfhg=0 &&所有符合条件的组合,是否合格sfhg字段为0,有24条
SELECT * FROM zh4 WHERE OCCURS("E", zh) = 0 AND OCCURS("D", zh) <= 3 AND zh <= "BBCD"  &&&这个判断会显示有25条
**多了ACDD\ADDD
**少了BCCC
2024-12-11 08:13
快速回复:再次请教学生如何分派
数据加载中...
 
   



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

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