教務管理系統設計總結


教務管理系統設計總結

一、概述

教務管理系統,是一個管理教師、學生信息和管理教師、學生事務的管理系統,該系統分為教師端、學生端和管理員端,其權限比較:管理員>教師>學生,管理員負責管理教師、學生、賬號各信息,教師負責向學生端發布作業信息和批改學生作業,學生端接受作業后將作業提交至教師端,三者中管理員權限最大也最辛苦,可由教師賬號和學生賬號選舉產生,由管理員授權

二、項目結構及執行流程

1.執行流程

技術架構

學生端

教師端

管理員

2.項目結構

以 maven 為容器,SpringBoot+Vue 架構,前后端分離

后端

SpringBoot+MyBatis Plus+SpringMVC

前端

Vue+Axios+Element UI

開發環境

jdk1.8

MySQL8.0.20

Vue @vue/cli 4.5.15

三、數據庫

表結構

腳本

-- 教務管理系統
CREATE DATABASE studentworksystem;

USE studentworksystem;

-- ----------------------------
-- Table structure for class
-- ----------------------------
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class`
(
    `Class_Id`   int(0)                                                       NOT NULL AUTO_INCREMENT COMMENT '班級編號',
    `Class_Name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '班級名稱',
    PRIMARY KEY (`Class_Id`) USING BTREE
) ENGINE = InnoDB
  AUTO_INCREMENT = 11
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_0900_ai_ci
  ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`
(
    `Student_Id`      int(0)                                                         NOT NULL AUTO_INCREMENT COMMENT '編號',
    `Student_Name`    varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci   NOT NULL COMMENT '學生姓名',
    `Student_Age`     int(0)                                                         NOT NULL COMMENT '學生年齡',
    `Student_Sex`     varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci   NOT NULL COMMENT '學生性別',
    `Student_Address` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '學生居住地',
    `Class_ID`        int(0)                                                         NULL DEFAULT NULL COMMENT '班級編號',
    `User_ID`         int(0)                                                         NULL DEFAULT NULL COMMENT '用戶編號',
    PRIMARY KEY (`Student_Id`) USING BTREE,
    INDEX `Student_Work_fk` (`Class_ID`) USING BTREE,
    INDEX `Student_User_fk` (`User_ID`) USING BTREE,
    CONSTRAINT `Student_User_fk` FOREIGN KEY (`User_ID`) REFERENCES `user` (`User_Id`) ON DELETE RESTRICT ON UPDATE CASCADE,
    CONSTRAINT `Student_Work_fk` FOREIGN KEY (`Class_ID`) REFERENCES `class` (`Class_Id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE = InnoDB
  AUTO_INCREMENT = 204
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_0900_ai_ci
  ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for student_work
