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