以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]自动生成课表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=110359)

--  作者:xl
--  发布时间:2017/12/1 15:11:00
--  [求助]自动生成课表

问题:如何根据《课表》和《学生选课表》的“走班课程”,自动生成学生选课表中的“5节”“ 第6节”“ 第7节”“ 第8节”“ 第9节”数据(即自动生学生课表,填写科目即可)?   谢谢

  

说明:1、“走班课程”列,每位学生都进行了63的结果(即物理、化学、生物、政治、历史、地理),同时对科目进行分层(如物理分为四层:物A、物B、物C、物E;政治分为政治、政E两层)。

2、《课表》中第5节:若某学生选了其中1节就不能选第5节其他课程,因为一个人不可能分身在同一时间去上两个班的课。

3、《课表》中巫礼1老师两节物A课,需将选择物A的学生分成两组,第一组第5节上课,第二组第8节上课;又如李四2老师有3节课,需将选课学生分成三组,第一组第5节上课,第二组第7节上课,第三组第8节上课,其他老师依次类推。各组的人数不可能一致,尽量一致吧。


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:学生课表生成.table



[此贴子已经被作者于2017/12/1 15:14:18编辑过]

--  作者:有点甜
--  发布时间:2017/12/1 17:13:00
--  

参考代码,生成对应的选择给学生,学生根据情况去上课。

 

不然,你要说明分配的逻辑,因为有多种可能符合,你要选择哪种?

 

Dim t1 As Table = Tables("学生选课表")
Dim t2 As DataTable = DataTables("课表")
\'Dim dr As Row = t1.Current
For Each dr As Row In t1.Rows
    For i As Integer = 5 To 9
        dr("第" & i & "节") = Nothing
    Next
    For Each kc As String In dr("走班课程").split("|")
        If kc.EndsWith("E") = False Then
            For Each fdr As DataRow In t2.Select("科目=\'" & kc & "\'")
                If fdr IsNot Nothing Then
                    For i As Integer = 5 To 9
                        If fdr.IsNull("第" & i & "节") = False Then
                            Dim str = dr("第" & i & "节")
                            str &= "," & fdr("第" & i & "节") \'& "(" & fdr("教师") & ")"
                            dr("第" & i & "节")= str.trim(",")
                        End If
                    Next
                End If
            Next
        End If
    Next
Next


--  作者:xl
--  发布时间:2017/12/1 19:56:00
--  
谢谢老师
现增加条件,看能不能大幅减少学生的选择?若能生成惟一科目就理想了。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:学生课表生成.table




--  作者:有点蓝
--  发布时间:2017/12/1 21:19:00
--  
1、“走班课程”列,每位学生都进行了63的结果(即物理、化学、生物、政治、历史、地理),同时对科目进行分层(如物理分为四层:物A、物B、物C、物E;政治分为政治、政E两层)。

不是很理解“走班课程”列的意思,意思是这|分割的6个课程里随便选3个?

所谓的分层是指分班么?物理分为四层就是分为4个班,可以4个老师讲课同时上课?

--  作者:xl
--  发布时间:2017/12/1 21:22:00
--  
“走班课程”是学生选课结果,前三项是学生选择今后参加高考科目,后三科带“E"的是毕业考试科目----即领毕业证需参考科目。

如物理科分层:一般分为物A、物B、物C,这三个分别代表物理成绩好、中、差。物E代表需参加的结业考试,为领毕业证需要的。故上课前三个层次可同时上课,若一个老师教物A又教物B,则他的班级不能同时上课。
[此贴子已经被作者于2017/12/1 21:28:24编辑过]

--  作者:xl
--  发布时间:2017/12/1 21:27:00
--  
6选3有20个组合,如“物政生”、“政史地”、“物化生”、。。。。。,这些是高考考试科目;同时还必须参加毕业考试----即未选科目,如某生选了“政历地”,则物理、化学、生物三科必须参加结业考试。分教学班时,需统计出选“物理”“化学”生物“”政治“”历史“”地理“物E"化E"生E"地E”政E“历E"各科学生人数,然后根据这个人数进行分班,如选物理有131人,则可分2个班;化学300人,则可分6个班。

班分好后,就安排教师上课,如物理可安排一个人上或张三、李四两个人上,化学可安排2个人上,每人上3个班。

安排好老师课表好,就需根据课表和学生选科生成学生上课的课表。

注:上面的“班”实际就是分组。
[此贴子已经被作者于2017/12/1 21:40:22编辑过]

--  作者:xl
--  发布时间:2017/12/1 21:53:00
--  
例物A科130人,大家听1节课,由于教室容量的原因巫礼1老师只能分2次完成,若第5节有68人听课,则剩余的62人则下堂听课,这2组学生听完课,大家才算听完1节课。
[此贴子已经被作者于2017/12/1 21:53:18编辑过]

--  作者:有点蓝
--  发布时间:2017/12/2 10:24:00
--  
试试

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:学生课表生成(1).table



--  作者:xl
--  发布时间:2017/12/2 21:06:00
--  
谢谢有点蓝老师!也再次谢谢有点甜老师!



--  作者:xl
--  发布时间:2017/12/9 9:38:00
--  
遇到一个问题:移动课表课程位置,点击按纽,出现错误提示“已添加了具有相同键的项”

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:学生课表生成(12).table