河南省住房和城乡建设厅二维码网站长沙100强企业排名
计算机和计算机之间通过网络进行数据传输
常见的软件架构:
C/S:客户端/服务器
- 画面可以做的非常精美,用户体验好
 - 需要开发客户端,也需要开发服务端
 - 用户需要下载和更新的时候太麻烦
 
B/S:浏览器/服务器
- 不需要开发客户端,只需要页面+服务端
 - 用户不需要下载,打开浏览器就能使用
 - 如果应用过大,用户体验收到影响
 
网络编程三要素
IP
- 设备在网络中的地址,是唯一的标识
 
IPv4是目前的主流方案,目前已经用完了
IPv6是为了解决IPv4不够用而出现的
特殊IP地址:127.0.0.1,也可以是localhost:是回送地址也称本地回环地址,也称本机IP,永远只会寻找当前所在本机。
常用的CMD命令:
ipconfig:查看本机IP地址
ping:检查网络是否连通
端口号
- 在设备中的唯一标识
 
由两个字节表示的整数,取值范围:0~65535
其中0~1023之间的端口号用于一些知名的网络服务或者应用
我们自己用1024以上的端口号
应该端口号只能被一个应用程序使用
协议
- 数据在网络中传输的规则,常见的协议:UDP、TCP、http、https、ftp
 
计算机网络中,连接和通信的规则被称为网络通信协议
TCP/IP参考模型

UDP协议(用户数据报协议)
是面向无连接的通信协议,不管用户是否收到
速度快,有大小限制,一次最多发送64K,数据不安全,易丢失数据
发送数据
- 创建发送端的DatagramSocket对象
 
创建对象时:
绑定端口,就是通过这个端口往外发送
空参:所有可用的端口随机一个进行使用
有参:指定端口号进行绑定
- 数据打包
 - 发送数据
 - 释放资源
 
UDP的三种通信方式:
单播:以前的代码就是单播
组播:组播地址:224.0.0.0~239.255.255.255,其中224.0.0.0~224.0.0.255为预留的组播地址
广播:广播地址:255.255.255.255
接收数据
- 创建端的DataGgramSocket对象
 
在接受的时候,一定要绑定端口
而且绑定的端口一定要和发送的端口保持一致
- 接受打包好的数据
 - 解析数据包
 - 释放资源
 
TCP协议(传输控制协议)
是面向连接的通信协议
速度慢,没有大小限制,数据安全
项目设计思路
用户系统:
- 登录
 - 注册
 - 忘记密码
 
课堂互动:
- 签到
 - 抢答
 - 随机选人
 
学生:
- 写作业:图片、文件、文字
 - 加入班级
 - 下载资料
 
教师:
- 发布资料
 - 创建班级
 
作业:
- 发布作业:主观题、选择题
 - 打回作业
 - 批改作业
 - src 
- sample 
- fxml
 - images
 
 - java 
- controllers
 - models
 - services
 - utils
 
 
 - sample 
 
FXML文件:
- login.fxml(登录)
 - registerTeacher.fxml(注册)
 - ForgetPassword(忘记密码)
 - ClassroomInteraction.fxml(班级)
 - CreateClass.fxml(创建班级)
 - JoinClass.fxml(加入班级)
 - StudentDashboard.fxml(学生总表)
 - TeacherDashboard.fxml(老师总表)
 - RandomSelection.fxml(随机选人)
 - PublishHomework.fxml(发布作业)
 - HomewordSubmission.fxml(提交作业)
 - DownloadFiles.fxml(下载文件)
 - RejectHomework.fxml(打回作业)
 - CorrectHomework.fxml(批改作业)
 
Models软件包:
- User.java
 - Student.java
 - Teacher.java
 - Classroom.java
 - File.java
 - Homework.java
 - HomeworkSubmission.java
 
Services软件包:
- UserService.java
 - ClassroomSevice.java
 - FileSevice.java
 - HomeworkService.java
 
Utils软件包:(工具类)
数据库
1.用户表(user)
- id(用户ID,主键)
 - username(用户名)
 - email(邮箱)
 - password(密码)
 - userTyte(用户类型)
 
2.班级表(class)
- id(班级ID,主键)
 - name(班级名称)
 - teacher_id(教师ID,外键)
 
3.用户-班级表
- id(关系ID,主键)
 - user_id(用户ID,外键)
 - class_id(班级ID,外键)
 
4.作业表(homework)
- id(作业ID,主键)
 - class_id(班级ID,外键)
 - content(作业内容)
 - type(作业类型:主观题、选择题)
 - createDate(发布时间)
 - dueDate(截止时间)
 
5.学生作业表
- id(学生作业ID,主键)
 - user_id(用户ID,外键)
 - homework_id(作业ID,外键)
 - submissionType(提交类型:图片,文字,文件)
 - status(作业状态:未提交,已提交,已打回,已批改)
 - updated(更新时间)
 
6.课堂互动表
- id(资料ID,主键)
 - class_id(班级ID,外键)
 - teacher_id(教师ID,外键)
 - type(类型:签到、问题抢答、随机选人)
 - update(更新时间)
 
7.发布的资料表(materials)
- id(资料ID,主键)
 - class_id(班级ID,外键)
 - teacher(教师ID,外键)
 - title(标题)
 - file(文件路径)
 - update(更新时间)
 
