# 学生成绩管理系统 (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` 目录并运行: ```bash cd backend npm install ``` ### 数据库初始化 (首次运行) 如果项目根目录下没有 `database.sqlite` 文件,或者需要重置数据库,请运行: ```bash node backend/init_db.js ``` *注:该脚本会自动创建表结构并填充测试数据。* ### 启动项目 **方式一:使用快捷脚本 (Windows)** 直接双击项目根目录下的 `scripts/start.bat` 即可启动。 **方式二:命令行启动** 在 `backend` 目录下运行: ```bash npm start ``` 启动成功后,打开浏览器访问: 👉 **http://localhost:3000** ## 测试用户 ### . 管理员账号 (Admin) - 账号: admin - 密码: 123456 - 角色选择: 管理员 ### 2. 教师账号 (Teacher) 系统共生成了 20 位教师,账号格式为 T + 1001-1020 。 - 样例 1: - 账号: T1001 - 密码: 123456 - 角色选择: 教师 - 样例 2: - 账号: T1015 - 密码: 123456 - 角色选择: 教师 ### 3. 学生账号 (Student) 系统共生成了 500 名学生,分布在 2021 级和 2022 级,共 10 个班级。 - 2021 级样例 (班级 01): - 账号: 202101001 (格式:年份+班级编号+序号) - 密码: 123456 - 角色选择: 学生 - 2022 级样例 (班级 06): - 账号: 202206005 - 密码: 123456 - 角色选择: 学生 ## 🔧 常见维护操作 - **备份数据库:** 系统会自动在 `backend/backups/` 目录下创建数据库备份。管理员也可以在“系统设置”中手动备份。 - **修复数据:** 如果发现教师数据缺失(如部门、职称),可运行修复脚本: ```bash node backend/scripts/fix_teachers.js ``` - **数据库迁移:** 如果进行了版本更新(如添加新表),请按顺序运行 `scripts/` 目录下的 `migrate_vX.js` 脚本。 ## 📝 开发日志 - **V1.0:** 基础功能实现(登录、成绩录入、查询)。 - **V2.0:** 迁移至 SQLite,增加系统设置与操作日志。 - **V3.0:** 完善教师管理,优化分页体验,增强数据导出功能。 --- © 2023-2024 学生成绩管理系统 | Designed for Efficiency