news 2026/1/24 20:39:23

Harmony开发中考试组件库怎么使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Harmony开发中考试组件库怎么使用

考试组件库 (kaoshimuban)

一个功能完整的HarmonyOS考试组件库,支持单选题、多选题、判断题和填空题四种题型,可快速构建考试界面。

功能特性

  • 单选题- 支持单选题的渲染和交互,自动互斥选择
  • 多选题- 支持多选题的渲染和交互,可选择多个答案
  • 判断题- 支持判断题(正确/错误)的渲染和交互
  • 填空题- 支持填空题的渲染,支持多个填空
  • 自动评分- 内置评分逻辑,支持自定义每题分值
  • 结果统计- 提供详细的考试结果,包括得分、正确率等

效果预览

考试界面结果页面
支持四种题型混合展示显示得分、正确率、错题解析

安装方式

方式一:ohpm安装(推荐)

ohpminstallkaoshimuban

或使用简写命令:

ohpm i kaoshimuban

方式二:本地引用

  1. library目录复制到你的项目中
  2. oh-package.json5中添加依赖:
{ "dependencies": { "kaoshimuban": "file:../library" } }

方式三:HAR包引用

  1. 编译生成HAR包:hvigorw assembleHar -p module=library
  2. 将HAR包放入项目的libs目录
  3. oh-package.json5中添加依赖:
{ "dependencies": { "kaoshimuban": "file:./libs/kaoshimuban.har" } }

快速开始

1. 导入组件和类型

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

2. 准备考试数据

privatecreateExamData():ExamData{constquestions:QuestionData[]=[// 单选题newQuestionData('q1',// 题目IDQuestionType.SINGLE,// 题目类型'HarmonyOS是由哪家公司开发的?',// 题干'华为',// 正确答案10,// 分值['华为','小米','苹果','谷歌']// 选项),// 多选题newQuestionData('q2',QuestionType.MULTIPLE,'以下哪些是HarmonyOS的核心特性?(多选)',['分布式架构','微内核设计','全场景覆盖'],// 正确答案数组15,['分布式架构','微内核设计','全场景覆盖','仅支持手机']),// 判断题newQuestionData('q3',QuestionType.TRUE_FALSE,'ArkTS是HarmonyOS应用开发的主要编程语言。',true,// 正确答案:true或false5),// 填空题newQuestionData('q4',QuestionType.FILL_BLANK,'HarmonyOS的UI框架名称是____。',['ArkUI'],// 正确答案数组10,undefined,// 填空题无选项1// 填空数量)];returnnewExamData('HarmonyOS 基础知识测试',// 考试标题questions,// 题目列表40,// 总分30// 时间限制(分钟));}

3. 使用组件

@Entry@Componentstruct ExamPage{@StateexamData:ExamData=this.createExamData();@StateshowResult:boolean=false;@StateexamResult:ExamResult|null=null;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(`得分:${this.examResult!.score}/${this.examResult!.totalPoints}`)Text(`正确:${this.examResult!.correctCount}/${this.examResult!.totalCount}`)Button('重新考试').onClick(()=>{this.showResult=false;this.examResult=null;})}}}

API 文档

ExamComponent

主考试组件,用于渲染完整的考试界面。

属性类型必填说明
examDataExamData考试数据(需使用@ObjectLink)
onSubmit(result: ExamResult) => void提交回调

QuestionData

题目数据类,使用构造函数创建。

