TRAE SOLO | 开发教师智能点名网页系统 🧣

454 阅读6分钟

FireShot Capture 105 - 🎯 智能点名系统 - [call-name-web.vercel.app].png

call-name-web.vercel.app/

🎯 智能点名网页系统

一个现代化的在线点名系统,支持学生信息管理、随机点名、数据导入导出等功能。

✨ 功能特性

🎲 核心功能

  • 随机点名: 支持多种点名模式,包括滚轮效果和礼花庆祝
  • 学生管理: 添加、删除、编辑学生信息
  • 数据持久化: 自动保存学生数据到本地存储
  • 导入导出: 支持CSV和TXT格式的批量导入导出
  • 模板下载: 提供标准格式的导入模板

🎨 界面特色

  • 现代化设计: 采用渐变背景和毛玻璃效果
  • 响应式布局: 完美适配桌面端和移动端
  • 动画效果: 丰富的交互动画和视觉反馈
  • 主题一致: 统一的色彩搭配和设计语言

📊 数据管理

  • 实时统计: 显示学生总数、已点名数量等统计信息
  • 历史记录: 记录点名历史,避免重复点名
  • 批量操作: 支持批量导入学生信息
  • 数据验证: 自动验证导入数据格式

🚀 快速开始

环境要求

  • 现代浏览器(Chrome、Firefox、Safari、Edge)
  • Python 3.x(用于本地服务器,可选)
  • 或任何静态文件服务器

安装步骤

  1. 克隆项目

    git clone <repository-url>
    cd 点名网页
    
  2. 启动本地服务器

    使用Python:

    python3 -m http.server 8001
    

    或使用Node.js:

    npx serve .
    
  3. 访问应用

    打开浏览器访问:http://localhost:8001

直接使用

也可以直接双击 index.html 文件在浏览器中打开使用。

📖 使用指南

学生管理

  1. 添加学生

    • 在"学生管理"区域输入学生姓名
    • 点击"添加学生"按钮
    • 学生信息会自动保存到本地
  2. 批量导入

    • 点击"下载CSV模板"或"下载TXT模板"获取标准格式
    • 按照模板格式填写学生信息
    • 将文件拖拽到导入区域或点击选择文件
    • 系统会自动验证并导入数据
  3. 编辑删除

    • 在学生列表中点击学生姓名可以编辑
    • 点击删除按钮可以移除学生

点名功能

  1. 开始点名

    • 点击"开始点名"按钮启动随机选择
    • 系统会以滚轮效果显示学生姓名
    • 点击"停止点名"确定最终结果
  2. 点名设置

    • 调整滚动速度滑块控制点名速度
    • 系统会自动避免重复点名已选中的学生
  3. 重置功能

    • 点击"重置点名"清空点名历史
    • 所有学生重新参与点名

数据导出

  1. 导出学生列表

    • 点击"导出CSV"或"导出TXT"按钮
    • 系统会自动下载包含所有学生信息的文件
  2. 数据格式

    • CSV格式:姓名,学号,班级
    • TXT格式:每行一个学生姓名

🛠️ 开发指南

项目结构

点名网页/
├── 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);

🎨 自定义开发

添加新功能

  1. 扩展学生属性

    // 在addStudent方法中添加新字段
    const student = {
        id: Date.now(),
        name: studentName,
        studentId: studentId,    // 新增学号
        class: className         // 新增班级
    };
    
  2. 自定义点名动画

    /* 添加新的动画效果 */
    @keyframes customRoll {
        0% { transform: rotateY(0deg); }
        100% { transform: rotateY(360deg); }
    }
    
  3. 扩展导出格式

    // 添加新的导出方法
    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;
}

性能优化

  1. 虚拟滚动:处理大量学生数据
  2. 防抖处理:优化搜索和输入体验
  3. 懒加载:按需加载组件和资源

🔧 部署指南

静态部署

项目为纯前端应用,可部署到任何静态托管服务:

  • 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!

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

💖 支持项目

如果这个项目对您有帮助,欢迎:

  • ⭐ 给项目点个星
  • 🐛 报告问题和建议
  • 🔀 提交代码改进
  • 💰 赞赏支持开发

开发者: 萧尘
联系方式: GitHub
项目地址: 点名网页系统

感谢使用智能点名网页系统!🎉