node.js+html+mysql做的学生信息管理系统

6 阅读6分钟

学生信息管理系统

项目简介

这是一个基于 HTML + Node.js + MySQL 8 开发的学生信息管理系统。系统提供了学生和管理员两种角色,学生可以注册登录并管理自己的个人信息,管理员可以对所有学生信息和班级数据进行全面的增删改查操作。

技术栈

  • 前端: HTML5 + CSS3 + JavaScript (ES6+)
  • 后端: Node.js + Express
  • 数据库: MySQL 8.0
  • 其他: bcryptjs (密码加密), express-session (会话管理)

项目结构

stuman/
├── package.json              # 项目依赖配置
├── server.js                 # 后端服务器主文件
├── database.sql              # 数据库结构SQL文件
├── README.md                 # 项目说明文档
└── public/                   # 静态资源目录
    ├── css/
    │   └── style.css         # 全局样式文件
    ├── js/
    │   └── main.js           # 通用JavaScript函数
    └── views/                # HTML页面文件
        ├── index.html                    # 登录页面
        ├── student-register.html         # 学生注册页面
        ├── student-dashboard.html        # 学生信息展示页面
        ├── student-edit.html             # 学生信息编辑页面
        ├── admin-dashboard.html          # 管理员首页
        ├── admin-students.html           # 学生管理列表页面
        ├── admin-student-edit.html       # 学生编辑页面(管理员)
        ├── admin-classes.html            # 班级管理列表页面
        └── admin-class-edit.html         # 班级编辑页面(管理员)

功能特性

学生功能

  1. 注册登录

    • 学生可以通过学号注册账号
    • 注册时需要填写基本信息并选择班级
    • 使用学号和密码登录系统
  2. 个人信息管理

    • 查看个人详细信息(学号、姓名、性别、年龄、联系方式、班级等)
    • 编辑个人信息(姓名、性别、年龄、电话、邮箱、地址)
    • 学号和班级信息不可修改

管理员功能

  1. 登录系统

    • 默认管理员账号:admin / admin123
    • 系统启动时会自动创建默认管理员账号
  2. 学生管理

    • 查看所有学生列表
    • 按班级筛选学生
    • 添加新学生
    • 编辑学生信息(包括修改密码)
    • 删除学生
  3. 班级管理

    • 查看所有班级列表
    • 添加新班级
    • 编辑班级信息
    • 删除班级(如果班级下有学生则无法删除)

安装与配置

1. 环境要求

  • Node.js (推荐 v14.0 或更高版本)
  • MySQL 8.0
  • npm 或 yarn

2. 安装依赖

npm install

3. 数据库配置

  1. 确保 MySQL 8.0 已安装并运行
  2. 导入数据库结构文件:
mysql -u root -p < database.sql

或者使用 MySQL 客户端工具(如 Navicat、phpMyAdmin)导入 database.sql 文件。

  1. 修改 server.js 中的数据库连接配置:
const dbConfig = {
    host: 'localhost',        // 数据库主机地址
    user: 'root',            // 数据库用户名
    password: 'root',        // 数据库密码(请修改为您的密码)
    database: 'student_management',
    charset: 'utf8mb4'
};

4. 启动服务器

npm start

服务器将在 http://localhost:3000 启动。

使用说明

学生使用流程

  1. 访问系统首页,点击"学生登录"标签
  2. 点击"立即注册"链接进行注册
  3. 填写注册信息(学号、姓名、性别、年龄、班级等必填项)
  4. 注册成功后返回登录页面
  5. 使用学号和密码登录
  6. 登录后可以查看和编辑个人信息

管理员使用流程

  1. 访问系统首页,点击"管理员登录"标签
  2. 使用默认账号登录:用户名 admin,密码 admin123
  3. 登录后进入管理员首页
  4. 可以访问"学生管理"和"班级管理"功能
  5. 在学生管理中,可以按班级筛选、添加、编辑、删除学生
  6. 在班级管理中,可以添加、编辑、删除班级

