【项目】教学辅助系统

网络化教学辅助平台

系统测试账号

管理员:558019 root

学生:22007 123456

教师:22007 123456

一、项目详情

项目主要技术

​ SpringBoot + MyBatis-Plus + Vue

开发工具环境

  • Windows 10 22H2
  • IntelliJ IDEA 2023.2.1 (Ultimate Eddition)
  • Visual Studio Code
  • Navicat Premium 16.2.10
  • Google Chrome 120.0.6099.225 (64位)
  • Apifox 2.3.27

项目运行环境

  1. Java 17.0.8

  2. MySQL 8.1.0

  3. SpringBoot 3.1.5

  4. MyBatis-Plus 3.5.3.1

  5. Maven 3.9.5

  6. Node.js 20.9.0

  7. Element-Plus 2.4.4

  8. Vue 3.3.11

    //一些前端插件版本(package.json)
    {
      "name": "teachingsystem",
      "version": "0.0.0",
      "private": true,
      "type": "module",
      "scripts": {
        "dev": "vite",
        "build": "vite build",
        "preview": "vite preview",
        "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore",
        "format": "prettier --write src/"
      },
      "dependencies": {
        "@element-plus/icons-vue": "^2.3.1",
        "axios": "^1.6.3",
        "babel-eslint": "^10.1.0",
        "element-plus": "^2.4.4",
        "js-cookie": "^3.0.5",
        "md-editor-v3": "^4.10.0",
        "pinia": "^2.1.7",
        "qs": "^6.11.2",
        "sass": "^1.69.6",
        "uuid": "^9.0.1",
        "vue": "^3.3.11",
        "vue-router": "^4.2.5"
      },
      "devDependencies": {
        "@rushstack/eslint-patch": "^1.3.3",
        "@vitejs/plugin-vue": "^4.5.2",
        "@vue/eslint-config-prettier": "^8.0.0",
        "eslint": "^8.49.0",
        "eslint-plugin-vue": "^9.19.2",
        "prettier": "^3.0.3",
        "unplugin-auto-import": "^0.17.3",
        "unplugin-vue-components": "^0.26.0",
        "vite": "^5.0.10"
      }
    }
    
    

二、项目结构

数据库结构

在这里插入图片描述

数据库属性

在这里插入图片描述

数据库代码