newQuestionData(id:string,// 题目IDtype:QuestionType,// 题目类型content:string,// 题干内容correctAnswer:string|string[]|boolean,// 正确答案points:number,// 分值options?:string[],// 选项(单选/多选题)blankCount?:number// 填空数量(填空题))

ExamData

考试数据类,使用构造函数创建。

newExamData(title:string,// 考试标题questions:QuestionData[],// 题目列表totalPoints:number,// 总分timeLimit?:number// 时间限制(分钟))

QuestionType

题目类型枚举。

说明
QuestionType.SINGLE单选题
QuestionType.MULTIPLE多选题
QuestionType.TRUE_FALSE判断题
QuestionType.FILL_BLANK填空题

ExamResult

考试结果类。

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

辅助函数

// 判断答案是否正确isAnswerCorrect(question:QuestionData,userAnswer:any):boolean

题型说明

单选题 (SINGLE)

  • 显示单选按钮样式
  • 点击选项自动取消之前的选择
  • 正确答案为单个字符串

多选题 (MULTIPLE)

  • 显示复选框样式
  • 可同时选择多个选项
  • 正确答案为字符串数组
  • 评分时忽略选择顺序

判断题 (TRUE_FALSE)

  • 固定显示"正确"和"错误"两个选项
  • 正确答案为布尔值truefalse

填空题 (FILL_BLANK)

  • 根据blankCount显示对应数量的输入框
  • 正确答案为字符串数组
  • 评分时忽略大小写和首尾空格

样式定制

组件使用了以下颜色方案:

元素颜色
单选题标签#1890ff (蓝色)
多选题标签#52c41a (绿色)
判断题标签#faad14 (橙色)
填空题标签#722ed1 (紫色)
正确选中#52c41a (绿色)
错误选中#ff4d4f (红色)
提交按钮#1890ff (蓝色)

注意事项

  1. ExamData需要使用@State装饰器声明
  2. 传递给ExamComponent时,examData会通过@ObjectLink绑定
  3. 多选题答案比较时会忽略顺序
  4. 填空题答案比较时会忽略大小写和首尾空格

许可证

Apache-2.0

更新日志

v1.0.0 (2025-12-31)

  • 初始版本发布
  • 支持单选题、多选题、判断题、填空题
  • 内置自动评分功能
  • 提供考试结果统计
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/23 10:51:55

JDK动态代理与CGLIB实现的区别

JDK动态代理与CGLIB实现的区别 章节目录 文章目录JDK动态代理与CGLIB实现的区别JDK动态代理和CGLIB是Java中常用的两种代理技术,它们在实现原理和使用方式上有一些区别。JDK动态代理是基于接口的代理技术,要求目标类必须实现一个或多个接口。它使用java…

作者头像 李华
网站建设 2026/1/21 12:38:26

基于STM32的PM2.5监控系统的设计与实现

二、硬件系统的设计 2.1 整体设计的方向 基于单片机STM32的PM2.5监控系统主要由五个基本的部分设计组成,它们五个组成部分为:基于单片机的控制部分的电路,警报部分的电路,按钮信号处理的部分,液晶显示屏部分和基于PM2.…

作者头像 李华
网站建设 2026/1/23 21:38:40

基于单片机的密码锁设计

第二章 系统方案的设计 2.1 设计说明 确定好明确的设计方案对于整个系统的设计是非常重要的,秉持着严格遵循单片机设计相关原则,尽可能选择合适的方案进行设计,合理的方案对整个系统的综合性调试有帮助。 设计的基于51单片机的多功能数字密码…

作者头像 李华
网站建设 2026/1/19 8:54:54

基于单片机的药品分拣设计

2 系统设计方案 2.1 系统原理 药品分拣系统是医疗机构必备设备之一,它可以提高药品分配的效率和准确性,从而更好地保障患者用药安全和治疗效果。本文基于STM32单片机进行开发,使用OLED和Drivic双显示屏实现药品图片的双屏显示,同…

作者头像 李华
网站建设 2026/1/23 18:25:15

Android 基础入门教程2.5.5 ExpandableListView(可折叠列表)的基本使用

2.5.5 ExpandableListView(可折叠列表)的基本使用 分类 Android 基础入门教程 本节引言: 本节要讲解的Adapter类控件是ExpandableListView,就是可折叠的列表,它是ListView的子类, 在ListView的基础上它把应用中的列表项分为几组…

作者头像 李华