5 Star 5 Fork 1

顽石IT精英社团 / eryi-svr

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 9.16 KB
一键复制 编辑 原始数据 按行查看 历史
崔鹏宇 提交于 2022-09-05 09:55 . 测试修改readme

作业检查管理后台

项目的后端,采用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

Java
1
https://gitee.com/eryi-teaching/eryi-svr.git
git@gitee.com:eryi-teaching/eryi-svr.git
eryi-teaching
eryi-svr
eryi-svr
master

搜索帮助