🎯 智能点名网页系统
一个现代化的在线点名系统,支持学生信息管理、随机点名、数据导入导出等功能。
✨ 功能特性
🎲 核心功能
- 随机点名: 支持多种点名模式,包括滚轮效果和礼花庆祝
- 学生管理: 添加、删除、编辑学生信息
- 数据持久化: 自动保存学生数据到本地存储
- 导入导出: 支持CSV和TXT格式的批量导入导出
- 模板下载: 提供标准格式的导入模板
🎨 界面特色
- 现代化设计: 采用渐变背景和毛玻璃效果
- 响应式布局: 完美适配桌面端和移动端
- 动画效果: 丰富的交互动画和视觉反馈
- 主题一致: 统一的色彩搭配和设计语言
📊 数据管理
- 实时统计: 显示学生总数、已点名数量等统计信息
- 历史记录: 记录点名历史,避免重复点名
- 批量操作: 支持批量导入学生信息
- 数据验证: 自动验证导入数据格式
🚀 快速开始
环境要求
- 现代浏览器(Chrome、Firefox、Safari、Edge)
- Python 3.x(用于本地服务器,可选)
- 或任何静态文件服务器
安装步骤
-
克隆项目
git clone <repository-url> cd 点名网页 -
启动本地服务器
使用Python:
python3 -m http.server 8001或使用Node.js:
npx serve . -
访问应用
打开浏览器访问:
http://localhost:8001
直接使用
也可以直接双击 index.html 文件在浏览器中打开使用。
📖 使用指南
学生管理
-
添加学生
- 在"学生管理"区域输入学生姓名
- 点击"添加学生"按钮
- 学生信息会自动保存到本地
-
批量导入
- 点击"下载CSV模板"或"下载TXT模板"获取标准格式
- 按照模板格式填写学生信息
- 将文件拖拽到导入区域或点击选择文件
- 系统会自动验证并导入数据
-
编辑删除
- 在学生列表中点击学生姓名可以编辑
- 点击删除按钮可以移除学生
点名功能
-
开始点名
- 点击"开始点名"按钮启动随机选择
- 系统会以滚轮效果显示学生姓名
- 点击"停止点名"确定最终结果
-
点名设置
- 调整滚动速度滑块控制点名速度
- 系统会自动避免重复点名已选中的学生
-
重置功能
- 点击"重置点名"清空点名历史
- 所有学生重新参与点名
数据导出
-
导出学生列表
- 点击"导出CSV"或"导出TXT"按钮
- 系统会自动下载包含所有学生信息的文件
-
数据格式
- CSV格式:
姓名,学号,班级 - TXT格式:每行一个学生姓名
- CSV格式:
🛠️ 开发指南
项目结构
点名网页/
├── index.html # 主页面文件
├── style.css # 样式文件
├── script.js # 主要逻辑文件
├── template_students.csv # CSV模板文件
├── template_students.txt # TXT模板文件
├── 赞赏二维码.jpg # 赞赏二维码图片
└── README.md # 项目说明文档
核心组件
RollCallApp 类
主应用类,负责整个系统的初始化和管理:
class RollCallApp {
constructor() {
this.students = []; // 学生数据
this.calledStudents = []; // 已点名学生
this.isRolling = false; // 点名状态
this.rollInterval = null; // 点名定时器
this.currentSpeed = 100; // 滚动速度
}
}
主要方法
initElements(): 初始化DOM元素引用bindEvents(): 绑定事件监听器addStudent(): 添加学生startRollCall(): 开始点名stopRollCall(): 停止点名handleFileImport(): 处理文件导入exportData(): 导出数据
样式系统
CSS变量
:root {
--primary-blue: #4a90e2;
--primary-orange: #ff6b35;
--accent-green: #4caf50;
--white: #ffffff;
--light-gray: #f8f9fa;
--border-radius: 12px;
--transition: all 0.3s ease;
}
响应式设计
- 桌面端:双栏布局
- 平板端:单栏布局,调整间距
- 移动端:紧凑布局,优化触控体验
数据存储
系统使用 localStorage 进行数据持久化:
// 保存学生数据
localStorage.setItem('rollcall_students', JSON.stringify(students));
// 加载学生数据
const savedStudents = localStorage.getItem('rollcall_students');
文件处理
支持拖拽和点击两种文件导入方式:
// 拖拽处理
importZone.addEventListener('drop', handleFileDrop);
// 文件选择处理
fileInput.addEventListener('change', handleFileSelect);
🎨 自定义开发
添加新功能
-
扩展学生属性
// 在addStudent方法中添加新字段 const student = { id: Date.now(), name: studentName, studentId: studentId, // 新增学号 class: className // 新增班级 }; -
自定义点名动画
/* 添加新的动画效果 */ @keyframes customRoll { 0% { transform: rotateY(0deg); } 100% { transform: rotateY(360deg); } } -
扩展导出格式
// 添加新的导出方法 exportToJSON() { const data = JSON.stringify(this.students, null, 2); this.downloadFile(data, 'students.json', 'application/json'); }
主题定制
修改CSS变量即可快速更换主题:
:root {
/* 深色主题示例 */
--primary-blue: #1e3a8a;
--primary-orange: #ea580c;
--background: #1f2937;
--text-color: #f9fafb;
}
性能优化
- 虚拟滚动:处理大量学生数据
- 防抖处理:优化搜索和输入体验
- 懒加载:按需加载组件和资源
🔧 部署指南
静态部署
项目为纯前端应用,可部署到任何静态托管服务:
- Vercel: 已配置
vercel.json - Netlify: 直接拖拽文件夹部署
- GitHub Pages: 推送到
gh-pages分支 - 服务器: 上传到 Web 服务器目录
Vercel 部署
# 安装 Vercel CLI
npm i -g vercel
# 部署
vercel
自定义域名
在托管服务中配置自定义域名,确保HTTPS访问。
🐛 常见问题
Q: 数据丢失怎么办?
A: 系统使用本地存储,清除浏览器数据会导致丢失。建议定期导出备份。
Q: 导入文件格式错误?
A: 请使用系统提供的模板格式,确保编码为UTF-8。
Q: 移动端显示异常?
A: 确保使用现代浏览器,建议Chrome或Safari最新版本。
Q: 点名结果不随机?
A: 系统使用真随机算法,连续相同结果属于正常概率事件。
📝 更新日志
v1.2.0
- ✨ 新增模板下载功能
- 🎨 优化界面设计和动画效果
- 📱 改进移动端适配
- 🐛 修复数据导入bug
v1.1.0
- ✨ 新增批量导入功能
- 🎯 优化点名算法
- 💾 改进数据存储机制
v1.0.0
- 🎉 初始版本发布
- 🎲 基础点名功能
- 👥 学生管理功能
- 📊 数据统计功能
🤝 贡献指南
欢迎提交Issue和Pull Request!
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
💖 支持项目
如果这个项目对您有帮助,欢迎:
- ⭐ 给项目点个星
- 🐛 报告问题和建议
- 🔀 提交代码改进
- 💰 赞赏支持开发
开发者: 萧尘
联系方式: GitHub
项目地址: 点名网页系统
感谢使用智能点名网页系统!🎉