Foxtable(狐表)用户栏目专家坐堂 → [求助]如何对《课表》进行顺序调整?


  共有2165人关注过本帖树形打印复制链接

主题:[求助]如何对《课表》进行顺序调整?

帅哥哟,离线,有人找我吗?
abcdzabcdz
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
[求助]如何对《课表》进行顺序调整?  发帖心情 Post By:2019/4/11 16:56:00 [只看该作者]

说明:主要想法是将现有1天的课表进行顺序调整,尽量将一天的课朝上午或下午集中。就以上午4节下午4节为例,若老师当天的课小于或等于4节,就尽量1个上午或下午上完,若超过4节就只有上下午了。

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:自动调整到半天问题.table

[此贴子已经被作者于2019/4/11 16:58:23编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/11 17:37:00 [只看该作者]

 

思路:先排列4或者4的倍数的人,每次占用1个上午或1个下午;再排3或者3的倍数的人;接着排2和2的倍数的人;最后把1塞进去3剩余的那里,以及2剩余的那里,即可。

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
abcdzabcdz
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2019/4/11 18:36:00 [只看该作者]

帮忙解决一下,甜版主。

 回到顶部
帅哥哟,离线,有人找我吗?
abcdzabcdz
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2019/4/11 18:38:00 [只看该作者]

谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/12 11:18:00 [只看该作者]

请自己手工处理,或者编写代码处理。

 

思路:先排列4或者4的倍数的人,每次占用1个上午或1个下午;再排3或者3的倍数的人;接着排2和2的倍数的人;最后把1塞进去3剩余的那里,以及2剩余的那里,即可


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/12 12:34:00 [只看该作者]

Dim t1 As Table = Tables("一天课时")
Dim t2 As Table = Tables("课表")
t2.DataTable.DataRows.clear
Dim count As Integer = 0
Dim nr As Row
For Each dr As DataRow In t1.DataTable.Select("次数 >= 3", "次数 desc")
    For i As Integer = 1 To dr("次数")
        If count Mod 8 = 0 Then
            nr = t2.addnew
        End If
        nr("班级") = nr.Index + 1
        Dim idx = iif(count \ 4 Mod 2 = 0, Asc("a"), Asc("e")) + (i-1) Mod 4
        nr(chr(idx)) = dr("姓名")
        count += 1
    Next
    count += iif(count Mod 4=0, 0, 4-count Mod 4)
Next

 回到顶部
帅哥哟,离线,有人找我吗?
abcdzabcdz
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2019/4/12 18:09:00 [只看该作者]

甜版理解有误:调整前:《课表》中各班的课已经排定,8节课,每节1位老师,即相应8位老师也确定;调整后:各班上课的老师不能变化,只是让他在不同班级上课次序要发生变化。如“高宁”老师这天一共有3节课,目前排的情况是上午2节下午1节,现需要将高宁老师3节课排在上午或下午完成,若调整到上午1班第1节可不动,4班第2节可不动,4班下午第4节就必须移到上午第3节或第4节。只要将高宁老师当天的集中到半天上完就行,只是原来在哪个班有高宁老师的课,只能在原来班级上课。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107014 积分:544295 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/12 20:34:00 [只看该作者]

看着头晕,搞不定

 回到顶部
帅哥哟,离线,有人找我吗?
abcdzabcdz
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2019/4/13 8:27:00 [只看该作者]

若以《一天课时》中的序号来代替教师姓名,可将调整要求化简为:
条件1、1-52个数字,每个出现的次数如左表所示,合计160次;
条件2、同一列数字不得重复;
条件3、排序问题,数字相同尽量集中。

采用填空法,先把4个课时的填上,再1+7,2+6,。。。。课程太多的放到最后。
初步想法如此,也许网友们有更好的方法。感觉使用编程方式有点难度。

 回到顶部
帅哥哟,离线,有人找我吗?
abcdzabcdz
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2019/4/15 20:57:00 [只看该作者]

9楼能编代码实现吗?

 回到顶部
总数 11 1 2 下一页