This commit is contained in:
Harry
2026-04-25 10:09:16 +08:00
committed by GitHub
commit bf215c4b9f
15 changed files with 2482 additions and 0 deletions

244
README.md Normal file
View File

@@ -0,0 +1,244 @@
# 点名系统
一个基于Web的点名系统支持后台管理和用户点名功能。**支持双模式运行:服务器模式和本地模式**。
## 🌟 核心特性
### 双模式运行
- **服务器模式**通过Node.js服务器运行支持多用户、数据持久化
- **本地模式**直接打开HTML文件使用浏览器localStorage存储无需服务器
### 功能特性
- 管理员登录默认账号admin / admin123
- 创建点名名单,自动生成编号和二维码
- 用户通过编号或二维码进入点名
- 实时进度条显示
- 拍照点名(支持人脸识别)
- 手动点名
- 数据实时同步
## 🚀 快速开始
### 方式一:本地模式(推荐新手)
**无需安装Node.js直接使用**
1. **打开后台管理**
- 直接双击 `admin.html` 文件
- 或在浏览器中打开 `admin.html`
2. **登录系统**
- 用户名: `admin`
- 密码: `admin123`
3. **创建点名名单**
- 输入名单名称和成员
- 系统自动生成编号和二维码
4. **用户点名**
- 打开 `index.html`
- 输入编号进入点名
**优点**
- ✅ 无需安装任何软件
- ✅ 即开即用
- ✅ 数据保存在浏览器本地
**注意**
- ⚠️ 数据仅保存在当前浏览器
- ⚠️ 清除浏览器数据会丢失记录
- ⚠️ 不同浏览器/电脑数据不共享
### 方式二:服务器模式(推荐正式使用)
**需要Node.js环境**
1. **启动服务器**
```bash
# 方法1: 使用批处理文件
双击 "启动服务器.bat"
# 方法2: 命令行启动
cd 手机点名器
node server.js
```
2. **访问系统**
- 后台管理: http://localhost:3000/admin.html
- 用户点名: http://localhost:3000/index.html
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
---
**推荐使用方式**
- 🎯 **学习/测试**:使用本地模式,简单快捷
- 🏢 **正式使用**:使用服务器模式,稳定可靠