当前位置: 首页 > article >正文

5.9-5.10学习总结

项目分析:

1.用户共有的:

登录,注册,忘记密码,个人资料,修改密码

个人资料:包括生日(日期栏选择),手机号,邮箱,学号,姓名

登录需要实现:一个账号只能登录一次,可以通过发送

项目分析(老师端)

老师端:

大致功能点:

  1. 课程
  2. 课堂活动(基于我教的课实现)
  3. 作业(基于我教的课实现)
  4. 发布资料(基于我教的课实现)

(1)查看课程

  • 课程新设界面:可查看该老师已有班级
  • 课程可以通过点击进入,实现发布课堂活动,作业,资料功能
  • 老师可以查看课程已有学生
  • 老师可以删除课程学生

(2)创建课程

  • 老师设置课程名(根据不同的专业,年级)
  • 随机生成一个邀请码,返回给老师界面
  • 老师可查看课程申请加入通知,有同意和拒绝的权利,通过邀请码的可以直接添加

(3)删除课程

  • 老师拥有删除课程的权利

课程管理功能:

(1)课程可点击,点击之后开启新页面

  • 显示专业+年级+课程名称
  • 课堂活动
  • 发布作业
  • 发布资料

⑵课堂活动:

①课堂签到:

  • 老师设置签到的截止时间,可设置小时,分钟,秒数。
  • 签到发布成功后开始计时,并且随机生成签到码,同时可让老师选择签到码是否在一定时间内改变的选项
  • 设置五分钟间隔时间,五分钟过后可重新发布课堂签到,如果同一个课程已有一个正在执行的签到,上一个签到设置自动废止。(不同课程之间互不影响)
  • 老师界面设置签到,未签到同学的查看,在未签页面为同学设置补签按钮,设置补签选择框,选择未签同学的名字帮同学补签

②课堂随机选人

  • 获得这个班级所有的成员id后放进一个集合,获得集合的数量,然后根据random函数从0-n随机生成一个下标,去集合中返回对应的学生
  • 避免多次随机选人,设置按钮可见或不可见,只有当上一次随机选人完成之后才能执行下一次随机选人。(不同课程之间互不影响)

(3)作业:

①发布作业

  • 设计班级菜单栏,添加对应的班级选项
  • 老师设置作业的标题,作业内容(目前只实现主观题,可以发布文字,图片或者是文件的方式代替),截止日期
  • 设置作业发布视图,老师可查看已经发布的作业,并且可以删除已发布的作业或者延长时间

②批改作业

  • 设计班级菜单栏,添加对应的班级选项
  • 老师可以查看已完成同学和未完成的同学
  • 老师可在已完成同学的界面点开同学,查看已完成同学具体的作业详情,并且实现打分和老师批语

(4)发布资料

  • 设计班级菜单栏,添加对应的班级选项
  • 老师选择需要上传的资料,以文件的形式发布到班级中

项目分析(学生端)

学生端:

大致功能点:

  1. 加入课程
  2. 课堂活动(基于我学的课实现)
  3. 完成作业(基于我学的课实现)
  4. 下载资料(基于我学的课实现)

(1)加入课程

  • 输入课程邀请码,不需要经过老师的同意
  • 通过选择专业,年级,输入课程名之后查找课程名称加入(需要经过老师的同意)

我学的课:

(1)课程可点击,点击之后开启新页面

  • 显示老师:这门课程
  • 课堂活动
  • 作业
  • 下载资料

⑵课堂活动:

①课堂签到:

  • 显示课堂签到活动的截止时间和倒计时,签到必须输入正确的签到码
  • 签到截止前显示:签到成功   截止后签到自动显示:未签到
  • 签到之后,设置该按钮禁用,直到班级老师重新发布签到

②课堂随机选人

  • 查看界面:显示该同学的名字和头像

③课堂问题抢答

  • 显示课堂抢答的标题,内容
  • 设置一个抢答的按钮,设置抢答禁用按钮,未发布或者已完成抢答禁用按钮

