项目分析v2

news2024/11/20 20:43:09

 用户:

登录:

        不能重复登录。

        在服务端使用一个hashset记录用户的登录状态,如果用户id不在集合里面,就可以登录,登录时将用户id添加到集合中。用户下线时,将set中的元素删除。

        登录成功后,服务端new一个线程 ,处理这个用户的业务。

注册:

        已注册过的邮箱,不可使用

        邮箱验证码注册,验证码应具有时效性。

        在服务端使用一个hashmap,用户id作为key,正确的验证码对象作为value。用户申请注册时,向服务端发送id和验证码对象。对比即可。验证码对象有两个字段,一个是字符串码,一个是时间。

 忘记密码&修改密码   

           获取邮箱验证码,验证码有效即可更改密码

学号/工号 

        由服务端生成,具有唯一性

生日

        DatePicker,并设置上限,不能选择未来时间

登录,注册,忘记密码成功之前,采用短连接,密码错误,验证码错误就会关闭socket。邮箱发送也采用短链接的方式。登录/注册成功之后,不关闭socket,开启一个线程并将其与socket绑定,此后的业务需求均在该线程中处理。


教师

创建课程

        老师设置课程名,添加进数据库。在数据库中课程有唯一id主键,课程名,老师id,老师姓名,邀请码五个字段。

        邀请码应是一个具有时效性的唯一数,雪花算法

        老师id应作为外键关联到用户表中的id,删除/更新行为保持一致。

我教的课的listview只显示课程名,点击某个课程,进入一个界面,进行具体的互动。
    

签到功能

  1. 发布签到任务时,课程成员应收到任务
  2. 设置签到时长
  3. 用hashmap,学生作为键,签到状态作为值
  4. 班级成员签到时,改变hashmap中对应的值即可
  5. 生成签到表,则可以去获取hashmap中所有的键值对 

选人功能

    先获取班级人数,然后获取一个随机数,用班级人数对这个随机数取模,据此选人
    学生那边也应可以查看到选到的人  

发布资料

    发布到课程,外键关联课程
    通过FileChooser 对话框,实现文件选择框。在数据库中保存文件地址,课程和文件的关系是一对多。

添加学生

        老师可以通过学生的唯一标识,将学生导入到某个班级中,在数据库中间表中添加记录

删除学生 

        删除某个班中的某个学生,删除班级学生中间表中的那条记录即可。

注销课程

        注销课程时,课程学生中间表中的对应记录也会被自动删除。

发布作业

        选择某个课程,发布作业。

        学生可以收到提醒

        可设置作业的发布时间和截止日期

        作业的一些属性可以随时被老师修改,也可以删除作业

批改作业

        老师可以看到作业的完成情况,已完成和未完成

        点击某个同学的作业,可以进行批改、打回


学生

加入课程

        通过邀请码,可以在数据库中查询到班级的id,将学生id和班级id作为一条记录,加入到中间表

退出课程

        删除中间表里的某条记录

下载资料

        通过班级,得到查询到课程,通过课程去查询文件。服务端将文件传给客户端

写作业 

        学生可以知道作业的时间。以文件的形式上传作业。一个作业就是一个文件

班级任务

        有签到和选人。

当数据库发生改变时,如果客户端需要进行更新操作,那么可以采用懒加载的设计模式。当数据库发送改变时,服务端向有关在线用户发送更新请求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【语义分割】LinkNet从0到1和代码实现

文章目录 前言1.网络结构1.1 网络结构示意图1.2 创建LinkNet模型 2.代码2.1 各模块搭建2.1.1 卷积模块2.1.2 反卷积模块2.1.3 编码器模块 2.2 编码网络结构2.3 损失函数&训练2.4 训练 前言 已经有了U-net了,为什么需要linkNet? unet见这个文章【语义…

Docker基础篇(很详细)

一、简单介绍 (一)为什么用docker 开发人员发开完成就发布一个jar或者war包,其他的都交给运维人员来做;而现在,开发即运维,打包部署上线一套流程走完:开发人员会将项目及其附带的环境一起打包j…

UML类图使用介绍

文章目录 一、UML图1、什么是UML图2、类图概述3、类图的作用 二、类的表示方式举个栗子 三、类与类之间关系的表示方式1、关联关系(1)单向关联(2)双向关联(3)自关联 2、聚合关系3、组合关系4、依赖关系5、继…

安全加密基础—基本概念、keytool、openssl

前言 (1)本文不涉及源码、底层。只是讲解大概的密码演变过程和基本概念。能让接触到相关名词的人知道这些名词是干嘛的,为什么要有它。专业人士可以当作概念梳理,非专业人士可以当作科普。 (2)本文你将了解…

亿发工业互联网智能制造ERP系统,生产工厂信息化建设解决方案

亿发工业互联网智能制造ERP系统,生产工厂信息化建设解决方案 随着制造水平的发展,传统工厂原有的生产组织模式和质量管理模式已不能满足先进制造水平的要求。确保公司战略目标的实现,有必要借助信息技术加强对各种业务流程的管理。而企业走向…

Leetcode506. 相对名次

Every day a leetcode 题目来源&#xff1a;506. 相对名次 解法1&#xff1a;STL vector 自定义排序 使用 vector<pair<int, int>> 数组v记录原来 score 数组的下标和成绩。 对v按成绩进行降序排序。 新建一个 vector<string> 数组 ans&#xff0c;遍历…

WiFi(Wireless Fidelity)基础(三)

