项目的后端,采用SpringBoot框架开发。该项目提供给所有前端API使用。
一家培训机构招揽了三十名学员,当老师检查作业时,可费了老劲,三十名学员挨个查看作业,以及完成的进度,无法明确的清楚学员的作业完成情况,学员如果在老师授课时没能听懂本节课的知识,那么就大大降低了老师的授课效率。 于是,我们开发了而易管理系统
而易系统的功能一览:支持管理员、学生、老师登录,增加了用户权限、在线预览学生作业
老师权限:选择班级, 布置作业,批改作业、查看学生的完成情况,支持上传视频,在线观看视频(仅支持MP4格式)、在线预览本班学生的作业
学生权限:上传作业(仅支持ZIP格式上传)、在线预览自己的作业、在线观看视频。
这样就大大减少了老师的批改作业的难度,省时省力,同时也能提高学员的学习效率
而易作业管理系统采用技术栈:Spring Boot + Vue + ElementUI,前后端分离实现
在作业管理系统中有一个地方是亮点也是难点,就是开发可在线预览学生作业功能,这个难关是怎么过的呢?
首先前端我们采用Tree,树加载,学生的作业,学生上传作业统一上传格式为ZIP,上传成功后,进行保存,当点击查看学生作业时先把学生的作业进行解压,然后后端利用HashMap进行拼接,前端要求的格式为
{{"label":"123", "children":[{"label":"1234"}]},{"label":456, "children":[{"label":"4566"}]}}
利用Map进行拼接,再返回给前端,前端将数据传入tree树形控件中渲染即可
当点击某一个文件时进行显示响应的内容,通过ajax向后端请求文件内容,从而进行显示,显示代码需要高亮显示,高亮显示使用highlight.js
highlight.js官网
从而实现了代码的高亮
作业管理系统亮点二 – 在线浏览代码乱码问题
这个问题就是,当用户点击作业下的某一个文件,例如:HelloWorld.Java,该文件中的注释为中文,点击后加载注释乱码,为什么加载不出来呢?是因为默认编码问题, 解决:当用户点击查看某一个作业时在解压过程中,读取文件的原生编码格式,存入map集合中,一并返回给前端,让前端按照文件的编码格式来展示文件内容。
获取文件的原生编码:
/**
* 获得文件编码
* @param fileName
* @return
* @throws Exception
*/
public static String codeString(String fileName) throws Exception {
String charset = "";
byte[] bs = new byte[10240];
FileInputStream is = null;
try {
is = new FileInputStream(fileName);
int len=is.read(bs,0,10240);
UniversalDetector detector = new UniversalDetector(null);
detector.handleData(bs, 0, len);
detector.dataEnd();
charset = detector.getDetectedCharset();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return charset;
}
将文件编码类型直接存入map,返回前端,前端进行渲染显示
至此完美解决文件乱码问题
另外作业管理系统还有一个比较亮眼的功能,就是在线视频预览,在线观看视频采用video控件
t_user-info
CREATE TABLE `t_user_info` (
`noid` varchar(64) NOT NULL,
`usercode` varchar(64) NOT NULL,
`userpwd` varchar(64) NOT NULL,
`realname` varchar(64) NOT NULL,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`noid`),
UNIQUE KEY `unq_usercode` (`usercode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
t_user_permission
CREATE TABLE `t_user_permission` (
`noid` varchar(64) NOT NULL,
`user_id` varchar(64) NOT NULL,
`permission_value` varchar(64) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
t_student
CREATE TABLE `t_student` (
`noid` varchar(64) NOT NULL,
`student_code` varchar(64) DEFAULT NULL COMMENT '学号',
`student_realname` varchar(64) DEFAULT NULL COMMENT '学生真实姓名',
`student_sex` tinyint(4) DEFAULT NULL COMMENT '性别 1 男 2 女',
`student_age` smallint(6) DEFAULT NULL COMMENT '年龄',
`student_group_id` varchar(64) NOT NULL COMMENT '必填,所属学生组,对应t_student_group.noid',
`bind_usercode` varchar(64) DEFAULT NULL COMMENT '对应t_user_info.usercode',
`order_numb` int(11) NOT NULL DEFAULT '100' COMMENT '顺序值,默认100',
`create_user_id` varchar(64) NOT NULL COMMENT '必填,创建人id,对应t_user_info.noid',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`noid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
t_student_zuoye
CREATE TABLE `t_student_zuoye` (
`noid` varchar(64) NOT NULL,
`student_group_id` varchar(64) DEFAULT NULL COMMENT '外键,对应t_student_group_noid',
`student_id` varchar(64) NOT NULL COMMENT '外键,对应t_student.noid字段',
`student_realname` varchar(64) DEFAULT NULL COMMENT '冗余字段,学生姓名',
`student_order_numb` int(11) NOT NULL DEFAULT '100',
`buzhi_zuoye_id` varchar(64) NOT NULL COMMENT '外键,对应t_buzhi_zuoye.noid字段',
`buzhi_zuoye_title` varchar(256) DEFAULT NULL COMMENT '冗余字段,布置作业的标题',
`zuoye_file_path` varchar(64) DEFAULT NULL,
`unzip_path` varchar(64) DEFAULT NULL,
`buzhi_date` timestamp NULL DEFAULT NULL COMMENT '冗余字段,布置作业的时间,对应t_buzhi_zuoye.buzhi_date',
`wancheng_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '完成情况 0 未检查 1 已完成 2 未完成',
`exam_user_id` varchar(64) DEFAULT NULL COMMENT '检查人员,对应数据表t_user_info.noid字段',
`exam_time` timestamp NULL DEFAULT NULL COMMENT '检查时间',
`submit_time` timestamp NULL DEFAULT NULL COMMENT '提交作业时间',
PRIMARY KEY (`noid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
t_revert
CREATE TABLE `t_revert` (
`noid` varchar(64) NOT NULL,
`user_noid` varchar(64) DEFAULT NULL COMMENT '对应t_user.noid',
`message_title` varchar(64) DEFAULT NULL COMMENT '通知信息,例如:XXX回复了您点评的0702作业',
`comment_noid` varchar(64) DEFAULT NULL COMMENT '回复的评论id,对应t_comment.noid',
`revert_content` varchar(64) DEFAULT NULL COMMENT '回复的内容',
`revert_message_state` int(11) DEFAULT NULL,
`revert_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`noid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
t_english_word
CREATE TABLE `t_english_word` (
`noid` varchar(64) NOT NULL,
`english_word` varchar(64) NOT NULL,
`chinese` varchar(64) DEFAULT NULL,
PRIMARY KEY (`noid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
t_comment
CREATE TABLE `t_comment` (
`noid` varchar(64) NOT NULL,
`message_title` varchar(64) DEFAULT NULL COMMENT '通知信息:例如:崔老师点评了你的0702作业XXX',
`user_noid` varchar(64) DEFAULT NULL COMMENT '发送人id,对应t_user.noid',
`comment_content` varchar(256) DEFAULT NULL COMMENT '发送的内容',
`comment_zuoye_noid` varchar(64) DEFAULT NULL COMMENT '被点评的作业id',
`comment_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '点评的时间',
`comment_message_state` int(11) DEFAULT NULL COMMENT '消息状态 1:未读 2:已读',
PRIMARY KEY (`noid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
t_classes
CREATE TABLE `t_classes` (
`noid` varchar(64) NOT NULL,
`class_name` varchar(128) NOT NULL COMMENT '班级名称',
`class_state` tinyint(4) DEFAULT NULL COMMENT '0 结业班级 1 在授班级',
`create_date` timestamp NULL DEFAULT NULL COMMENT '创建日期',
PRIMARY KEY (`noid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
t_class_student
CREATE TABLE `t_class_student` (
`class_noid` varchar(255) DEFAULT NULL,
`student_noid` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
t_buzhi_zuoye
CREATE TABLE `t_buzhi_zuoye` (
`noid` varchar(64) NOT NULL,
`zuoye_title` varchar(256) NOT NULL COMMENT '布置作业的标题',
`zuoye_detail` varchar(4000) DEFAULT NULL COMMENT '作业的详细信息',
`buzhi_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '作业布置的日期',
`create_user_id` varchar(64) DEFAULT NULL,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`noid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
test2
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。