学生信息管理系统
项目简介
这是一个基于 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 # 班级编辑页面(管理员)
功能特性
学生功能
-
注册登录
- 学生可以通过学号注册账号
- 注册时需要填写基本信息并选择班级
- 使用学号和密码登录系统
-
个人信息管理
- 查看个人详细信息(学号、姓名、性别、年龄、联系方式、班级等)
- 编辑个人信息(姓名、性别、年龄、电话、邮箱、地址)
- 学号和班级信息不可修改
管理员功能
-
登录系统
- 默认管理员账号:
admin/admin123 - 系统启动时会自动创建默认管理员账号
- 默认管理员账号:
-
学生管理
- 查看所有学生列表
- 按班级筛选学生
- 添加新学生
- 编辑学生信息(包括修改密码)
- 删除学生
-
班级管理
- 查看所有班级列表
- 添加新班级
- 编辑班级信息
- 删除班级(如果班级下有学生则无法删除)
安装与配置
1. 环境要求
- Node.js (推荐 v14.0 或更高版本)
- MySQL 8.0
- npm 或 yarn
2. 安装依赖
npm install
3. 数据库配置
- 确保 MySQL 8.0 已安装并运行
- 导入数据库结构文件:
mysql -u root -p < database.sql
或者使用 MySQL 客户端工具(如 Navicat、phpMyAdmin)导入 database.sql 文件。
- 修改
server.js中的数据库连接配置:
const dbConfig = {
host: 'localhost', // 数据库主机地址
user: 'root', // 数据库用户名
password: 'root', // 数据库密码(请修改为您的密码)
database: 'student_management',
charset: 'utf8mb4'
};
4. 启动服务器
npm start
服务器将在 http://localhost:3000 启动。
使用说明
学生使用流程
- 访问系统首页,点击"学生登录"标签
- 点击"立即注册"链接进行注册
- 填写注册信息(学号、姓名、性别、年龄、班级等必填项)
- 注册成功后返回登录页面
- 使用学号和密码登录
- 登录后可以查看和编辑个人信息
管理员使用流程
- 访问系统首页,点击"管理员登录"标签
- 使用默认账号登录:用户名
admin,密码admin123 - 登录后进入管理员首页
- 可以访问"学生管理"和"班级管理"功能
- 在学生管理中,可以按班级筛选、添加、编辑、删除学生
- 在班级管理中,可以添加、编辑、删除班级
代码特点
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- 检查登录状态
注意事项
- 数据库密码: 请务必修改
server.js中的数据库连接密码 - 默认管理员: 系统首次启动时会自动创建默认管理员账号
- 班级删除: 如果班级下有学生,将无法删除该班级
- 学号唯一性: 学号在系统中必须唯一,注册或添加时不能重复
- 密码修改: 管理员编辑学生时,如果留空密码字段则不修改密码
开发说明
代码创作过程
- 需求分析: 根据用户需求,确定系统功能模块和用户角色
- 数据库设计: 设计学生表、班级表和管理员表的结构
- 后端开发: 使用 Express 框架搭建 RESTful API
- 前端开发: 创建HTML页面和CSS样式,实现用户界面
- 功能测试: 测试各个功能模块的完整性和正确性
- 代码优化: 优化代码结构,添加错误处理和用户提示
技术亮点
- 会话管理: 使用 express-session 实现用户登录状态管理
- 密码安全: 使用 bcryptjs 进行密码加密,安全性高
- 权限控制: 通过中间件实现路由级别的权限验证
- 数据验证: 前后端双重验证,确保数据有效性
- 用户体验: 统一的UI设计,友好的交互体验
后续改进建议
-
添加学生头像上传功能
-
实现数据导出功能(Excel、PDF)
-
添加操作日志记录
-
实现批量导入学生功能
-
添加数据统计和报表功能
-
优化移动端显示效果
-
添加找回密码功能