计划与实现 - lijunsong/course-table-genertor GitHub Wiki
目标
本来排课程序需要考虑到
- 课程
- 时间
- 教室
这三个东西。但是我们要做的这个课表是很简单的,因为我们不需要考虑教室。只需要做到排列出某门课在某个时间上就可以了。(不考虑教室是制度的问题,不是技术的问题)
也就是说,我们的输入是
- 课程的信息,包括课程 id,课程名称,课程学分,老师,以及是否已经固定了上课时间。
- 老师是否有特殊要求,比如周一不上课,下午3点之前上完课(要去接孩子)等等
输出就是课表:每个年级一个课程表。
星期一 星期二 ...
8:00-8:50 business Law Chinese ...
9:00-9:50 ... ... ...
相应类
- test.csv 课程信息
- config.py 是老师的特殊要求,这个需要重新写,需要更好的表现形式
- course.py course 类,包含了课程 id, etc.
- coursetable.py 二维数组表示课表
- grade.py 年级类。每个年级有自己的name。每个年级的课程可能刚一开始就已经固定了一部分了,所以现在还分了一个
unallocated_course
和all_courses
来记录这个年级的所有课程 - generator-new.py 这个是主要的入口。目前用简单的搜索算法。因为我们不考虑教室,所以就只需要简单的暴力穷举就好了(顺带剪枝)。摆放课程的时候有一个要求:教室占用数要最少。也就是说,如果我们只有大一和大二的课需要排,如果大一和大二都在周一8点钟上课的话,是占了两个教室的;如果大一的周一8点上到10点,然后大二的学生接着上课,就只占用一个教室。周二周三等等也如此考虑。
web 端
先不考虑吧,先把本地的做出来。web 的到时候用 web.py 来做,同时还可以用 jinja2 做模板。这些可以之后再说。
之后的计划
我想要重新构造整个程序,变简洁,不需要到处拖着各种对象到处传递,需要想想
- 讨论初步的输入输出
- 讨论实现数据结构
- 讨论实现 generator 的算法
- 实现不同文件格式的输出
- 本地测试
- 服务器上测试