设计文档
接口规约
详细请参见API接口定义
数据库
课程表
列 | 类型 |
---|---|
课程id | int |
课名 | string |
院系id | int |
学分 | float |
学时 | int |
课头表
列 | 类型 |
---|---|
课头id | int |
授课教师id | int |
时间 | string |
地点 | string |
课程id | int |
开课学期 | int |
容量 | int |
余量 | int |
用户表
列 | 类型 |
---|---|
用户id | int |
姓名 | stirng |
院系id | int |
角色 | int |
入职/学年份 | int |
密码 | string |
选课表
列 | 类型 |
---|---|
课头id | int |
学生id | int |
成绩 | int |
院系
列 | 类型 |
---|---|
院系id | int |
院系名称 | string |
前端设计概要
下面分用户角色简要说明一下前端需要考虑的页面及大致的逻辑、细节。
此外,用户访问需要用户权限的页面之前均需要先登录,否则无法访问。
当用户未登录时访问其他页面,会被自动导航到登录页面提示用户登录,待登录完成自动跳转至登录前的页面。
用户
这些页面主要完成与所有用户都有关系的功能。
登录/注册
用户可在登录页面登录或注册。目前考虑将两个功能结合到一个页面,但是放到不同的Tab里。
当用户登录成功之后,如果用户是从别的页面跳转至登录页面的,则会被导航至跳转前的页面;否则会被导航至首页。
首页
用户在首页可以快速预览个人信息,以及当前学期的课程表——对于学生来说,是学生所需要上课的表;对于教师来说,是教师所教授的课程的表;对于管理员来说,此项功能暂时无用。
个人信息页
用户可以在个人信息页面查看自己的个人信息,并可以对密码进行修改。
学生
这些页面主要关注仅针对学生的功能。
选课
学生可以在选课页面查看当前学期可以选择的课程以及它们的详细信息——比如,课程名、学分、学时、授课教师、授课时间、授课地点、容量、余量等等。并且还可以根据课程的信息来对可选课程进行条件筛选,比如查询“计算机网络”课程,查询由计算机学院开办的课程等等,这些条件可以混合查询。
查询已选课程
用户可以根据自己需要查询已选的课程,这些课程可以是当前学期的,也可以是过去的学期的,同时可以查询选过的所有课程,并展示这些课程的详细信息以及获得的成绩。
成绩
用户可以在成绩页面查看自己的成绩,并可以计算GPA。
教师
这些页面主要关注与教师相关的功能。
所授课程
教师可以在所授课程页面查看自己所授课程的详细信息,包括课程名、学分、学时、授课教师、授课时间、授课地点、容量、余量等等。
此外,教师还可以:
- 详细查看该课程包含的所有学生的信息,包括学号、姓名、性别、年龄、学院、专业等等。
- 可以对该门课程的学生登记成绩,但是会受时间限制。
管理员
用户管理
管理员可以在用户管理页面对用户进行管理:
- 查询用户:可根据用户名字、学号、学院等信息筛选用户。
- 增加用户:可以增加新的用户,指定其角色以及详细信息。
- 修改用户信息:可以调整用户的部分信息,如所在学院等等。
- 删除用户:可以删除用户,但是实际上该用户只会被标记为移除状态,还是会保留其信息。
学院管理
- 查询学院:可根据学院名称等信息筛选学院。
- 增加学院:可以增加新的学院。
课程管理
- 查询课程:可根据课程名称、学分、学时、授课教师、授课时间、授课地点、容量、余量等信息筛选课程。
- 新增课程:可以增加新的课程,并指定其名称、开课学院、学分等信息,
课程
代表了某一门课程的公共信息。 - 新增课头:可以对已有课程增加课头,它是一门
课程
的具体实例,还包括了一些额外的信息,如开课时间、地点、所属学期、授课教师等。 - 强制选课、撤课:可以对指定课头,强制导入学生(强制选课),或强制将学生从课头移除(强制撤课)。