/*
 Navicat Premium Data Transfer

 Source Server         : localhostDB
 Source Server Type    : MySQL
 Source Server Version : 80100 (8.1.0)
 Source Host           : localhost:3306
 Source Schema         : xu

 Target Server Type    : MySQL
 Target Server Version : 80100 (8.1.0)
 File Encoding         : 65001

 Date: 22/01/2024 20:11:54
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for classify
-- ----------------------------
DROP TABLE IF EXISTS `classify`;
CREATE TABLE `classify`  (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '分类id',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '名称',
  `flag` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '标记(1年级,2学院,3专业)',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '分类表(年级、院系、专业)' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of classify
-- ----------------------------
INSERT INTO `classify` VALUES ('1', '2019', '1', '2024-01-05 22:56:03', '2024-01-05 22:56:05');
INSERT INTO `classify` VALUES ('2', '2020', '1', '2024-01-05 22:56:43', '2024-01-05 22:56:55');
INSERT INTO `classify` VALUES ('3', '2021', '1', '2024-01-05 22:56:46', '2024-01-05 22:56:58');
INSERT INTO `classify` VALUES ('4', '2022', '1', '2024-01-05 22:56:48', '2024-01-05 22:57:00');
INSERT INTO `classify` VALUES ('5', '2023', '1', '2024-01-05 22:56:50', '2024-01-05 22:57:03');
INSERT INTO `classify` VALUES ('6', '2024', '1', '2024-01-05 22:56:53', '2024-01-05 22:57:06');
INSERT INTO `classify` VALUES ('7', '大数据与信息工程学院', '2', '2024-01-05 22:59:06', '2024-01-05 22:59:15');
INSERT INTO `classify` VALUES ('8', '美体学院', '2', '2024-01-05 22:59:08', '2024-01-05 22:59:17');
INSERT INTO `classify` VALUES ('9', '文学院', '2', '2024-01-05 22:59:11', '2024-01-05 22:59:20');
INSERT INTO `classify` VALUES ('10', '商学院', '2', '2024-01-05 22:59:13', '2024-01-05 22:59:22');
INSERT INTO `classify` VALUES ('11', '人工智能', '3', '2024-01-05 23:05:17', '2024-01-05 23:05:43');
INSERT INTO `classify` VALUES ('12', '软件工程', '3', '2024-01-05 23:05:19', '2024-01-05 23:05:46');
INSERT INTO `classify` VALUES ('13', '计算机科学与技术', '3', '2024-01-05 23:05:21', '2024-01-05 23:05:48');
INSERT INTO `classify` VALUES ('14', '网络工程', '3', '2024-01-05 23:05:23', '2024-01-05 23:05:51');
INSERT INTO `classify` VALUES ('15', '美术教育', '3', '2024-01-05 23:05:26', '2024-01-05 23:05:52');
INSERT INTO `classify` VALUES ('16', '运动人体科学', '3', '2024-01-05 23:05:29', '2024-01-05 23:05:54');
INSERT INTO `classify` VALUES ('17', '汉语言文学', '3', '2024-01-05 23:05:31', '2024-01-05 23:05:58');
INSERT INTO `classify` VALUES ('18', '新闻学', '3', '2024-01-05 23:05:33', '2024-01-05 23:06:00');
INSERT INTO `classify` VALUES ('19', '金融学', '3', '2024-01-05 23:05:36', '2024-01-05 23:06:02');
INSERT INTO `classify` VALUES ('20', '会计学', '3', '2024-01-05 23:05:38', '2024-01-05 23:06:05');
INSERT INTO `classify` VALUES ('21', '电子商务', '3', '2024-01-05 23:05:40', '2024-01-05 23:06:09');
INSERT INTO `classify` VALUES ('1745142404891885569', '农学院', '2', '2024-01-11 01:55:47', '2024-01-11 01:55:47');
INSERT INTO `classify` VALUES ('1745142559112249346', '土木工程', '3', '2024-01-11 01:56:24', '2024-01-11 01:56:24');

-- ----------------------------
-- Table structure for files
-- ----------------------------
DROP TABLE IF EXISTS `files`;
CREATE TABLE `files`  (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '文件id',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '名称',
  `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件地址',
  `subject_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '课程id',
  `create_time` datetime NULL DEFAULT NULL COMMENT '上传时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '文件表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of files
-- ----------------------------
INSERT INTO `files` VALUES ('1', 'Java八股文总结.pdf', NULL, '1745860640193216514', '2024-01-19 01:25:08', '2024-01-19 01:25:13');
INSERT INTO `files` VALUES ('2', 'java面试总结.docx', NULL, '1745860640193216514', '2024-01-19 01:25:11', '2024-01-19 01:25:16');
INSERT INTO `files` VALUES ('392a24fcdbf1c945babbffcf4591e45a', '【a688a88】测试.sql', NULL, '13', '2024-01-19 02:19:52', '2024-01-19 02:19:52');
INSERT INTO `files` VALUES ('50dc7b5f6e412d280911f16811185561', '【852779b】修改src属性.jpg', NULL, '13', '2024-01-19 02:58:52', '2024-01-19 02:58:52');
INSERT INTO `files` VALUES ('9406f82ef5689eae33f9dfad478a141f', 'f9e0ec5a-3b8d-4_Thymeleaf常用标签.png', NULL, '13', '2024-01-19 02:09:00', '2024-01-19 02:09:00');

-- ----------------------------
-- Table structure for notice
-- ----------------------------
DROP TABLE IF EXISTS `notice`;
CREATE TABLE `notice`  (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '公告ID',
  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '标题',
  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '内容',
  `img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '封面',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '公告表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of notice
-- ----------------------------
INSERT INTO `notice` VALUES ('1', '2024年3月全国计算机等级考试报名', '按照教育部教育考试院相关通知精神,为做好我省2024年3月全国计算机等级考试(NCRE)报名工作,贵阳人文科技学院根据贵州省招生考试院工作安排,现就我校有关事项通知如下:\r\n\r\n一、报名及考试时间\r\n\r\n(一)报名时间:2023年12月26日10时至2024年1月5日17时。具体时间安排如下:\r\n\r\n1.网上注册报名:2023年12月26日(星期二)10:00--2024年1月5日(星期五)17:00。\r\n\r\n2.网上审核:考点网上审核时间与报名时间相同。\r\n\r\n3.网上缴费:2023年12月26日(星期二)10:00--2024年1月6日(星期六)17:00。\r\n\r\n4.准考证打印:具体打印时间请以报名网站公布为准。\r\n\r\n(二)考试时间:2024年3月23日至24日。\r\n\r\n二、报名方式及报名网址\r\n\r\n考生登录教育部教育考试院公布的考生报名网站进行网上报名、缴费及打印准考证。报名网址入口(公网):https://ncre-bm.neea.cn。\r\n\r\n(一)考生报名要求\r\n\r\n1.报名者不受年龄、职业、学历等背景的限制,均可根据自己学习情况和实际能力选考相应的级别和科目。同次考试同一考生只能在一个省级承办机构的一个考点报名,最多可报三个科目,且不允许重复报考同一个科目。\r\n\r\n2.考生本人在规定时间内登录网站进行报名,按操作程序及要求输入报名信息和上传照片并申请审核。经审核通过后,直接在网上缴纳报名考试费。\r\n\r\n3.考生必须认真填报信息自行确认,并按规定要求上传照片。如果填报信息有误,责任自负。考生上传照片即为准考证上的照片,若不符合规定或无法确认为考生本人的,考生将无法参加考试。\r\n\r\n(二)照片信息标准\r\n\r\n1.照片应为考生本人近期正面免冠彩色证件照。\r\n\r\n2.成像区上下要求头上部空1/10,头部占7/10,肩部占1/5,左右各空1/10。采集的图象大小最小为192×144(高×宽),成像区大小为48mm×33mm(高×宽)。\r\n\r\n3.照片文件应为jpg格式。', 'http://localhost:8080/images/f4734bb6-8d14-4.jpg', '2024-01-08 18:09:57', '2024-01-09 23:46:25');
INSERT INTO `notice` VALUES ('10', '2024年3月全国计算机等级考试报名', '按照教育部教育考试院相关通知精神,为做好我省2024年3月全国计算机等级考试(NCRE)报名工作,贵阳人文科技学院根据贵州省招生考试院工作安排,现就我校有关事项通知如下:\r\n\r\n一、报名及考试时间\r\n\r\n(一)报名时间:2023年12月26日10时至2024年1月5日17时。具体时间安排如下:\r\n\r\n1.网上注册报名:2023年12月26日(星期二)10:00--2024年1月5日(星期五)17:00。\r\n\r\n2.网上审核:考点网上审核时间与报名时间相同。\r\n\r\n3.网上缴费:2023年12月26日(星期二)10:00--2024年1月6日(星期六)17:00。\r\n\r\n4.准考证打印:具体打印时间请以报名网站公布为准。\r\n\r\n(二)考试时间:2024年3月23日至24日。\r\n\r\n二、报名方式及报名网址\r\n\r\n考生登录教育部教育考试院公布的考生报名网站进行网上报名、缴费及打印准考证。报名网址入口(公网):https://ncre-bm.neea.cn。\r\n\r\n(一)考生报名要求\r\n\r\n1.报名者不受年龄、职业、学历等背景的限制,均可根据自己学习情况和实际能力选考相应的级别和科目。同次考试同一考生只能在一个省级承办机构的一个考点报名,最多可报三个科目,且不允许重复报考同一个科目。\r\n\r\n2.考生本人在规定时间内登录网站进行报名,按操作程序及要求输入报名信息和上传照片并申请审核。经审核通过后,直接在网上缴纳报名考试费。\r\n\r\n3.考生必须认真填报信息自行确认,并按规定要求上传照片。如果填报信息有误,责任自负。考生上传照片即为准考证上的照片,若不符合规定或无法确认为考生本人的,考生将无法参加考试。\r\n\r\n(二)照片信息标准\r\n\r\n1.照片应为考生本人近期正面免冠彩色证件照。\r\n\r\n2.成像区上下要求头上部空1/10,头部占7/10,肩部占1/5,左右各空1/10。采集的图象大小最小为192×144(高×宽),成像区大小为48mm×33mm(高×宽)。\r\n\r\n3.照片文件应为jpg格式。', 'http://localhost:8080/images/b420f854-d70d-4.jpg', '2024-01-08 18:09:57', '2024-01-09 23:48:50');
INSERT INTO `notice` VALUES ('2', '2024年3月全国计算机等级考试报名', '按照教育部教育考试院相关通知精神,为做好我省2024年3月全国计算机等级考试(NCRE)报名工作,贵阳人文科技学院根据贵州省招生考试院工作安排,现就我校有关事项通知如下:\r\n\r\n一、报名及考试时间\r\n\r\n(一)报名时间:2023年12月26日10时至2024年1月5日17时。具体时间安排如下:\r\n\r\n1.网上注册报名:2023年12月26日(星期二)10:00--2024年1月5日(星期五)17:00。\r\n\r\n2.网上审核:考点网上审核时间与报名时间相同。\r\n\r\n3.网上缴费:2023年12月26日(星期二)10:00--2024年1月6日(星期六)17:00。\r\n\r\n4.准考证打印:具体打印时间请以报名网站公布为准。\r\n\r\n(二)考试时间:2024年3月23日至24日。\r\n\r\n二、报名方式及报名网址\r\n\r\n考生登录教育部教育考试院公布的考生报名网站进行网上报名、缴费及打印准考证。报名网址入口(公网):https://ncre-bm.neea.cn。\r\n\r\n(一)考生报名要求\r\n\r\n1.报名者不受年龄、职业、学历等背景的限制,均可根据自己学习情况和实际能力选考相应的级别和科目。同次考试同一考生只能在一个省级承办机构的一个考点报名,最多可报三个科目,且不允许重复报考同一个科目。\r\n\r\n2.考生本人在规定时间内登录网站进行报名,按操作程序及要求输入报名信息和上传照片并申请审核。经审核通过后,直接在网上缴纳报名考试费。\r\n\r\n3.考生必须认真填报信息自行确认,并按规定要求上传照片。如果填报信息有误,责任自负。考生上传照片即为准考证上的照片,若不符合规定或无法确认为考生本人的,考生将无法参加考试。\r\n\r\n(二)照片信息标准\r\n\r\n1.照片应为考生本人近期正面免冠彩色证件照。\r\n\r\n2.成像区上下要求头上部空1/10,头部占7/10,肩部占1/5,左右各空1/10。采集的图象大小最小为192×144(高×宽),成像区大小为48mm×33mm(高×宽)。\r\n\r\n3.照片文件应为jpg格式。', 'http://localhost:8080/images/745904c5-fa57-4.jpg', '2024-01-08 18:09:57', '2024-01-09 23:50:13');
INSERT INTO `notice` VALUES ('3', '2024年3月全国计算机等级考试报名', '按照教育部教育考试院相关通知精神,为做好我省2024年3月全国计算机等级考试(NCRE)报名工作,贵阳人文科技学院根据贵州省招生考试院工作安排,现就我校有关事项通知如下:\r\n\r\n一、报名及考试时间\r\n\r\n(一)报名时间:2023年12月26日10时至2024年1月5日17时。具体时间安排如下:\r\n\r\n1.网上注册报名:2023年12月26日(星期二)10:00--2024年1月5日(星期五)17:00。\r\n\r\n2.网上审核:考点网上审核时间与报名时间相同。\r\n\r\n3.网上缴费:2023年12月26日(星期二)10:00--2024年1月6日(星期六)17:00。\r\n\r\n4.准考证打印:具体打印时间请以报名网站公布为准。\r\n\r\n(二)考试时间:2024年3月23日至24日。\r\n\r\n二、报名方式及报名网址\r\n\r\n考生登录教育部教育考试院公布的考生报名网站进行网上报名、缴费及打印准考证。报名网址入口(公网):https://ncre-bm.neea.cn。\r\n\r\n(一)考生报名要求\r\n\r\n1.报名者不受年龄、职业、学历等背景的限制,均可根据自己学习情况和实际能力选考相应的级别和科目。同次考试同一考生只能在一个省级承办机构的一个考点报名,最多可报三个科目,且不允许重复报考同一个科目。\r\n\r\n2.考生本人在规定时间内登录网站进行报名,按操作程序及要求输入报名信息和上传照片并申请审核。经审核通过后,直接在网上缴纳报名考试费。\r\n\r\n3.考生必须认真填报信息自行确认,并按规定要求上传照片。如果填报信息有误,责任自负。考生上传照片即为准考证上的照片,若不符合规定或无法确认为考生本人的,考生将无法参加考试。\r\n\r\n(二)照片信息标准\r\n\r\n1.照片应为考生本人近期正面免冠彩色证件照。\r\n\r\n2.成像区上下要求头上部空1/10,头部占7/10,肩部占1/5,左右各空1/10。采集的图象大小最小为192×144(高×宽),成像区大小为48mm×33mm(高×宽)。\r\n\r\n3.照片文件应为jpg格式。', 'https://p2.itc.cn/q_70/images03/20200731/1d609f213507434fa9c3797dd9805d16.jpeg', '2024-01-08 18:09:57', '2024-01-08 18:10:21');
INSERT INTO `notice` VALUES ('4', '2024年3月全国计算机等级考试报名', '按照教育部教育考试院相关通知精神,为做好我省2024年3月全国计算机等级考试(NCRE)报名工作,贵阳人文科技学院根据贵州省招生考试院工作安排,现就我校有关事项通知如下:\r\n\r\n一、报名及考试时间\r\n\r\n(一)报名时间:2023年12月26日10时至2024年1月5日17时。具体时间安排如下:\r\n\r\n1.网上注册报名:2023年12月26日(星期二)10:00--2024年1月5日(星期五)17:00。\r\n\r\n2.网上审核:考点网上审核时间与报名时间相同。\r\n\r\n3.网上缴费:2023年12月26日(星期二)10:00--2024年1月6日(星期六)17:00。\r\n\r\n4.准考证打印:具体打印时间请以报名网站公布为准。\r\n\r\n(二)考试时间:2024年3月23日至24日。\r\n\r\n二、报名方式及报名网址\r\n\r\n考生登录教育部教育考试院公布的考生报名网站进行网上报名、缴费及打印准考证。报名网址入口(公网):https://ncre-bm.neea.cn。\r\n\r\n(一)考生报名要求\r\n\r\n1.报名者不受年龄、职业、学历等背景的限制,均可根据自己学习情况和实际能力选考相应的级别和科目。同次考试同一考生只能在一个省级承办机构的一个考点报名,最多可报三个科目,且不允许重复报考同一个科目。\r\n\r\n2.考生本人在规定时间内登录网站进行报名,按操作程序及要求输入报名信息和上传照片并申请审核。经审核通过后,直接在网上缴纳报名考试费。\r\n\r\n3.考生必须认真填报信息自行确认,并按规定要求上传照片。如果填报信息有误,责任自负。考生上传照片即为准考证上的照片,若不符合规定或无法确认为考生本人的,考生将无法参加考试。\r\n\r\n(二)照片信息标准\r\n\r\n1.照片应为考生本人近期正面免冠彩色证件照。\r\n\r\n2.成像区上下要求头上部空1/10,头部占7/10,肩部占1/5,左右各空1/10。采集的图象大小最小为192×144(高×宽),成像区大小为48mm×33mm(高×宽)。\r\n\r\n3.照片文件应为jpg格式。', 'https://p2.itc.cn/q_70/images03/20200731/1d609f213507434fa9c3797dd9805d16.jpeg', '2024-01-08 18:09:57', '2024-01-08 18:10:21');
INSERT INTO `notice` VALUES ('5', '2024年3月全国计算机等级考试报名', '按照教育部教育考试院相关通知精神,为做好我省2024年3月全国计算机等级考试(NCRE)报名工作,贵阳人文科技学院根据贵州省招生考试院工作安排,现就我校有关事项通知如下:\r\n\r\n一、报名及考试时间\r\n\r\n(一)报名时间:2023年12月26日10时至2024年1月5日17时。具体时间安排如下:\r\n\r\n1.网上注册报名:2023年12月26日(星期二)10:00--2024年1月5日(星期五)17:00。\r\n\r\n2.网上审核:考点网上审核时间与报名时间相同。\r\n\r\n3.网上缴费:2023年12月26日(星期二)10:00--2024年1月6日(星期六)17:00。\r\n\r\n4.准考证打印:具体打印时间请以报名网站公布为准。\r\n\r\n(二)考试时间:2024年3月23日至24日。\r\n\r\n二、报名方式及报名网址\r\n\r\n考生登录教育部教育考试院公布的考生报名网站进行网上报名、缴费及打印准考证。报名网址入口(公网):https://ncre-bm.neea.cn。\r\n\r\n(一)考生报名要求\r\n\r\n1.报名者不受年龄、职业、学历等背景的限制,均可根据自己学习情况和实际能力选考相应的级别和科目。同次考试同一考生只能在一个省级承办机构的一个考点报名,最多可报三个科目,且不允许重复报考同一个科目。\r\n\r\n2.考生本人在规定时间内登录网站进行报名,按操作程序及要求输入报名信息和上传照片并申请审核。经审核通过后,直接在网上缴纳报名考试费。\r\n\r\n3.考生必须认真填报信息自行确认,并按规定要求上传照片。如果填报信息有误,责任自负。考生上传照片即为准考证上的照片,若不符合规定或无法确认为考生本人的,考生将无法参加考试。\r\n\r\n(二)照片信息标准\r\n\r\n1.照片应为考生本人近期正面免冠彩色证件照。\r\n\r\n2.成像区上下要求头上部空1/10,头部占7/10,肩部占1/5,左右各空1/10。采集的图象大小最小为192×144(高×宽),成像区大小为48mm×33mm(高×宽)。\r\n\r\n3.照片文件应为jpg格式。', 'https://p2.itc.cn/q_70/images03/20200731/1d609f213507434fa9c3797dd9805d16.jpeg', '2024-01-08 18:09:57', '2024-01-08 18:10:21');
INSERT INTO `notice` VALUES ('6', '2024年3月全国计算机等级考试报名', '按照教育部教育考试院相关通知精神,为做好我省2024年3月全国计算机等级考试(NCRE)报名工作,贵阳人文科技学院根据贵州省招生考试院工作安排,现就我校有关事项通知如下:\r\n\r\n一、报名及考试时间\r\n\r\n(一)报名时间:2023年12月26日10时至2024年1月5日17时。具体时间安排如下:\r\n\r\n1.网上注册报名:2023年12月26日(星期二)10:00--2024年1月5日(星期五)17:00。\r\n\r\n2.网上审核:考点网上审核时间与报名时间相同。\r\n\r\n3.网上缴费:2023年12月26日(星期二)10:00--2024年1月6日(星期六)17:00。\r\n\r\n4.准考证打印:具体打印时间请以报名网站公布为准。\r\n\r\n(二)考试时间:2024年3月23日至24日。\r\n\r\n二、报名方式及报名网址\r\n\r\n考生登录教育部教育考试院公布的考生报名网站进行网上报名、缴费及打印准考证。报名网址入口(公网):https://ncre-bm.neea.cn。\r\n\r\n(一)考生报名要求\r\n\r\n1.报名者不受年龄、职业、学历等背景的限制,均可根据自己学习情况和实际能力选考相应的级别和科目。同次考试同一考生只能在一个省级承办机构的一个考点报名,最多可报三个科目,且不允许重复报考同一个科目。\r\n\r\n2.考生本人在规定时间内登录网站进行报名,按操作程序及要求输入报名信息和上传照片并申请审核。经审核通过后,直接在网上缴纳报名考试费。\r\n\r\n3.考生必须认真填报信息自行确认,并按规定要求上传照片。如果填报信息有误,责任自负。考生上传照片即为准考证上的照片,若不符合规定或无法确认为考生本人的,考生将无法参加考试。\r\n\r\n(二)照片信息标准\r\n\r\n1.照片应为考生本人近期正面免冠彩色证件照。\r\n\r\n2.成像区上下要求头上部空1/10,头部占7/10,肩部占1/5,左右各空1/10。采集的图象大小最小为192×144(高×宽),成像区大小为48mm×33mm(高×宽)。\r\n\r\n3.照片文件应为jpg格式。', 'https://p2.itc.cn/q_70/images03/20200731/1d609f213507434fa9c3797dd9805d16.jpeg', '2024-01-08 18:09:57', '2024-01-08 18:10:21');
INSERT INTO `notice` VALUES ('7', '2024年3月全国计算机等级考试报名', '按照教育部教育考试院相关通知精神,为做好我省2024年3月全国计算机等级考试(NCRE)报名工作,贵阳人文科技学院根据贵州省招生考试院工作安排,现就我校有关事项通知如下:\r\n\r\n一、报名及考试时间\r\n\r\n(一)报名时间:2023年12月26日10时至2024年1月5日17时。具体时间安排如下:\r\n\r\n1.网上注册报名:2023年12月26日(星期二)10:00--2024年1月5日(星期五)17:00。\r\n\r\n2.网上审核:考点网上审核时间与报名时间相同。\r\n\r\n3.网上缴费:2023年12月26日(星期二)10:00--2024年1月6日(星期六)17:00。\r\n\r\n4.准考证打印:具体打印时间请以报名网站公布为准。\r\n\r\n(二)考试时间:2024年3月23日至24日。\r\n\r\n二、报名方式及报名网址\r\n\r\n考生登录教育部教育考试院公布的考生报名网站进行网上报名、缴费及打印准考证。报名网址入口(公网):https://ncre-bm.neea.cn。\r\n\r\n(一)考生报名要求\r\n\r\n1.报名者不受年龄、职业、学历等背景的限制,均可根据自己学习情况和实际能力选考相应的级别和科目。同次考试同一考生只能在一个省级承办机构的一个考点报名,最多可报三个科目,且不允许重复报考同一个科目。\r\n\r\n2.考生本人在规定时间内登录网站进行报名,按操作程序及要求输入报名信息和上传照片并申请审核。经审核通过后,直接在网上缴纳报名考试费。\r\n\r\n3.考生必须认真填报信息自行确认,并按规定要求上传照片。如果填报信息有误,责任自负。考生上传照片即为准考证上的照片,若不符合规定或无法确认为考生本人的,考生将无法参加考试。\r\n\r\n(二)照片信息标准\r\n\r\n1.照片应为考生本人近期正面免冠彩色证件照。\r\n\r\n2.成像区上下要求头上部空1/10,头部占7/10,肩部占1/5,左右各空1/10。采集的图象大小最小为192×144(高×宽),成像区大小为48mm×33mm(高×宽)。\r\n\r\n3.照片文件应为jpg格式。', 'https://p2.itc.cn/q_70/images03/20200731/1d609f213507434fa9c3797dd9805d16.jpeg', '2024-01-08 18:09:57', '2024-01-08 18:10:21');
INSERT INTO `notice` VALUES ('8', '2024年3月全国计算机等级考试报名', '按照教育部教育考试院相关通知精神,为做好我省2024年3月全国计算机等级考试(NCRE)报名工作,贵阳人文科技学院根据贵州省招生考试院工作安排,现就我校有关事项通知如下:\r\n\r\n一、报名及考试时间\r\n\r\n(一)报名时间:2023年12月26日10时至2024年1月5日17时。具体时间安排如下:\r\n\r\n1.网上注册报名:2023年12月26日(星期二)10:00--2024年1月5日(星期五)17:00。\r\n\r\n2.网上审核:考点网上审核时间与报名时间相同。\r\n\r\n3.网上缴费:2023年12月26日(星期二)10:00--2024年1月6日(星期六)17:00。\r\n\r\n4.准考证打印:具体打印时间请以报名网站公布为准。\r\n\r\n(二)考试时间:2024年3月23日至24日。\r\n\r\n二、报名方式及报名网址\r\n\r\n考生登录教育部教育考试院公布的考生报名网站进行网上报名、缴费及打印准考证。报名网址入口(公网):https://ncre-bm.neea.cn。\r\n\r\n(一)考生报名要求\r\n\r\n1.报名者不受年龄、职业、学历等背景的限制,均可根据自己学习情况和实际能力选考相应的级别和科目。同次考试同一考生只能在一个省级承办机构的一个考点报名,最多可报三个科目,且不允许重复报考同一个科目。\r\n\r\n2.考生本人在规定时间内登录网站进行报名,按操作程序及要求输入报名信息和上传照片并申请审核。经审核通过后,直接在网上缴纳报名考试费。\r\n\r\n3.考生必须认真填报信息自行确认,并按规定要求上传照片。如果填报信息有误,责任自负。考生上传照片即为准考证上的照片,若不符合规定或无法确认为考生本人的,考生将无法参加考试。\r\n\r\n(二)照片信息标准\r\n\r\n1.照片应为考生本人近期正面免冠彩色证件照。\r\n\r\n2.成像区上下要求头上部空1/10,头部占7/10,肩部占1/5,左右各空1/10。采集的图象大小最小为192×144(高×宽),成像区大小为48mm×33mm(高×宽)。\r\n\r\n3.照片文件应为jpg格式。', 'https://p2.itc.cn/q_70/images03/20200731/1d609f213507434fa9c3797dd9805d16.jpeg', '2024-01-08 18:09:57', '2024-01-08 18:10:21');
INSERT INTO `notice` VALUES ('9', '2024年3月全国计算机等级考试报名', '按照教育部教育考试院相关通知精神,为做好我省2024年3月全国计算机等级考试(NCRE)报名工作,贵阳人文科技学院根据贵州省招生考试院工作安排,现就我校有关事项通知如下:\r\n\r\n一、报名及考试时间\r\n\r\n(一)报名时间:2023年12月26日10时至2024年1月5日17时。具体时间安排如下:\r\n\r\n1.网上注册报名:2023年12月26日(星期二)10:00--2024年1月5日(星期五)17:00。\r\n\r\n2.网上审核:考点网上审核时间与报名时间相同。\r\n\r\n3.网上缴费:2023年12月26日(星期二)10:00--2024年1月6日(星期六)17:00。\r\n\r\n4.准考证打印:具体打印时间请以报名网站公布为准。\r\n\r\n(二)考试时间:2024年3月23日至24日。\r\n\r\n二、报名方式及报名网址\r\n\r\n考生登录教育部教育考试院公布的考生报名网站进行网上报名、缴费及打印准考证。报名网址入口(公网):https://ncre-bm.neea.cn。\r\n\r\n(一)考生报名要求\r\n\r\n1.报名者不受年龄、职业、学历等背景的限制,均可根据自己学习情况和实际能力选考相应的级别和科目。同次考试同一考生只能在一个省级承办机构的一个考点报名,最多可报三个科目,且不允许重复报考同一个科目。\r\n\r\n2.考生本人在规定时间内登录网站进行报名,按操作程序及要求输入报名信息和上传照片并申请审核。经审核通过后,直接在网上缴纳报名考试费。\r\n\r\n3.考生必须认真填报信息自行确认,并按规定要求上传照片。如果填报信息有误,责任自负。考生上传照片即为准考证上的照片,若不符合规定或无法确认为考生本人的,考生将无法参加考试。\r\n\r\n(二)照片信息标准\r\n\r\n1.照片应为考生本人近期正面免冠彩色证件照。\r\n\r\n2.成像区上下要求头上部空1/10,头部占7/10,肩部占1/5,左右各空1/10。采集的图象大小最小为192×144(高×宽),成像区大小为48mm×33mm(高×宽)。\r\n\r\n3.照片文件应为jpg格式。', 'https://p2.itc.cn/q_70/images03/20200731/1d609f213507434fa9c3797dd9805d16.jpeg', '2024-01-08 18:09:57', '2024-01-08 18:10:21');

-- ----------------------------
-- Table structure for question
-- ----------------------------
DROP TABLE IF EXISTS `question`;
CREATE TABLE `question`  (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '问题ID',
  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '问题内容',
  `subject_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '关联的课程ID',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '提问表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of question
-- ----------------------------
INSERT INTO `question` VALUES ('38f8bcb74a9e7f6a9cf515a8f3005163', '什么是IOC?', '13', '2024-01-20 03:00:12', '2024-01-20 03:00:12');
INSERT INTO `question` VALUES ('60dfe8fee8143bf9d66af7373cdf5a34', '问题1', '13', '2024-01-20 04:25:42', '2024-01-20 04:25:42');
INSERT INTO `question` VALUES ('a93149efc4a9068fa0ed029785ac5fef', '面向对象的三大特征分别指的是?', '13', '2024-01-20 03:00:36', '2024-01-20 03:00:36');
INSERT INTO `question` VALUES ('ae68f6022bff6a88ffbe033f11fa27f0', '第一个课堂问题', '1', '2024-01-21 18:24:36', '2024-01-21 18:24:36');
INSERT INTO `question` VALUES ('b6385a1026d23b1728de0096535ca34c', '什么是AOP?', '13', '2024-01-20 03:00:26', '2024-01-20 03:00:26');

-- ----------------------------
-- Table structure for reply
-- ----------------------------
DROP TABLE IF EXISTS `reply`;
CREATE TABLE `reply`  (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '回复id',
  `user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户id',
  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '内容',
  `question_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '问题id',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '回复表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of reply
-- ----------------------------
INSERT INTO `reply` VALUES ('09e551005c2fad27774b1d451b95cfa0', '558019', '多态、封装、继承', 'a93149efc4a9068fa0ed029785ac5fef', '2024-01-21 02:35:24', '2024-01-21 02:35:24');
INSERT INTO `reply` VALUES ('1cb29593dbf196bf9b372323b43d28f7', '558019', '测试作答', '38f8bcb74a9e7f6a9cf515a8f3005163', '2024-01-20 04:32:42', '2024-01-20 04:32:42');
INSERT INTO `reply` VALUES ('2f4c697f611995f709334b266060b339', '558019', '不知道说什么', '38f8bcb74a9e7f6a9cf515a8f3005163', '2024-01-20 03:50:50', '2024-01-20 03:50:50');
INSERT INTO `reply` VALUES ('9ae0a1a404c77ad2d0c8d8d32fbfaaf9', '558019', '那就随便说点吧', '38f8bcb74a9e7f6a9cf515a8f3005163', '2024-01-20 03:50:57', '2024-01-20 03:50:57');
INSERT INTO `reply` VALUES ('f0d219a29827f1ef40f814f18671e9d8', '558019', '这是问题1的回复', '60dfe8fee8143bf9d66af7373cdf5a34', '2024-01-21 02:29:17', '2024-01-21 02:29:17');
INSERT INTO `reply` VALUES ('f5103364279f8381aa060a8941bc1ba3', '22002', '面向对象的三大特征是封装、继承和多态,它们分别强调了对象的属性封装、类之间的继承关系以及多态性,使得代码更加灵活、可复用和易于维护。', 'a93149efc4a9068fa0ed029785ac5fef', '2024-01-21 18:37:05', '2024-01-21 18:37:05');

-- ----------------------------
-- Table structure for subject
-- ----------------------------
DROP TABLE IF EXISTS `subject`;
CREATE TABLE `subject`  (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '课程id',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '课程名称',
  `user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '教师ID',
  `grade` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '年级',
  `college` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学院',
  `room` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '班级',
  `img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '封面',
  `introduce` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '课程简介',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '课程表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of subject
-- ----------------------------
INSERT INTO `subject` VALUES ('1', 'Java程序设计', '22007', '2021', '大数据与信息工程学院', '软件工程', 'https://img1.baidu.com/it/u=4242503118,2660944768&fm=253&fmt=auto&app=120&f=JPEG?w=700&h=408', '\r\nJava程序设计是江苏财经职业技术学院于2019年9月23日首次在中国大学MOOC开设的慕课课程。该课程授课教师为笪林梅、傅伟玉。据2021年3月中国大学MOOC官网显示,该课程已开课次4次。', '2024-01-05 23:10:21', '2024-01-05 23:10:24');
INSERT INTO `subject` VALUES ('13', 'SpringBoot实战', '558019', '2021', '大数据与信息工程学院', '软件工程', 'http://localhost:8080/images/0f621d24-4fde-4.web', 'Spring Boot是一个由Pivotal团队提供的全新框架,旨在简化Spring应用的初始搭建和开发过程。它采用特定的方式来进行配置,使得开发人员不再需要定义样板化的配置。通过整合各种框架和提供开箱即用的设置,Spring Boot允许开发人员快速构建独立、产品级别的Spring应用,并且大多数应用只需要很少的Spring配置。如需获取更多关于SpringBoot的详细信息,建议前往其官网或咨询专业编程人员。', '2024-01-13 01:31:29', '2024-01-13 01:33:14');
INSERT INTO `subject` VALUES ('1745858560078479361', 'C++程序设计', '558019', '2021', '大数据与信息工程学院', '软件工程', 'http://localhost:8080/images/3a9d1da4-4c3b-4.web', 'C++程序设计是一门重要的编程语言课程,它结合了C语言的底层特性和高级语言的特点,使得程序员可以使用更少的代码来表达自己的想法。在C++程序设计课程中,你将学习如何使用C++编写程序,包括基本的语法、数据类型、控制结构、函数、指针、面向对象编程等概念。', '2024-01-13 01:21:32', '2024-01-13 01:32:29');
INSERT INTO `subject` VALUES ('1745858886827343873', 'Docker实战', '558019', '2021', '大数据与信息工程学院', '计算机科学与技术', 'http://localhost:8080/images/5084cb88-6dff-4.web', 'Docker是一种开源的应用容器引擎,旨在实现对应用及其依赖包的封装、分发、部署和运行等全生命周期的管理。其主要目标是实现“Build, Ship and Run Any App, Anywhere”,即让任何应用都能在任何地方做到一次封装,到处运行。\n\nDocker通过将应用运行在Docker容器中,实现了跨平台、跨服务器的应用部署。Docker容器是可移植的,可以在任何运行Docker的操作系统上运行,从而简化了应用的部署和管理。', '2024-01-13 01:22:50', '2024-01-13 01:32:36');
INSERT INTO `subject` VALUES ('1745859464227815426', 'Linux入门', '558019', '2021', '大数据与信息工程学院', '软件工程', 'http://localhost:8080/images/326b1a96-d1c2-4.web', 'Linux是一种免费使用和自由传播的类Unix操作系统,其名称来源于Unix操作系统。Linux是由林纳斯·托瓦兹(Linus Torvalds)于1991年首次发布的,并逐渐发展成为全球广泛使用的操作系统之一。Linux继承了Unix的设计思想,是一个基于POSIX的多用户、多任务、多线程的操作系统,提供了一个稳定、高效、安全的系统环境。\n\nLinux系统具有可移植性、模块化设计、可定制性等特点,可以在各种计算机硬件设备上运行,包括桌面计算机、服务器、智能手机、平板电脑等。Linux系统具有广泛的软件支持和社区支持,可以自由定制和修改,因此被广泛应用于软件开发、服务器部署、云计算等领域。', '2024-01-13 01:25:07', '2024-01-13 01:32:45');
INSERT INTO `subject` VALUES ('1745859663541141505', 'mongoDB教程', '558019', '2021', '大数据与信息工程学院', '计算机科学与技术', 'http://localhost:8080/images/c699dbe6-943e-4.jpg', 'MongoDB是一个基于分布式文件存储的数据库,使用C++语言编写。它旨在为Web应用程序提供可扩展的高性能数据存储解决方案,并且是一个介于关系数据库和非关系数据库之间的产品,具有类似JSON的BSON格式的数据结构。MongoDB支持丰富的查询语言,具有强大的索引和查询功能,并且可以轻松地扩展到多个节点和数据中心。', '2024-01-13 01:25:55', '2024-01-13 01:32:57');
INSERT INTO `subject` VALUES ('1745860038025379842', 'MyBatis实战课程', '558019', '2021', '大数据与信息工程学院', '计算机科学与技术', 'http://localhost:8080/images/23a0fbdf-df50-4.web', 'MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。通过配置文件和注解方式将接口与SQL语句绑定,开发人员可以灵活地操作数据库,无需关注JDBC的繁琐细节。MyBatis降低了耦合度,提高了开发效率,广泛应用于各种Java应用中。', '2024-01-13 01:27:24', '2024-01-13 01:33:00');
INSERT INTO `subject` VALUES ('1745860312483856386', 'Java程序设计', '558019', '2021', '大数据与信息工程学院', '软件工程', 'http://localhost:8080/images/605c3a3a-a149-4.jpg', 'Java是一门面向对象的编程语言,具有简单性、面向对象、可移植性、高性能、安全稳定等特点。它不仅吸收了C++语言的优点,还摒弃了难以理解的多个继承和指针等概念,使得Java语言既强大又易于使用。Java广泛应用于Web开发、移动应用、大数据处理等领域,是一个值得学习的编程语言。', '2024-01-13 01:28:30', '2024-01-13 01:33:06');
INSERT INTO `subject` VALUES ('1745860640193216514', '数据结构与算法', '558019', '2021', '大数据与信息工程学院', '计算机科学与技术', 'http://localhost:8080/images/e73ddac8-7158-4.web', '数据结构与算法是计算机科学的核心基础,它们研究如何有效地组织、存储和处理数据,以及如何通过明确定义的步骤来解决计算问题。数据结构关注数据的逻辑结构和物理结构,而算法则关注如何利用这些结构来解决特定问题,二者共同构成了高效、可靠软件设计的基石。', '2024-01-13 01:29:48', '2024-01-13 01:33:10');
INSERT INTO `subject` VALUES ('1745861260107153410', 'python程序设计', '558019', '2021', '大数据与信息工程学院', '计算机科学与技术', 'http://localhost:8080/images/66babda0-1b2b-4.web', 'Python是一种解释型、交互式的编程语言,以其简洁的语法和强大的功能库而著称。它广泛应用于数据分析、人工智能、Web开发等多个领域,并拥有庞大的开发者社区,为使用者提供丰富的资源和支持。', '2024-01-13 01:32:16', '2024-01-13 01:33:18');
INSERT INTO `subject` VALUES ('2', 'SpringCloud入门与实践', '22007', '2021', '大数据与信息工程学院', '软件工程', 'https://img0.baidu.com/it/u=4096551373,629120265&fm=253&fmt=auto&app=138&f=JPEG?w=480&h=270', 'Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。', '2024-01-05 23:11:46', '2024-01-05 23:11:48');
INSERT INTO `subject` VALUES ('3', 'Vue3+ElementPlus', '558019', '2021', '大数据与信息工程学院', '软件工程', 'http://localhost:8080/images/8e5ef698-cb06-4.web', '随着前后端分离开发模式的出现,前端框架Vue、React、Angular相关生态的不断完善,移动设备的普及,移动端Web App的开发成为主流,越来越多的大学逐步开设Web相关的课程。本书是一本为初学前端的学生量身定制的移动端Web开发入门教材,适合对移动端Web开发了解不多、没有系统学过前端开发,但对前端编程感兴趣的读者学习使用。', '2024-01-05 23:11:51', '2024-01-13 01:16:51');

-- ----------------------------
-- Table structure for subject_user
-- ----------------------------
DROP TABLE IF EXISTS `subject_user`;
CREATE TABLE `subject_user`  (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `subject_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '科目id',
  `user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户id',
  `sign_in` int NULL DEFAULT NULL COMMENT '签到状态',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '课程——用户' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of subject_user
-- ----------------------------
INSERT INTO `subject_user` VALUES ('001', '1745860640193216514', '22001', 0);
INSERT INTO `subject_user` VALUES ('002', '1745860640193216514', '22002', 0);
INSERT INTO `subject_user` VALUES ('003', '1745860640193216514', '22003', 0);
INSERT INTO `subject_user` VALUES ('004', '1745860640193216514', '22004', 0);
INSERT INTO `subject_user` VALUES ('005', '1745860640193216514', '22005', 0);
INSERT INTO `subject_user` VALUES ('006', '1745860640193216514', '22006', 0);
INSERT INTO `subject_user` VALUES ('007', '13', '22001', 0);
INSERT INTO `subject_user` VALUES ('008', '13', '22002', 0);
INSERT INTO `subject_user` VALUES ('009', '13', '22003', 0);
INSERT INTO `subject_user` VALUES ('010', '13', '22004', 0);
INSERT INTO `subject_user` VALUES ('011', '13', '22005', 0);
INSERT INTO `subject_user` VALUES ('012', '13', '22006', 0);
INSERT INTO `subject_user` VALUES ('1', '1', '22001', 1);
INSERT INTO `subject_user` VALUES ('10', '3', '22002', 0);
INSERT INTO `subject_user` VALUES ('11', '3', '22006', 0);
INSERT INTO `subject_user` VALUES ('12', '3', '22005', 0);
INSERT INTO `subject_user` VALUES ('13', '1', '558019', 0);
INSERT INTO `subject_user` VALUES ('28cf7a8b03f67f732fe03007249b1e45', '13', '22001', 0);
INSERT INTO `subject_user` VALUES ('3', '1', '22002', 0);
INSERT INTO `subject_user` VALUES ('4', '1', '22003', 0);
INSERT INTO `subject_user` VALUES ('6', '2', '22002', 0);
INSERT INTO `subject_user` VALUES ('7', '2', '22003', 0);
INSERT INTO `subject_user` VALUES ('73b9e428ed483e8776995782565b540b', '1745860640193216514', '22001', 0);
INSERT INTO `subject_user` VALUES ('8', '2', '22004', 0);
INSERT INTO `subject_user` VALUES ('8729094e64ad99c888302613006b186d', '1745859663541141505', '558019', 0);
INSERT INTO `subject_user` VALUES ('9', '3', '22001', 0);
INSERT INTO `subject_user` VALUES ('9f4f41e45f4708596e588ef3b5ea523a', '1745858560078479361', '558019', 1);
INSERT INTO `subject_user` VALUES ('a73aeb519a782050073a14774e5ddd4f', '1745858886827343873', '558019', 0);

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户ID',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户名',
  `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '邮箱',
  `number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号码',
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '密码',
  `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '性别',
  `img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户头像',
  `introduce` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '个人简介',
  `grade` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '年级',
  `college` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学院',
  `room` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '专业',
  `identity` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '身份',
  `create_time` datetime NULL DEFAULT NULL,
  `update_time` datetime NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('22001', '王双杰', '2970922605@qq.com', '18690738129', '123456', '男', 'http://localhost:8080/images/17.jpg', '山川可有惜', '2021', '大数据与信息工程学院', '软件工程', '2', '2024-01-05 22:27:44', '2024-01-05 22:27:47');
INSERT INTO `user` VALUES ('22002', '王伟', '3396107023@qq.com', '15329425297', '123456', '男', 'http://localhost:8080/images/10.jpg', '\r\n唯有万事沧桑才能盛世绽放\r\n眼中有泪很心酸,从此简简又单单\r\n眼泪只是为青春洗礼\r\n玫瑰即使凋零 也高贵于路边的野花', '2021', '商学院', '电子商务', '2', '2024-01-05 22:34:45', '2024-01-05 22:34:58');
INSERT INTO `user` VALUES ('22003', '夏任凯', '1253925634@qq.com', '18198518177', '123456', '男', 'http://localhost:8080/images/6.jpg', '唯你最深得我意 也只你最不识抬举', '2021', '商学院', '电子商务', '2', '2024-01-05 22:34:48', '2024-01-05 22:35:00');
INSERT INTO `user` VALUES ('22004', '吴禹慷', '762503782@qq.com', '15088423657', '123456', '男', 'http://localhost:8080/images/16.jpg', '从此之后 我遇见青山 遇见白雾', '2021', '文学院', '汉语言文学', '2', '2024-01-05 22:34:50', '2024-01-05 22:35:03');
INSERT INTO `user` VALUES ('22005', '小花', '42005755@qq.com', '1684225701', '123456', '女', 'http://localhost:8080/images/28.jpg', '不说之前,不谈以后', '2021', '文学院', '汉语言文学', '2', '2024-01-05 22:34:52', '2024-01-05 22:35:05');
INSERT INTO `user` VALUES ('22006', '小美', '74684430@qq.com', '15244309866', '123456', '女', 'http://localhost:8080/images/32.jpg', '我想每天都能见到你 毕竟我真的很粘人', '2021', '文学院', '汉语言文学', '2', '2024-01-05 22:34:55', '2024-01-05 22:35:08');
INSERT INTO `user` VALUES ('22007', '蔡徐坤', '1120536@qq.com', '15045302428', '123456', '男', 'https://img13.360buyimg.com/n1/jfs/t1/139332/38/29036/16835/63073a27E91184c00/6f341eeb9f3d6d18.jpg', '你从哪里来,要到哪里去', '2021', '法学院', NULL, '1', '2024-01-05 22:37:20', '2024-01-05 22:37:23');
INSERT INTO `user` VALUES ('558019', '吴秀祥', '734338421@qq.com', '15500000000', 'root', '男', 'http://localhost:8080/images/be687c9a-2455-4.jpg', '人生的道路上,你没有耐心去等待成功,那么你只有用一生去面对失败', '2021', '大数据与信息工程学院', '软件工程', '0', '2024-01-05 22:25:06', '2024-01-10 00:55:17');

-- ----------------------------
-- Table structure for work1
-- ----------------------------
DROP TABLE IF EXISTS `work1`;
CREATE TABLE `work1`  (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '作业id',
  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '标题',
  `subject_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '课程id',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '作业表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of work1
-- ----------------------------
INSERT INTO `work1` VALUES ('10a7172a53f99381fa5304aa4a1e9a66', '使用springBoot完成“图书管理系统”案例', '13', '2024-01-21 03:20:55', '2024-01-21 03:20:55');
INSERT INTO `work1` VALUES ('3c6bca0d02cab1f4a7ad0a811ad21f2e', '完成课本p23 习题,打包后提交上来', '1', '2024-01-21 18:31:26', '2024-01-21 18:31:26');
INSERT INTO `work1` VALUES ('668d25cb86542c19625017f699b49974', '完成课后习题3-1', '13', '2024-01-21 02:58:41', '2024-01-21 02:58:41');
INSERT INTO `work1` VALUES ('89bb1e70b669eba1378d01e81c17fcbe', '完成课后习题3-3', '13', '2024-01-21 02:58:50', '2024-01-21 02:58:50');
INSERT INTO `work1` VALUES ('a9fc6d9990969b9bb92fe8241dbeabb2', '完成课后习题3-2', '13', '2024-01-21 02:58:46', '2024-01-21 02:58:46');
INSERT INTO `work1` VALUES ('d992a6262411c29ddf900548a30b4d1c', '完成课本P16 章节测试', '13', '2024-01-21 02:59:25', '2024-01-21 02:59:25');

-- ----------------------------
-- Table structure for work2
-- ----------------------------
DROP TABLE IF EXISTS `work2`;
CREATE TABLE `work2`  (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '提交作业id',
  `file` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件名称',
  `user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户id',
  `work_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '作业id',
  `create_time` datetime NULL DEFAULT NULL COMMENT '提交时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '学生提交作业' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of work2
-- ----------------------------
INSERT INTO `work2` VALUES ('1748803073788973057', '吴秀祥【1fd2f24】ajsx请求.jpg', '558019', '668d25cb86542c19625017f699b49974', '2024-01-21 04:21:59', '2024-01-21 04:21:59');
INSERT INTO `work2` VALUES ('1748803888985509889', '吴秀祥【7988705】将对象属性转换为指定json属性.jpg', '558019', '668d25cb86542c19625017f699b49974', '2024-01-21 04:25:13', '2024-01-21 04:25:13');
INSERT INTO `work2` VALUES ('1748803987417436161', '吴秀祥【47ecfab】QQ截图20231227162646.jpg', '558019', '668d25cb86542c19625017f699b49974', '2024-01-21 04:25:36', '2024-01-21 04:25:36');
INSERT INTO `work2` VALUES ('1748805081157701634', '吴秀祥【e9ee9c1】线性表插入.png', '558019', '89bb1e70b669eba1378d01e81c17fcbe', '2024-01-21 04:29:57', '2024-01-21 04:29:57');
INSERT INTO `work2` VALUES ('1748805081484857345', '吴秀祥【d8d288e】线性表插入.png', '558019', '89bb1e70b669eba1378d01e81c17fcbe', '2024-01-21 04:29:57', '2024-01-21 04:29:57');
INSERT INTO `work2` VALUES ('1749013216090742786', '王双杰【2858dfa】1.本章课程目标.md', '22001', '668d25cb86542c19625017f699b49974', '2024-01-21 18:17:00', '2024-01-21 18:17:00');
INSERT INTO `work2` VALUES ('1749018515560292353', '王伟【4f94ad5】20.Map集合.md', '22002', '668d25cb86542c19625017f699b49974', '2024-01-21 18:38:04', '2024-01-21 18:38:04');

SET FOREIGN_KEY_CHECKS = 1;

后端项目

在这里插入图片描述

前端项目

在这里插入图片描述

三、设计优点和创新点

优点:

  1. 快速开发:Spring Boot和Vue3都提供了丰富的开发工具和配置选项,可以快速搭建一个具有基本功能的教学辅助系统。
  2. 简化配置:Spring Boot可以自动配置大量的组件和依赖,Vue3则采用了组件化的开发方式,使开发人员可以集中精力编写业务逻辑代码,而不必过多关注底层框架的配置。
  3. 易于维护:Spring Boot提供了监控应用程序健康状况的工具,Vue3则提供了响应式系统和组合API,使代码更加易于维护和扩展。
  4. 性能提升:Vue3采用了全新的虚拟DOM实现和编译优化,提高了渲染性能。同时,Spring Boot也提供了性能优化和监控的功能。
  5. 支持多语言:系统支持多语言,可以满足不同国家和地区的教学需求。
  6. 个性化学习:系统可以根据学生的学习情况和需求,提供个性化的学习路径和推荐资源。
  7. 实时互动:系统提供了教师和学生之间的实时互动功能,如在线答疑、讨论区等。
  8. 数据分析:系统可以收集和分析学生的学习数据,帮助教师了解学生的学习情况,及时进行调整和指导。
  9. 易于部署:由于Spring Boot和Vue3都是流行的技术栈,因此该系统可以轻松部署到各种环境中,包括云环境和本地环境。

创新点

  1. 基于组件化的开发方式:Vue3采用了组件化的开发方式,使组件的复用和开发更加灵活。同时,Vue3还引入了组合式API,使代码更加易于理解和维护。
  2. 微服务架构:系统采用了微服务架构,将不同的功能模块分开开发和维护,如课程管理、作业批改、在线评测等。这种架构方式可以提高系统的可扩展性和可维护性,同时也降低了系统的复杂度。
  3. 实时互动功能:系统提供了实时互动功能,如在线答疑、讨论区等。这种功能可以增强学生的参与感和学习兴趣,提高教学效果。
  4. 自动化测试:系统采用了自动化测试的方式,包括单元测试和集成测试,确保了系统的质量。这不仅可以节省大量的人力和时间,而且可以提高测试的准确性和可靠性。
  5. 多语言支持:系统支持多语言,可以满足不同国家和地区的教学需求。这种功能可以扩大系统的用户群体和使用范围。
  6. 数据分析功能:系统可以收集和分析学生的学习数据,帮助教师了解学生的学习情况,及时进行调整和指导。这种功能可以帮助教师更好地了解学生的学习情况和需求,提高教学质量。
  7. 扩展性和灵活性:由于Spring Boot和Vue3都具有良好的扩展性和灵活性,因此该系统可以根据需求进行扩展和定制。这种功能可以满足不同用户的需求和场景,提高系统的实用性和用户体验。

四、功能结构图

需求结构

在这里插入图片描述

系统功能结构

在这里插入图片描述

五、页面截图

登录/注册页

在这里插入图片描述
在这里插入图片描述

首页(公告页)

在这里插入图片描述

我加入的课程

在这里插入图片描述

我创建的课程

在这里插入图片描述

ChatAI

在这里插入图片描述

关于网站
在这里插入图片描述

在这里插入图片描述

关于作者

在这里插入图片描述

个人中心

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里插入图片描述

课程页

  • 课堂问答

    在这里插入图片描述

  • 签到

    在这里插入图片描述

  • 作业

    在这里插入图片描述

  • 成员

    在这里插入图片描述

  • 文件

在这里插入图片描述

  • 课程信息

    在这里插入图片描述

管理员页面

  • 公告管理

    在这里插入图片描述

  • 用户管理

    在这里插入图片描述

  • 课程管理

    在这里插入图片描述

  • 年级管理

    在这里插入图片描述

  • 学院管理

    在这里插入图片描述

  • 班级管理

    在这里插入图片描述

六、关键代码

登录、注册

  • 前端代码

    登录

    <script lang="ts" setup>
    import { ElMessage } from 'element-plus'
    import { postLogin } from '@/apis/login';
    import { useRouter } from 'vue-router';
    import Cookies from 'js-cookie';
    
    //路由对象
    const router = useRouter();
    //需要绑定的数据
    let fromData = { id: "", password: "" }
    
    //忘记密码
    const myMessage = () => {
        ElMessage({
            showClose: true,
            message: '请联系管理员,谢谢!',
            type: 'success',
        })
    }
    
    //点击登录
    const login = () => {
        if (fromData.id === "") {
            ElMessage.error('账号不能为空!');
            return 0;
        } else if (fromData.password === "") {
            ElMessage.error('密码不能为空!');
            return 0;
        } else {
            postLogin(fromData).then(res => {
                if (res.data.code != 200) {//账号验证异常
                    ElMessage.error(res.data.msg);
                } else {
                    ElMessage({
                        message: `登录成功,${res.data.data[0].name}欢迎回家`,
                        type: 'success',
                    })
                    // 设置一个名为"username"的Cookie,值为res.data.data[0].identity,有效期为7天  
                    Cookies.set('identity', res.data.data[0].identity, { expires: 7 });
                    Cookies.set('id', res.data.data[0].id, { expires: 7 });
                    Cookies.set('name', res.data.data[0].name, { expires: 7 });
                    Cookies.set('password',res.data.data[0].password, { expires: 7 })
                    router.push("/");//跳转到首页
                }
    
            })
        }
    }
    </script>
    
    <template>
        <div class="body">
            <div class="box">
                <h2>登录</h2>
                <div class="input-box">
                    <label>账号</label>
                    <input type="text" v-model="fromData.id" />
                </div>
                <div class="input-box">
                    <label>密码</label>
                    <input type="password" v-model="fromData.password" />
                </div>
                <div class="btn-box">
                    <a href="#" @click="myMessage">忘记密码?</a>
                    <div>
                        <button @click="login">登录</button>
                        <button @click="this.$router.push('/sigup');">去注册</button>
                    </div>
                </div>
            </div>
        </div>
    </template>
        
    <style scoped lang='scss'>
    ......
    </style>
    

    注册

    <script setup>
    import { ElMessage } from 'element-plus'
    import { postLogup } from '@/apis/login';
    import { useRouter } from 'vue-router';
    //路由对象
    const router = useRouter();
    //需要绑定的数据
    let fromData = { id: "", password: "", name: "" }
    let password1 = "", password2 = "";
    //提交按钮
    const logup = () => {
        if (fromData.id == "" || fromData.name == "" || password1 == "" || password2 == "") {
            ElMessage.error('输入框都是必填项,不能为空!');
            return 0;
        } else {
            if (password1 === password2) {
                fromData.password = password1;
            } else {
                ElMessage.error('两次密码输入不一致!');
                return 0;
            }
            //请求接口
            postLogup(fromData).then(res=>{
                if(res.data.code==200){
                    ElMessage({
                        message: `注册成功!`,
                        type: 'success',
                    })
                    ElMessage({
                        message: `现在可以登录啦!`,
                        type: 'success',
                    })
                    router.push("/sigin")
                }else{
                    ElMessage.error(res.data.msg);
                }
            })
    
        }
    }
    
    </script>
    
    <template>
        <div class="body">
            <div class="box">
                <h2>注册</h2>
                <div class="input-box">
                    <label>请输入学号</label>
                    <input type="text" v-model="fromData.id" />
                </div>
                <div class="input-box">
                    <label>请输入姓名</label>
                    <input type="text" v-model="fromData.name" />
                </div>
                <div class="input-box">
                    <label>请设置密码</label>
                    <input type="password" v-model="password1" />
                </div>
                <div class="input-box">
                    <label>请确认您的密码</label>
                    <input type="password" v-model="password2" />
                </div>
                <div class="btn-box">
                    <div>
                        <button @click="this.$router.push('/sigin');">去登录</button>
                        <button @click="logup">注册</button>
                    </div>
                </div>
            </div>
        </div>
    </template>
        
    <style scoped lang='scss'>
    。。。。。
    </style>
    
  • 后端代码

    业务层

    ......
    @Service
    public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
        //注入mapper
        @Autowired
        UserMapper userMapper;
        //注入消息对象
        @Autowired
        DataVO<User> dataVO;
        //注入session对象
        @Autowired
        HttpSession session;
        //用于获取端口号和主机地址
        @Autowired
        private Environment environment;
    
        @Override
        public DataVO<User> login(User user) {
            User data = userMapper.selectById(user.getId());
            if (data == null) {//验证账号是否存在
                dataVO.setMsg("用户不存在");
                dataVO.setCode(500);
                dataVO.setCount(0L);
                dataVO.setData(null);
                return dataVO;
            } else if (!data.getPassword().equals(user.getPassword())) {//验证密码是否正确
                dataVO.setMsg("密码错误,请检查账号或密码是否输入正确!");
                dataVO.setCode(500);
                dataVO.setCount(0L);
                dataVO.setData(null);
                return dataVO;
            } else {
                dataVO.setMsg("登录成功!");
                dataVO.setCode(200);
                dataVO.setCount(1L);
                ArrayList<User> users = new ArrayList<>();
                users.add(data);
                dataVO.setData(users);
                //将用户信息保存到session中
                session.setAttribute("id", user.getId());
                session.setAttribute("password", user.getPassword());
                session.setAttribute("identity", user.getIdentity());
                return dataVO;
            }
        }
    
        @Override
        public DataVO<User> logup(User user) {
            User data = userMapper.selectById(user.getId());
            if (data != null) {
                dataVO.setMsg("用户已存在!");
                dataVO.setCode(500);
                dataVO.setCount(0L);
                dataVO.setData(null);
                return dataVO;
            } else {
                user.setIdentity("2");
                int insert = userMapper.insert(user);
                dataVO.setMsg(insert == 1 ? "注册成功" : "注册失败");
                dataVO.setCode(insert == 1 ? 200 : 500);
                dataVO.setCount(0L);
                dataVO.setData(null);
                return dataVO;
            }
        }
    
        @Override
        public DataVO<User> userList(Integer page, Integer limit) {
            //分页01
            IPage<User> userIPage = new Page<>(page, limit);
            //分页02
            IPage<User> result = userMapper.selectPage(userIPage, null);
            //写入消息
            dataVO.setMsg("ok");
            dataVO.setCode(200);
            dataVO.setCount(result.getTotal());
            dataVO.setData(result.getRecords());
            return dataVO;
        }
    
        @Override
        public DataVO<User> userUpdate(User user) {
            int i = userMapper.updateById(user);
            if(i!=0){
                dataVO.setMsg("修改成功!");
                dataVO.setData(null);
                dataVO.setCode(200);
                dataVO.setCount(0L);
            }else {
                dataVO.setMsg("修改失败!");
                dataVO.setData(null);
                dataVO.setCode(500);
                dataVO.setCount(0L);
            }
            return dataVO;
        }
    
        @Override
        public String uploadImg(MultipartFile file) {
            //获取用户id
            String id = (String) session.getAttribute("id");
            //获取主机地址+端口号
            String ip = environment.getProperty("HostAddress");
            String port = environment.getProperty("server.port");
            String HostAddress = ip +":"+port+"/images/";
            //生成uuid
            UUID uuid = UUID.randomUUID();
            String uid = uuid.toString().substring(0, 15);
            //获取的上传文件名
            String fileOldName = file.getOriginalFilename();
            //提取后缀名
            String fileType = fileOldName.split("\\.")[1];
            //拼接新的文件名和文件地址
            String fileNewName = uid+"."+fileType;//新文件名
            String fileAddress = HostAddress + fileNewName;//存放地址
            //开始上传文件
            Upload upload = new Upload();
            upload.uploadFile(file,"i" ,fileNewName);
            //将信息写入数据库
            User user = new User();
            user.setId(id);
            user.setImg(fileAddress);
            userMapper.updateById(user);
            return "图片上传成功!";
        }
    
        @Override
        public DataVO<User> userDelete(String userID) {
            int i = userMapper.deleteById(userID);
            dataVO.setCount(0L);
            dataVO.setData(null);
            if (i!=0){
                dataVO.setMsg("ID为:"+userID+"用户已删除!");
                dataVO.setCode(200);
            }else {
                dataVO.setMsg("用户删除失败!");
                dataVO.setCode(500);
            }
            return dataVO;
        }
    
        @Override
        public String exit() {
            //清除所有session数据
            if (session != null) {
                session.invalidate();//清空session
            }
            return "退出成功";
        }
    
        @Override
        public List<UserSigInVO> getUserSigInVO(String subjectID) {
            return userMapper.getUserSigInVO(subjectID);
        }
    
        @Override
        public List<ReplyUserVO> getReplyUsers(String questionID) {
            return userMapper.getReplyUsers(questionID);
        }
    }
    
    

    mapper

    public interface UserMapper extends BaseMapper<User> {
        //查询签到学生
        @Select("select u.*,s.sign_in as signIn from user as u \n" +
                "inner JOIN subject_user as s on u.id=s.user_id \n" +
                "where u.id in \n" +
                "(select s.user_id from subject_user as s where subject_id=#{subjectID})\n" +
                "and s.subject_id=#{subjectID};")
        @Results({
                @Result(column = "signIn", property = "signIn"),
        })
        List<UserSigInVO> getUserSigInVO(String subjectID);
    
        //查询某个提问回复的学生
        @Select("select u.*,r.content from user as u INNER JOIN \n" +
                "reply as r on u.id = r.user_id\n" +
                "where u.id in (select user_id from reply where question_id = #{questionID}) \n" +
                "and r.question_id = #{questionID};")
        @Results({
                @Result(column = "content", property = "content"),
        })
        List<ReplyUserVO> getReplyUsers(String questionID);
    
    }
    
    

    controller层

    。。。。。。
    @RestController
    @RequestMapping("/user")
    @CrossOrigin(origins = "*")
    public class UserController {
        //注入userService对象
        @Autowired
        IUserService userService;
        //注入session对象
        @Autowired
        HttpSession session;
    
    
    
        @PostMapping("/list")//用户列表
        public DataVO<User> getUser(Integer page, Integer limit){
            return userService.userList(page,limit);
        }
    
        @PostMapping("/login")//登录
        public DataVO<User> login(User user){
            return userService.login(user);
        }
    
        @PostMapping("/logup")//注册
        public DataVO<User> logup(User user){
            return userService.logup(user);
        }
    
        @PostMapping("/update")//修改用户信息
        public DataVO<User> updateUser(User user){
            return userService.userUpdate(user);
        }
    
        @PostMapping("/delete")//删除用户
        public DataVO<User> deleteUser(String id){
            return userService.userDelete(id);
        }
    
        @PostMapping("/exit")//退出
        public String exit(){return userService.exit();}
    
        @PostMapping("/img")//上传头像
        public String uploadImg(MultipartFile file){
            return userService.uploadImg(file);
        }
    
        @PostMapping("/getUserSigInVO")//查询签到的学生
        public List<UserSigInVO> getUserSigInVO(String subjectId){
            return userService.getUserSigInVO(subjectId);
        }
    
        @PostMapping("/getReplyUsers")
        public List<ReplyUserVO> getReplyUsers(String questionID){
            return userService.getReplyUsers(questionID);
        };
    
    }
    
    

其他代码

  • 封装的文件上传工具类

    package com.xu.utlis;
    
    import org.springframework.stereotype.Component;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.File;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    
    @Component
    public class Upload {
        public String uploadFile(MultipartFile file, String fileType, String name) {
            //非空检测
            if (file.isEmpty()) return "空文件!";
            String filePath;
            if (fileType.equals("i")) {
                filePath = "src/main/resources/static/images/" + name;
            } else {
                filePath = "src/main/resources/static/files/" + name;
            }
            //删除原来头像
            File oldImg = new File(filePath);
            if (oldImg.exists()) {
                oldImg.delete();
            }
            try {
                byte[] bytes = file.getBytes();
                Path path = Paths.get(filePath);
                Files.write(path, bytes);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return "上传成功!";
        }
    }
    
    
  • 文件下载接口

        @Override
        public void download(String fileName, HttpServletResponse response) throws IOException {
            //获取文件地址
            String filePath = "src/main/resources/static/files/" + fileName;
            //获得文件
            File file = new File(filePath);
            //设置输出格式
            ServletOutputStream os = response.getOutputStream();
            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
            //任意类型的二进制流数据
            response.setContentType("application/octet-stream");
            //读取文件的字节流
            os.write(FileUtil.readBytes(file));
            os.flush();
            os.close();
        }
    
  • 拦截器

    package com.xu.interceptor;
    
    import jakarta.servlet.http.HttpServletRequest;
    import jakarta.servlet.http.HttpServletResponse;
    import jakarta.servlet.http.HttpSession;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.HandlerInterceptor;
    
    //用户登录拦截器
    @Configuration
    public class LoginInterceptor implements HandlerInterceptor {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            //登录逻辑
            HttpSession session = request.getSession();
            String id = (String) session.getAttribute("id");
            if (id != null) {
                return true;//放行
            }
            System.out.println("当前是非法请求,已被拦截了!拦截器id为:"+id);
            return false;
        }
    }
    
    
  • 注册拦截器和文件映射

    package com.xu.config;
    
    import com.xu.interceptor.LoginInterceptor;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.env.Environment;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    //拦截器(先注释一下)
    
    @Configuration
    public class MyMvcConfig implements WebMvcConfigurer {
        //用于获取配置文件参数
    //    @Autowired
    //    private Environment environment;
    //    String imagesAddress = environment.getProperty("ImagesAddress");
    //    String fileAddress = environment.getProperty("FileAddress");
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(new LoginInterceptor())
                    .addPathPatterns("/**")//拦截所以请求
                    .excludePathPatterns("/user/login", "/user/logup", "/api/**", "/css/**", "/images/**", "/js/**", "/lib/**", "/page/**");//放行资源
        }
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            //图片的静态映射
            registry.addResourceHandler("/images/**")//虚拟路径
                    .addResourceLocations("file:D:/Project/JAVA/TeachingSystem/src/main/resources/static/images/");//本地路径
            //文件的静态映射
            registry.addResourceHandler("/files/**")
                    .addResourceLocations("file:D:/Project/JAVA/TeachingSystem/src/main/resources/static/files/");
        }
    }
    
    
  • 数据库表时间子哦对那个生成策略

    package com.xu.config;
    
    import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
    import org.apache.ibatis.reflection.MetaObject;
    import org.springframework.stereotype.Component;
    
    import java.util.Date;
    
    //时间自动生策略
    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {
        @Override
        public void insertFill(MetaObject metaObject) {
            this.setFieldValByName("createTime", new Date(), metaObject);
            this.setFieldValByName("updateTime", new Date(), metaObject);
        }
    
        @Override
        public void updateFill(MetaObject metaObject) {
            this.setFieldValByName("updateDate", new Date(), metaObject);
        }
    }
    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值