各位晚上好,这里依然是米饭不是配菜
今天更新的内容是:2025年 吉林大学软件学院 选修课 网页建设与设计 期末大作业Track2-问卷生产系统 的开源代码+答辩教程,以及如何修改代码以避免被认为抄袭
同样的,本次代码完全由codex写成,使用了全栈的Typescript写成,数据库使用了本地存储的SQLlite,避免多重启动分离的前后端+复杂的数据库连接配置,尽可能做到开箱即用。
请首先详细阅读本README的内容,然后再考虑使用。
本项目github链接:https://github.com/elpsykongloo/JLU2025WebDesign-SurveySystem,欢迎各位点一点Star,感激不尽。
问卷生成系统
TypeScript 全栈问卷管理平台,支持管理员、问卷设计者与被调查者三类角色,可完成题库维护、问卷组卷、访问码发放、作答收集与统计分析。
功能亮点
- 角色权限:管理员管理账号与权限,设计者负责题库与问卷,受访者使用访问码填写问卷。
- 滑块量表题:量表题提供 0–9 分滑块,分值与维度贡献由后端统一计算。
- 多题型支持:单选、多选、判断、量表、问答题,题干可上传图片,维度权重可配置。
- 随机 + 手动组卷:支持随机抽题与手动排序,并可配置评分等级、进度条、返回修改等选项。
- 数据分析:仪表盘展示总体统计、维度均值、题型分布、成绩曲线,可用于课上演示。
数据库说明
- 类型与驱动:采用嵌入式 SQLite,使用
better-sqlite3驱动进行同步读写,零运维,适合课程项目。 - 数据文件:默认存放在
data/app.db,可通过.env中的DATABASE_FILE重定义;上传图片位于data/uploads/。 - 初始化逻辑(
src/server/db.ts):- 首次启动自动创建管理员账号(默认
admin@example.com / Admin@123)、四个 MBTI 风格分类与示例数据。 - 启用
PRAGMA journal_mode = WAL提升读写可靠性。
- 首次启动自动创建管理员账号(默认
- 核心业务表:
users、categories、questions、questionnaires、assignments、respondents、responses、answers。 - 示例数据:内置示例问卷“MBTI 性格倾向测评”,访问码
MBTI2025,含 3 份答卷可直接演示分析功能。
目录结构
.
├── docs/ # 架构说明与补充文档
├── src/
│ ├── client/ # React + Vite 前端
│ │ ├── api/ # REST API 封装
│ │ ├── components/ # UI 组件(滑块、路由守卫等)
│ │ ├── context/ # 鉴权上下文
│ │ └── pages/ # 登录、后台、受访者页面
│ ├── server/ # Express + SQLite 后端
│ │ ├── analytics/ # 统计分析服务
│ │ ├── middleware/ # 鉴权、错误处理
│ │ ├── routes/ # REST 接口
│ │ └── services/ # 业务逻辑
│ └── shared/ # 前后端共享类型与 Zod 校验
├── index.html # Vite 入口
├── package.json
├── tsconfig.*.json # TS 配置
└── vite.config.ts
快速开始(已安装 Node.js 与 Git)
- 安装依赖:
npm install - 启动开发环境:
npm run dev- 后端:
http://localhost:4000 - 前端:
http://localhost:5173 - 默认管理员:
admin@example.com / Admin@123
- 后端:
- 构建与预览:
npm run build && npm run preview
环境变量
项目根目录创建 .env(可由 .env.example 复制)配置如下:
PORT=4000
JWT_SECRET=please-change-me
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=Admin@123
ADMIN_NAME=米饭不是配菜
DATABASE_FILE=data/app.db
UPLOAD_DIR=data/uploads
首次启动会在 data/ 目录生成数据库文件与示例数据。
开发建议
npm run typecheck:TypeScript 静态校验。- 静态资源(题干图片等)保存在
data/uploads,访问路径为/uploads/...。 - 调整评分类别或题目权重时,请同步更新
gradingBands和题目配置以确保统计准确。
Windows 全流程部署指南(从零经验开始)
以下步骤面向从未安装过 Node.js / npm / Git 的 Windows 用户,目标是从“Win+R 打开命令行”到运行起系统。
- 打开命令提示符
- 按
Win + R,输入cmd,回车。 - 输入
node -v。若提示非内部命令,表示尚未安装 Node.js。
- 按
- 安装 Node.js(含 npm)
- 浏览器访问 https://nodejs.org/,下载 LTS 版本安装包。
- 全程默认下一步安装;完成后关闭命令窗口重新打开。
- 在新窗口输入
node -v、npm -v,确认输出版本号。
- 安装 Git
- 若
git --version报错,请访问 https://git-scm.com/downloads 下载 Windows 安装包并按默认选项安装。
- 若
- 克隆项目
- 在命令行切换到希望存放代码的盘符,例如:
cd /d D:\Projects git clone https://github.com/elpsykongloo/JLU2025WebDesign-SurveySystem.git cd JLU2025WebDesign
- 在命令行切换到希望存放代码的盘符,例如:
- 安装依赖
npm install - 创建配置文件
使用记事本或 IDE 打开copy .env.example .env.env,根据需求修改端口、管理员信息等。 - 启动系统
npm run dev- 命令窗口会同时启动后端与前端开发服务器。
- 首次运行会在
data/下生成app.db与示例数据。
- 访问与演示
- 浏览器访问
http://localhost:5173/login。 - 使用管理员账号创建“设计者”账号并登录,即可进入问卷控制台。
- 被调查者端入口:
http://localhost:5173/respondent,示例访问码MBTI2025。
- 浏览器访问
- 遇到端口占用?
- 编辑
.env修改PORT(后端)并在vite.config.ts调整前端端口。 - 重启
npm run dev。
- 编辑
课堂答辩问答指南
为了应对“网页建设与设计”课程常见提问,可从以下维度准备:
- 项目定位与痛点:强调系统帮助教师/同学快速搭建心理测评或课程调查问卷,实现滑块打分与维度统计。
- 技术栈选择:
- 前端:React + Vite(构建快、生态成熟),Chart.js(可视化),TypeScript(类型安全)。
- 后端:Express(轻量 REST 框架),better-sqlite3(同步接口,方便在课堂演示中使用)。
- 共享层:Zod 统一 DTO 校验,减少前后端重复定义。
- 系统架构:
client / server / shared三层结构,支持角色鉴权(JWT + 中间件)。- 静态资源由 Express 静态目录托管,生产模式可直接部署为 Node 服务。
- 数据库与数据流:
- 说明主要表及关系:用户→题库→问卷→访问码→响应→答案。
- 演示量表题的分值计算、维度聚合方式(在
responseService中实现)。
- 前端设计:
- 展示后台侧边栏导航、题库管理表格、随机抽题表单、数据可视化(折线、甜甜圈图)。
- 介绍 0–9 滑块组件及如何与后端数据绑定。
- 安全与体验:
- 密码哈希存储、JWT 鉴权、角色访问控制。
- 受访者端无需登录,只需访问码;支持自定义问卷说明与进度条。
- 演示流程建议:
- (1)管理员创建设计者账号 → (2)设计者登录 → (3)浏览题库 → (4)查看示例问卷与访问码 → (5)使用访问码填写问卷 → (6)切换到数据分析查看实时结果。
- 扩展思路:
- 未来可切换至 MySQL/PostgreSQL、引入 Prisma 做迁移。
- 支持问卷版本管理、导出 CSV/Excel、接入邮箱邀请。
- 加入可视化拖拽组卷、移动端适配、A/B 测试等。
准备答辩 PPT 时,可按照“需求分析 → 系统架构 → 功能展示 → 核心代码 → 数据分析 → 扩展规划”结构,搭配现场访问码演示。
一键定制 Prompt 模板
若想快速生成“完全不同”的个人版本,可复制以下 Prompt 粘贴到 Cursor、ChatGPT、通义灵码等工具,并替换尖括号内容:
你现在是我的全栈改造助手。我已经 fork 了 https://github.com/elpsykongloo/JLU2025WebDesign-SurveySystem 这个仓库。请在保证功能稳定的前提下完成以下任务:
1. 将项目中出现的所有个人信息改成:
- 姓名:<你的姓名,如 张三>
- 学号:<你的学号,如 55221401>
更新范围包括默认管理员昵称、界面展示文字、版权信息、文档说明、示例数据中的署名等(替换掉“米饭不是配菜”等原信息)。
2. 调整前端视觉与交互,使老师看到的是全新系统:
- 更换配色、字体或布局,必要时替换图标、添加背景元素。
- 修改导航菜单与页面标题文案,让主题契合你的课程项目。
- 保持核心流程(题库、组卷、答题、分析)可正常使用。
3. 扩充数据库示例数据:
- 新增问题分类、题目(含滑块题、问答题、带图片题等),并确保维度、分值合规。
- 创建多套问卷与访问码,添加更多被调查者和作答记录,使分析图表更丰富。
- 视情况更新访问码、等级标签与分类命名,凸显原创性。
4. 其他建议:
- 调整 README / 文档,让描述契合你的名字与主题。
- 如需新增依赖,请在最后提示我执行 `npm install` 并重启 `npm run dev` 验证。
- 不随意删除现有功能代码,必要改动请简要注释说明。
完成后,请输出修改文件清单、关键改动摘要以及复现步骤提示,保证最终系统看起来与原版明显不同但依旧稳定可演示。
使用该 Prompt 可最大程度复用现有底层逻辑,同时快速生成符合个人信息与课程主题的定制版系统。

被折叠的 条评论
为什么被折叠?



