网络化教学辅助平台
系统测试账号
管理员: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
项目运行环境
-
Java 17.0.8
-
MySQL 8.1.0
-
SpringBoot 3.1.5
-
MyBatis-Plus 3.5.3.1
-
Maven 3.9.5
-
Node.js 20.9.0
-
Element-Plus 2.4.4
-
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;
后端项目
前端项目
三、设计优点和创新点
优点:
- 快速开发:Spring Boot和Vue3都提供了丰富的开发工具和配置选项,可以快速搭建一个具有基本功能的教学辅助系统。
- 简化配置:Spring Boot可以自动配置大量的组件和依赖,Vue3则采用了组件化的开发方式,使开发人员可以集中精力编写业务逻辑代码,而不必过多关注底层框架的配置。
- 易于维护:Spring Boot提供了监控应用程序健康状况的工具,Vue3则提供了响应式系统和组合API,使代码更加易于维护和扩展。
- 性能提升:Vue3采用了全新的虚拟DOM实现和编译优化,提高了渲染性能。同时,Spring Boot也提供了性能优化和监控的功能。
- 支持多语言:系统支持多语言,可以满足不同国家和地区的教学需求。
- 个性化学习:系统可以根据学生的学习情况和需求,提供个性化的学习路径和推荐资源。
- 实时互动:系统提供了教师和学生之间的实时互动功能,如在线答疑、讨论区等。
- 数据分析:系统可以收集和分析学生的学习数据,帮助教师了解学生的学习情况,及时进行调整和指导。
- 易于部署:由于Spring Boot和Vue3都是流行的技术栈,因此该系统可以轻松部署到各种环境中,包括云环境和本地环境。
创新点:
- 基于组件化的开发方式:Vue3采用了组件化的开发方式,使组件的复用和开发更加灵活。同时,Vue3还引入了组合式API,使代码更加易于理解和维护。
- 微服务架构:系统采用了微服务架构,将不同的功能模块分开开发和维护,如课程管理、作业批改、在线评测等。这种架构方式可以提高系统的可扩展性和可维护性,同时也降低了系统的复杂度。
- 实时互动功能:系统提供了实时互动功能,如在线答疑、讨论区等。这种功能可以增强学生的参与感和学习兴趣,提高教学效果。
- 自动化测试:系统采用了自动化测试的方式,包括单元测试和集成测试,确保了系统的质量。这不仅可以节省大量的人力和时间,而且可以提高测试的准确性和可靠性。
- 多语言支持:系统支持多语言,可以满足不同国家和地区的教学需求。这种功能可以扩大系统的用户群体和使用范围。
- 数据分析功能:系统可以收集和分析学生的学习数据,帮助教师了解学生的学习情况,及时进行调整和指导。这种功能可以帮助教师更好地了解学生的学习情况和需求,提高教学质量。
- 扩展性和灵活性:由于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); } }