springboot+vue+element简单实现教学课程申报管理系统

目录

一、项目预览

二、项目效果图及说明

1.项目说明

 1.登录

 2.欢迎页

 3.教师管理

4.课程申报

​5.管理员管理

三、代码实现

1.后端项目结构图

2.数据库表脚本

3.路由配置

四、总结


一、项目预览

  • 在线预览:点击访问
  • 其他项目访问:点击访问
  • 后端实现框架:SpringBoot+OAuth2+Spring Security+Redis+mybatis-plus+mysql+swagger搭建实现
  • 前端框架实现:vue+element实现的独立vue项目

 前后端分离实现,项目使用传统vue项目结构实现,前端采用element实现。

element官网:Element - The world's most popular Vue UI framework

 

二、项目效果图及说明

1.项目说明

两种角色登录,管理员和教师,教师提交课程申请,然后管理员登录进行课程的审核和管理,审核通过或者审核不通过,不通过是需要填写审核不通过的原因,从而教师根据原因进行相应的修改,重新提交,管理员进行再次的审核。

 1.登录

两种角色登录,管理员和教师,管理员和教师分为不同的表,项目兼容多表用户token登录

 2.欢迎页

 3.教师管理

教师的增删改查操作

4.课程申报

 只能由教师进行申报操作权限

只能由管理员进行审核相关操作权限

审核不通过时,需要填写原因,支持批量操作

 5.管理员管理

管理员拥有全部权限

 教师只能查看管理员,无操作权限

6.个人中心管理

信息修改

 密码修改,修改成功后会退出登录,需要重新登录

三、代码实现

1.后端项目结构图

2.数据库表脚本

