refactor(database): 迁移到SQLite并清理旧MySQL相关代码
移除MySQL相关依赖和配置,完全迁移到SQLite数据库 删除不再需要的MySQL迁移脚本和备份文件 更新README文档说明新的数据库架构 在init_db.js中整合教师和系统设置表的初始化逻辑
This commit is contained in:
148
README.md
148
README.md
@@ -1,15 +1,143 @@
|
||||
# WebWork
|
||||
# 学生成绩管理系统 (Student Grade Management System)
|
||||
|
||||
这是一个基于 Node.js 后端和原生 HTML/CSS/JS 前端的 Web 项目。
|
||||
这是一个基于 Web 的学生成绩管理系统,旨在为学校提供一个简单、高效的成绩录入、查询和分析平台。系统支持三种角色:管理员、教师和学生,每种角色拥有独立的权限和功能界面。
|
||||
|
||||
## 项目结构
|
||||
## 🛠️ 开发语言与技术栈
|
||||
|
||||
- `backend/`: Node.js 服务端代码
|
||||
- `frontend/`: 前端静态资源
|
||||
- `database/`: 数据库初始化脚本
|
||||
本项目采用前后端分离的开发模式(但在部署上整合为一体),技术选型如下:
|
||||
|
||||
## 快速开始
|
||||
- **后端 (Backend):**
|
||||
- **Runtime:** Node.js (>=14.0.0)
|
||||
- **Framework:** Express.js 4.x
|
||||
- **Database:** SQLite3 (轻量级文件数据库,无需额外安装数据库服务)
|
||||
- **Authentication:** Express-Session + BCrypt (安全密码存储)
|
||||
- **Logging:** 自定义操作日志记录
|
||||
|
||||
1. 进入 `backend` 目录,运行 `npm install` 安装依赖。
|
||||
2. 配置 `.env` 文件(参考 `.env.example` 或根据需要创建)。
|
||||
3. 启动服务器:`npm start`。
|
||||
- **前端 (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
|
||||
|
||||
Reference in New Issue
Block a user