校园管理系统练习项目源码-前后端分离-【node版】

60 阅读2分钟

今天给大家分享一个校园管理系统前后端分离项目。这是最近在练习前端编程,结合 node 写的一个完整的项目。

使用的技术:

Node.js:版本要求16.20以上。

后端框架:Express框架。

数据库: MySQL 8.0。

Vue2:前端采用Vue2框架,配合Element UI组件库。

实现的功能有:

课程管理

教师管理

学生管理

公告管理

管理员管理

教学楼管理

宿舍管理

年级管理

班级管理

通过这次的编程项目练习,让我更快的掌握了前端编程技术和后端Express框架,还是非常好的。如果你也在学习编程,也可以借鉴一下,仿照这个项目也写一个。

系统截图:

首页:

image.png

教师管理:

image.png

学生管理:

image.png

系统功能就简单的分享一部分,有兴趣的小伙伴可以去看一下完整的源码~ (非开源项目)

wwwoop.com/home/Index/…

image.png

零星代码:

const ClassModel = require('../models/class.model')
const GradeModel = require('../models/grade.model')
const Response = require('../utils/response')
const AppError = require('../utils/appError')
const asyncHandler = require('../utils/asyncHandler')

/**
 * 班级控制器类
 */
class ClassController {
  /**
   * 获取所有班级
   */
  getAll = asyncHandler(async (req, res) => {
    const { page, pageSize } = req.query
    const result = await ClassModel.getAll(page, pageSize)
    res.json(Response.success(result))
  })

  /**
   * 获取单个班级
   */
  getOne = asyncHandler(async (req, res) => {
    const classInfo = await ClassModel.findById(req.params.id)
    if (!classInfo) {
      return res.json(Response.error('班级不存在'))
    }
    res.json(Response.success(classInfo))
  })

  /**
   * 创建班级
   */
  create = asyncHandler(async (req, res) => {
    try {
      // 验证年级是否存在
      if (req.body.grade_id) {
        const grade = await GradeModel.findById(req.body.grade_id)
        if (!grade) {
          return res.json(Response.error('所选年级不存在'))
        }
      }

      const classId = await ClassModel.create(req.body)
      const classInfo = await ClassModel.findById(classId)
      res.json(Response.success(classInfo, '创建成功'))
    } catch (error) {
      res.json(Response.error(error.message))
    }
  })

  /**
   * 更新班级
   */
  update = asyncHandler(async (req, res) => {
    try {
      // 验证年级是否存在
      if (req.body.grade_id) {
        const grade = await GradeModel.findById(req.body.grade_id)
        if (!grade) {
          return res.json(Response.error('所选年级不存在'))
        }
      }

      await ClassModel.update(req.params.id, req.body)
      const classInfo = await ClassModel.findById(req.params.id)
      res.json(Response.success(classInfo, '更新成功'))
    } catch (error) {
      res.json(Response.error(error.message))
    }
  })

  /**
   * 删除班级
   */
  delete = asyncHandler(async (req, res) => {
    try {
      await ClassModel.delete(req.params.id)
      res.json(Response.success(null, '删除成功'))
    } catch (error) {
      res.json(Response.error(error.message))
    }
  })

  /**
   * 获取所有年级(用于下拉选择)
   */
  getAllGrades = asyncHandler(async (req, res) => {
    try {
      const result = await GradeModel.getAll()
      res.json(Response.success(result.list))
    } catch (error) {
      res.json(Response.error(error.message))
    }
  })
}

module.exports = new ClassController()