HarmonyOS中考试模板开发教程

考试模板开发教程

此模板已经上到组件商城 大家可以直接使用

本教程将教你如何使用 HarmonyOS 考试模板组件库快速开发一个功能完整的考试应用。

目录

  1. 项目概述
  2. 环境准备
  3. 项目结构
  4. 快速开始
  5. 创建考试数据
  6. 题型详解
  7. 自定义结果页面
  8. 进阶功能

项目概述

本项目是一个 HarmonyOS 考试组件库(kaoshimuban),封装为 HAR 包,支持以下功能:

  • 四种题型:单选题、多选题、判断题、填空题
  • 自动评分:内置评分算法
  • 状态管理:完整的答题状态跟踪
  • 灵活配置:数据驱动,易于扩展

环境准备

1. 安装开发工具

下载并安装 DevEco Studio

2. 创建项目

  1. 打开 DevEco Studio
  2. 选择FileNewCreate Project
  3. 选择Empty Ability模板
  4. 填写项目信息并创建

3. 导入考试模板库

library目录复制到你的项目中,或通过本地依赖方式引用。


项目结构

lesson80/ ├── library/ # 考试组件库(HAR包) │ ├── src/main/ets/ │ │ ├── components/ # 组件文件 │ │ │ ├── ExamComponent.ets # 主考试组件 │ │ │ ├── SingleChoiceQuestion.ets # 单选题组件 │ │ │ ├── MultipleChoiceQuestion.ets # 多选题组件 │ │ │ ├── TrueFalseQuestion.ets # 判断题组件 │ │ │ └── FillBlankQuestion.ets # 填空题组件 │ │ └── models/ # 数据模型 │ │ └── ExamModels.ets # 考试数据模型 │ ├── Index.ets # 库导出文件 │ └── oh-package.json5 # 库配置 │ └── entry/ # 应用入口模块 └── src/main/ets/ └── pages/ └── Index.ets # 考试页面(示例)

快速开始

步骤 1:导入组件

在你的页面文件中导入考试组件:

import{ExamComponent,ExamData,ExamResult,QuestionType,QuestionData}from'kaoshimuban';

步骤 2:创建状态变量

