Files
dianming/README.md
2026-04-25 10:09:16 +08:00

6.2 KiB
Raw Blame History

点名系统

一个基于Web的点名系统支持后台管理和用户点名功能。支持双模式运行:服务器模式和本地模式

🌟 核心特性

双模式运行

  • 服务器模式通过Node.js服务器运行支持多用户、数据持久化
  • 本地模式直接打开HTML文件使用浏览器localStorage存储无需服务器

功能特性

  • 管理员登录默认账号admin / admin123
  • 创建点名名单,自动生成编号和二维码
  • 用户通过编号或二维码进入点名
  • 实时进度条显示
  • 拍照点名(支持人脸识别)
  • 手动点名
  • 数据实时同步

🚀 快速开始

方式一:本地模式(推荐新手)

无需安装Node.js直接使用

  1. 打开后台管理

    • 直接双击 admin.html 文件
    • 或在浏览器中打开 admin.html
  2. 登录系统

    • 用户名: admin
    • 密码: admin123
  3. 创建点名名单

    • 输入名单名称和成员
    • 系统自动生成编号和二维码
  4. 用户点名

    • 打开 index.html
    • 输入编号进入点名

优点

  • 无需安装任何软件
  • 即开即用
  • 数据保存在浏览器本地

注意

  • ⚠️ 数据仅保存在当前浏览器
  • ⚠️ 清除浏览器数据会丢失记录
  • ⚠️ 不同浏览器/电脑数据不共享

方式二:服务器模式(推荐正式使用)

需要Node.js环境

  1. 启动服务器

    # 方法1: 使用批处理文件
    双击 "启动服务器.bat"
    
    # 方法2: 命令行启动
    cd 手机点名器
    node server.js
    
  2. 访问系统

  3. 登录系统

    • 用户名: admin
    • 密码: admin123

优点

  • 数据持久化到文件
  • 支持多用户访问
  • 数据不会丢失
  • 可以在局域网使用

📖 详细使用说明

后台管理操作

  1. 创建点名名单

    • 输入名单名称(如:"2024春季班点名"
    • 输入成员名单(每行一个姓名)
    • 点击"生成"按钮
    • 系统自动生成编号和二维码
  2. 管理名单

    • 查看二维码:显示编号和二维码
    • 编辑:修改名单名称和成员
    • 删除:删除整个名单
  3. 查看记录

    • 查看所有点名记录
    • 显示点名时间、名单、编号

用户点名操作

  1. 进入点名

    • 方式1输入编号
    • 方式2扫描二维码需摄像头
    • 方式3直接访问带参数的URL
  2. 点名方式

    • 拍照点名:开启摄像头拍照,系统自动识别
    • 手动点名:从下拉列表选择姓名
  3. 查看进度

    • 实时进度条显示
    • 已点名/总人数统计
    • 成员状态标记

🔄 模式自动切换

系统会自动检测运行环境:

访问方式 运行模式 数据存储
双击HTML文件 本地模式 localStorage
file://协议 本地模式 localStorage
http://localhost 服务器模式 服务器文件
http://域名 服务器模式 服务器文件

📁 文件结构

手机点名器/
├── server.js           # Node.js后端服务器
├── package.json        # 项目配置
├── storage.js          # 通用数据存储模块(核心)
├── admin.html          # 后台管理页面
├── index.html          # 用户点名页面
├── styles.css          # 共享样式
├── admin.js            # 后台管理逻辑
├── index.js            # 用户点名逻辑
├── qrcode.js           # 本地二维码生成器
├── 启动服务器.bat       # Windows启动脚本
├── 启动说明.md          # 启动说明
├── data_lists.json     # 点名列表数据(服务器模式)
├── data_records.json   # 点名记录数据(服务器模式)
├── idea.md             # 需求文档
└── README.md           # 使用说明

🛠️ 技术架构

前端

  • 纯HTML/CSS/JavaScript
  • 无框架依赖
  • 响应式设计
  • 本地二维码生成

后端(可选)

  • Node.js原生HTTP服务器
  • RESTful API设计
  • 文件系统数据存储
  • CORS支持

数据存储

  • 本地模式浏览器localStorage
  • 服务器模式JSON文件持久化

📝 API接口文档服务器模式

登录

  • URL: /api/login
  • 方法: POST
  • 参数: { username, password }

创建点名名单

  • URL: /api/create-list
  • 方法: POST
  • 参数: { name, members: [] }

获取所有名单

  • URL: /api/get-lists
  • 方法: GET

获取单个名单

  • URL: /api/get-list?code=xxx
  • 方法: GET

更新名单

  • URL: /api/update-list
  • 方法: POST
  • 参数: { id, name, members: [] }

删除名单

  • URL: /api/delete-list
  • 方法: POST
  • 参数: { id }

点名

  • URL: /api/roll-call
  • 方法: POST
  • 参数: { code, name }

获取点名记录

  • URL: /api/get-records
  • 方法: GET

常见问题

Q1: 本地模式下数据会丢失吗?

A: 数据保存在浏览器localStorage中除非清除浏览器数据否则不会丢失。

Q2: 可以在不同电脑上使用吗?

A:

  • 本地模式:每台电脑独立数据,不共享
  • 服务器模式可以通过局域网IP访问数据共享

Q3: 如何在手机上使用?

A:

  • 本地模式将HTML文件传到手机用浏览器打开
  • 服务器模式通过局域网IP访问http://192.168.1.100:3000

Q4: 服务器模式如何停止?

A: 在命令行窗口按 Ctrl+C 或关闭窗口

Q5: 端口被占用怎么办?

A: 修改 server.js 中的 const PORT = 3000; 为其他端口

🔧 扩展建议

  1. 集成真实的人脸识别API
  2. 使用数据库替代文件存储
  3. 实现扫码功能
  4. 添加数据导出功能
  5. 支持批量导入名单
  6. 添加用户权限管理
  7. 实现WebSocket实时通信
  8. 添加日志记录功能

📄 许可证

MIT License


推荐使用方式

  • 🎯 学习/测试:使用本地模式,简单快捷
  • 🏢 正式使用:使用服务器模式,稳定可靠