| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2237 人关注过本帖
标题:教务工作
取消只看楼主 加入收藏
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:682
专家分:1299
注 册:2009-3-1
收藏
得分:0 
我是8.0的,用你的代码试试,第一个试场是空的

看来是有点难的……

[ 本帖最后由 xs591222 于 2014-7-30 17:05 编辑 ]
2014-07-30 16:49
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:682
专家分:1299
注 册:2009-3-1
收藏
得分:0 
以下是引用taifu945在2014-8-1 10:25:39的发言:

刚刚旅游回来,看到这个题目,感觉不是很复杂。待我把照片弄完,给楼主写个参考代码。


热烈地期待中……
2014-08-01 18:44
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:682
专家分:1299
注 册:2009-3-1
收藏
得分:0 
以下是引用taifu945在2014-8-2 21:47:35的发言:

    楼主,终于弄出来了。一开始看题目的时候感觉不是很复杂,但实际做的时候发现比想象的要复杂一点。复杂之处在于每个监考教师可监考的次数不同。这种题目只有两种解法:以考场去找老师;以老师去找教室。
    刚开始时我用了第一种解法,也就是全随机地以考场去找老师,找老师的条件是两个:1、该老师还有监考次数;2、该老师没有安排过当前课程的监考。但运行了几次后发现了问题:最后几个考场总是找不到老师。这是因为可监考次数少的老师前面被随机分配掉了,已没有监考次数;监考次数够的老师却在前面已经安排过该门课程的监考。用这种方法解题应该还有以下条件:1、所有老师的可监考次数相加应大于或等于监考位置总数(这个条件题目是满足的);2、所有老师的可监考数完全相等(这个条件题目没满足)。
    然后,我换了第二种解法:以老师去找教室。这就是半随机了,因为其中掺杂了人工干预。思路大致是:把监考老师按照可监考次数的不同分开,存放在不同数组里。先安排可监考4次的老师:每门课程各安排一次,但是每门课程安排在哪个考场,以及安排在该考场的甲位还是乙位,就由程序随机安排;可监考3次的老师:随机抽取其中三门课程安排监考;可监考2次的老师:随机抽取其中两门课程安排监考;只监考1次的老师:在安排完上述三种老师以后,以循环方式填充到剩下的各个监考空位里。在安排可监考3次和可监考2次老师的过程中有一些细节要注意:1、四取三和四取二有很多种组合,应该全部考虑到;2、判断系统随机分配的甲位或乙位是否有用完,如有,则应换到同一考场的另一个位置。比如:系统随机安排了某老师在Jk3y监考位,但所有考场的Jk3y监考位都用完了,那么系统应该将其安排到Jk3j监考位中。这两个位置都是对第三门课程的监考,换一下不会对最后结果产生影响。3、若某门课程的所有考场甲乙监考位(共20个)都已用完,则不应再让程序能随机取到该分配方案。这种情况可能会在安排可监考次数为2的老师中出现。
附上运行结果截图:

我没有对运行结果中的老师进行具体的对位检查,看其安排的次数是否符合Jsxx中的监考场数,楼主可自己检测一下。另外,你给出的数据中,可监考次数为4、3、2、1的老师刚好各8名。我写的代码考虑到了允许这四种老师人数不等,甚至有些监考次数的老师不存在这些情况,但没有具体测试过。你可以变换一下数据,测试一下。
附上程序代码(包括全随机和半随机两种):

程序代码中有很详细的注释语句,若有疑问,可跟帖继续讨论。


taifu945您好:您辛苦了!非常感谢!我先下来慢慢学习,我基础薄弱,看不懂的地方我先研究再提问……

数组对我来说是一大难关,表中的内容是看得见的,可理解;数组中的内容看不见,无法感性理解,是我自学的一个难关。有时用了数组也是只会简单的模仿一下,也理解不了是什么样的因故关系

[ 本帖最后由 xs591222 于 2014-8-3 09:45 编辑 ]
2014-08-03 09:27
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:682
专家分:1299
注 册:2009-3-1
收藏
得分:0 
2、所有老师的可监考数完全相等(这个条件题目没满足)

可以把3+1、2+2、2+1+1凑成一个教师来处理就满足了。————不知这样是否可以

若可以,就按所有老师的可监考数完全相等来排。排完后,再把他们拆分开来……

这是我的呆想哦
2014-08-03 09:41
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:682
专家分:1299
注 册:2009-3-1
收藏
得分:0 
当考试科目数增加时,复杂性就增加了(初中最多6科、高中最多有9科)
2014-08-03 09:43
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:682
专家分:1299
注 册:2009-3-1
收藏
得分:0 
谢谢啦!
2014-08-03 10:17
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:682
专家分:1299
注 册:2009-3-1
收藏
得分:0 
手工在Excel中排监考,就是弄好这样一张表,然后教师姓名一个一个填进去,到最后没矛盾了就可以了。

想不出如何更好地构建表结构啊……


手工排时,先排有特殊要求的老师,如某个教师来说:“我只有第一场考试有时间,后面的时间段家中有事要请假”,那就给他第一个填入第一场考试的某个试场中(或甲或乙)。还有的是考虑任课教师不监考自己任教学科之类的等等……
如果考虑这些类问题就更难了……看来程序就不容易解决了……就像我用过的“自明排课系统”,只能完成80-85%左右的排课任务,最后靠人工调剂来完成。

自明排课——我感觉调课的功能较好,我是数据库每周复制一个,因为教师有外出的、有事的、……等,作为教务员就得给他们调课了,不用软件手工调课免不了出现教室无人上课或二个教师同时到教室的现象。哎,调课是教务员日常的一项麻烦事,而且工作量不小

[ 本帖最后由 xs591222 于 2014-8-3 11:51 编辑 ]
2014-08-03 11:49
快速回复:教务工作
数据加载中...
 
   



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

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