作者:GZNU_DING杰 | 来源:互联网 | 2023-06-30 16:13
为一位老师按排上课时间,教师可选的上课时间是:周一到周五可以上课,每天有1到10节课可选,上午5节,下午5节,一门课可以连续上2节或3节,但不能分在上下午去上。一个星期1门课可上1次或上2次。
为一位老师按排上课时间,
教师可选的上课时间是:周一到周五可以上课,每天有1到10节课可选,上午5节,下午5节,一门课可以连续上2节或3节,但不能分在上下午去上。一个星期1门课可上1次或上2次。
现在要保证一位老师在一个星期内上课不能产生冲突,该老师上课的课程一个星期上几次和一次上几节课都是已知的。
现在就想问一下:
针对这样的问题我怎么来设计表,设计完后怎么通过存储过程来给教师按排时间。
我的思路是:有一张教师_时间表(教师号,星期数,起始节数,总节数)记录教师已被安排过的时间。先找符合课程需要的时间,如果有多种选择,以星期前,时间早的优先选,如果发现找到的这个时间在教师_时间表上有冲突,那么就选择下一个优先级的时间段,直到与教师时间不产生冲突。
关键现在我不会用存储过程来写,写不出这种找时间的算法。
哪位大侠给个思路吧!
15 个解决方案
可能用別的語言,比如C來實現更恰當容易一點
考慮建立樹模型,採用遍歷樹的方法.
只用store procedure來實現,比較難:(
等待高手來解決......
为什么要放在存储过程中实现业务逻辑。
数据库不擅长这方面。
我也觉得playwarcraft() ( ) 信誉:100说的对,不过,可以用树型处理尝试下
为什么非要在存储过程实现?
这个东西使用高级语言应该好做一些,但是你也只能够最出尽量好的程序。排课这个东东就没见过完美的东西!
所谓的时间冲突是怎么回事? 比如一个现在已知的是老师上课的课程一个星期上几次和一次上几节课, 我把这个教师的课程排到1天之内行吗? 比如对一个班:
王老师(一周上3次, 一次上2节)
周老师(一周上4次, 一次上3节)
李老师(一周上3次, 一次上2节)
________________________________
那么我可以这样排:
周一: 1 2 节 王老师
3 4 节 王老师
5 6 节 王老师
7 8 9 节 周老师
10 节 空(假设只有这3位老师)
周二 1 2 3 周老师
4 5 6 周老师
7 8 9 周老师
10 空
周三 1 2 李老师
...
___________________________________
这样就显然不行啊! 你应该叙述一下间隔的要求, 比如一位老师一天在一个班上几次课, 我觉得你还有信息没叙述完整.
自己想到办法解决了,很长的存储过程~~~~~~~~~~~~
不要以为SQL的存储过程可以把所有问题解决,如果是这样,还要编程工具做什么
复杂的业务还是需要编程工具来完成的
复杂的业务要在界面分解开,然后分别处理,才能提高性能。
我也知道不能都在存储过程中来完成,谢谢楼上二位,但现在的实际是要求这样来做。