/*Navicat Premium Data TransferSource Server         : tian-liaoSource Server Type    : MySQLSource Server Version : 80027Source Host           : localhost:3306Source Schema         : course_applyTarget Server Type    : MySQLTarget Server Version : 80027File Encoding         : 65001Date: 15/11/2023 17:23:30
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for admin
-- ----------------------------
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin`  (`id` int(0) NOT NULL AUTO_INCREMENT COMMENT '主键',`username` varchar(60) NOT NULL COMMENT '用户名',`password` varchar(100) NOT NULL COMMENT '登录密码',`real_name` varchar(32) NULL DEFAULT NULL COMMENT '姓名',`gender` tinyint(1) NULL DEFAULT 0 COMMENT '用户性别 0保密 1男 2女',`avatar` varchar(300) NULL DEFAULT NULL COMMENT '头像',`phone` varchar(20) NULL DEFAULT NULL COMMENT '手机',`email` varchar(60) NULL DEFAULT NULL COMMENT '邮箱',`remark` varchar(200) NULL DEFAULT NULL COMMENT '备注',`status` tinyint(1) NULL DEFAULT 0 COMMENT '是否禁用 0否  1是',`deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标记 是否已删除: 0否  1是',`create_system_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',`create_system_admin_id` int(0) NULL DEFAULT NULL COMMENT '创建人ID',`update_system_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',`update_system_admin_id` int(0) NULL DEFAULT NULL COMMENT '修改人ID',`admin_type` tinyint(1) NULL DEFAULT 1 COMMENT '管理员类型 0超级管理员 1普通管理员',PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `admin_key_username`(`username`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '管理员' ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of admin
-- ----------------------------
INSERT INTO `admin` VALUES (1, 'admin', '$2a$10$YFlCYqEcQvQ2br484Ptxr.e7hJRFD/raJ/1WKc1A1uSTaw0hdyAla', '愛芳芳', 1, '/image/05a5880672fa44aea3e286698057d7f7.jpg', '15767978799', '3232', '', 0, 0, '2023-02-28 11:56:46', NULL, '2023-11-15 17:16:23', 1, 0);-- ----------------------------
-- Table structure for course_apply
-- ----------------------------
DROP TABLE IF EXISTS `course_apply`;
CREATE TABLE `course_apply`  (`id` int(0) NOT NULL AUTO_INCREMENT COMMENT '主键',`teacher_id` int(0) NOT NULL COMMENT '申报教师主键',`course_name` varchar(255) NOT NULL COMMENT '课程名称',`credit` int(0) NOT NULL DEFAULT 0 COMMENT '学分',`class_hour` int(0) NOT NULL DEFAULT 0 COMMENT '学时',`open_time_start` int(0) NOT NULL DEFAULT 0 COMMENT '开课开始时间(几周到几周,比如一到10周)',`open_time_end` int(0) NOT NULL DEFAULT 0 COMMENT '开课结束时间(几周到几周,比如一到10周)',`length` int(0) NOT NULL DEFAULT 0 COMMENT '时长(节)',`year` varchar(255) NOT NULL COMMENT '授课年级',`teaching_class` varchar(255) NOT NULL COMMENT '授课班级',`place` varchar(255) NOT NULL COMMENT '授课地点',`course_type` tinyint(1) NULL DEFAULT 0 COMMENT '1选修课 2必修课',`remark` varchar(255) NULL DEFAULT NULL COMMENT '备注(退回理由)',`status` tinyint(1) NULL DEFAULT 1 COMMENT '审核状态 1待审核 2审核通过 3审核不通过',`deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标记 是否已删除: 0否  1是',`create_system_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',`create_system_admin_id` int(0) NULL DEFAULT NULL COMMENT '创建人ID',`update_system_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',`update_system_admin_id` int(0) NULL DEFAULT NULL COMMENT '修改人ID',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '课程申请表' ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for teacher
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher`  (`id` int(0) NOT NULL AUTO_INCREMENT COMMENT '主键',`real_name` varchar(32) NULL DEFAULT NULL COMMENT '姓名',`job_number` varchar(32) NULL DEFAULT NULL COMMENT '工号',`job_name` varchar(255) NULL DEFAULT NULL COMMENT '职称',`department` varchar(255) NULL DEFAULT NULL COMMENT '所在系',`username` varchar(10) NOT NULL COMMENT '用户名',`password` varchar(255) NOT NULL COMMENT '登录密码 加密',`phone` varchar(20) NULL DEFAULT NULL COMMENT '手机号',`avatar` varchar(225) NULL DEFAULT NULL COMMENT '头像',`gender` tinyint(1) NULL DEFAULT 0 COMMENT '性别 0保密 1男 2女',`remark` varchar(225) NULL DEFAULT NULL COMMENT '备注',`status` tinyint(1) NULL DEFAULT 0 COMMENT '是否禁用 0否 1是',`deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标记 是否已删除: 0否  1是',`create_system_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',`create_system_admin_id` int(0) NULL DEFAULT NULL COMMENT '创建人ID',`update_system_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间-管理员',`update_system_admin_id` int(0) NULL DEFAULT NULL COMMENT '修改人ID-管理员',PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `username`(`username`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COMMENT = '教师表' ROW_FORMAT = Dynamic;SET FOREIGN_KEY_CHECKS = 1;

3.路由配置

import Vue from 'vue'
import Router from 'vue-router'
import Layout from '@/page/index/index'Vue.use(Router)const router = new Router({routes: [{path: '/login',name: '登录页',component: () =>import( /* webpackChunkName: "page" */ '@/page/login/index'),meta: {keepAlive: true,isTab: false,isAuth: false}},{path: '/',component: Layout,hidden: true,redirect: '/wel',children: [{path: 'wel',name: '欢迎',activeMenu: '/home',component: () => import( /* webpackChunkName: "views" */ '@/views/wel/index'),meta: {title: '欢迎',icon: 'dashboard'}}]},{path: '/403',component: resolve => require(['../views/403'], resolve),hidden: true},{path: '/404',component: resolve => require(['../views/404'], resolve),hidden: true},{path: '/teacher',component: Layout,redirect: '/teacher/index',children: [{path: 'index',name: '教师管理',component: () =>import( /* webpackChunkName: "views" */ '@/views/teacher/index')}]},{path: '/courseApply',component: Layout,redirect: '/courseApply/index',children: [{path: 'index',name: '课程申报列表',component: () =>import( /* webpackChunkName: "views" */ '@/views/course_apply/index')}]},{path: '/admin',component: Layout,redirect: '/admin/index',children: [{path: 'index',name: '管理员管理',component: () =>import( /* webpackChunkName: "views" */ '@/views/admin/index')}]},{path: '/personalInfo',component: Layout,redirect: '/personalInfo/index',name: '个人信息',meta: {title: '个人信息',icon: 'user'},children: [{path: 'index',name: '个人信息',component: () => import('@/views/personalInfo/index'),meta: {title: '个人信息',icon: 'table'}}]}]
})export default router

四、总结

