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

144 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 学生成绩管理系统 (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**
## 🔧 常见维护操作
- **备份数据库:**
系统会自动在 `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