MBTI性格测试微信小程序

爱(AI)答题是一款基于Vue 3+Spring Boot+Redis+ChatGLM+RxJava+SSE的AI答题应用平台。


用户可以基于AI快速制作并发布答题应用,支持检索、分享、在线答题并基于AI得到回答总结;

管理员可以集中管理和审核应用。

目录

MBTI性格测试小程序

一、页面模块

二、实现方案介绍

1、题目结构

2、用户答案结构

3、评分规则

判题思路

评分结果计算原理

三、MBTI 小程序 Demo 数据

1、题目列表

2、题目结果表

四、Taro 跨端小程序开发入门

技术选型

开发准备

实战

1. 确认页面中的数据结构

2. 开发准备

代码规范

3. 页面开发

a. 引入组件

b. 配置页面路由(创建页面)

c. 修改应用标题

4. MBTI 主页

a. 先写页面中的内容(文字)

b. 然后添加图片

c. 然后填写三个文件

5. 答题页面

a. 题目列表和题目结果表

b. 导入题目

c. 页面逻辑

6. 查看结果页面

a. 导入题目结果表

b. 主页、答题页面、结果页面跳转互动逻辑

7. 判题

a. 根据AI写出代码

b. 调整代码写入文件

c. 页面间数据传递


MBTI性格测试小程序

一、页面模块

1)主页:

2)答题页面:

3)查看结果页面:

二、实现方案介绍

核心组成部分:题目、用户答案、评分规则

1、题目结构

一道题目它应该是以Json结构形式呈现,选项为数组,例如:

[
  {
    "title":"你通常更喜欢",
    "options":[
      {
        "result":"I",
        "value":"独自工作",
        "key":"A"
      },
      {
        "result":"E",
        "value":"与他人合作",
        "key":"B"
      }
      ]
    }
]

相较于直接用key-value结构,Json结构更易于理解和拓展;缺点就是占用空间。

2、用户答案结构

用户填写完答案后怎么将其传递给判题逻辑怎么传递给后端。


用户提交答案的时候,仅需传递一个数组,数组内是选项:["A"],按数组顺序匹配对应的题目。

["A","A","B","B"]

优点:不用再完整传递题目的结构,节省传输体积,提高性能。

3、评分规则

判题思路

第一题判断 I or E,第二题判断 J or P,第三题判断 T or F,第四题判断 S or N。

按照这个思路,我们可以统计题目中所有的偏好,比如答题一共选了10个I,2个E,很明显10大于2,因此我们得出他是 I 人,同理判断是S/N、T/F和J/P

所以我们出题的时候,给每个选择的答案对应设置一个属性。

• 第一题 A 对应 I, B 对应 E

• 第二题 A 对应 E , B 对应丨

• 第三题 A 对应 s, B 对应 N

• 第四题 A 对应 T , B 对应 F

• 第五题 A 对应 p, B 对应 J

如果用户选择了[A,B,A,A,A],可以算出用户有两个I,一个S,一个T,一个P,很明显他是ISTP人格。


评分结果计算原理

1)首先要有一个题目评分结果集合,这里预先创建了很多结果,包括了MBTI的所有16种角色。

• resultName: ISTJ

• resultDesc :忠诚可靠,被公认为务实,注重细节。

• resultlcon: 预留字段,如果想界面好看点,可以给 result 设定图片

• resuItProp : [I,S,T,J]

题目评分结果对应的 JSON 结构如下:

[
    {
    "resultProp":[
      "I",
      "S",
      "T",
      "J"
      ],
      "resultDesc":"忠诚可靠,被公认为务实,注重细节。",
      "resultPicture":"icon_url_istj",
      "resultName":"ISTJ(物流师)"
      },
      {
    "resultProp":[
      "I",
      "S",
      "F",
      "J"
      ],
      "resultDesc":"善良贴心,以同情心和责任心为特点。",
      "resultPicture":"icon_url_isfj",
      "resultName":"ISFJ(守护者)"
      }
]

2)怎么根据每道题目的选项计算出结果呢?

每个结果有一个 resultprop 字段,是一个元素不重复的数组(属性集合),里面的内容和题目选项的 result 字段匹配。

[
  {
    "title":"你通常更喜欢",
    "options":[
      {
        "result":"I",
        "value":"独自工作",
        "key":"A"
      },
      {
        "result":"E",
        "value":"与他人合作",
        "key":"B"
      }
      ]
    }
]

此时用户第一题选了 A, 对应的属性如果是I,那么我们遍历这 16 种结果,然后判断角色对应的 resultprop 里面是否包含I,如果包含则对应的角色就+ 1 分,不包含则不得分。最终遍历完所有题目后,我们就能知道这 16 种结果中,哪个角色得分最高,它就是最终的评分结果了。

三、MBTI 小程序 Demo 数据

可以使用AI生成。

1、题目列表

每个选项包含了对应的结果,questions.json:

[
    {
        "options": [
            {
                "result": "I",
                "value": "独自工作",
                "key": "A"
            },
            {
                "result": "E",
                "value": "与他人合作",
                "key": "B"
            }
        ],
        "title": "你通常更喜欢"
    },
    {
        "options": [
            {
                "result": "J",
                "value": "喜欢有明确的计划",
                "key": "A"
            },
            {
                "result": "P",
                "value": "更愿意随机应变",
                "key": "B"
            }
        ],
        "title": "当安排活动时"
    },
    {
        "options": [
            {
                "result": "T",
                "value": "认为应该严格遵守",
                "key": "A"
            },
            {
                "result": "F",
                "value": "认为应灵活运用",
                "key": "B"
            }
        ],
        "title": "你如何看待规则"
    },
    {
        "options": [
            {
                "result": "E",
                "value": "经常是说话的人",
                "key": "A"
            },
            {
                "result": "I",
                "value": "更倾向于倾听",
                "key": "B"
            }
        ],
        "title": "在社交场合中"
    },
    {
        "options": [
            {
                "result": "J",
                "value": "先研究再行动",
                "key": "A"
            },
            {
                "result": "P",
                "value": "边做边学习",
                "key": "B"
            }
        ],
        "title": "面对新的挑战"
    },
    {
        "options": [
            {
                "result": "S",
                "value": "注重细节和事实",
                "key": "A"
            },
            {
                "result": "N",
                "value": "注重概念和想象",
                "key": "B"
            }
        ],
        "title": "在日常生活中"
    },
    {
        "options": [
            {
                "result": "T",
                "value": "更多基于逻辑分析",
                "key": "A"
            },
            {
                "result": "F",
                "value": "更多基于个人情感",
                "key": "B"
            }
        ],
        "title": "做决定时"
    },
    {
        "options": [
            {
                "result": "S",
                "value": "喜欢有结构和常规",
                "key": "A"
            },
            {
                "result": "N",
                "value": "喜欢自由和灵活性",
                "key": "B"
            }
        ],
        "title": "对于日常安排"
    },
    {
        "options": [
            {
                "result": "P",
                "value": "首先考虑可能性",
                "key": "A"
            },
            {
                "result": "J",
                "value": "首先考虑后果",
                "key": "B"
            }
        ],
        "title": "当遇到问题时"
    },
    {
        "options": [
            {
                "result": "T",
                "value": "时间是一种宝贵的资源",
                "key": "A"
            },
            {
                "result": "F",
                "value": "时间是相对灵活的概念",
                "key": "B"
            }
        ],
        "title": "你如何看待时间"
    }
]

2、题目结果表

16种结果

question_results.json:

[
  {
    "resultProp": [
      "I",
      "S",
      "T",
      "J"
    ],
    "resultDesc": "忠诚可靠,被公认为务实,注重细节。",
    "resultPicture": "icon_url_istj",
    "resultName": "ISTJ(物流师)"
  },
  {
    "resultProp": [
      "I",
      "S",
      "F",
      "J"
    ],
    "resultDesc": "善良贴心,以同情心和责任为特点。",
    "resultPicture": "icon_url_isfj",
    "resultName": "ISFJ(守护者)"
  },
  {
    "resultProp": [
      "I",
      "N",
      "F",
      "J"
    ],
    "resultDesc": "理想主义者,有着深刻的洞察力,善于理解他人。",
    "resultPicture": "icon_url_infj",
    "resultName": "INFJ(占有者)"
  },
  {
    "resultProp": [
      "I",
      "N",
      "T",
      "J"
    ],
    "resultDesc": "独立思考者,善于规划和实现目标,理性而果断。",
    "resultPicture": "icon_url_intj",
    "resultName": "INTJ(设计师)"
  },
  {
    "resultProp": [
      "I",
      "S",
      "T",
      "P"
    ],
    "resultDesc": "冷静自持,善于解决问题,擅长实践技能。",
    "resultPicture": "icon_url_istp",
    "resultName": "ISTP(运动员)"
  },
  {
    "resultProp": [
      "I",
      "S",
      "F",
      "P"
    ],
    "resultDesc": "具有艺术感和敏感性,珍视个人空间和自由。",
    "resultPicture": "icon_url_isfp",
    "resultName": "ISFP(艺术家)"
  },
  {
    "resultProp": [
      "I",
      "N",
      "F",
      "P"
    ],
    "resultDesc": "理想主义者,富有创造力,以同情心和理解他人著称。",
    "resultPicture": "icon_url_infp",
    "resultName": "INFP(治愈者)"
  },
  {
    "resultProp": [
      "I",
      "N",
      "T",
      "P"
    ],
    "resultDesc": "思维清晰,探索精神,独立思考且理性。",
    "resultPicture": "icon_url_intp",
    "resultName": "INTP(学者)"
  },
  {
    "resultProp": [
      "E",
      "S",
      "T",
      "P"
    ],
    "resultDesc": "敢于冒险,乐于冒险,思维敏捷,行动果断。",
    "resultPicture": "icon_url_estp",
    "resultName": "ESTP(拓荒者)"
  },
  {
    "resultProp": [
      "E",
      "S",
      "F",
      &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值