-- ----------------------------
DROP TABLE IF EXISTS `student_work`;
CREATE TABLE `student_work`
(
    `Student_Work_Id` int(0)                                                         NOT NULL AUTO_INCREMENT COMMENT '編號',
    `Student_ID`      int(0)                                                         NULL DEFAULT NULL COMMENT '學生編號',
    `Work_ID`         int(0)                                                         NULL DEFAULT NULL COMMENT '作業編號',
    `Student_Work`    varchar(3072) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '學生作業',
    `Student_Source`  double                                                         NULL DEFAULT 0 COMMENT '學生成績',
    PRIMARY KEY (`Student_Work_Id`) USING BTREE,
    INDEX `Student_fk` (`Student_ID`) USING BTREE,
    INDEX `SWork_fk` (`Work_ID`) USING BTREE,
    CONSTRAINT `Student_fk` FOREIGN KEY (`Student_ID`) REFERENCES `student` (`Student_Id`) ON DELETE RESTRICT ON UPDATE CASCADE,
    CONSTRAINT `SWork_fk` FOREIGN KEY (`Work_ID`) REFERENCES `work` (`Work_Id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE = InnoDB
  AUTO_INCREMENT = 235
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_0900_ai_ci
  ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for teacher
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher`
(
    `Teacher_Id`      int(0)                                                         NOT NULL AUTO_INCREMENT COMMENT '編號',
    `Teacher_Name`    varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci   NOT NULL COMMENT '教師姓名',
    `Teacher_Age`     int(0)                                                         NOT NULL COMMENT '教師年齡',
    `Teacher_Sex`     varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci   NOT NULL COMMENT '教師性別',
    `Teacher_Address` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '教師居住地',
    `User_ID`         int(0)                                                         NULL DEFAULT NULL COMMENT '用戶編號',
    PRIMARY KEY (`Teacher_Id`) USING BTREE,
    INDEX `Teacher_User_fk` (`User_ID`) USING BTREE,
    CONSTRAINT `Teacher_User_fk` FOREIGN KEY (`User_ID`) REFERENCES `user` (`User_Id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE = InnoDB
  AUTO_INCREMENT = 53
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_0900_ai_ci
  ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`
(
    `User_Id`          int(0)                                                       NOT NULL AUTO_INCREMENT COMMENT '編號',
    `User_Name`        varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用戶姓名',
    `User_Password`    varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用戶密碼',
    `User_Deleted`     int(0)                                                       NOT NULL DEFAULT 0 COMMENT '凍結指數',
    `User_Create_Time` datetime(0)                                                  NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '創建時間',
    `User_Update_Time` datetime(0)                                                  NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '修改時間',
    `User_Identity`    int(0)                                                       NOT NULL DEFAULT 0 COMMENT '身份碼',
    `User_Admin`       int(0)                                                       NOT NULL DEFAULT 0 COMMENT '管理員碼',
    PRIMARY KEY (`User_Id`) USING BTREE,
    UNIQUE INDEX `username` (`User_Name`) USING BTREE
) ENGINE = InnoDB
  AUTO_INCREMENT = 263
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_0900_ai_ci
  ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for work
-- ----------------------------
DROP TABLE IF EXISTS `work`;
CREATE TABLE `work`
(
    `Work_Id`      int(0)                                                         NOT NULL AUTO_INCREMENT COMMENT '編號',
    `Work_Name`    varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '作業姓名',
    `Work_Content` varchar(3072) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '作業要求',
    `Teacher_Id`   int(0)                                                         NULL DEFAULT NULL COMMENT '教師編號',
    `Class_Id`     int(0)                                                         NULL DEFAULT NULL COMMENT '班級編號',
    PRIMARY KEY (`Work_Id`) USING BTREE,
    INDEX `Class_Work_fk` (`Class_Id`) USING BTREE,
    INDEX `Teacher_Work_fk` (`Teacher_Id`) USING BTREE,
    CONSTRAINT `Class_Work_fk` FOREIGN KEY (`Class_Id`) REFERENCES `class` (`Class_Id`) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT `Teacher_Work_fk` FOREIGN KEY (`Teacher_Id`) REFERENCES `teacher` (`Teacher_Id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB
  AUTO_INCREMENT = 71
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_0900_ai_ci
  ROW_FORMAT = Dynamic;

四、后端開發

后端依托 springboot 這個大框架為主體,mybatis plus 作為數據層,springMVC 為表現層

1.核心結構

數據層

以 mybatis plus 為框架

業務層

直接與數據層交互

表現層

與業務層交互

2.核心業務代碼

由於項目前后端分離,在這里用於與前端交互數據,前端向后端服務器發送各種請求,后端將返回 Json 用於響應

3.前端需發送的請求如下:

所有請求的前綴為 http://[后端服務器地址]:[端口號],以下請求均以此向后添加字段即可

注意:由於響應的字符串為 Json 字符串,以下我將羅列響應和請求的 Json 各 key 值的含義,方便理解

以下為 java 實體類源碼,其中 Json 以實體類定義的各對象屬性字段為 key 值,帶有@TableId(type = IdType.AUTO)為數據庫主鍵,帶有@TableField(exist = false)注解的代表數據庫中沒有該字段但實體類操作過程中必須的字段

//班級
@TableId(type = IdType.AUTO)
    private Long classId;//班級編號
    private String className;//班級名稱
    @TableField(exist = false)
    private List<Work> classWorks;//班級作業

//學生
@TableId(type = IdType.AUTO)
    private Long studentId;//編號
    private String studentName;//學生姓名
    private Long classId;//班級編號
    private Long userId;//用戶編號
    @TableField(exist = false)
    private String className;//班級名稱
    private Integer studentAge;//學生年齡
    private String studentSex;//學生性別
    private String studentAddress;//學生地址
    @TableField(exist = false)
    private List<StudentWork> studentWorks;//學生作業

//學生作業
@TableId(type = IdType.AUTO)
    private Long studentWorkId;//學生作業編號
    private Long studentId;//學生編號
    private Long workId;//作業編號
    private String studentWork;//學生作業
    private Double studentSource;//作業分數
    @TableField(exist = false)
    private String studentName;//學生姓名

//教師
@TableId(type = IdType.AUTO)
    private Long teacherId;//編號
    private String teacherName;//教師姓名
    private int teacherAge;//教師年齡
    private String teacherSex;//教師性別
    private String teacherAddress;//教師地址
    private Long userId;//用戶編號

//用戶
@TableId(type = IdType.AUTO)
    private Long userId;//編號
    private String userName;//用戶名
    @TableField(exist = false)
    private String newUserName;//新用戶名
    private String userPassword;//用戶密碼
    @TableField(exist = false)
    private String newUserPassWord;//新密碼
    @TableLogic
    private Integer userDeleted;//凍結指數
    @TableField(fill = FieldFill.INSERT)
    private Date userCreateTime;//創建時間
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date userUpdateTime;//修改時間
    private Integer userIdentity;//用戶身份
    private Integer userAdmin;//管理員標識
    @TableField(exist = false)
    private String userRealName;//用戶真實姓名
    @TableField(exist = false)
    private String className;//用戶班級
    @TableField(exist = false)
    private String address;//用戶地址
    @TableField(exist = false)
    private String Identity;//身份
    @TableField(exist = false)
    private String Admin;//權限

//作業
@TableId(type = IdType.AUTO)
    private Long workId;//作業編號
    private String workName;//作業名稱
    private String workContent;//作業要求
    private Long teacherId;//教師編號
    private Long classId;//班級編號
    @TableField(exist = false)
    private String teacherName;//布置人
    @TableField(exist = false)
    private String className;//班級名

//Json
private boolean status;//狀態信息
private Object data;//數據

五、前端開發

1.核心結構

2.登錄及注冊界面

登錄功能

注冊功能

登錄驗證功能

2.教師端

核心代碼

核心效果

  1. 查看功能


    在此板塊中,教師用於查看一個班級布置的所有作業,可以向一個班級發布一次作業,修改作業,甚至刪除作業(此功能需謹慎使用!)

  2. 批改功能

    在此板塊中,教師主要用於直觀的查看班級作業提交情況,下拉列表設有分數系統,教師可根據作業以及學生的完成情況進行人性化的處理

3.學生端

核心代碼

  1. 整體界面

  2. 查看作業

  3. 查看班級作業

4.管理端

核心代碼

  1. 管理學生

  2. 管理教師

  3. 管理用戶

5.賬號管理

這個頁面為三個端口公共的部分

已知的未修復的 bug 及臨時解決方案:

  1. 登錄頁面時,如果密碼輸入錯誤,輸入框會進入"禁止"狀態,此時點擊瀏覽器刷新即可解決

  2. 由於本人能力有限,登錄界面暫未實現攔截和會話保存,用戶登錄時點擊刷新后頁面會失效,此時重新登錄即可繼續操作。

項目啟動時間:2022 年 2 月 1 日

項目完結時間:2022 年 2 月 26 日

作者:春風能解釋(前端&后端)

項目 git 地址:
https://gitee.com/cfnjs/web/tree/master/教務管理系統(基於Spring+Vue的設計架構)
項目github地址:
https://github.com/2516649281/web/tree/master/教務管理系統(基於Spring+Vue的設計架構)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM