diff --git a/INSTALL.md b/INSTALL.md index e69de29..acd14bb 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -0,0 +1,367 @@ +# 班级操行分管理系统 - 安装部署指南 + +## 环境要求 + +### 服务器配置 +- **操作系统**: Linux (Ubuntu 20.04+ / CentOS 7+) +- **CPU**: 2核+ +- **内存**: 4GB+ +- **磁盘**: 20GB+ + +### 软件依赖 +| 软件 | 版本 | 用途 | +|------|------|------| +| Python | 3.9+ | 后端运行环境 | +| MySQL | 5.7+ | 数据存储 | +| Redis | 6.0+ | 缓存、会话 | +| Nginx | 1.18+ | Web服务器、反向代理 | +| PHP | 8.0+ | 前端页面处理 | + +--- + +## 宝塔面板部署(推荐) + +### 1. 安装宝塔面板 + +```bash +# 通用安装脚本(免登录版) +url=https://download.bt.cn/install/installStable.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O installStable.sh $url;fi;bash installStable.sh ed8484bec +``` + +安装完成后,根据提示访问宝塔面板地址,完成初始化设置。 + +### 2. 安装运行环境 + +在宝塔面板的"软件商店"中安装以下软件: + +| 软件名称 | 版本要求 | 用途 | +|---------|---------|------| +| Nginx | 1.21+ | Web服务器 | +| MySQL | 5.7+ | 数据库 | +| Redis | 6.0+ | 缓存服务 | +| PHP | 8.0+ | 前端处理 | +| Python项目管理器 | 最新版 | 后端部署 | + +### 3. 创建数据库 + +在宝塔面板中: +1. 进入"数据库"菜单 +2. 点击"添加数据库" +3. 填写数据库信息: + - 数据库名:`class_manager` + - 用户名:`class_user` + - 密码:生成强密码并保存 +4. 点击"导入",选择 `sql/init.sql` 文件导入 + +### 4. 部署后端服务 + +#### 4.1 上传代码 + +1. 进入宝塔面板"文件"菜单 +2. 进入 `/www/wwwroot/` 目录 +3. 创建项目目录 `classmanager` +4. 上传或克隆代码到 `/www/wwwroot/classmanager` + +#### 4.2 使用Python项目管理器部署 + +1. 进入宝塔面板"网站 -> Python项目" +2. 点击"添加项目": + - 项目路径:`/www/wwwroot/classmanager/backend` + - Python版本:3.9+ + - 框架:FastAPI + - 启动方式:`uvicorn main:app --host 127.0.0.1 --port 8000 --workers 4` + - 项目名称:`classmanager_backend` + +#### 4.3 配置环境变量 + +在 `/www/wwwroot/classmanager/backend/` 目录下: + +```bash +# 复制环境变量示例文件 +cp .env.example .env + +# 编辑配置 +vim .env +``` + +根据实际环境修改以下配置: +- `DB_USER` - 数据库用户名 +- `DB_PASSWORD` - 数据库密码 +- `REDIS_PASSWORD` - Redis密码(如有) +- `SECRET_KEY` - 应用密钥(32位以上随机字符串) +- `JWT_SECRET_KEY` - JWT密钥(32位以上随机字符串) +- `DEBUG_PATH` - 调试入口路径(生产环境请修改为随机字符串) + +### 5. 部署前端 + +#### 5.1 上传前端代码 + +将代码上传或克隆到 `/www/wwwroot/classmanager` + +#### 5.2 创建网站 + +1. 进入宝塔面板"网站"菜单 +2. 点击"添加站点": + - 域名:填写您的域名 + - 根目录:`/www/wwwroot/classmanager/frontend` + - PHP版本:8.0 + +#### 5.3 配置伪静态 + +在站点设置中: +1. 点击"伪静态" +2. 选择"thinkphp"或添加以下规则: + +```nginx +location / { + if (!-e $request_filename){ + rewrite ^(.*)$ /index.php?s=$1 last; + break; + } +} +``` + +--- + +**部署方式二:一体化部署(同域名)** + +如果希望前后端使用同一个域名(如 `https://your-domain.com`),需要配置反向代理: + +在站点设置中: +1. 点击"反向代理" +2. 添加反向代理: + - 目标URL:`http://127.0.0.1:8000` + - 发送域名:`$host` + - 代理目录:`/api/` +3. 前端 `.env` 配置: + ``` + API_BASE_URL=https://your-domain.com + ``` + +--- + +#### 5.4 配置伪静态(续) + +在站点设置中: +1. 点击"伪静态" +2. 选择"thinkphp"或添加以下规则: + +```nginx +location / { + if (!-e $request_filename){ + rewrite ^(.*)$ /index.php?s=$1 last; + break; + } +} +``` + +### 6. 配置SSL证书 + +1. 在站点设置中点击"SSL" +2. 选择"Let's Encrypt"免费证书 +3. 勾选"强制HTTPS" + +### 7. 初始化管理员账号 + +使用调试接口创建初始管理员(仅首次部署使用): + +```bash +# 替换 your-domain.com 为您的域名 +# 替换 /a7k9x2m4q8w1e3r5t6y7u8i9o0p1z2x3 为 .env 中配置的 DEBUG_PATH + +curl -X POST https://your-domain.com/a7k9x2m4q8w1e3r5t6y7u8i9o0p1z2x3 \ + -H "Content-Type: application/json" \ + -d '{ + "username": "admin", + "password": "Admin@123", + "real_name": "班主任", + "role_type": "班主任" + }' +``` + +**注意**:创建成功后,请立即登录系统修改密码,并在生产环境中禁用或修改 DEBUG_PATH。 + +--- + +## 手动部署(无宝塔面板) + +### 1. 安装系统依赖 + +```bash +# Ubuntu/Debian +sudo apt update +sudo apt install -y python3 python3-pip python3-venv mysql-server redis-server nginx php8.0 php8.0-fpm php8.0-mysql + +# CentOS +sudo yum install -y python3 python3-pip mysql-server redis nginx php php-fpm php-mysql +``` + +### 2. 数据库配置 + +```bash +# 启动MySQL +sudo systemctl start mysqld +sudo systemctl enable mysqld + +# 登录MySQL创建数据库 +mysql -u root -p +``` + +```sql +CREATE DATABASE class_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +CREATE USER 'class_user'@'localhost' IDENTIFIED BY 'YourStrongPassword'; +GRANT ALL PRIVILEGES ON class_manager.* TO 'class_user'@'localhost'; +FLUSH PRIVILEGES; +EXIT; +``` + +导入初始化数据: +```bash +mysql -u class_user -p class_manager < sql/init.sql +``` + +### 3. 后端部署 + +```bash +# 创建项目目录 +sudo mkdir -p /var/www/classmanager +sudo chown -R $USER:$USER /var/www/classmanager + +# 上传代码到 /var/www/classmanager/backend/ +cd /var/www/classmanager/backend + +# 创建虚拟环境 +python3 -m venv venv +source venv/bin/activate +pip install -r requirements.txt + +# 配置环境变量 +cp .env.example .env +vim .env # 根据实际情况修改配置 + +# 使用Systemd管理服务 +sudo vim /etc/systemd/system/classmanager.service +``` + +Systemd服务文件内容: +```ini +[Unit] +Description=ClassManager Backend +After=network.target + +[Service] +Type=simple +User=www-data +WorkingDirectory=/var/www/classmanager/backend +Environment="PATH=/var/www/classmanager/backend/venv/bin" +ExecStart=/var/www/classmanager/backend/venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000 +Restart=always + +[Install] +WantedBy=multi-user.target +``` + +启动服务: +```bash +sudo systemctl daemon-reload +sudo systemctl start classmanager +sudo systemctl enable classmanager +``` + +### 4. 前端部署 + +```bash +# 上传前端代码到 /var/www/classmanager/frontend/ +# 配置Nginx +sudo vim /etc/nginx/sites-available/classmanager +``` + +Nginx配置示例: +```nginx +server { + listen 80; + server_name your-domain.com; + root /var/www/classmanager/frontend; + index index.php; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location ~ \.php$ { + include snippets/fastcgi-php.conf; + fastcgi_pass unix:/var/run/php/php8.0-fpm.sock; + } + + location /api/ { + proxy_pass http://127.0.0.1:8000/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + } +} +``` + +启用站点: +```bash +sudo ln -s /etc/nginx/sites-available/classmanager /etc/nginx/sites-enabled/ +sudo nginx -t +sudo systemctl restart nginx +``` + +--- + +## 环境变量说明 + +后端 `.env` 文件主要配置项: + +| 配置项 | 说明 | 示例 | +|-------|------|------| +| `APP_NAME` | 应用名称 | 班级操行分管理系统 | +| `DEBUG` | 调试模式 | false(生产环境) | +| `SECRET_KEY` | 应用密钥 | 32位以上随机字符串 | +| `DB_HOST` | 数据库地址 | localhost | +| `DB_USER` | 数据库用户名 | class_user | +| `DB_PASSWORD` | 数据库密码 | YourPassword | +| `DB_NAME` | 数据库名 | class_manager | +| `REDIS_HOST` | Redis地址 | localhost | +| `REDIS_PASSWORD` | Redis密码 | 可选 | +| `JWT_SECRET_KEY` | JWT密钥 | 32位以上随机字符串 | +| `DEBUG_PATH` | 调试入口路径 | /random-string | +| `DEDUCTION_HOMEWORK_NOT_SUBMIT` | 作业未提交扣分 | 2 | +| `DEDUCTION_HOMEWORK_LATE` | 作业迟交扣分 | 1 | +| `DEDUCTION_ATTENDANCE_ABSENT` | 缺勤扣分 | 5 | +| `DEDUCTION_ATTENDANCE_LATE` | 迟到扣分 | 2 | +| `DEDUCTION_ATTENDANCE_LEAVE` | 请假扣分 | 1 | + +--- + +## 常见问题 + +### Q1: 后端启动失败 +- 检查端口8000是否被占用 +- 检查数据库和Redis连接配置 +- 查看日志:`sudo journalctl -u classmanager -f` + +### Q2: 前端页面空白或报错 +- 检查Nginx配置中的root路径 +- 检查PHP-FPM是否运行 +- 检查文件权限:`sudo chown -R www-data:www-data /var/www/classmanager` + +### Q3: API请求404 +- 检查反向代理配置 +- 确认后端服务已启动 +- 检查防火墙设置 + +### Q4: 数据库连接失败 +- 确认MySQL已启动 +- 检查用户名密码 +- 确认用户有数据库权限 + +--- + +## 技术支持 + +- 开发者: Canglan +- 联系方式: admin@sea-studio.top +- 版权归属: Sea Network Technology Studio +- 许可证: MIT License diff --git a/README.md b/README.md index cd9d163..65c39de 100644 --- a/README.md +++ b/README.md @@ -19,11 +19,12 @@ **班主任权限:** - 学生管理:新增/编辑/删除学生、批量导入学生(JSON) -- 操行分管理:对学生进行加减分、撤销任何扣分记录、查看全班历史记录 +- 操行分管理:对学生进行加减分、撤销任何扣分记录、查看全班历史记录、导出德育分记录 - 作业管理:发布作业、查看提交情况 -- 考勤管理:查看全班考勤记录 +- 考勤管理:查看全班考勤记录、自定义考勤扣分值 - 科目管理:动态增删学科 -- 管理员管理:添加班长/科代表/考勤委员/劳动委员 +- 管理员管理:添加/编辑/删除/重置密码班长/科代表/考勤委员/劳动委员/志愿委员 +- 数据导出:导出历史记录、导出德育分记录(含加分/减分历史) **班长权限:** - 操行分管理:对学生进行加减分(±5分以内)、撤销任何人的扣分记录、查看全班历史记录 @@ -41,6 +42,10 @@ - 操行分管理:以卫生值日为理由进行加减分(固定 ±1 分) - 历史记录:仅查看自己提交的操作记录 +**志愿委员权限:** +- 操行分管理:以服务时长为由进行加分(仅加分) +- 历史记录:仅查看自己提交的操作记录 + ## 技术栈 | 层级 | 技术 | 版本 | @@ -81,7 +86,7 @@ classmanager/ │ │ ├── attendance.py # 考勤模型 │ │ ├── conduct.py # 操行分模型 │ │ ├── homework.py # 作业模型 -│ │ ├── operation_log.py # 操作日志模型 +│ │ ├── log.py # 日志模型 │ │ ├── student.py # 学生模型 │ │ ├── subject.py # 科目模型 │ │ └── user.py # 用户模型 @@ -112,10 +117,8 @@ classmanager/ │ │ ├── auth_service.py │ │ ├── conduct_service.py │ │ ├── homework_service.py -│ │ ├── import_service.py │ │ ├── log_service.py │ │ ├── parent_service.py -│ │ ├── permission_service.py │ │ ├── student_service.py │ │ └── subject_service.py │ │ @@ -192,15 +195,22 @@ classmanager/ ## 角色权限一览表 -| 角色 | 操行分查看 | 操行分加减 | 撤销扣分 | 历史记录查看 | -|------|-----------|-----------|---------|-------------| -| 班主任 | 全班 | 无限制 | 可撤销任何记录 | 全班所有记录 | -| 班长 | 全班 | ±5分 | 可撤销任何记录 | 全班所有记录 | -| 学习委员 | 全班 | 仅扣分(按规则) | 不可撤销 | 仅自己提交的 | -| 考勤委员 | 全班 | 仅扣分(按规则) | 不可撤销 | 仅自己提交的 | -| 劳动委员 | 全班 | 仅±1分(卫生值日) | 不可撤销 | 仅自己提交的 | -| 学生 | 自己 | 无 | 无 | 自己的历史 | -| 家长 | 子女总分 | 无 | 无 | 不可见详情 | +| 角色 | 操行分查看 | 操行分加减 | 撤销扣分 | 历史记录查看 | 其他权限 | +|------|-----------|-----------|---------|-------------|---------| +| 班主任 | 全班 | 无限制 | 可撤销任何记录 | 全班所有记录 | 学生/管理员/科目管理、数据导出 | +| 班长 | 全班 | ±5分 | 可撤销任何记录 | 全班所有记录 | - | +| 学习委员 | 全班 | 仅扣分(按规则) | 不可撤销 | 仅自己提交的 | 作业管理、科目管理 | +| 考勤委员 | 全班 | 仅扣分(按规则) | 不可撤销 | 仅自己提交的 | 考勤管理 | +| 劳动委员 | 全班 | 仅±1分(卫生值日) | 不可撤销 | 仅自己提交的 | - | +| 志愿委员 | 全班 | 仅加分 | 不可撤销 | 仅自己提交的 | - | +| 学生 | 自己 | 无 | 无 | 自己的历史 | 修改密码 | +| 家长 | 子女总分 | 无 | 无 | 不可见详情 | - | + +## 密码要求 + +- 长度:6-20位 +- 复杂度:必须包含大写字母、小写字母、数字、特殊符号中的至少3种 +- 示例有效密码:`Hello1!`、`Abc123#`、`Test@99` ## 安装部署 diff --git a/backend/.env.example b/backend/.env.example index 33a5623..ad03abb 100644 --- a/backend/.env.example +++ b/backend/.env.example @@ -60,10 +60,19 @@ DEBUG_PATH=/a7k9x2m4q8w1e3r5t6y7u8i9o0p1z2x3 # 扣分规则配置 # =========================================== +# 作业未提交扣分 - 学生未按时提交作业时扣除的操行分 DEDUCTION_HOMEWORK_NOT_SUBMIT=2 + +# 作业迟交扣分 - 学生迟交作业时扣除的操行分 DEDUCTION_HOMEWORK_LATE=1 + +# 缺勤扣分 - 学生无故缺勤时扣除的操行分 DEDUCTION_ATTENDANCE_ABSENT=5 + +# 迟到扣分 - 学生迟到时扣除的操行分 DEDUCTION_ATTENDANCE_LATE=2 + +# 请假扣分 - 学生请假时扣除的操行分(可设为0表示不扣分) DEDUCTION_ATTENDANCE_LEAVE=1 # =========================================== diff --git a/docs/admin.md b/docs/admin.md index 12095ed..c84de67 100644 --- a/docs/admin.md +++ b/docs/admin.md @@ -1 +1,295 @@ -# 管理端使用文档 \ No newline at end of file +# 管理端使用文档 + +## 登录 + +1. 打开系统网址,进入登录页面 +2. 输入**用户名**和**密码** +3. 点击"登录"按钮 +4. 首次登录系统会强制要求修改密码 + +> **密码要求**:长度6-20位,必须包含大写字母、小写字母、数字、特殊符号中的至少3种。 + +--- + +## 角色说明 + +管理端根据角色不同,拥有不同的功能权限: + +| 角色 | 操行分管理 | 历史记录 | 作业管理 | 考勤管理 | 科目管理 | 管理员管理 | 数据导出 | +|------|-----------|---------|---------|---------|---------|-----------|---------| +| 班主任 | 无限制 | 全部 | 全部 | 全部 | ✓ | ✓ | ✓ | +| 班长 | ±5分 | 全部 | - | - | - | - | - | +| 学习委员 | - | 自己的 | ✓ | - | ✓ | - | - | +| 考勤委员 | - | 自己的 | - | ✓ | - | - | - | +| 劳动委员 | ±1分 | 自己的 | - | - | - | - | - | +| 志愿委员 | 仅加分 | 自己的 | - | - | - | - | - | + +--- + +## 功能说明 + +### 1. 首页 (dashboard.php) + +管理端首页展示以下内容: + +- **统计数据**:学生总数 +- **快捷操作**: + - 操行分管理(班主任/班长/劳动委员/志愿委员) + - 导入学生(班主任) + - 导出德育分记录(班主任) +- **操行分排行榜**:展示前100名学生的排名、学号、姓名和操行分 + +--- + +### 2. 操行分管理 (conduct.php) + +#### 查看学生列表 +- 展示所有学生的学号、姓名、当前操行分 +- 支持按学生选择 + +#### 批量加减分 +1. 在学生列表中勾选目标学生(可点击"全选") +2. 点击"批量加减分"按钮 +3. 填写以下信息: + - **分数变动**:正数为加分,负数为扣分 + - **原因**:填写加减分原因(必填) +4. 点击"确认提交" + +**加减分限制**: +| 角色 | 限制 | +|------|------| +| 班主任 | 无限制 | +| 班长 | ±5分以内 | +| 劳动委员 | 固定±1分(卫生值日理由) | +| 志愿委员 | 仅限加分 | + +#### 单人加减分 +点击学生行右侧的"加减分"按钮,操作同批量加减分。 + +#### 导出德育分记录(仅班主任) +1. 点击"导出德育分记录"按钮 +2. 系统自动生成CSV文件并下载 +3. 文件格式:`学号,姓名,分数,加分历史,减分记录` +4. 历史记录以分号分隔,包含原因和分值 + +--- + +### 3. 历史记录 (history.php) + +#### 查看历史记录 +- 展示所有操行分变动记录 +- 支持筛选条件: + - **开始日期** / **结束日期**:按时间范围筛选 + - **学生**:按学生筛选 +- 点击"查询"按钮刷新列表 + +#### 导出历史记录(仅班主任) +1. 设置筛选条件(可选) +2. 点击"导出历史记录"按钮 +3. 系统自动生成CSV文件并下载 +4. 文件格式:`时间,学号,姓名,分数变动,原因,操作人` + +#### 撤销记录(班主任/班长) +1. 在历史记录列表中找到目标记录 +2. 点击右侧"撤销"按钮 +3. 确认撤销操作 + +--- + +### 4. 作业管理 (homework.php)(班主任/学习委员) + +本模块用于管理学生作业缺交情况,学习委员可发布缺交作业记录并关联扣分。 + +#### 查看学生列表 +- 展示所有学生的学号、姓名、当前操行分 +- 可勾选学生进行批量操作 + +#### 批量扣分 +1. 在学生列表中勾选目标学生(可点击"全选") +2. 点击"批量加减分"按钮 +3. 选择扣分类型: + - **未交作业**:按配置扣分(默认2分) + - **迟交作业**:按配置扣分(默认1分) + - **自定义**:手动输入扣分值 +4. 填写原因(自动填充或手动修改) +5. 可选择是否关联扣分 +6. 点击"确认提交" + +**扣分限制**:每次加减分不超过3分 + +#### 学生端作业查看 +学生可在学生端"作业情况"页面查看: +- 科目、作业标题 +- 截止日期 +- 提交状态 +- 教师备注 + +--- + +### 5. 考勤管理 (attendance.php)(班主任/考勤委员) + +#### 添加考勤记录 +1. 点击"添加考勤"按钮 +2. 选择学生(支持多选) +3. 选择日期 +4. 选择考勤状态: + - 正常 + - 迟到 + - 缺勤 + - 请假 +5. 填写备注(可选) +6. 设置是否关联扣分(默认开启) +7. 可自定义扣分值(仅班主任) +8. 点击"确认提交" + +#### 查看考勤记录 +- 按日期和学生筛选考勤记录 +- 每条记录显示: + - 学号、姓名 + - 日期 + - 考勤状态 + - 备注 + +**默认扣分规则**: +| 考勤状态 | 默认扣分 | +|---------|---------| +| 缺勤 | 5分 | +| 迟到 | 2分 | +| 请假 | 1分 | + +--- + +### 6. 学生管理 (students.php)(仅班主任) + +#### 查看学生列表 +- 展示所有学生的学号、姓名、家长手机号、状态等信息 +- 支持搜索 + +#### 新增学生 +1. 点击"新增学生"按钮 +2. 填写学号、姓名 +3. 可选填家长手机号(填写后系统自动创建家长账号) +4. 点击"确认" + +#### 批量导入学生 +1. 点击"导入学生"按钮 +2. 下载导入模板 +3. 上传JSON格式的学生数据文件 +4. 系统自动解析并导入 +5. 导入结果展示成功/失败数量 + +> 导入的学生初始操行分为60分,系统自动创建学生登录账号和密码。 + +--- + +### 7. 科目管理 (subjects.php)(班主任/学习委员) + +#### 查看科目列表 +- 展示所有科目及其状态 + +#### 添加科目 +1. 点击"添加科目"按钮 +2. 填写科目名称 +3. 可选填科目编码和排序 +4. 点击"确认" + +#### 管理科目 +- 编辑:修改科目信息 +- 删除:删除科目(已有作业关联的科目不可删除) +- 启用/禁用:控制科目状态 + +--- + +### 8. 管理员管理 (admins.php)(仅班主任) + +#### 查看管理员列表 +- 展示所有管理员的用户名、姓名、角色 + +#### 添加管理员 +1. 点击"添加管理员"按钮 +2. 填写以下信息: + - **用户名**:登录账号 + - **姓名**:真实姓名 + - **密码**:留空则自动生成8位随机密码 + - **角色**:选择角色类型 +3. 点击"添加" +4. 添加成功后会显示管理员信息和初始密码(请妥善保存) + +#### 编辑管理员 +1. 点击管理员行的"编辑"按钮 +2. 修改角色类型 +3. 点击"保存" + +#### 重置密码 +1. 点击管理员行的"重置密码"按钮 +2. 输入新密码(至少6位) +3. 点击"确认重置" + +#### 删除管理员 +1. 点击管理员行的"删除"按钮 +2. 确认删除操作 +3. 不可恢复,请谨慎操作 + +--- + +### 9. 修改密码 (password.php) + +- 输入原密码和新密码 +- 新密码需符合密码强度要求 +- 修改成功后需重新登录 + +--- + +## 导航栏说明 + +管理端侧边导航栏包含以下入口: + +| 导航项 | 页面 | 权限 | +|-------|------|------| +| 首页 | /admin/dashboard.php | 所有管理员 | +| 操行分管理 | /admin/conduct.php | 班主任/班长/劳动委员/志愿委员 | +| 历史记录 | /admin/history.php | 所有管理员 | +| 作业管理 | /admin/homework.php | 班主任/学习委员 | +| 考勤管理 | /admin/attendance.php | 班主任/考勤委员 | +| 学生管理 | /admin/students.php | 班主任 | +| 科目管理 | /admin/subjects.php | 班主任/学习委员 | +| 管理员管理 | /admin/admins.php | 班主任 | +| 修改密码 | /admin/password.php | 所有管理员 | + +--- + +## 常见问题 + +### Q: 忘记密码怎么办? +班主任密码请联系系统管理员通过调试接口重置。其他管理员请联系班主任或开发人员重置。 + +### Q: 如何导出全班德育分记录? +班主任登录后,在"操行分管理"页面点击"导出德育分记录"按钮,系统会生成包含所有学生当前分数及加减分历史的CSV文件。 + +### Q: 如何撤销错误的加减分? +在"历史记录"页面找到对应记录,点击"撤销"按钮。班主任和班长可以撤销任何人的扣分记录。 + +### Q: 导入学生时格式错误怎么办? +请确保上传的文件是JSON格式,包含 `students` 数组,每个学生对象至少包含 `student_no`(学号)和 `name`(姓名)字段。 + +### Q: 考勤扣分规则可以修改吗? +考勤扣分规则在系统配置中设置,如需调整请联系系统管理员修改后端配置文件。班主任在添加考勤记录时可以自定义扣分值。 + +--- + +## 数据导出说明 + +### 德育分记录导出 +- **位置**:操行分管理页面 +- **权限**:仅班主任 +- **格式**:CSV(UTF-8编码) +- **字段**:学号、姓名、分数、加分历史、减分记录 +- **文件名**:`德育分记录_日期.csv` + +### 历史记录导出 +- **位置**:历史记录页面 +- **权限**:仅班主任 +- **格式**:CSV(UTF-8编码) +- **字段**:时间、学号、姓名、分数变动、原因、操作人 +- **支持筛选**:可按时间范围和学生筛选后导出 +- **文件名**:`历史记录_日期.csv` diff --git a/docs/parent.md b/docs/parent.md index bb7a48d..e886a9d 100644 --- a/docs/parent.md +++ b/docs/parent.md @@ -1 +1,59 @@ -# 家长端使用文档 \ No newline at end of file +# 家长端使用文档 + +## 登录 + +1. 打开系统网址,进入登录页面 +2. 选择"家长"身份 +3. 输入在学校请假系统使用的的**手机号**和**初始密码** +4. 点击"登录"按钮 + +> **注意**:家长账号由班主任创建,与子女信息关联。每个学生对应一个家长账号。 + +--- + +## 功能说明 + +家长端包含以下页面: + +### 1. 首页 + +登录后进入家长端首页,展示以下信息: + +| 信息项 | 说明 | +|-------|------| +| 子女姓名 | 显示关联学生的姓名 | +| 学号 | 显示关联学生的学号 | +| 当前操行分 | 显示子女当前的总操行分 | + +页面顶部以紫色渐变卡片展示子女基本信息,下方大字号显示当前操行分。 + +### 2. 考勤记录 + +查看子女的考勤记录: + +- 按日期显示考勤记录列表 +- 每条记录包含: + - 日期 + - 考勤状态(正常/迟到/缺勤/请假) + - 备注(如有) + +--- + +## 导航栏说明 + +家长端导航栏包含以下入口: + +| 导航项 | 页面 | 说明 | +|-------|------|------| +| 首页 | /parent/dashboard.php | 子女信息和操行分概览 | +| 考勤记录 | /parent/attendance.php | 子女考勤记录明细 | + +--- + +## 常见问题 + +### Q: 忘记密码怎么办? +请联系班主任重置密码。 + +### Q: 为什么只能看到总分,看不到加减分详情? +家长端目前仅展示子女的总操行分,如需了解详细加减分情况,请联系班主任或通过学生端查看。 diff --git a/docs/student.md b/docs/student.md index 14026e3..231c22d 100644 --- a/docs/student.md +++ b/docs/student.md @@ -1 +1,91 @@ -# 学生端使用文档 \ No newline at end of file +# 学生端使用文档 + +## 登录 + +1. 打开系统网址,进入登录页面 +2. 输入的**长学号**和**密码** +3. 点击"登录"按钮 +4. 首次登录系统会强制要求修改密码,请设置一个安全的新密码 + +> **密码要求**:长度6-20位,必须包含大写字母、小写字母、数字、特殊符号中的至少3种。 + +--- + +## 功能说明 + +学生端包含以下页面: + +### 1. 首页 + +登录后进入学生端首页,展示以下信息: + +| 信息项 | 说明 | +|-------|------| +| 当前操行分 | 显示当前总操行分 | +| 班级排名 | 显示在班级中的排名 | +| 作业完成率 | 已完成作业数/总作业数 | +| 本月出勤率 | 本月正常出勤天数/应出勤天数 | + +首页下方还会显示最近的操行分变动记录。 + +### 2. 操行分详情 + +查看个人完整的操行分明细: + +- **当前总分**:显示在页面顶部 +- **历史记录列表**:包含每条加减分记录的详细信息 + - 变动时间 + - 分数变化(绿色为加分,红色为扣分) + - 变动原因 + - 操作人 + +### 3. 作业情况 + +查看个人作业缺交记录: + +- 显示作业列表 +- 每条作业显示: + - 科目、作业标题 + - 截止日期 + - 提交状态(已提交/未提交/迟交) + - 教师备注(如有) + +### 4. 考勤记录 + +查看个人考勤记录: + +- 按月份显示考勤记录 +- 每条记录包含: + - 日期 + - 考勤状态(正常/迟到/缺勤/请假) + - 备注(如有) + +### 5. 修改密码 + +- 输入原密码和新密码 +- 新密码需符合密码强度要求 +- 修改成功后需重新登录 + +--- + +## 常见问题 + +### Q: 忘记密码怎么办? +请联系班主任或开发人员重置密码。 + +### Q: 操行分有误怎么办? +请联系班主任或班长核实并调整。 + +--- + +## 导航栏说明 + +学生端底部/顶部导航栏包含以下入口: + +| 导航项 | 页面 | 说明 | +|-------|------|------| +| 首页 | /student/dashboard.php | 概览信息和快捷数据 | +| 操行分详情 | /student/conduct_history.php | 完整加减分历史 | +| 作业情况 | /student/homework.php | 作业缺交记录 | +| 考勤记录 | /student/attendance.php | 考勤记录明细 | +| 修改密码 | /student/password.php | 修改登录密码 | diff --git a/frontend/admin/history.php b/frontend/admin/history.php index 7d6bf40..fd80192 100644 --- a/frontend/admin/history.php +++ b/frontend/admin/history.php @@ -56,7 +56,7 @@ include __DIR__ . '/../includes/header.php'; 分数变动 原因 操作人 - + 操作 @@ -108,14 +108,14 @@ async function loadHistory(page = 1) { ${record.points_change > 0 ? '+' : ''}${record.points_change} ${escapeHtml(record.reason)} ${escapeHtml(record.recorder_name)}`; - + html += ``; html += ``; }); if (res.data.records.length === 0) { - const colSpan = ; + const colSpan = ; html = `暂无记录`; } diff --git a/frontend/admin/password.php b/frontend/admin/password.php index 7e20c5d..3a43202 100644 --- a/frontend/admin/password.php +++ b/frontend/admin/password.php @@ -35,7 +35,7 @@ include __DIR__ . '/../includes/header.php';
- 密码长度6-20位,需包含字母和数字 + 密码长度6-20位,需包含大写字母、小写字母、数字、特殊符号中的至少3种
diff --git a/frontend/student/dashboard.php b/frontend/student/dashboard.php index e446a85..fcf76e6 100644 --- a/frontend/student/dashboard.php +++ b/frontend/student/dashboard.php @@ -196,7 +196,7 @@ include __DIR__ . '/../includes/header.php';
- 密码长度6-20位,需包含字母和数字 + 密码长度6-20位,需包含大写字母、小写字母、数字、特殊符号中的至少3种
@@ -218,7 +218,7 @@ include __DIR__ . '/../includes/header.php';
- 密码长度6-20位,需包含字母和数字 + 密码长度6-20位,需包含大写字母、小写字母、数字、特殊符号中的至少3种
diff --git a/frontend/student/password.php b/frontend/student/password.php index 17dece6..36ffab8 100644 --- a/frontend/student/password.php +++ b/frontend/student/password.php @@ -40,7 +40,7 @@ include __DIR__ . '/../includes/header.php';
- 密码长度6-20位,需包含字母和数字 + 密码长度6-20位,需包含大写字母、小写字母、数字、特殊符号中的至少3种