Files
WebWork/README.md
祀梦 e63ef0af0a refactor(database): 迁移到SQLite并清理旧MySQL相关代码
移除MySQL相关依赖和配置,完全迁移到SQLite数据库
删除不再需要的MySQL迁移脚本和备份文件
更新README文档说明新的数据库架构
在init_db.js中整合教师和系统设置表的初始化逻辑
2025-12-23 00:02:44 +08:00

5.4 KiB
Raw Blame History

学生成绩管理系统 (Student Grade Management System)

这是一个基于 Web 的学生成绩管理系统,旨在为学校提供一个简单、高效的成绩录入、查询和分析平台。系统支持三种角色:管理员、教师和学生,每种角色拥有独立的权限和功能界面。

🛠️ 开发语言与技术栈

本项目采用前后端分离的开发模式(但在部署上整合为一体),技术选型如下:

  • 后端 (Backend):

    • Runtime: Node.js (>=14.0.0)
    • Framework: Express.js 4.x
    • Database: SQLite3 (轻量级文件数据库,无需额外安装数据库服务)
    • Authentication: Express-Session + BCrypt (安全密码存储)
    • Logging: 自定义操作日志记录
  • 前端 (Frontend):

    • Structure: HTML5
    • Styling: CSS3, Bootstrap 5 (响应式设计)
    • Scripting: Vanilla JavaScript (ES6+), Fetch API
    • Icons: Font Awesome 6

🏗️ 项目架构

项目遵循 MVC (Model-View-Controller) 设计模式,结构清晰,易于维护。

目录结构说明

WebWork/
├── backend/                # 后端核心代码
│   ├── config/             # 配置文件 (数据库连接等)
│   ├── controllers/        # 控制器 (业务逻辑处理)
│   ├── middleware/         # 中间件 (身份验证、错误处理)
│   ├── models/             # 模型层 (数据库操作封装)
│   ├── routes/             # 路由定义 (API 接口)
│   ├── scripts/            # 维护脚本 (数据库迁移、修复数据)
│   ├── services/           # 服务层 (复杂业务逻辑)
│   ├── utils/              # 工具函数
│   ├── server.js           # 程序入口
│   └── database.sqlite     # SQLite 数据库文件
├── frontend/               # 前端静态资源
│   ├── public/             # 公共资源 (CSS, JS, Images)
│   └── views/              # HTML 页面视图
│       ├── admin/          # 管理员页面
│       ├── auth/           # 认证页面 (登录/注册)
│       ├── student/        # 学生页面
│       └── teacher/        # 教师页面
└── scripts/                # 快捷运行脚本 (Windows .bat)

🧩 功能模块详情

1. 认证模块 (Authentication)

  • 登录/注册: 支持学号/工号登录,新用户注册。
  • 角色分流: 根据用户角色(学生、教师、管理员)自动跳转至对应的工作台。
  • 安全机制: 密码加密存储,会话超时自动登出。

2. 管理员模块 (Admin)

  • 仪表板: 查看系统概览(用户总数、课程数等)。
  • 用户管理:
    • 学生管理: 查看、编辑、删除学生信息。
    • 教师管理: 查看、编辑、删除教师信息,自动补全教师职级/部门信息。
    • 分页优化: 支持智能分页与快速跳转。
  • 成绩统计: 全校/全班成绩概览与分析。
  • 系统设置:
    • 设置当前学期。
    • 开启/关闭选课与查分功能。
    • 数据维护(数据库备份、缓存清理、重置密码)。
  • 数据导出: 支持导出学生、教师、成绩数据为 Excel 兼容的 CSV 格式。
  • 操作日志: 审计系统内的关键操作记录。

3. 教师模块 (Teacher)

  • 我的课程: 查看所教授的课程列表。
  • 成绩录入: 在线录入、修改学生成绩。
  • 成绩管理: 查看班级成绩单,分析及格率与平均分。

4. 学生模块 (Student)

  • 我的成绩: 查询个人各科成绩、绩点 (GPA)。
  • 成绩分析: 可视化展示成绩分布与趋势。
  • 个人信息: 查看与编辑个人资料。

🚀 部署与运行方式

本项目无需复杂的环境配置,确保安装 Node.js 即可运行。

环境要求

  • Node.js: v14.0.0 或更高版本
  • OS: Windows / macOS / Linux

安装步骤

  1. 克隆/下载项目 到本地目录。
  2. 安装依赖: 打开终端(命令行),进入 backend 目录并运行:
    cd backend
    npm install
    

数据库初始化 (首次运行)

如果项目根目录下没有 database.sqlite 文件,或者需要重置数据库,请运行:

node backend/init_db.js

注:该脚本会自动创建表结构并填充测试数据。

启动项目

方式一:使用快捷脚本 (Windows) 直接双击项目根目录下的 scripts/start.bat 即可启动。

方式二:命令行启动backend 目录下运行:

npm start

启动成功后,打开浏览器访问: 👉 http://localhost:3000

🔧 常见维护操作

  • 备份数据库: 系统会自动在 backend/backups/ 目录下创建数据库备份。管理员也可以在“系统设置”中手动备份。

  • 修复数据: 如果发现教师数据缺失(如部门、职称),可运行修复脚本:

    node backend/scripts/fix_teachers.js
    
  • 数据库迁移: 如果进行了版本更新(如添加新表),请按顺序运行 scripts/ 目录下的 migrate_vX.js 脚本。

📝 开发日志

  • V1.0: 基础功能实现(登录、成绩录入、查询)。
  • V2.0: 迁移至 SQLite增加系统设置与操作日志。
  • V3.0: 完善教师管理,优化分页体验,增强数据导出功能。

© 2023-2024 学生成绩管理系统 | Designed for Efficiency