(3)作业:

①查看作业

  • 设置消息栏,不同的课程给不同的作业通知和作业查看,根据点击作业查看具体内容
  • 截止时间已过,如果老师已批改,可查看对应的分数

②完成作业

  • 显示课程的作业内容,截止时间
  • 给出一个文本输入框和功能框,功能框中含有图片和附件,完成作业可以文本输入,图片,或者文件上传
  • 在截止时间之前可以修改答案

(4)下载资料

  • 预览界面:可以显示该资料的具体内容
  • 下载按钮,将文件下载到本地

首先是重新优化了项目分析和ER图

项目进展:

已经是实现了个人修改资料,在资料里面修改密码,老师创建课程,学生添加课程,老师删除课程,退出系统关闭socket,结束进程。

还有就是通过ListView会将在页面初始化的时候将老师和学生已有的课程显示出来,

就是还没实现双击点击进入课程。

还有一个最大的问题,上面所有发请求 都是基于短连接,而不是基于长连接。这个是很大的一个问题,由于登录之后开启的是长连接,上面的功能点应该都是基于长连接实现而不是短连接。但是长连接我目前写的有一点不对,服务端应该要重新在写一个新线程来跟客户端通信。所以这几天先把长连接做好再继续进行下面的项目。

学习:JavaFX日历组件的使用:

这个我用在了个人资料的生日的获取,有一个很重要的点就是,日历能加载的时间不能过于离谱,所以学习了日历限制:

/**
     * 限制 DatePicker 控件只能选择不超过最大可选日期的日期。
     *
     * @param datePicker
     */
    public static void limitDate(DatePicker datePicker) {
        // 将 DatePicker 的最大可选日期设置为当天
        datePicker.setValue(LocalDate.now());

        // 禁止选择比最大可选日期更晚的日期
        datePicker.setDayCellFactory(picker -> new DateCell() {
            @Override
            public void updateItem(LocalDate item, boolean empty) {
                super.updateItem(item, empty);

                LocalDate maxDate = picker.getValue();
                if (item.isAfter(maxDate)) {
                    setDisable(true);
                }
            }
        });
    }


http://www.kler.cn/a/18337.html

相关文章:

  • WorkFlow源码剖析——Communicator之TCPServer(下)
  • MySQL中的事务与锁
  • 第七部分:2. STM32之ADC实验--AD多通道(AD采集三路传感器模块实验:光敏传感器、热敏传感器、反射式传感器附赠温湿度传感器教程)
  • Jenkins声明式Pipeline流水线语法示例
  • 动态规划 —— dp 问题-买卖股票的最佳时机IV
  • java---认识异常(详解)
  • PDN Handover流程介绍
  • Java RSA密钥转换,从RSAPrivateKey得到RSAPublicKey
  • HTML5字体集合的实践经验
  • ( 位运算 ) 268. 丢失的数字 ——【Leetcode每日一题】
  • 当生命里有程序来串门——一个北邮信通大一学生的漫谈
  • Linux权限 - 概念与管理 | 文件权限的修改与转让 【详解】
  • 给你安利一款不需要魔法就能免费使用的idea插件Bito-ChatGPT
  • IO-Netty
  • Linux_红帽8学习笔记分享_10(SELinux管理与防火墙)
  • SpringBoot——入门程序的简单介绍
  • wiringPi常用函数
  • 使用 ChatGPT 辅助学习——为自己找一个老师
  • docker部署SpringBoot项目
  • 【sop】基于灵敏度分析的有源配电网智能软开关优化配置(Matlab代码实现)
  • Linux 安装 NFS 实现文件目录共享
  • SpringBoot创建和使用
  • RESTful风格(个人笔记)
  • MySQL事务:原理、类型和使用场景
  • taro小程序中如何引入css_moudle?配置后不生效的解决方法
  • HTML 中的常用标签用法