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

245 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 点名系统
一个基于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
---
**推荐使用方式**
- 🎯 **学习/测试**:使用本地模式,简单快捷
- 🏢 **正式使用**:使用服务器模式,稳定可靠