[2015-07-14]晨写-关于选课程序


早上5点多醒来,最后的梦是关于一个选课程序的。趁还有点印象,记录点自己的想法。
大学时候的选课程序,感觉很玄,而且用这东西有时候需要靠运气。规则如下

  • 课程时间段不能重叠
  • 每个班的人数有上限
  • 允许选了之后再退
  • 班级内貌似会按照GPA、年级等排序,所以你有选不了的可能
  • 班级人数较少时在会被解散,你需要重新选(悲剧)
  • 部分课程是强制需要选的,比如游泳课

选择系统看似很简单,规则还挺多的,特别是一些特殊规则,触发条件各不相同。接下来是回想和吐槽大学的那个选课系统的时间。

貌似那个选课系统是之前一个学长写的?通信的?后来去西门子了?其实我是来拉仇恨的,为啥不是计算机系,自己系的人不争气啊。
这个系统偶尔会出现刷到别人课表的情况,现在想想就是脏数据,至于怎么脏法,还要看表结构设计。其实就是没怎么弄事务吧?
一个班级在最多50个人现有49人的情况下,2个人同时选结果会如何?这是我大学时候一直思考的一个问题,其实现在想想,乐观锁/悲观锁,套事务都可以,大学这点人数分散到课程的并发量其实没你想得那么大。再不行,改成提交选课申请,内部按照GPA,年级等规则在定时任务中安排,也就避免了这种并发问题,当然选课的模式和感觉就完全不同了。
突然想起了大学时候貌似数学系出了一个选课工具,现在想想,用DLX就可以了嘛,就是课程时间不能重叠。还是计算机系的人不争气,被理论派占了风头,计算机的学霸也没看到写程序多好的。

吐槽完毕。让我现在写个选课程序?我估计是不愿意了,太学生气了,又不是刚毕业的时候。不过想想当时作为计算机系人的傲慢还有固执,之后都不会再有了呢,不管你原来是什么系的,现在都只是程序员一个,就当是怀旧和自嘲吧。