心
心动痕迹
Unregistered / Unconfirmed
GUEST, unregistred user!
要求: 现在要做这样的一个选课系统,
总共有三个志愿可以报,
每个志愿可以报而且必须报两门课程,
即总共报六门课,可最终能修读的只有两门课,
这两门课程可以是任何一个志愿内的,
如第一志愿一门,第二志愿一门。
必须要先选完课才可以进行排课,
所以当学生进行选课后不是立即获知结果,
等待处理后,才能的到结果。
注册,登录,选课的功能都实现了,
是采用了以下的库结构,
三个表来装载这三个志愿的人。
即第一志愿的表装的是全部是报第一志愿的学生,
第一志愿的表 第二志愿的表 第三志愿的表
学号 课程 学号 课程 学号 课程
9801 B001 9801 B003 9801 B005
9801 B002 9801 B004 9801 B006
9802 B001 9802 B005 9802 B003
9802 B002 9802 B006 9802 B004
9803 B003 9803 B005 9803 B001
9803 B004 9803 B006 9803 B002
9804 B005 9804 B003 9804 B001
9804 B006 9804 B002 9804 B002
' ' ' ' ' '
' ' ' ' ' '
' ' ' ' ' '
还有一个课程班表
课程 教师 地点 时间 限定人数 第一志愿已报人数 第二志愿已报人数 第三志愿已报人数
BOO1 A001 AA BB 10 4 4 5
BOO2 A002 DD UU 15 3 3 4
BOO3 A003 EE WW 14 5 3 7
BOO4 A004 FF HH 12 13 2 4
B005 A005 QQ II 15 10 10 2
B006 A006 PP KK 12 2 3 3
最后是一个排课表
学号 课程1 课程2
(该表的内容是要等待排课的时候即时进入更新的)
以上的数据都是学生们已经选完课后所获得的,
呵呵,都是小弟虚拟的,可能会有不合理之处,
现在要排课功能的实现,因为这个时候学生们已经选完课了,
于是必须进行排课,对于限定人数比报名人数大的采用随机数
进行筛选,排课的时候必须做到公平。
最后如果某些学生最终没能实现读两门课的话,用手工进行排课。
以下是小第的想法:
遍历课程班里的课程,
比如B001课程,只能限定10人,于是对限定人数和已报的人数进行比较,
志愿当然是优先考虑的。
于是第一志愿库里的的学生可以全部进入,
第二志愿库的学生也可以,但是第三志愿库的学生只能有2位可以,
用随机数筛选,剩下的3位要落选。
不晓的这样做是否符合了公平的原则,因为这样坐做的话,那某些学生很肯能是
他的第三志愿可以被选中,但是第一志愿却不能选中。
但还必须考虑一个是否有资格的问题,
就是假如某名学生已经可以获的了选修两们课程,
那他就没有资格再参加下一门课程的排课了,
那他的余下志愿所选修的课程都是无效的,
即使他余下志愿所选的课程有空余的名额,他也没有资格进行。
现在小第在排课这里非常困惑,并且做出来的程序根本无法实现自己所想的功能,
希望各位高手可以帮帮忙,如果能帮忙写出代码的话,那就更加感谢了。
其实上述的库结构如果大家觉得不合理的,也可以进行修改,只要能实现
选课的公平功能就行了。
总共有三个志愿可以报,
每个志愿可以报而且必须报两门课程,
即总共报六门课,可最终能修读的只有两门课,
这两门课程可以是任何一个志愿内的,
如第一志愿一门,第二志愿一门。
必须要先选完课才可以进行排课,
所以当学生进行选课后不是立即获知结果,
等待处理后,才能的到结果。
注册,登录,选课的功能都实现了,
是采用了以下的库结构,
三个表来装载这三个志愿的人。
即第一志愿的表装的是全部是报第一志愿的学生,
第一志愿的表 第二志愿的表 第三志愿的表
学号 课程 学号 课程 学号 课程
9801 B001 9801 B003 9801 B005
9801 B002 9801 B004 9801 B006
9802 B001 9802 B005 9802 B003
9802 B002 9802 B006 9802 B004
9803 B003 9803 B005 9803 B001
9803 B004 9803 B006 9803 B002
9804 B005 9804 B003 9804 B001
9804 B006 9804 B002 9804 B002
' ' ' ' ' '
' ' ' ' ' '
' ' ' ' ' '
还有一个课程班表
课程 教师 地点 时间 限定人数 第一志愿已报人数 第二志愿已报人数 第三志愿已报人数
BOO1 A001 AA BB 10 4 4 5
BOO2 A002 DD UU 15 3 3 4
BOO3 A003 EE WW 14 5 3 7
BOO4 A004 FF HH 12 13 2 4
B005 A005 QQ II 15 10 10 2
B006 A006 PP KK 12 2 3 3
最后是一个排课表
学号 课程1 课程2
(该表的内容是要等待排课的时候即时进入更新的)
以上的数据都是学生们已经选完课后所获得的,
呵呵,都是小弟虚拟的,可能会有不合理之处,
现在要排课功能的实现,因为这个时候学生们已经选完课了,
于是必须进行排课,对于限定人数比报名人数大的采用随机数
进行筛选,排课的时候必须做到公平。
最后如果某些学生最终没能实现读两门课的话,用手工进行排课。
以下是小第的想法:
遍历课程班里的课程,
比如B001课程,只能限定10人,于是对限定人数和已报的人数进行比较,
志愿当然是优先考虑的。
于是第一志愿库里的的学生可以全部进入,
第二志愿库的学生也可以,但是第三志愿库的学生只能有2位可以,
用随机数筛选,剩下的3位要落选。
不晓的这样做是否符合了公平的原则,因为这样坐做的话,那某些学生很肯能是
他的第三志愿可以被选中,但是第一志愿却不能选中。
但还必须考虑一个是否有资格的问题,
就是假如某名学生已经可以获的了选修两们课程,
那他就没有资格再参加下一门课程的排课了,
那他的余下志愿所选修的课程都是无效的,
即使他余下志愿所选的课程有空余的名额,他也没有资格进行。
现在小第在排课这里非常困惑,并且做出来的程序根本无法实现自己所想的功能,
希望各位高手可以帮帮忙,如果能帮忙写出代码的话,那就更加感谢了。
其实上述的库结构如果大家觉得不合理的,也可以进行修改,只要能实现
选课的公平功能就行了。