Skip to content

BoXueDuoCai/GradeTrack

Repository files navigation

GradeTrack - 高中成绩分析系统

Made By GLM 5.2

上海赋分制 · 多用户隔离 · 个人专属成绩管理平台

功能概览

成绩管理

  • 支持 6 种考试类型:月考5门 / 月考6门 / 期中10门 / 期末10门 / 期中6门 / 期末6门 / 自定义
  • 上海赋分制(A+/A/B+/B/B-/C+/C/C-/D+/D/E → 70/67/64/61/58/55/52/49/46/43/40)
  • 小分系统:数学固定21题,其他科目自由添加
  • 分数范围校验:超满分自动修正

多用户系统

  • 4 种角色:超级管理员 / 管理员 / 普通用户 / 测试用户
  • 每个用户只能访问自己的数据
  • 管理员可管理自己创建的小组成员
  • 超级管理员可管理所有用户

小组管理

  • CSV 批量导入学生(默认密码 123456,首次登录强制修改)
  • 小组创建者管理,可授权其他管理员查看
  • 小组成绩分析(总分对比/趋势/单科/雷达/进步榜/薄弱点预警)
  • 3 种格式导出(Excel/PDF/Word)

公告与通知

  • 多目标公告(全体/多小组/多用户,支持按小组批量导入用户)
  • 公告已读统计
  • 学习计划到期自动提醒
  • 通知中心(铃铛实时刷新未读数)

学习计划

  • 管理员发布学习计划给小组
  • 学生标记完成,管理员查看完成度
  • 附件上传(PDF 等,最大 20MB)
  • 日历视图(个人计划 + 小组计划)

图表分析

  • 9 种图表:单科趋势 / 总分趋势 / 排名变化 / 学科雷达 / 学科对比 / 进退步热力图 / 分科前后对比 / 时间段对比 / 科目进步榜
  • 小三门的得分率按原始分计算
  • 赋分总分满分按 70 算(语数英150×3 + 小三门70×3 = 660)

数据导出

  • Excel:横排格式(科目/分数/班排/年排/赋分/等级),冻结首行 + 筛选
  • PDF:中文报告(浏览器打印为 PDF)
  • 用户成绩导出(管理员/超管)
  • 小组分析导出(Excel/PDF/Word)
  • 数据库备份/恢复(仅超管)

其他

  • 暗色/亮色主题切换
  • 移动端手势导航(左右滑动切换页面)
  • PWA 支持(可添加到手机主屏)
  • 会话 2 小时自动过期
  • 下次考试日期设置(用户自设 / 管理员统一设)

快速开始

环境要求

  • Node.js 18+ 或 Bun
  • npm 或 Bun 包管理器

安装与运行

# 1. 安装依赖
bun install
#
npm install

# 2. 初始化数据库(首次运行)
# 将 db/default.db 复制为 db/custom.db
cp db/default.db db/custom.db

# 3. 生成 Prisma Client
bun run db:generate
#
npx prisma generate

# 4. 启动开发服务器
bun run dev
#
npm run dev

# 5. 打开浏览器访问 http://localhost:3000

Windows 一键启动

双击 start.bat 即可自动安装依赖、初始化数据库、启动服务。

默认账号

角色 用户名 密码 说明
超级管理员 system 123456 首次登录强制修改密码

首次登录后会要求修改密码,修改后重新登录即可使用。

技术栈

  • 框架: Next.js 16 (App Router + Turbopack)
  • 语言: TypeScript 5
  • 样式: Tailwind CSS 4 + shadcn/ui
  • 数据库: Prisma ORM + SQLite
  • 图表: Recharts
  • 导出: ExcelJS / jsPDF / docx
  • 认证: bcryptjs + Cookie Session(2小时 TTL)
  • 状态: TanStack Query + Zustand

项目结构

├── db/                 # SQLite 数据库文件
│   ├── default.db      # 初始化数据库(仅含 system 超管)
│   └── custom.db       # 运行时数据库(从 default.db 复制)
├── prisma/
│   └── schema.prisma   # 数据库模型定义
├── src/
│   ├── app/
│   │   ├── api/        # API 路由(30+ 个)
│   │   ├── globals.css # 全局样式
│   │   ├── layout.tsx  # 根布局
│   │   └── page.tsx    # 主页面
│   ├── components/
│   │   ├── score-app/  # 成绩分析系统组件(23 个)
│   │   └── ui/         # shadcn/ui 基础组件
│   └── lib/
│       ├── auth.ts     # 认证与权限
│       ├── constants.ts # 学科/考试类型常量
│       ├── db.ts       # Prisma 客户端
│       └── grade-system.ts # 赋分等级表
├── public/             # PWA 资源(manifest/sw/icons)
├── uploads/            # 附件存储目录
├── scripts/            # 初始化脚本
├── start.bat           # Windows 一键启动
└── package.json

考试类型说明

类型 科目 适用场景
月考5门 语数英物化 高一上10月/12月,高一下3月
月考6门 语数英 + 自选小三门 高一下5月起
期中10门 语数英物化生史地政+信息 高一上11月,高一下4月
期末10门 同上 高一上1月,高一下6月
期中6门 语数英 + 自选小三门 高二起
期末6门 同上 高二起
自定义 自由选择 周测/模拟考等

上海赋分制对照表

等级 A+ A B+ B B- C+ C C- D+ D E
分值 70 67 64 61 58 55 52 49 46 43 40

赋分科目:物理、化学、生物、历史、地理、政治(6选3)

语数英始终用原始分(满分150),信息技术不参与赋分。

许可证

GNU Affero General Public License v3.0

About

上海高中学业成绩记录和分析网站

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages