HarmonyOS ArkTS 实战:实现一个社团活动签到与时长认证应用
HarmonyOS ArkTS 实战实现一个社团活动签到与时长认证应用项目效果本文使用 HarmonyOS 和 ArkTS 实现一个社团活动签到与时长认证应用。应用可以发布社团活动扫码签到签退自动计算志愿时长时长认证审核并提供活动报名、签到记录、时长统计、证书生成等完整功能。项目使用 DevEco Studio 开发适配 API 23 及以上版本。运行效果功能介绍活动发布与管理在线报名活动扫码签到签退自动时长计算时长认证审核个人时长统计签到记录查询活动证书生成活动评价社团排行时长兑换消息通知定义数据结构interfaceActivity{id:number;title:string;clubName:string;time:string;location:string;needPeople:number;joinedPeople:number;duration:number;status:string;// 报名中/进行中/已结束cover:string;description:string;}interfaceSignRecord{id:number;activityId:number;activityTitle:string;signInTime:string;signOutTime:string;realDuration:number;status:string;// 已签到/已签退/待审核/已认证isCertified:boolean;}初始化页面状态StateprivatetabIndex:number0;StateprivatetotalDuration:number140;StateprivatecertifiedDuration:number126;StateprivateactivityCount:number28;Stateprivateactivities:Activity[][{id:1,title:校园文明督导志愿活动,clubName:青年志愿者协会,time:2026-07-25 09:00,location:校门口,needPeople:20,joinedPeople:15,duration:4,status:报名中,cover:,description:维护校园门口秩序引导新生报到},{id:2,title:图书馆整理书籍活动,clubName:图书馆志愿者队,time:2026-07-23 14:00,location:图书馆,needPeople:10,joinedPeople:10,duration:3,status:进行中,cover:,description:整理图书馆书籍上架归还图书},{id:3,title:社区敬老志愿服务,clubName:爱心社,time:2026-07-20 08:00,location:阳光社区,needPeople:15,joinedPeople:12,duration:6,status:已结束,cover:,description:看望社区老人陪伴聊天表演节目},];Stateprivaterecords:SignRecord[][{id:1,activityId:3,activityTitle:社区敬老志愿服务,signInTime:2026-07-20 08:00,signOutTime:2026-07-20 14:00,realDuration:6,status:已认证,isCertified:true},];StateprivatenextId:number10;报名活动privatejoinActivity(activityId:number):void{this.activitiesthis.activities.map(aa.idactivityId?{...a,joinedPeople:a.joinedPeople1}:a);}签到privatesignIn(activityId:number):void{constactivitythis.activities.find(aa.idactivityId);if(!activity)return;constrecord:SignRecord{id:this.nextId,activityId,activityTitle:activity.title,signInTime:newDate().toLocaleString(),signOutTime:,realDuration:0,status:已签到,isCertified:false};this.records[record,...this.records];this.nextId1;}签退并计算时长privatesignOut(recordId:number):void{constnownewDate();constrecordthis.records.find(rr.idrecordId);if(!record||!record.signInTime)return;conststartnewDate(record.signInTime);constdurationMath.round((now.getTime()-start.getTime())/(1000*60*60));this.recordsthis.records.map(rr.idrecordId?{...r,signOutTime:now.toLocaleString(),realDuration:duration,status:待审核}:r);}时长认证privatecertifyDuration(recordId:number):void{constrecordthis.records.find(rr.idrecordId);if(!record)return;this.recordsthis.records.map(rr.idrecordId?{...r,status:已认证,isCertified:true}:r);this.certifiedDurationrecord.realDuration;this.totalDurationrecord.realDuration;}活动卡片组件BuilderActivityCard(activity:Activity){Column({space:8}){Text(activity.title).fontSize(16).fontWeight(FontWeight.Medium).fontColor(#18181B).width(100%)Row({space:4}){Text(activity.clubName).fontSize(12).fontColor(#71717A)Text(·${activity.duration}小时).fontSize(12).fontColor(#A1A1AA)}.width(100%)Row(){Text(${activity.location}).fontSize(12).fontColor(#71717A)Blank()Text(${activity.joinedPeople}/${activity.needPeople}人).fontSize(12).fontColor(activity.joinedPeopleactivity.needPeople?#EF4444:#10B981)}.width(100%).margin({top:4})Button(activity.status报名中?立即报名:activity.status进行中?签到:查看详情).width(100%).height(36).fontSize(14).backgroundColor(activity.status报名中?#18181B:activity.status进行中?#10B981:#A1A1AA).margin({top:8}).onClick((){if(activity.status报名中)this.joinActivity(activity.id);elseif(activity.status进行中)this.signIn(activity.id);})}.width(100%).padding(16).backgroundColor(#FAFAFA).borderRadius(12)}页面布局build(){Column(){// 顶部时长统计Row({space:12}){Column(){Text(${this.certifiedDuration}).fontSize(28).fontWeight(FontWeight.Bold).fontColor(#18181B)Text(认证时长(h)).fontSize(12).fontColor(#71717A)}.layoutWeight(1).padding(20).backgroundColor(#F4F4F5).borderRadius(12)Column(){Text(${this.activityCount}).fontSize(28).fontWeight(FontWeight.Bold).fontColor(#18181B)Text(参与活动).fontSize(12).fontColor(#71717A)}.layoutWeight(1).padding(20).backgroundColor(#F4F4F5).borderRadius(12)}.width(100%).padding(20)// Tab切换Row({space:20}){Text(活动大厅).fontSize(16).fontWeight(this.tabIndex0?FontWeight.Bold:FontWeight.Normal).fontColor(this.tabIndex0?#18181B:#A1A1AA).onClick(()this.tabIndex0)Text(我的签到).fontSize(16).fontWeight(this.tabIndex1?FontWeight.Bold:FontWeight.Normal).fontColor(this.tabIndex1?#18181B:#A1A1AA).onClick(()this.tabIndex1)}.width(100%).padding({left:20,right:20})// 内容区if(this.tabIndex0){List({space:12}){ForEach(this.activities,(activity:Activity){ListItem(){this.ActivityCard(activity)}})}.width(100%).padding(20).layoutWeight(1)}else{List({space:12}){ForEach(this.records,(record:SignRecord){ListItem(){Row(){Column({space:4}){Text(record.activityTitle).fontSize(14).fontWeight(FontWeight.Medium)Text(时长${record.realDuration}小时).fontSize(12).fontColor(#71717A)}.alignItems(HorizontalAlign.Start).layoutWeight(1)Text(record.status).fontSize(12).fontColor(record.isCertified?#10B981:#F59E0B).padding({left:8,right:8,top:4,bottom:4}).backgroundColor(record.isCertified?#D1FAE5:#FEF3C7).borderRadius(10)}.width(100%).padding(16).backgroundColor(#FAFAFA).borderRadius(12)}})}.width(100%).padding(20).layoutWeight(1)}}.width(100%).height(100%).backgroundColor(Color.White)}页面设计说明主题色采用最深锌色#18181B体现社团活动的正式、公益、严谨。顶部统计认证时长和活动数Tab切换活动大厅和我的签到活动卡片清晰展示信息签到记录显示认证状态。SDK配置API 24compatibleSdkVersion: “6.1.1(24)”运行项目将代码复制到 entry/src/main/ets/pages/Index.ets 即可运行。项目总结实现了活动发布、报名、签到签退、时长自动计算、审核认证、统计等功能。掌握了Tab切换、列表卡片、状态流转、时长计算、认证流程等。后续可加入扫码签到、位置校验、电子证书、时长兑换、活动评价、社团排行等功能。

相关新闻

【赠书活动】零信任落地难?六步框架打通从规划到持续运营全流程

【赠书活动】零信任落地难?六步框架打通从规划到持续运营全流程

面对日益复杂的网络攻击面,传统的安全架构已独木难支。《零信任安全架构实践指南:以零信任重构数字信任》一书直击企业安全建设的痛点与难点,带你系统掌握零信任架构从理念到实施的全流程。这些方法经过多家企业验证,一旦掌握即可…

2026/7/24 1:35:56 阅读更多 →
【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统

【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统

【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统(SDIO接口驱动、雷龙贴片SD卡) 原文链接:https://www.longsto.com/news/331.html 作者:雷龙发展 基于STM32设计的SD卡数据读取与上位机显示系统 演示视频: …

2026/7/24 1:35:55 阅读更多 →
SPI通信深度解析:从时序原理到MSPM0实战配置

SPI通信深度解析:从时序原理到MSPM0实战配置

1. 项目概述:从硬件时序到软件配置的SPI全景解析在嵌入式开发领域,串行外设接口(SPI)就像设备间的高速数据通道,其重要性不亚于城市中的主干道。无论是读取传感器数据、配置无线模块,还是与闪存芯片通信&am…

2026/7/24 1:34:55 阅读更多 →

最新新闻

医疗多模态预训练技术:挑战、原理与实践指南

医疗多模态预训练技术:挑战、原理与实践指南

1. 医疗多模态预训练的核心挑战与突破方向医疗领域的视觉-语言联合建模一直面临着数据稀缺和模态差异的双重困境。传统方法通常需要大量标注数据来训练模型,但在医疗场景中获取高质量标注的成本极高。2022年提出的MAE框架通过多模态掩码自编码器,开创性地…

2026/7/24 1:44:57 阅读更多 →
Simulink深度多智能体强化学习实践指南

Simulink深度多智能体强化学习实践指南

1. 项目背景与核心价值深度多智能体强化学习在工业控制、机器人协同、自动驾驶等领域的应用正变得越来越广泛。不同于传统的单智能体场景,多智能体系统(MAS)中的每个个体都需要在动态环境中与其他智能体进行交互和协作,这使得问题…

2026/7/24 1:44:57 阅读更多 →
TI ADS7851EVM-PDK评估套件深度解析:从硬件设计到性能测试实战

TI ADS7851EVM-PDK评估套件深度解析:从硬件设计到性能测试实战

1. 项目概述与核心价值对于从事精密测量、工业自动化或者医疗成像的硬件工程师来说,选型和评估一款高精度模数转换器(ADC)往往是项目成败的关键一步。数据手册上的参数再漂亮,也不如亲手实测来得踏实。今天要深入拆解的&#xff0…

2026/7/24 1:44:57 阅读更多 →
大模型训练师:AI入行捷径与核心技能解析

大模型训练师:AI入行捷径与核心技能解析

1. 项目背景:AI行业人才需求爆发式增长最近一则关于字节跳动开出500元/天实习薪资的消息在社交平台刷屏,引发广泛讨论。这反映出AI行业对专业人才的渴求已达到前所未有的程度。作为从业多年的AI工程师,我想分享一个被大多数人忽视的入行捷径—…

2026/7/24 1:44:57 阅读更多 →
【智能体安全治理|专栏第0期·启航篇】AI时代的数字宪法:我们该如何约束自主行动的AI智能体

【智能体安全治理|专栏第0期·启航篇】AI时代的数字宪法:我们该如何约束自主行动的AI智能体

【智能体安全治理|专栏第0期启航篇】AI时代的数字宪法:我们该如何约束自主行动的AI智能体作者: AI治理研究组 原创声明: 本文为原创技术博客,基于一线智能体工程实践总结编写。 文末附有相关学术研究的延伸阅读参考。🕒 写作说明&…

2026/7/24 1:44:57 阅读更多 →
信息系统项目管理师论文怎么写真实

信息系统项目管理师论文怎么写真实

很多人准备高项论文,第一反应是找模板。但真正让论文翻车的,往往不是没有模板,而是项目素材太假。高项论文不是写宣传稿,也不是背教材。它要的是:你围绕一个信息系统项目,讲清楚自己怎么做管理、遇到什么问…

2026/7/24 1:43:57 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