| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1056 人关注过本帖
标题:再次请教学生如何分派
只看楼主 加入收藏
my2318
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:14
帖 子:263
专家分:640
注 册:2014-3-18
收藏
得分:0 
个人观点,等级录取最好的办法是建一个由所有科目和所有学校及录取类别的字段组成的自由表,然后穷尽所有科目等级组合及对应的可录取学校及类别的记录(所有的录取规则),然后再用单个学生成绩在这个表里查找,看可以录取到那个学校及那类学生,最后再统计,这样做虽然不是效率最高的办法,但是是最可靠的办法,现在的计算机性能强劲,用时不会长
昨天 08:25
chychychy
Rank: 2
等 级:论坛游民
帖 子:319
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 41楼 my2318
看来最准确就是这样,sdta版当年也这样表达过,现在是想请教能否更简单的交给程序去判断
昨天 08:44
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2224
专家分:3903
注 册:2007-4-27
收藏
得分:0 
以下是引用my2318在2024-12-11 08:25:59的发言:

个人观点,等级录取最好的办法是建一个由所有科目和所有学校及录取类别的字段组成的自由表,然后穷尽所有科目等级组合及对应的可录取学校及类别的记录(所有的录取规则),然后再用单个学生成绩在这个表里查找,看可以录取到那个学校及那类学生,最后再统计,这样做虽然不是效率最高的办法,但是是最可靠的办法,现在的计算机性能强劲,用时不会长


这个最好。原则是有变化的时候,少改代码,只改某表的内容

只求每天有一丁点儿的进步就可以了
昨天 08:54
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2224
专家分:3903
注 册:2007-4-27
收藏
得分:0 
趁与下属部门校对数据的间隙,做了前200的分配,仅供参考
SQZK.rar (319.96 KB)


       *******************
       * 名称:最优200名分配录取
       *
       * 时间:2024-12-11
       *******************
       CLEAR ALL
       SET ENGINEBEHAVIOR 70
       SET SAFETY OFF
       SET DELETED on        
       PUBLIC mypath
       cCurrentProcedure = SYS(16,1)
       nPathStart = AT(":",cCurrentProcedure)- 1
       nLenOfPath = RAT("\", cCurrentProcedure) - (nPathStart)
       mypath=SUBSTR(cCurrentProcedure, nPathStart, nLenofPath)
       SET DEFAULT TO (mypath)
       *---
       SELECT SPACE(10) as sjs,* from bmk1 orde by zf desc,sx desc,yw desc,wy desc top 200 into table bmkls   && 提取前200名学生。此句的orde by 子句中,可加入等级内容 加上WHERE 过滤评价不符
       RAND(SECONDS())     &&&& 根据时间秒数的不一,来产生随机数,保证每次启动都不一样
       SELECT bmkls
       REPLACE sjs with ALLTRIM(STR((RAND()*987651327))) all
       SELECT * from bmkls orde by sjs into cursor temp readw   && 按随机数排序
       SELECT temp
       REPLACE lqxxdm with [A501] for RECNO()<=50
       REPLACE lqxxdm with [A502] for RECNO()>50 and RECNO()<=100
       REPLACE lqxxdm with [A503] for RECNO()>100 and RECNO()<=150
       REPLACE lqxxdm with [A504] for RECNO()>150   
       *---分配结束
       GO top
       SCAN
         SELECT bmkls
         LOCATE for bmkls.xsdm=temp.xsdm
         IF FOUND()
           REPLACE bmkls.lqxxdm with temp.lqxxdm
         ENDIF
         SELECT temp
       ENDSCAN
       *---分配结果写入
       CLOSE DATABASES
       SELECT [    ] as 抽签学校,lqxxdm,sum(zf) as zf,coun(*) as rs ,sum(zf)/coun(*) as pjf,sum(IIF([女]$xb,1,0)) as nsrs,;
              sum(IIF(zf>=670,1,0)) as fsd670,sum(IIF(zf>=660 and zf<670,1,0)) as fsd660,;
              sum(IIF(zf>=650 and zf<660,1,0)) as fsd650,sum(IIF(zf>=640 and zf<650,1,0)) as fsd640 ;
              from bmkls grou by lqxxdm into table q200fptj
       SELECT q200fptj
       BROWSE    && 观察结果,浏览尚未满意,就重新运算,      
       *---分配统计,观察满意后结束。并组织校长进行抽签

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


只求每天有一丁点儿的进步就可以了
昨天 08:59
my2318
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:14
帖 子:263
专家分:640
注 册:2014-3-18
收藏
得分:0 
以下是引用chychychy在2024-12-11 08:44:12的发言:

看来最准确就是这样,sdta版当年也这样表达过,现在是想请教能否更简单的交给程序去判断

程序解决效率可能更高,但规则变了就要改程序,比较麻烦。如果建表,规则变了,只要修改表就行了,后期维护简单到用户直接改一下表就行了。
昨天 09:58
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1765
专家分:3335
注 册:2012-2-29
收藏
得分:0 
回复 44楼 wengjl
谢谢!学习啦!
昨晚 19:25
my2318
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:14
帖 子:263
专家分:640
注 册:2014-3-18
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


用大家的方法试了试,大概这个结果

[此贴子已经被作者于2024-12-12 03:28编辑过]

1 小时前
快速回复:再次请教学生如何分派
数据加载中...
 
   



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

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