一、项目背景与目标
云成绩成绩查询平台,学生和家长需要通过官方APP或网页查询成绩,但官方渠道存在查询效率低、无法批量导出、缺少数据分析等问题。本项目旨在开发一个便捷的成绩查询辅助系统,提供成绩查询、数据导出、成绩分析等功能,帮助用户更高效地管理和分析考试成绩数据。
二、软件功能、核心功能模块
1.用户认证模块:通过云成绩API实现用户登录认证,支持会话持久化管理
2.成绩查询模块:获取考试列表、查询全科/单科成绩详情、排名信息、分数差距分析
3.成绩导出模块:支持导出Excel(.xlsx)和TXT格式成绩单,包含全科成绩、单科详情、小分情况
4.权限管理模块:兑换码激活机制、权限有效期管理、支持按时长/指定日期/永久权限
5.管理员后台:用户管理、兑换码管理、考试ID公示、日志管理、仪表盘统计
6.安全防护模块:CSRF防护、IP封禁机制、数据加密存储、安全HTTP响应头
三、业务流程、功能路径描述
用户通过账号密码登录系统 → 系统验证身份并创建会话 → 用户输入兑换码激活查询权限 → 选择要查询的考试 → 查看成绩详情(包含排名、分数差距、难度分析等) → 导出成绩单。管理员可登录后台管理用户、生成兑换码、公示考试ID、查看系统日志。
一、整体架构和设计思路
采用经典的B/S架构,前后端分离设计。后端使用Flask框架提供RESTful API接口,前端使用原生HTML/CSS/JavaScript实现响应式界面。数据层采用JSON文件存储用户信息、权限数据、兑换码等,敏感数据使用AES加密存储。系统设计了SessionManager混合存储架构,解决多进程部署下会话共享问题。
技术栈分布:
API层:Flask路由处理请求,封装云成绩第三方API
业务层:权限验证、成绩数据处理、Excel生成
安全层:CSRF防护、IP封禁、数据加密、安全响应头
前端层:响应式设计,支持PC端和移动端
二、我负责的模块和结果
我独立完成了整个系统的设计与开发,主要成果包括:
实现了20+个API接口,涵盖用户认证、成绩查询、权限管理、管理员功能等
开发了成绩单自动生成功能,支持Excel和TXT两种格式导出
构建了完整的权限管理系统,支持兑换码激活、多种权限模式
实现了多维度安全防护,包括CSRF防护、登录IP封禁、激活码暴力破解防护
设计了管理员后台,包含用户管理、兑换码管理、日志管理、仪表盘等功能
项目从V0.1迭代至V2.3.3,累计完成15个版本更新
三、我遇到的难点、坑和解决方案
1.多进程部署Session不共享问题:Gunicorn多worker进程间内存不共享,导致登录后立即显示会话过期。解决方案:设计SessionManager混合存储架构,文件存储元数据,内存存储API对象,配合线程锁保证并发安全。
2.权限绕过漏洞:发现用户可通过自定义考试ID绕过权限检查。解决方案:在直接查询考试详情前添加权限验证,修复安全漏洞。
3.数据格式兼容性:云成绩API返回数据格式不统一,有时返回字符串、有时返回字典。解决方案:在数据处理层添加类型检查和格式转换逻辑,增强容错性。