明天是二十四节气中的雨水,希望能给干燥的春天带来新的生机,抖擞抖擞精神迎接新的一天吧。
上篇文章中,我对我开发的项目做了简单的说明,发现还是有很多小伙伴感兴趣的,那今天呢,我就把这个项目打包一下先半开源一下吧,获取方式在文末。
项目主要的设计思路
本文我先暂时说一下数据库的设计思路,界面功能的设计,下一篇再说下。
一、权限管理部分
这一块就不多说了,用的还是Blog.Core的整体思路,基于复杂策略的授权,核心声明是角色,其他的就是JWT那一套认证逻辑了,用之前的一个UML图吧,思路一致,但是这个图并不是很完整,主要还是角色表、菜单表、接口表、角色用户关系表、角色菜单关系表:
(部分权限表关系图)
这里就不多说权限部分了,说了很多了,可以看我的博客园文章或者视频都行,重点说下功能模块。
二、教务管理部分
在上一篇文章中,我们说到了,教务管理,是指管理的主体,也就是班级,学生老师那一个上下文结构:
首先是学生管理:
正常来说,学生表只需要和班级表多对一就行了,我这里冗余了一下,把年级表的id也加入了进来,虽然如果要调整某个学生所在班级的话,需要把年级id也修改了,但是在查询的时候确实速度不一样的,我的设计原则还是尽量满足查询。这个因人而异,不用过多追究。
其次是课程模块:
这一部分涉及的表稍微多了起来,因为需求是某一个老师可能会带多个班级,当然,肯定是某一个年级下的多个班级,然后也可能以后带多门课程,目前只是一个老师一门课。
其中核心的CCT表,就是班级课程教师关系表,也同样的把年级表冗余了进去。
三、教学管理模块
这一模块就涉及到了成绩管理了,也是最核心的部分
这一部分核心的就是成绩的管理,ExScore是考试成绩表,分别和考试表、学生表、班级课程表、以及冗余的年级表相互关联,最终实现可以查询任一年级下的任意学生的任意一门功课的成绩,当然也为了统计方便,做了班级年级的冗余,例如可以统计某一个班级的某一科目的总分在全年级的排名等等。
四、其他部分
其他的部分有少量的注意点和优化方案,比如
入学年份如何设计?
年级表只是单纯的高一,高二,高三这三个值么?
如何统一每道题的得分分布?
还是有很多值得推敲玩味的地方,我也是研究了半个月才有所领悟,文章说的肯定很少,有机会直播的时候说说,关于直播,还是打算往后推推,目前在家办公,V**太慢,需要先把工作处理完,见谅,这种先把Ids4视频录制了再说吧。
如何获取本项目
目前本项目还暂时没有开源,我害怕会有敏感信息,比如人名或者文件名等等,但是我前几天也处理了一下,应该没有,如果有的话,欢迎向我反馈,谢谢。
一、获取方式
在公众号聊天对话窗口内,直接回复 学生成绩系统 即可收到连接,是这样的:
二、使用过程
如果你是仅仅想用这套框架呢,很简单,直接F5运行项目即可,然后前端Vue项目,先安装依赖npm i,然后运行npm run serve即可,会自动生成简化版的系统框架数据,但是没有任何教学教务的数据
但是如果你想要看看模拟的教学数据呢,可以把.bak文件给还原到Sqlserver数据库中,然后修改后端appsetting.json中的连接字符串:
这都很简单,前提是用过我的Blog.Core项目,然后就可以看到丰富的页面了,是这样的
注意:如果某些页面提示无权限,自己在控制器上处理下就行,比如直接加上:
[AllowAnonymous]
至于代码是如何设计的,我下一篇文章会详细说说。