专注小程序 / APP 开发,用代码改变生活

获取方案
石家庄分站 主站首页 北京分站 石家庄分站 唐山分站 保定分站 廊坊分站 沧州分站 郑州分站

石家庄做题库小程序,我踩过的三个坑

小程序开发 2026-10-24 0 阅读 0 点赞 原创

去年秋天,一位在石家庄做职业培训的朋友找到我,说他们机构每年有上千名学员要刷题备考,现在还在用纸质卷子和微信群发答案,教务老师光整理错题就要加班到半夜。他想做个题库小程序,让学员在手机上练题、自动判分、后台能看数据。

这类需求在本地其实不少见:驾校、会计培训、教师资格、建造师、医考,石家庄做职业教育的机构密度不低,题库几乎是个刚需。但真正动手做,坑比想象中多。这篇文章就把我踩过的三个坑摊开讲讲,给准备做题库小程序的同行和客户一点参考。

坑一:以为题库就是“题目列表”,结果数据结构先崩了

很多人第一反应是建一张题目表:题干、选项A/B/C/D、答案。听着没问题,但一上真题就露馅。单选、多选、判断、填空、材料题(一个大案例带五个小题)、甚至带图片和公式的题,全塞进一张表,字段很快就变成一堆 option_e、option_f 这种凑数的列。

我的做法是把题目拆成三层:

  • 题库(bank):一门考试一个题库,比如“初级会计实务”。
  • 题目(question):只存题干、题型、解析、难度,选项单独存。
  • 选项(option):一对多挂在题目下,支持任意数量,判断题就是两个选项。

材料题再单独加一层 parent_id,子题挂到材料题下面。这样后台录题时,教务老师看到的是一棵结构清晰的树,而不是一张宽表。微信小程序的云开发数据库对嵌套支持一般,所以我更倾向用平铺集合加关联字段,查询时在云函数里组装。

// 题目集合的简化结构
{
  _id: "q_1024",
  bankId: "bank_cjkj",
  type: "multi",        // single / multi / judge / blank
  stem: "下列哪些属于流动资产?",
  options: [
    { key: "A", text: "库存现金" },
    { key: "B", text: "固定资产" },
    { key: "C", text: "应收账款" }
  ],
  answer: ["A", "C"],
  analysis: "固定资产属于非流动资产……",
  parentId: null
}

坑二:判分逻辑写在前端,等于把答案送给了用户

这是最容易被忽略的一点。小程序包体是可以被解包查看的,如果答案和判分逻辑都写在前端 JS 里,稍微懂点技术的学员就能把整套答案导出来。对培训机构来说,这是直接损失。

正确的做法是:拉题时不返回答案,交卷时把作答提交到云函数,由服务端判分并回传结果和解析。 云函数里判分逻辑也很简单,但一定要放在服务端。

// 云函数 gradeExam
const { answers } = event // [{ qid, picked: ["A"] }]
const ids = answers.map(a => a.qid)
const { data: questions } = await db.collection('question')
  .where({ _id: _.in(ids) }).get()

let score = 0
const detail = answers.map(ans => {
  const q = questions.find(x => x._id === ans.qid)
  const right = q.answer.sort().join(',') === ans.picked.sort().join(',')
  if (right) score++
  return { qid: ans.qid, right, answer: q.answer, analysis: q.analysis }
})
return { score, detail }

顺带说一句,错题本也依赖这个结果。学员答错的题自动进错题集,下次只练错题,这是题库产品留存的关键功能,比“每日一练”更能留住人。

坑三:只做练习,不做“考试感”,学员用两天就跑了

我见过不少题库小程序,功能就是无限刷题,没有进度、没有排名、没有模拟考。学员新鲜劲过了就不打开了。真正让题库活起来的,是几件小事:

  • 章节进度条:练到第几章、正确率多少,一眼能看到,有推进感。
  • 限时模拟考:按真实考试时长倒计时,交卷出分,这个仪式感很重要。
  • 错题重练:错题连续答对两次才移出错题本,符合记忆规律。
  • 后台数据看板:机构最关心的是哪些题错误率高,用来调整面授重点。

那位石家庄的朋友上线三个月后反馈,学员平均每周打开次数从 1.2 次涨到 4 次多,教务老师也不用再在群里发答案了。后台的错题统计还被他们拿去做了教研材料,算是意外收获。

给准备做题库的本地客户几句实话

题库小程序看着简单,实际是个“数据 + 判分 + 运营”的组合活。如果只是想让学员有个地方刷题,用云开发做一版 MVP,两三周能跑起来;但如果要接支付、做会员、多机构共用,架构就得提前想清楚,别等数据量上来了再重构。

在石家庄做这类项目,我一般建议客户先把题目数据整理好再谈开发,因为录题的工作量往往比写代码还大。知码客这边接过的几个本地培训类项目,都是先帮客户把题库结构定下来,再进入开发,返工少很多。毕竟对做题库来说,代码是骨架,题目才是血肉,骨架搭对了,后面加什么功能都顺手。

石家庄做小程序,别急着找推荐平台石家庄小程序定制开发,怎么挑靠谱团队?

评论 (0)

还没有评论,快来抢沙发吧~

好想法,值得被认真交付

从小程序、APP 到全栈网站,一站式把想法变成可落地的产品

微信咨询

微信扫码,直接沟通需求