目录
一.发布作业
二.写作业
三.批改作业
一.发布作业
点击简答题时———listvie<String>题目列表会新增一个题目
保存该题时———— 获取TextArea的文本,为list当前选中的对象赋值
发布日期不能为过往日期,截止日期不能晚于发布日期。——为发布日期设置点击事件,将截止日期的非法日期禁用。
时间为选择ComboBox<String>hh,mm,ss。
当发布日期和截止日期为同一天时,要判断时间是否合法。
LocalTime createtime=LocalTime.parse(hh1.getValue()+":"+mm1.getValue()+":"+ss1.getValue());
LocalTime deadtime=LocalTime.parse(hh2.getValue()+":"+mm2.getValue()+":"+ss2.getValue());
发布时将ComboBox<String>转化为时间类型,一系列判断后发送至服务端,服务端入库。
二.写作业
进行中的作业或已完成的作业设置成绿色,已结束未提交的作业设置成红色,未开始的为白色。
学生不可查看未开始作业,但其余作业可随意查看。若为已提交作业,则可以查看自己的答案。
学生还可以上传文件,
点击上传按钮,打开文件选择器,依据文件路径,通过文件字节输入流和字节数组输出流将文件,将文件以二进制数组保存下来,同时还要保存文件名。
public static byte[] streamToByteArray(InputStream is){
try {
ByteArrayOutputStream bos=new ByteArrayOutputStream();
byte[] buf=new byte[1024];
int len=0;
//读取一个字节的数据,读到末尾返回-1
while ((len=is.read(buf))!=-1){
bos.write(buf,0,len);
}
byte[] array=bos.toByteArray();
bos.close();
is.close();
return array;
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件读取失败");
}
return null;
}
点击提交后,发送至服务端,服务端将答案入库。
对于文件,服务端则依据雪花算法给文件一个编号,将文件保存在服务端的file包内,然后数据库保存文件路径。
public static void byteArrayToStream(byte[] array,String path){
FileOutputStream fileOutputStream= null;
try {
fileOutputStream = new FileOutputStream(path);
fileOutputStream.write(array);
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println("文件下载失败");
}
}
三.批改作业
服务端查询作业表,将所有已提交的作业封装。文件答案则依据表中目录字段,将file包中的指定文件以数组的形式发送至客户端。
下载文件——用户通过目录选择器指定文件下载位置。将二进制数组写入到<目录+“\\”+文件名>。
完成批改后,服务端修改表中分数字段。