目录 一、基本介绍&#xff08;Introduction&#xff09; 二、进化发展&#xff08;Evolution&#xff09; 三、PHY帧&#xff08;&#xff08;PHY Frame &#xff09; 四、MAC帧&#xff08;MAC Frame &#xff09; 五、协议&#xff08;Protocol&#xff09; 六、安全&#x…

FP斗篷,2023独立站必看指南

Cloak斗篷技术是一种网络隐身术&#xff0c;通过技术手段实现在网络上匿名和隐身&#xff0c;保护个人隐私和安全。斗篷技术的实现原理是通过使用虚拟专用网络&#xff08;VPN&#xff09;或代理服务器等技术&#xff0c;将用户的真实IP地址隐藏起来&#xff0c;使其在网络上的…

CentOS7离线升级SSH至9.1P1

1、离线安装telnet&#xff08;用telnet登录升级ssh&#xff0c;因为ssh升级时&#xff0c;ssh会话会断开&#xff09; &#xff08;1&#xff09;下载telnet、telnet-server、xinetd&#xff0c;并传到服务器上 http://rpmfind.net/linux/centos/7.9.2009/updates/x86_64/Pack…

目前电视盒子哪个最好?测评20款后整理网络电视盒子推荐

电视盒子是日常必备的数码单品&#xff0c;功能越来越丰富&#xff0c;但很多人不懂要如何选择电视盒子&#xff0c;芯片、内存外还应该考虑系统、技术优化和界面设计等因素。昨天刚刚结束了二十款电视盒子的测评&#xff0c;马上来介绍下我的测评结果&#xff0c;整理了网络电…

flutter mqtt的使用看这里,持续更新

mqtt网络协议&#xff0c;相信跟物联网相关的公司都会遇到&#xff0c;在Android,iOS原生开发是可以很好的实现&#xff0c;相关的资料也是很多&#xff01;但是在flutter里面还算比较尝鲜的一个领域吧&#xff01; 幸亏flutter里面 已经有一个还不错的第三库mqtt_client&…

Springcloud 之Gateway组件详解

目录 1.网关 1.1 网关简介 1.2 网关组件 1.2.1 Gateway介绍 1.2.2 Gateway实践 1.2.3 Gateway执行流程 1.2.4 断言工厂 1.2.5 过滤器 1.网关 1.1 网关简介 大家都都知道在微服务架构中&#xff0c;一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多…

Vmware ESXi 5.0 安装与部署

在虚拟化领域VMware、Citrix、Microsoft都有不错的解决方案而在服务器虚拟化领域VMware又占据着领导者地位游侠www.2cto.com今天也装了个平台与大家一起分享。   VMware的虚拟化产品就个人、小企业而言有Workstation、ESXivSphere免费版、VMwareServer免费版可以选择由于Work…

彩蛋丨利用R语言脚本实现批量合并Excel表格,再也不用手动点来点去了!

利用R语言脚本实现批量合并Excel表格 在整理数据的时候遇到一个问题&#xff1a;假如有很多个excel表&#xff0c;分别存放了一部分数据&#xff0c;现在想要快速把这些表格的数据汇总到一起&#xff0c;如何用R语言快速完成呢&#xff1f;本文分享一个脚本&#xff0c;能够自动…

分享2个教学视频录制的方法!

案例&#xff1a;如何录制教学视频&#xff1f; 【我是一名老师&#xff0c;我想录制一些教学视频发布在网络平台上&#xff0c;但是我不知道如何操作。有没有人知道录制教学视频需要什么工具&#xff1f;如何录制&#xff1f;】 随着在线教育的普及&#xff0c;越来越多的教…

【K8s】K8s介绍与集群环境搭建

文章目录 一、Kubernetes介绍1、背景2、kubernetes简介3、组件说明4、示例&#xff1a;部署nginx说明各组件的协作5、kubernetes核心概念 二、kubernetes集群环境搭建1、部署方式2、安装要求和最终目标3、环境准备4、环境初始化5、集群测试 一、Kubernetes介绍 1、背景 在部署…

转向路线优化之算法二

0.概述 广义上的主曲线定义为穿过数据中心的自洽曲线,本文基于数据点的概率密度估计结果,得到相应的梯度Gradient和Hessian矩阵,以此求得原始数据点的主曲线拟合结果. 1.基于Gradient与Hessian的主曲线定义 一般认为可构造主曲面(含主曲线)的数据点具有某种固有的潜在概…

Java多线程入门到精通学习大全?了解线程的几种创建方式和基本原理、代码示例!(第四篇:线程的创建学习)

Java多线程的创建方式有三种&#xff1a;继承Thread类&#xff0c;实现Runnable接口和使用Callable和Future接口。 一、继承Thread类 1 原理&#xff1a; 继承Thread类&#xff0c;重写run()方法&#xff0c;将需要并发执行的代码写在run()方法中&#xff0c;创建Thread类的…

【python学习】基础篇-文件与系统-打开与读取文件、文件操作的常用方法

打开与读取文件 在 Python 中&#xff0c;内置了文件(file) 对象。 在使用文件对象时&#xff0c;首先需要通过内置的 open0 方法创建一个文件对象&#xff0c;然后通过该对象提供的方法进行基本的文件操作。 open() 函数的语法格式如下: file open(filename[,mode[,bufferin…

推荐系统学习之路

基本概念&#xff1a; 一、基本流程 b站王树森老师课程笔记 召回(retrieval&#xff09;&#xff1a;快速从海量数据中取回几千个用户可能感兴趣的物品。 方法&#xff1a; 协同过滤 相似度计算&#xff1a; 余弦&#xff0c; 杰卡德 矩阵分解&#xff1a; 将一个稀疏的用户评…