今天给大家分享一个校园管理系统,前后端分离项目。这是最近在练习前端编程,结合 node 写的一个完整的项目。
使用的技术:
Node.js:版本要求16.20以上。
后端框架:Express框架。
数据库: MySQL 8.0。
Vue2:前端采用Vue2框架,配合Element UI组件库。
实现的功能有:
课程管理
教师管理
学生管理
公告管理
管理员管理
教学楼管理
宿舍管理
年级管理
班级管理
通过这次的编程项目练习,让我更快的掌握了前端编程技术和后端Express框架,还是非常好的。如果你也在学习编程,也可以借鉴一下,仿照这个项目也写一个。
系统截图:
首页:
教师管理:
学生管理:
系统功能就简单的分享一部分,有兴趣的小伙伴可以去看一下完整的源码~ (非开源项目)
零星代码:
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()