代码特点

1. 安全性

  • 密码加密: 使用 bcryptjs 对密码进行哈希加密存储
  • 会话管理: 使用 express-session 管理用户会话
  • 权限控制: 通过中间件验证用户登录状态和权限
  • SQL注入防护: 使用参数化查询防止SQL注入攻击

2. 用户体验

  • 统一的设计风格: 所有页面使用统一的CSS样式,保持视觉一致性
  • 响应式设计: 支持不同屏幕尺寸的设备访问
  • 友好的提示信息: 操作成功或失败都有明确的提示
  • 表单验证: 前端和后端双重验证,确保数据完整性

3. 代码组织

  • 模块化设计: 前后端代码分离,结构清晰
  • RESTful API: 后端API遵循RESTful设计规范
  • 代码复用: 通用函数提取到独立文件,减少代码重复
  • 注释完善: 关键代码都有中文注释说明

4. 数据库设计

  • 规范化设计: 学生表和班级表分离,通过外键关联
  • 索引优化: 对常用查询字段建立索引
  • 字符集支持: 使用 utf8mb4 字符集,支持中文和特殊字符
  • 约束完整性: 使用外键约束保证数据完整性

API接口说明

学生相关接口

  • POST /api/student/register - 学生注册
  • POST /api/student/login - 学生登录
  • GET /api/student/info - 获取学生信息
  • PUT /api/student/info - 更新学生信息

管理员相关接口

  • POST /api/admin/login - 管理员登录
  • GET /api/admin/students - 获取学生列表(支持班级筛选)
  • GET /api/admin/students/:id - 获取单个学生信息
  • POST /api/admin/students - 创建学生
  • PUT /api/admin/students/:id - 更新学生信息
  • DELETE /api/admin/students/:id - 删除学生
  • GET /api/admin/classes/:id - 获取单个班级信息
  • POST /api/admin/classes - 创建班级
  • PUT /api/admin/classes/:id - 更新班级
  • DELETE /api/admin/classes/:id - 删除班级

通用接口

  • GET /api/classes - 获取所有班级列表
  • POST /api/logout - 退出登录
  • GET /api/check-auth - 检查登录状态

注意事项

  1. 数据库密码: 请务必修改 server.js 中的数据库连接密码
  2. 默认管理员: 系统首次启动时会自动创建默认管理员账号
  3. 班级删除: 如果班级下有学生,将无法删除该班级
  4. 学号唯一性: 学号在系统中必须唯一,注册或添加时不能重复
  5. 密码修改: 管理员编辑学生时,如果留空密码字段则不修改密码

开发说明

代码创作过程

  1. 需求分析: 根据用户需求,确定系统功能模块和用户角色
  2. 数据库设计: 设计学生表、班级表和管理员表的结构
  3. 后端开发: 使用 Express 框架搭建 RESTful API
  4. 前端开发: 创建HTML页面和CSS样式,实现用户界面
  5. 功能测试: 测试各个功能模块的完整性和正确性
  6. 代码优化: 优化代码结构,添加错误处理和用户提示

技术亮点

  1. 会话管理: 使用 express-session 实现用户登录状态管理
  2. 密码安全: 使用 bcryptjs 进行密码加密,安全性高
  3. 权限控制: 通过中间件实现路由级别的权限验证
  4. 数据验证: 前后端双重验证,确保数据有效性
  5. 用户体验: 统一的UI设计,友好的交互体验

后续改进建议

  1. 添加学生头像上传功能

  2. 实现数据导出功能(Excel、PDF)

  3. 添加操作日志记录

  4. 实现批量导入学生功能

  5. 添加数据统计和报表功能

  6. 优化移动端显示效果

  7. 添加找回密码功能

管理员-班级编辑.png

管理员-班级列表.png

管理员-班级添加.png

管理员-登录.png

管理员-学生编辑.png

管理员-学生列表.png

管理员-学生添加.png

首页.png

学生-编辑.png

学生-查看.png

学生-登录.png

学生-注册.png