@Entry@Componentstruct MyExamPage{@StateexamData:ExamData=this.createExamData();@StateshowResult:boolean=false;@StateexamResult:ExamResult|null=null;

步骤 3:创建考试数据方法

privatecreateExamData():ExamData{constquestions:QuestionData[]=[// 在这里添加题目];returnnewExamData('考试标题',questions,总分,时长(分钟));}

步骤 4:构建UI

build(){Column(){if(this.showResult&&this.examResult!==null){// 结果页面this.ResultView()}else{// 考试组件ExamComponent({examData:this.examData,onSubmit:(result:ExamResult)=>{this.examResult=result;this.showResult=true;}})}}}

创建考试数据

数据模型说明

QuestionData(题目数据)
参数类型说明必填
idstring题目唯一标识
typeQuestionType题目类型枚举
contentstring题干内容
correctAnswerstring | string[] | boolean正确答案
pointsnumber分值
optionsstring[]选项列表(单选/多选)
blankCountnumber填空数量(填空题)
ExamData(考试数据)
参数类型说明必填
titlestring考试标题
questionsQuestionData[]题目列表
totalPointsnumber总分
timeLimitnumber时间限制(分钟)

题型详解

1. 单选题(SINGLE)

单选题只有一个正确答案,用户需要从多个选项中选择一个。

newQuestionData('q1',// 题目IDQuestionType.SINGLE,// 题型'HarmonyOS是由哪家公司开发的操作系统?',// 题干'华为',// 正确答案(字符串)10,// 分值['华为','小米','苹果','谷歌']// 选项列表)

要点:

  • correctAnswer是字符串类型,值必须是options中的一个
  • options必填,至少2个选项

2. 多选题(MULTIPLE)

多选题有多个正确答案,用户需要选择所有正确的选项。

newQuestionData('q2',QuestionType.MULTIPLE,'以下哪些是HarmonyOS的核心特性?(多选)',['分布式架构','微内核设计','全场景覆盖'],// 正确答案(数组)15,['分布式架构','微内核设计','全场景覆盖','仅支持手机'])

要点:

  • correctAnswer是字符串数组类型
  • 数组中的每个值都必须在options
  • 用户必须选中所有正确答案才能得分

3. 判断题(TRUE_FALSE)

判断题只有"正确"和"错误"两个选项。

newQuestionData('q3',QuestionType.TRUE_FALSE,'ArkTS是HarmonyOS应用开发的主要编程语言。',true,// 正确答案(布尔值)5// 分值// 注意:判断题不需要 options 参数)

要点:

  • correctAnswer是布尔类型(truefalse
  • options不需要填写,系统会自动生成"正确/错误"选项
  • true表示"正确",false表示"错误"

4. 填空题(FILL_BLANK)

填空题要求用户输入文本答案。

// 单个填空newQuestionData('q8',QuestionType.FILL_BLANK,'HarmonyOS的分布式能力可以实现____协同。',['多设备'],// 正确答案(数组)10,undefined,// 填空题不需要 options1// 填空数量)// 多个填空newQuestionData('q5',QuestionType.FILL_BLANK,'HarmonyOS中,用于声明组件的装饰器是____,用于声明入口组件的装饰器是____。',['@Component','@Entry'],// 按顺序对应每个空10,undefined,2// 两个填空)

要点:

  • correctAnswer是字符串数组类型
  • 数组长度应与blankCount一致
  • 按顺序对应每个填空的答案
  • 答案比较不区分大小写

完整示例

下面是一个完整的考试页面示例:

import{ExamComponent,ExamData,ExamResult,QuestionType,QuestionData}from'kaoshimuban';@Entry@Componentstruct MyExamPage{@StateexamData:ExamData=this.createExamData();@StateshowResult:boolean=false;@StateexamResult:ExamResult|null=null;// 创建考试数据privatecreateExamData():ExamData{constquestions:QuestionData[]=[// 单选题newQuestionData('q1',QuestionType.SINGLE,'HarmonyOS是由哪家公司开发的操作系统?','华为',10,['华为','小米','苹果','谷歌']),// 多选题newQuestionData('q2',QuestionType.MULTIPLE,'以下哪些是HarmonyOS的核心特性?(多选)',['分布式架构','微内核设计'],15,['分布式架构','微内核设计','全场景覆盖','仅支持手机']),// 判断题newQuestionData('q3',QuestionType.TRUE_FALSE,'ArkTS是HarmonyOS应用开发的主要编程语言。',true,5),// 填空题newQuestionData('q4',QuestionType.FILL_BLANK,'HarmonyOS的UI开发框架叫____。',['ArkUI'],10,undefined,1)];returnnewExamData('HarmonyOS 基础测试',questions,40,10);}// 构建页面build(){Column(){if(this.showResult&&this.examResult!==null){this.ResultView()}else{ExamComponent({examData:this.examData,onSubmit:(result:ExamResult)=>{this.examResult=result;this.showResult=true;}})}}.width('100%').height('100%')}// 结果页面@BuilderResultView(){Column(){Text('考试完成!').fontSize(24).margin({top:20,bottom:20})Text(`得分:${this.examResult!.score}/${this.examResult!.totalPoints}`).fontSize(20)Button('重新考试').margin({top:20}).onClick(()=>{this.showResult=false;this.examResult=null;this.examData=this.createExamData();})}.width('100%').height('100%').justifyContent(FlexAlign.Center)}}

自定义结果页面

ExamResult包含以下信息:

属性类型说明
answersUserAnswer[]用户的所有答案
scorenumber得分
totalPointsnumber总分
correctCountnumber正确题数
totalCountnumber总题数

获取错题列表

你可以遍历题目,使用isAnswerCorrect函数判断每题是否答对:

import{isAnswerCorrect}from'kaoshimuban';privategetWrongQuestions():QuestionData[]{constwrongList:QuestionData[]=[];for(leti=0;i<this.examData.questions.length;i++){constquestion=this.examData.questions[i];letuserAnswer:UserAnswer|null=null;// 查找用户答案for(letj=0;j<this.examResult.answers.length;j++){if(this.examResult.answers[j].questionId===question.id){userAnswer=this.examResult.answers[j];break;}}// 判断是否答错if(userAnswer&&!isAnswerCorrect(question,userAnswer.answer)){wrongList.push(question);}}returnwrongList;}

进阶功能

1. 从 JSON 文件加载题目

创建questions.json

{"title":"HarmonyOS 考试","timeLimit":15,"questions":[{"id":"q1","type":"single","content":"HarmonyOS是由哪家公司开发的?","correctAnswer":"华为","points":10,"options":["华为","小米","苹果","谷歌"]}]}

加载并解析:

import{questionsJson}from'./questions.json'privateloadExamFromJson():ExamData{constquestions:QuestionData[]=questionsJson.questions.map(q=>{consttype=this.parseQuestionType(q.type);returnnewQuestionData(q.id,type,q.content,q.correctAnswer,q.points,q.options,q.blankCount);});returnnewExamData(questionsJson.title,questions,questions.reduce((sum,q)=>sum+q.points,0),questionsJson.timeLimit);}

2. 添加计时器

@StateremainingTime:number=0;// 秒privatetimer:number=-1;aboutToAppear(){this.remainingTime=this.examData.timeLimit*60;this.startTimer();}privatestartTimer(){this.timer=setInterval(()=>{this.remainingTime--;if(this.remainingTime<=0){clearInterval(this.timer);// 自动提交}},1000);}aboutToDisappear(){if(this.timer!==-1){clearInterval(this.timer);}}

3. 答题进度保存

使用PreferencesAPI 保存答题进度:

importdataPreferencesfrom'@ohos.data.preferences';privateasyncsaveProgress(){constpreferences=awaitdataPreferences.getPreferences(getContext(),'exam_progress');awaitpreferences.put('current_answers',JSON.stringify(this.userAnswers));awaitpreferences.flush();}privateasyncloadProgress(){constpreferences=awaitdataPreferences.getPreferences(getContext(),'exam_progress');constsaved=awaitpreferences.get('current_answers','');if(saved){this.userAnswers=JSON.parse(savedasstring);}}

常见问题

Q: 如何修改题目选项的顺序?
A: 直接修改options数组中元素的顺序即可。

Q: 填空题答案是否区分大小写?
A: 不区分,系统会自动转换为小写进行比较。

Q: 如何实现题目乱序显示?
A: 在创建ExamData前对questions数组进行shuffle操作。

Q: 可以在一道题中混合多种题型吗?
A: 目前不支持,每道题只能是单一题型。


总结

通过本教程,你已经学会了:

  1. 导入和使用考试组件库
  2. 创建四种类型的题目
  3. 构建完整的考试页面
  4. 自定义结果展示
  5. 实现进阶功能

现在可以开始创建你自己的考试应用了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1164397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 多态详解:概念、实现机制与实践应用

文章目录一、什么是 Java 的多态二、多态成立的基本条件三、方法重写与多态的关系四、方法重载不是多态五、成员变量是否具有多态性六、static、final、private 方法与多态七、接口与抽象类中的多态八、JVM 层面&#xff1a;多态是如何实现的九、多态在实际开发中的价值十、总结…

别再被“能看图说话“骗了!真正能上线的多模态RAG,靠这4个关键细节+可运行代码

本文针对多模态检索中的"能力幻觉"问题&#xff0c;深度解析了Qwen3-VL-Embedding和Reranker的技术优势&#xff0c;详细阐述了多模态检索落地的4个关键工程断层及解决方案&#xff0c;包括完整pipeline设计、配置决策、模态指令应用和置信度校准等。文章提供可直接复…

收藏!大模型行业薪资真相:别追千万噱头,百万年薪才是务实赛道

大模型行业的高薪热度居高不下&#xff0c;不少技术人都想借此风口实现职业跃迁。但热潮之下更需理性&#xff1a;行业薪资确实可观&#xff0c;但绝非遍地千万。多数核心岗位年薪集中在40-150万区间&#xff0c;百万年薪已是行业主流核心水平&#xff1b;千万年薪仅属于硅谷顶…

大模型学习路线图全解析:程序员收藏必备,小白入门不迷路

文章提供了人工智能大模型的学习路线&#xff0c;包括基础知识、编程技能、深度学习、预训练模型研究和实践项目五个阶段。同时分享了640套AI大模型报告合集&#xff0c;涵盖理论研究、技术实现和行业应用。文章强调在AI时代成为掌握AI工具的技术人能占得先机&#xff0c;鼓励读…

从小白到专家:AI Agent十大应用领域深度解析,收藏这份大模型实践指南

AI Agent作为能自我学习、自动化处理的数字智能工具&#xff0c;正在催生新的产业价值链&#xff0c;并在软件开发、数字营销等十大领域应用。商业模式分为垂直场景型和通用平台型&#xff0c;尽管面临可靠性、安全与成本等挑战&#xff0c;AI Agent不仅是效率革新&#xff0c;…

大模型面试必看!强化学习+模型优化+算法题,一篇搞定大厂面试核心考点(建议收藏)

本文是一份大模型岗位面试经验分享&#xff0c;涵盖强化学习算法(PPO/DPO/Verl框架)、模型蒸馏与量化技术、系统基础问题、核心代码实现(如beam search)以及算法题等多个方面。内容全面覆盖了大模型岗位面试的核心技术点&#xff0c;为准备大模型相关岗位的求职者提供了宝贵的面…

大模型入门到精通:一篇带你全面了解AI大模型

文章介绍了大模型的基本概念、技术原理、应用场景及挑战。大模型具有庞大参数量、海量训练数据和超强计算能力&#xff0c;基于Transformer架构&#xff0c;通过预训练与微调、分布式训练等技术实现。应用涵盖自然语言处理、计算机视觉和多模态领域&#xff0c;但也面临计算成本…

基于Vue的家政服务系统设计与开发p1gwa(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末

系统程序文件列表系统功能用户,家政人员,服务类型,家政服务,服务订单,订单评价,服务分配,普通管理员开题报告内容基于Vue的家政服务系统设计与开发开题报告一、选题背景与意义&#xff08;一&#xff09;选题背景随着社会经济的快速发展和人们生活节奏的加快&#xff0c;现代家…

SL/T830-2024 实操指南:水闸安全应急管理的标准化路径

作为水利工程的核心枢纽&#xff0c;水闸的安全运行直接关系到流域防洪减灾、水资源调配及生态保护等多重目标。当极端天气、地质灾害或设备故障等突发事件发生时&#xff0c;科学规范的应急处置流程是降低损失、保障安全的关键。2024 年 12 月 31 日水利部发布的 SL/T830-2024…

一套三维画图软件比如SolidWorks、UG、CAITA、CROE等,如何共享给多个研发同时用

在制造业和工程设计领域&#xff0c;三维建模软件如SolidWorks、UG&#xff08;现称NX&#xff09;、CATIA和Creo&#xff08;原Pro/E&#xff09;是核心工具。当多个研发人员需要协同使用这些软件时&#xff0c;如何高效共享资源并确保数据安全成为关键问题。要将SolidWorks、…

AI如何颠覆B2B获客:从“刷抖音“到精准商机挖掘的技术革命

Workus AI是一款Agent驱动的B2B商业网络&#xff0c;通过AI技术重构传统获客流程&#xff0c;解决传统B2B获客渠道失效、技术门槛高和商业模式畸形三大痛点。其核心价值在于让AI自主学习业务定义客户画像&#xff0c;实现多渠道个性化触达&#xff0c;并自动筛选交付精准商机。…

系统极限压力测试:崩溃点定位与灾难恢复策略

‌‌一、崩溃点探测的工程化实践‌‌多维度阈值监测体系‌‌资源层崩溃指标‌CPU&#xff1a;持续>95%维持5分钟 | 内存&#xff1a;Swap使用率>30% 磁盘IO&#xff1a;await延迟>500ms | 网络&#xff1a;丢包率>0.1%‌服务层熔断特征‌错误率雪崩&#xff1a;非…

AI大模型完全自学路线:从零基础到实战项目,附全套学习资源

文章提供了自学AI大模型的系统学习路线&#xff0c;分为六个阶段&#xff1a;数学与编程基础、机器学习入门、深度学习深入、大模型探索、进阶应用及社区参与。每个阶段包含理论学习和实践项目推荐&#xff0c;并提供丰富的学习资源&#xff0c;包括经典书籍、在线课程、实战项…

藏学习!如何用TextIn和Agent构建高效的论文问答系统

本文介绍了一种基于Agentic RAG和TextIn文档解析的论文问答系统解决方案。针对传统方法处理学术论文时遇到的表格乱码、图表丢失、版面混乱等问题&#xff0c;该系统通过TextIn实现精准文档解析&#xff0c;再利用AI Agent智能定位相关章节&#xff0c;最后基于选定内容生成答案…

minimax大模型算法岗面试全解析:从一面到二面,助你轻松拿下offer!

本文详细分享了minimax大模型算法岗面试经验&#xff0c;包括一面和二面的技术问题。一面涵盖项目介绍、大模型结构差异、位置编码、预训练推理流程、超长上下文处理等&#xff1b;二面深入探讨GLM与GPT区别、P-tuning与IoRA原理、DPO与PPO算法对比、模型评估与减少幻觉方法等。…

‌等保三级新规下,AI安全测试成了硬性指标,你准备好了吗?

一、政策强制&#xff1a;AI安全测试已成等保三级“一票否决项”‌2025年3月起&#xff0c;全国范围内正式启用新版《网络安全等级保护基本要求》&#xff08;GB/T 22239-2024&#xff09;配套测评体系&#xff0c;‌AI系统安全评估‌被明确列为等保三级的‌强制性测评项‌&…

大模型面试通关秘籍:9家大厂面经详解,从OCR到多模态助你拿下offer

本文详细记录了作者在淘天、字节、商汤、蚂蚁等9家科技公司的大模型岗位面试经历&#xff0c;涵盖各部门研究方向、面试问题及体验。面试重点聚焦多模态大模型、OCR技术、高分辨率解决方案等&#xff0c;同时提供了HR面试技巧和offer选择建议&#xff0c;为求职者提供了大模型领…

绩效困境下的换帅偏好:组织高层的决策逻辑与吸引力根源

绩效困境下的换帅偏好&#xff1a;组织高层的决策逻辑与吸引力根源为什么因为组织绩效糟糕而炒掉领导者的策略&#xff0c;对组织高层显得如此具有吸引力呢&#xff1f;组织绩效糟糕时&#xff0c;炒掉高层领导者的策略之所以对组织&#xff08;董事会、股东、核心决策层&#…

大模型面试通关秘籍:两轮面试全流程解析,建议收藏备用_腾讯混元大模型算法岗面经

本文整理了大模型技术面试的两轮完整问题集&#xff0c;涵盖个人经历、大模型架构对比(MoE与Dense)、训练推理流程、微调技术、强化学习算法以及代码实现等基础知识&#xff0c;以及RoPE位置编码、vLLM原理、FlashAttention优化、数据质检、RAG设计、CoT训练等进阶技术内容。全…

‌华为盘古Ultra MoE:重塑中国测试团队的AI选型新范式

在人工智能&#xff08;AI&#xff09;席卷全球软件测试领域的浪潮中&#xff0c;华为盘古Ultra MoE&#xff08;Mixture of Experts&#xff09;架构的崛起&#xff0c;正深刻重构中国测试团队的AI工具选型逻辑。截至2026年&#xff0c;随着DevOps和持续测试的普及&#xff0c…