校园系统如何解决年级变更问题?

土狗
  • 2
新手上路,请多包涵

在做一个校园系统
涉及年级 班级 老师之类的
系统初始化高1-高3 及班级数量
老师带班级
当前年 教师预约班级排课
下一年当前高1 变成高2 了 。。。。

回复
阅读 3k
6 个回答
土狗
  • 2
新手上路,请多包涵
✓ 已被采纳

已解决 方案为
新学期时把历史数据归档 清空这些需要归档的表
重新初始化编辑班级归属关系等等...
系统只为本学期服务 做成类似容器的概念
以前的数据全部抛出去

两个思路:

1. 每个班级记录其当前年级,当发生某些事件(毕业,学年结束)等时对所有正常的班级加1.
2. 记录班级的创建时间,当前是高几可以使用创建时间和当前时间算出来.
利维坦少女
  • 3.4k

做过相似的产品,不过是针对小学的。当时的思路:

  1. 数据库中所有班级带 年级属性(以下均已高中为例,属性值只有 1、2、3、4 四种),和 入学年份 (只包含年)
  2. 每年8月15日,系统自动给所有班级的年级属性+1,高三的值变成4,值已经是4的保持不动。(选择8月15日是因为此时间当地学校校职工会返校进行新生入学等工作。高考/暑假后,正式开学前。当时设计成写死在底层配置文件中,不允许用户修改,以防止学校的人反复修改此值导致班级连续升级。用户有要求时,前方实施人员可以修改此配置文件,但不允许用户修改。小学的很简单,高中的会比较复杂,因为有补课情况。)
  3. 此时没有任何一个班的年级属性为1,有一堆班级年级属性为4的。人工要求学校的人手动添加新入学的学生和班级,并人工处理已毕业的学生和班级(就是年级值变成4的,各校规章不一定,是删是留由学校决定)
  4. 入学年份 只作为一个筛选排列用的值,不用于硬性操作。(这个值几乎没有用,只是为了应对部分学校不删除毕业班级而出现特别多年级属性为4的无用数据)

之所以和其他答案都不一样,不以 入学年份 而是以 年级属性。是因为如果使用入学年份作为主要数据的话,你的所有需要判断年级的功能都要用入学年份计算为年级数据,而入学年份这个原始属性反而除了筛选之外,其他场景下屁用没有。
如果是上云的多校园系统,学生数量就不止两万了。如果引入 redis 等缓存的话,也一定要保存年级,而不是入学年份。

为什么要年级? 入学年份足以。 学校系统人才几万,随便怎么筛选速度都快。

可能按照入学年来存储,同时做年纪的关联表,关联表每年自动或手动更新也可。

高中那得考虑留级了,靠入学年份算不靠谱的,那就得硬写代码去修改年级属性

宣传栏