|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 龙行九州 于 2013-7-11 13:55 编辑
分班问题需要正确的要求表述
论坛中涉及到分班的帖子看了不少,都是各种各样的方法。然没有理想的分班方案,适应性很差。所以在此先理出分班的要求,再来分班,以提高通用性和实用性。
总分S分班因为非常容易实现不在本讨论之列。补平平均数法,各科分布不均,老师关注的那部分学生分班不匀成争议焦点。
分班问题要求是非常多的,不可能做到决对公平的。从众多的要求中理出主要地要求进入设计算法,才能编出合理的分班VBA。
因本人不擅长VBA,只是从要求的角度来提出这一问题。请大家再理一理合理的要求后,再出几个版本的好的分班VBA
1、分班结果任课教师最计较的是什么?——是学校如何给教师兑现的。一般地绝大多数都偏重于自己那一科的进优进线人数,其次才是平均数。
我县是方法是:每次联考将全县各校这一年级的分数全部汇总一起,象中考一样划出两档总分招录分数线。按同样的人数对各单科也划出两档招录分数线,同一名学生部分分进了线,总分也进了线,叫双进,好听的词叫这一科同步上了。
至于男生女生、住宿生是否平均,各科教师关心度不高。一般分班相对比较均衡后,男女生人数差别不是非常大的。
理出分数要求,可用多个不同功能的表,一步一步来实现功能,最后分班汇总及报告。甚至设计出通用的分班表,然后手工将学生分段后进入分班中。
科目有:语数外物史地生,没有化学九年级毕业了。所有计算 成绩优先考虑:语数外物 其次短线史地生。
分数划段对难易度影响很大,所以,设置区间分数线下得不是力,各科老师也不太关注。所以下文的分数段是指:尽量把这一步骤中的学生分得均匀些。重点关注的是 :一批线有多少人,二批线(含一批)有多少人,常规及格优生多少人。不同步骤侧重不同的分数线,应该容易实现些。
1、对总分和各科都进一批线的学生 进行分班固定下来。各科各分数段人数尽量分布匀这个可以不考虑最好的学生各科都比较好,当然也可以考虑以兼容第二步的算法予以考虑。不考虑班级平均分问题。
2、将上一步得到的学生班号固定下来不再变化,但分数情况参与接下来的计算。对总分和各科都进二批线的学生 接着上面的分班补充分班。各科各分数段人数尽量分布均匀一点。不考虑班级科平均分问题。考虑第一步分配人数不整齐的补偿问题。
3、上面将一线生,二线生分完了。现在手工再加入认为有上升潜力的学生(算是三线生吧)接着分。现在情况变得复杂了一点,算法实现难度也大多了:
优先要求依次是
分完后,连同原来的已经分班所有学生各科各班的进一线人数大致相等,各班各科进二线(包括进一线)人大致相等,考虑上一步得到的结果各班人数不均的补偿问题。
不考虑各班各科平均成绩。
4、同样的方法手工分出一小部分所谓四线生吧,算法同上一步。手工选择人时要将某一两科比较好进了二线,其它学科都差总分没进线的学生编入进来参与分班。
5、同样的方法手工分出一小部分所谓五线生吧,只要有一科及格就搞进来。算法发生变化:分班后的结果使各班及格人数大致相等,还考虑的是和下一步的算法最好合在一起,结果容易得到一些,也更好一些。
6、全科不及格尾巴学生刹尾,接着继续分班,只一个要求:优先补平各学科的平均分,给总平均分各班差异,认为差异大再重分尾巴学生再看差异(自己要提前备份)。
设计考虑:
为灵活调整,不自动一揽子把各层学生分完给出最后结果,每执行一步后,可手工修改一下结果进入下一步,即人为干预,但干预的前提对基本算法步骤要了解的基础上。为干预得有目的,得一个即时报表,给出各分数段分布情况。
设置表:设置各科及总分数段、一线、二线分数线、及优生数。
学生成绩表:班号列单元格有数字了,就固定下来,不参与下一步的计算。分班号 姓名 纳入上面算法的第几步 总分 各科成绩
报表列表比较分班结果
假期事太多还没安定下来,表还没具体设计。VBA初学,无奈要实现这些功能实现不了。请有这方面要求的同行,先理出抽出正确的要求模型后,才能编出适应性广的分班表来。
相关帖子:
教育应用贴(分班、统计、课表等)1142楼添加运动会成绩统计表20121215
分班问题
随机算法对学生平衡分班,以每科平均分最接近为目标,人数科目班数什么都无限制。。。
http://club.excelhome.net/thread-156834-2-1.html
这些帖子中有些很好的算法,可以在分步中借鉴使用。
补充内容 (2013-9-25 23:46):
请用电梯直达
19楼考虑因素非常多的分班示例,还有分后自动统计各种均衡参数。
26楼修正每班必须10人以上,不能先固定某生在某班
30楼修正固定学生数太多时出错的问题
补充内容 (2013-9-25 23:53):
更正:26、30楼增加 保存恢复VBA分班前的手工分班数据,即恢复VBA运行前的分班列。并非不能固定某生在某班。 |
|