# form-example
**Repository Path**: yldj-it/form-example
## Basic Information
- **Project Name**: form-example
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-07-09
- **Last Updated**: 2026-07-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 📡 科技节 · 编码探险闯关 - 数据统计系统
## 📋 项目概述
基于原有做题页面,开发配套的数据统计系统,实现答题数据收集、班级筛选和可视化看板功能。
---
## ✨ 功能特性
### 做题页面
- 学生填写姓名、学号、班级后答题
- 支持单选、判断、填空三种题型
- 提交后自动判分并保存到数据库
- 提交成功后显示状态提示
- 无登录要求,直接使用
### 数据看板
- **班级筛选**:顶部下拉框选择班级,所有统计数据自动按班级筛选
- **概览统计**:提交人数、平均分、最高分、总正确率
- **班级统计**:各班级独立卡片,显示提交人数、平均分、最高分、正确率
- **题目正确率**:柱状图展示10道题的答对率,颜色标识高低
- **学生成绩列表**:支持按姓名/学号搜索,显示详细成绩和正确率
---
## 🏗️ 技术架构
| 组件 | 技术选型 | 说明 |
|------|----------|------|
| 后端框架 | Express | 轻量高效的 Node.js 框架 |
| 数据库 | SQLite (sql.js) | 纯 JS 实现,无需编译原生模块 |
| 前端图表 | Chart.js | 轻量级图表库,柱状图展示 |
| 样式 | 内联 CSS | 与原页面风格统一 |
---
## 📁 项目结构
```
form-example/
├── README.md # 项目说明文档
├── PLAN.md # 开发计划文档
├── package.json # 依赖配置
├── server.js # Node.js 主服务
├── database/
│ └── db.js # SQLite 数据库层
├── public/
│ ├── index.html # 做题页面
│ └── dashboard.html # 数据看板页面
└── data/
└── exam.db # SQLite 数据库文件(自动生成)
```
---
## 🚀 快速开始
### 环境要求
- Node.js >= 14.0.0
- npm >= 6.0.0
### 安装步骤
```bash
# 1. 进入项目目录
cd D:\phpstudy_pro\WWW\form-example
# 2. 安装依赖
npm install
# 3. 启动服务
npm start
```
### 访问地址
启动后会自动显示访问地址:
```
📡 服务器已启动
────────────────────────────────────────
本机访问: http://localhost:3000
局域网访问: http://192.168.x.x:3000
────────────────────────────────────────
做题页面: http://192.168.x.x:3000/index.html
数据看板: http://192.168.x.x:3000/dashboard.html
```
---
## 📊 数据库设计
### students 表(学生提交记录)
| 字段 | 类型 | 说明 |
|------|------|------|
| id | INTEGER | 主键自增 |
| name | TEXT | 学生姓名 |
| student_id | TEXT | 学号 |
| class_name | TEXT | 班级(x2201-x2207) |
| total_score | INTEGER | 总分(0-100) |
| correct_count | INTEGER | 答对题数(0-10) |
| submit_time | DATETIME | 提交时间 |
### answers 表(每题答题详情)
| 字段 | 类型 | 说明 |
|------|------|------|
| id | INTEGER | 主键自增 |
| student_id | TEXT | 学号(关联) |
| question_id | INTEGER | 题号(1-10) |
| user_answer | TEXT | 学生答案 |
| is_correct | INTEGER | 是否正确(0/1) |
---
## 🔌 API 接口
| 方法 | 路径 | 说明 | 参数 |
|------|------|------|------|
| POST | /api/submit | 提交答题结果 | Body: {studentInfo, answers} |
| GET | /api/stats/overview | 获取概览统计 | ?className=xxx(可选) |
| GET | /api/stats/class | 获取班级统计 | 无 |
| GET | /api/stats/question | 获取题目统计 | ?className=xxx(可选) |
| GET | /api/students | 获取学生列表 | ?className=xxx(可选) |
### API 响应格式
```json
{
"success": true,
"data": { ... }
}
```
---
## 📱 使用说明
### 学生端(做题页面)
1. 打开做题页面 http://localhost:3000
2. 填写姓名、学号、选择班级
3. 完成10道题目
4. 点击"提交 · 立即判分"按钮
5. 查看得分和正确答案
### 管理端(数据看板)
1. 打开数据看板 http://localhost:3000/dashboard.html
2. 使用顶部班级筛选器选择班级(可选)
3. 查看概览统计、班级统计、题目正确率
4. 在学生成绩列表中搜索特定学生
---
## 🔧 配置说明
### 修改端口
编辑 `server.js` 文件,修改 `PORT` 常量:
```javascript
const PORT = 3000; // 修改为其他端口
```
### 修改班级列表
编辑 `public/index.html` 和 `public/dashboard.html`,修改班级下拉框选项:
```html
```
---
## 📈 开发进度
| 阶段 | 功能 | 状态 |
|------|------|------|
| 项目初始化 | package.json、依赖安装 | ✅ 完成 |
| 数据库层 | SQLite 数据库设计与初始化 | ✅ 完成 |
| 后端 API | Express 服务 + RESTful API | ✅ 完成 |
| 做题页面 | 添加 API 提交功能 | ✅ 完成 |
| 数据看板 | 可视化统计展示 | ✅ 完成 |
| 功能增强 | 班级筛选、最高分统计 | ✅ 完成 |
| 局域网支持 | 监听 0.0.0.0 | ✅ 完成 |
---
## 📝 更新日志
### v1.1.0(2026-07-09)
- 移除做题页面的看板链接,学生无法直接跳转
- 数据看板增加班级筛选功能,影响所有统计数据
- 新增最高分统计,概览和班级卡片均显示
- 服务器启动时自动显示局域网访问地址
### v1.0.0(2026-07-09)
- 初始版本发布
- 做题页面改造,支持数据提交
- 数据看板页面,可视化统计展示
- SQLite 数据库存储
---
## 📄 许可证
MIT License
---
**最后更新**: 2026-07-09