需求分析
一般情况下,需求分析在整个软件开发过程中占的比例大约在70%左右,而代码编写则只占了30%左右,由此可见在开发项目之前,需求分析是十分重要且复杂的工作。对于高校排课系统,我们主要是要理清系统实体间的关系,排课业务的需求等。
1 排课需求分析
1.1 排课流程
对于普通高校的排序业务流程大致如下:
1.学期前安排并确定各个专业和班级
2.管理员为每个班级根据学校资源进行排课
3.排课结果公示
4.学期按照课表进行授课
系统设计的关键在于如何分配教学资源,做到合理科学。特别是多条件下课表的安排以及学生,教室,教师等资源的调度是本系统设计的重点。
排课流程图
1.2 排课原则
对于不同场景下,排课规则一般不同,本系统模拟这样一个场景:
1.每次排课只排一周的课时,但是所有班级和专业都要进行排课。
2.有两种类型的课程,必修课和选修课,通常情况下,必修课在白天授课,选修课一般安排在晚上。
3.一天按照11节课时进行排课,但要注意的是通常一节课占用两个课时段。
4.一名教师可以带相关专业的至多三门专业课程。
5.同一班级同一课程一周中不同时段的授课老师应保持一致。
6.每次排课的时间应该在10s之内。
注意:对于该场景我们应设置一些前置条件,如下。
1.学校的教学资源,如教师,教室,班级等信息应该提前确定并且应该保证满足学校招生的需求。
2.对于教师,教室,班级等信息,通过有差别的编码形式进行定义,方便程序处理。
2 管理员端业务需求分析
2.1 教师管理
教师模块应该包含对教师的新增,删除,更新信息,查询等操作。
删除老师:当老师还有课要上,则不能删除。如果老师没有课程要上的话,则要先将老师与课程的关联解除,然后再删除该老师的信息。
新增老师:同样如果新增一名老师也需要与相关课程进行关联(不超过三个)
更新老师:更新老师信息时,规定只更新非关联信息。
查询老师:根据老师相关信息进行查询,注意管理员可以查看每个老师的详细信息。
2.2 教室管理
教室管理包括:教室的新增,更新信息,删除,查询等功能。
注意:教室可能会与排课信息关联,因此对于教室的删除操作时要注意其关联信息的处理。例如:教室如果还有课要上,则不能删除。
2.3 学生管理
学生管理相对于系统相对独立,在排课过程中属于前置条件,对系统核心设计影响不大,但是学生作为一个实体,与系统其他实体有个众多关联,因此管理员对其进行操作时,要注意关联信息的处理,具体操作如下:
添加学生:添加一个学生,并分配该学生的班级。
删除学生:删除一个学生,但注意,学生与班级有关联,因此还要在学生所在的班级中将学生信息删除。
更新学生:更新学生非关联信息时,直接修改即可,但是当修改学生的班级信息时,要注意将学生信息从原班级删除,并在新班级中添加该学生信息。
查找学生:管理员可以根据学生的相关信息进行查询,并且可以查看学生的详细信息。
2.4 管理员管理
对于超级管理员,他对于普通管理员具有管理权限,而普通管理员无对管理员进行管理的权限,超级管理员的权限包括:
限制管理员:限制普通管理员的系统操作权限。
更新管理员:更新普通管理员信息。
查看管理员:查看普通管理员信息。
2.5 排课管理
该模块是排课系统的核心,管理员对该模块有如下操作:
查看所有已排课班级
查看已排课班级的排课详细信息,班级详细信息
修改排课班级非关联信息,如名称
删除排课班级,注意班级的排课信息与排课老师,排课教室,排课班级都有关联,因此删除排课的班级,需要解除该课表与关联班级,教室,老师的关联
重新排课,如果对当前班级的排课效果不满意,可以重新排课,直至满意为止。
2.6 班级管理
管理员可以对班级进行如下管理:
新增班级:新增一个班级信息,注意新增班级的时候同时必须要指明该班级所需上的课程
查询班级:根据班级信息查询班级,以及班级的详细信息。
删除班级:删除一个班级,注意如果该班级还有课程或还有学生则无法删除。
更新班级:更新班级的非关联信息,如名称等
3 学生端业务需求分析
3.1 查看并修改个人信息
学生可以通过账号密码登录系统,查看个人信息,并可以对登录密码进行修改。
3.2 查看课表信息
学生正确登录后可以查看个人的课表信息。
4 教师端业务需求分析
4.1 查看并修改个人信息
教师可以通过账号密码登录系统,查看个人信息,并可以对登录密码进行修改。
4.2 查看课表信息
教师正确登录后可以查看个人的课表信息。
5 数据库设计
系统的数据库设计,尤其是系统实体间的关联关系十分重要,他是我们对业务分析之后得出的一个实例结论,是我们进行代码开发前的最后一步,它直接反映着系统的业务需求,因此,数据库的设计的完成可以说是完成了一半的系统设计。
5.1 ER图
以排课实体为中心,排课实体对象关联了老师实体,教室实体,班级实体,班级实体与学生实体关联。
系统ER图
5.2实体属性表
Admin
Field Type Comment
id varchar(100) NOT NULL key
NAME varchar(100) NULL
PASSWORD varchar(100) NULL
sex varchar(10) NULL
Classroom
Field Type Comment
id varchar(100) NOT NULL key
NAME varchar(100) NULL
state varchar(10) NULL
Classroom_time
Field Type Comment
id varchar(100) NOT NULL key
classroom_id varchar(100) NULL
time_num int(11) NULL
state int(11) NULL
Major
Field Type Comment
id varchar(100) NOT NULL key
NAME varchar(100) NULL
state varchar(10) NULL
Major_subject
Field Type Comment
id varchar(100) NOT NULL key
major_id varchar(100) NULL
subject_id varchar(100) NULL
Paike
Field Type Comment
id varchar(100) NOT NULL key
major_id varchar(100) NULL
subject_id varchar(100) NULL
classroom_id varchar(100) NULL
teacher_id varchar(100) NULL
time_num int(11) NULL
Student
Field Type Comment
id varchar(100) NOT NULL key
NAME varchar(100) NULL
PASSWORD varchar(100) NULL
sex varchar(10) NULL
age int(11) NULL
state varchar(20) NULL
Student_major
Field Type Comment
id varchar(100) NOT NULL key
student_id varchar(100) NULL
major_id varchar(100) NULL
Subject
Field Type Comment
id varchar(100) NOT NULL key
name varchar(100) NULL
type varchar(10) NULL