用户:
登录:
不能重复登录。
在服务端使用一个hashset记录用户的登录状态,如果用户id不在集合里面,就可以登录,登录时将用户id添加到集合中。用户下线时,将set中的元素删除。
登录成功后,服务端new一个线程 ,处理这个用户的业务。
注册:
已注册过的邮箱,不可使用
邮箱验证码注册,验证码应具有时效性。
在服务端使用一个hashmap,用户id作为key,正确的验证码对象作为value。用户申请注册时,向服务端发送id和验证码对象。对比即可。验证码对象有两个字段,一个是字符串码,一个是时间。
忘记密码&修改密码
获取邮箱验证码,验证码有效即可更改密码
学号/工号
由服务端生成,具有唯一性
生日
DatePicker,并设置上限
课程与班级的理解
课程是一个集合,它包含了这个课程下的不同班级。
老师建立一个课程之后,要在这个课程中创建班级,签到、作业都是以课程中的班级为基本单位进行的。
在关系型数据库,课程与班级是一对多的关系。
教师
创建课程
老师设置课程名,添加进数据库。在数据库中课程有唯一id主键,课程名,老师id三个字段。老师那边的listview只显示课程名,点击某个课程,进入一个界面,进行具体的互动。
创建班级
设置班级名,创建时,得到一个唯一的邀请码。在数据库中,班级表应该添加外键关联到课程。
(邀请码应是一个具有时效性的唯一数,雪花算法)
签到功能
- 发布签到任务时,班级成员应收到消息
- 用hashmap,学生作为键,签到状态作为值
- 班级成员签到时,改变hashmap中对应的值即可
- 生成签到表,则可以去获取hashmap中所有的键值对
选人功能
先获取班级人数,然后获取一个随机数,用班级人数对这个随机数取模,据此选人
学生那边也应可以查看到选到的人
发布资料
发布到课程,所有班级均可访问
通过FileChooser 对话框,实现文件选择框。在数据库中保存文件地址,课程和文件的关系是一对多。
添加学生
老师可以通过学生的唯一标识,将学生导入到某个班级中,在数据库中间表中添加记录
删除学生
删除某个班中的某个学生,删除班级学生中间表中的那条记录即可。
注销课程
注销课程时,数据库中的班级也会被删除,数据库中,关联到课程表(父表)的班级表(子表)外键添加cascade 级联
删除班级
删除班级时,班级学生中间表中的对应记录也会被自动删除。
#课程与班级 级联 ,班级,学生和他们的中间表也是级联,父表记录删除,子表也删除记录
发布作业
选择某个课程中的班级,发布作业。
学生可以收到提醒
可设置作业的发布时间和截止日期
作业的一些属性可以随时被老师修改,也可以删除作业
批改作业
老师可以看到作业的完成情况,已完成和未完成
点击某个同学的作业,可以进行批改、打回
学生添加课程的理解
实际上就是加入由老师创建的某个课程中的某个班级。通过老师课程中的某个班级的邀请码,加入其中。可以说在学生看来,课程实际上就是班级。
在数据库中,学生和班级是多对多的关系。
学生
加入课程
实则加入班级,通过邀请码,可以在数据库中查询到班级的id,将学生id和班级id作为一条记录,加入到中间表
退出课程
删除中间表里的某条记录
下载资料
通过班级,得到查询到课程,通过课程去查询文件。服务端将文件传给客户端
写作业
学生可以知道作业的时间。以文件的形式上传作业。一个作业就是一个文件
班级任务
有签到和选人