项目功能完整,后续可能将不断升级。

关注作者,及时了解更多好项目!

作者主页也有更多 好项目分享!

获取源码或如需帮助,可通过博客后面名片+作者即可!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/190139.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

庖丁解牛:NIO核心概念与机制详解

文章目录 Pre输入/输出Why NIO流与块的比较通道和缓冲区概述什么是缓冲区?缓冲区类型什么是通道?通道类型 NIO 中的读和写概述Demo : 从文件中读取1. 从FileInputStream中获取Channel2. 创建ByteBuffer缓冲区3. 将数据从Channle读取到Buffer中 Demo : 写…

计算机科学速成课

建议看看计算机科学速成课,一门很全面的计算机原理入门课程,短短10分钟可以把大学老师十几节课讲的东西讲清楚!整个系列一共41个视频,B站上有中文字幕版。 每个视频都是一个特定的主题,例如软件工程、人工智能、操作系…

潇洒郎: 小白一次性成功——小米红米手机解BL锁+ ROOT-刷面具

一、账号与设备绑定 手机登录账号,绑定账号,使用手机卡流量,等待7天后解BL锁。 二、解BL锁 下载工具 申请解锁小米手机 (miui.com) https://www.miui.com/unlock/index.html 1、登录账号-与绑定的账号一样 2、驱动检测安装 驱动安装进入Fastboot模式后,会自动识别已连接…

[黑马程序员SpringBoot2]——开发实用篇1

目录: 手工启动热部署自动启动热部署热部署范围配置关闭热部署功能第三方bean属性绑定松散绑定常用计量单位应用bean属性校验进制数据转换规则加载测试专用属性加载测试专用配置测试类中启动web环境发送虚拟请求匹配响应执行状态匹配响应体匹配响应体(json)匹配响应…

解决k8s node节点报错: Failed to watch *v1.Secret: unknown

现象: 这个现象是发生在k8s集群证书过期,重新续签证书以后。 记得master节点的/etc/kubernetes/kubelet.conf文件已经复制到node节点了。 但是为什么还是报这个错,然后运行证书检查命令看一下: 看样子是差/etc/kubernetes/pki/…

软件安全学习课程实践3:软件漏洞利用实验

1 逆向分析 1.1.1 和 1.1.2 直接 F5 看 flag 就可以了,故略。 1.1.3 对输入用了算法变换,能看到flag,比如输入x,经过f处理成f(x)然后判断f(x)=y,现在要破解f的算法然后写个逆预算g(y)=x 这个代码看起来很抽象,因为 IDA 没有正确的恢复这里的变量结构。选中变量按“N”重…

数据科学家应该知道的 10 个高级深度学习架构!

一、介绍 跟上深度学习的最新进展变得非常困难。几乎每天都会出现深度学习的新创新或新应用。然而,这些进步大部分都隐藏在 ArXiv / Springer 等媒体上发表的大量研究论文中。 本文包含深度学习的一些最新进展以及 keras 库中的实现代码。我还提供了…

【漏洞复现】致远OA wpsAssistServlet接口存在任意文件上传漏洞

漏洞描述 致远OA互联新一代智慧型协同运营平台以中台的架构和技术、协同、业务、连接、数据的专 业能力,夯实协同运营中台的落地效果;以移动化、AI智能推进前台的应用创新,实现企业轻量化、智能化业务场景,促进企业全过程管理能效,赋予企业协同工作和运营管理的新体验;在…

⑩④【MySQL】什么是视图?怎么用?视图的检查选项? 视图的作用?[VIEW]

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 视图VIEW ⑩④详解MySQL视图1. 视图的基本使用…

DAO和增删改查通用方法-BasicDao

文章目录 一、BasicDao是什么?二、BasicDao分析三、BasicDao实现(1)BasicDao(2)ActorDao(3)TestDao 四、总结 一、BasicDao是什么? BasicDao:基础的数据对象,可以完成通用…

AD教程 (十八)导入常见报错解决办法(unkonw pin及绿色报错等)

AD教程 (十八)导入常见报错解决办法(unkonw pin及绿色报错等) 常见报错解决办法 绿色报错 可以先按TM,复位错位标识绿色报错原因一般是由于规则冲突的原因,和规则冲突就会报错 点击工具,设计…

RK3568驱动指南|第七篇 设备树-第67章 of操作函数实验:获取属性

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…