Skip to content

基于最新2025年题库的业余无线电执照考试模拟应用,支持A/B/C三类考试,提供完整的模拟考试、智能化练习、关键词搜索、报名照片处理等功能,采用Next.js 15 + React 19技术栈,支持PWA离线使用,数据本地存储确保隐私安全。

Notifications You must be signed in to change notification settings

AlliotTech/ham-exam-web

Repository files navigation

业余无线电执照考试模拟

Node 22+ Next.js 15 React 19

基于最新2025年题库的业余无线电执照考试模拟应用,支持A/B/C三类考试,提供完整的模拟考试、智能化练习、关键词搜索、报名照片处理等功能,采用Next.js 15 + React 19技术栈,支持PWA离线使用,数据本地存储确保隐私安全。

在线demo: 业余无线电考试

功能特色

核心功能

  • 📝 模拟考试:A/B/C 三类考试,支持真实规则抽题、计时交卷和成绩统计
  • 🎯 练习模式:顺序/随机练习,进度保存,答案解析
  • 🔍 智能搜索:题号和关键词搜索(练习模式)
  • 📱 照片处理:报名照片尺寸调整工具

用户体验

  • ⌨️ 键盘快捷键:方向键切换题目,数字键选择选项
  • 📋 答题卡:快速导航,题目标记,进度跟踪
  • 📱 移动优先:响应式设计,PWA 支持,可离线使用
  • 💾 本地存储:隐私保护,所有数据保存在本地

快速开始

环境要求

  • Node.js 22+
  • pnpm / npm / yarn

安装与运行

# 安装依赖
pnpm install

# 本地开发
pnpm dev

# 生产构建
pnpm build

# 启动生产服务
pnpm start

访问 http://localhost:3000 开始使用。

数据集构建

项目首次运行需要构建题库数据:

# 单独构建数据集
node ./scripts/build-dataset.mjs

数据来源支持本地文件或远程仓库,详见脚本注释。

页面路由

  • / - 首页,选择题库和模式
  • /practice?bank=A|B|C - 练习模式
  • /exam?bank=A|B|C - 模拟考试
  • /photo-processor - 照片处理工具

快捷键

  • ← / → - 上一题 / 下一题
  • 1-9 - 选择对应选项(单选题)
  • Enter - 打开搜索(练习模式)

技术栈

  • Frontend: Next.js 15, React 19, TypeScript
  • UI: Tailwind CSS, Radix UI, Lucide Icons
  • State: Zustand
  • PWA: @ducanh2912/next-pwa
  • Build: Turbopack

隐私与数据

  • 所有数据存储在浏览器本地 (localStorage)
  • 不收集或上传任何个人数据
  • 支持 PWA,可离线使用

常见问题

  • 题库为空或404? 请先运行 node ./scripts/build-dataset.mjs 构建数据集
  • 图片不显示? 确认已正确构建数据集,图片文件应在 public/questions/images/
  • 搜索无效? 搜索功能仅在练习模式的顺序模式下可用

致谢

About

基于最新2025年题库的业余无线电执照考试模拟应用,支持A/B/C三类考试,提供完整的模拟考试、智能化练习、关键词搜索、报名照片处理等功能,采用Next.js 15 + React 19技术栈,支持PWA离线使用,数据本地存储确保隐私安全。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published