HarmonyOS ArkTS 实战:实现一个校园停车位预约与车辆出入记录应用
HarmonyOS ArkTS 实战实现一个校园停车位预约与车辆出入记录应用项目效果本文使用 HarmonyOS 和 ArkTS 实现一个校园停车位预约与车辆出入记录应用。应用可以登记校园停车位记录车位编号、停车区域、车辆类型和车牌信息并提供车位预约、车辆入场、车辆离场、状态筛选和数据统计等功能。项目使用 DevEco Studio 开发适配 API 23 及以上版本。功能介绍本项目实现了以下功能登记新的校园停车位设置车位编号和停车区域选择电动车或小汽车类型填写预约车辆号牌预约空闲车位确认车辆入场登记车辆离场按空闲、已预约和使用中筛选车位统计全部车位、空闲车位和使用中车位删除不再使用的车位记录定义数据结构首先定义停车位记录的数据结构interfaceParkingRecord{id:number;space:string;area:string;plate:string;vehicleType:string;status:string;}字段说明如下id车位记录的唯一编号space车位编号area停车区域plate预约车辆号牌vehicleType车辆类型status车位当前状态初始化页面状态使用State保存输入内容、车辆类型和筛选条件StateprivatespaceText:string;StateprivateareaText:string;StateprivateplateText:string;StateprivatevehicleType:string电动车;StateprivatefilterType:string全部;StateprivatenextId:number6;准备初始车位数据Stateprivaterecords:ParkingRecord[][{id:1,space:A-018,area:图书馆地下停车场,plate:等待预约,vehicleType:小汽车,status:空闲},{id:2,space:B-032,area:东区宿舍车棚,plate:粤B·E2861,vehicleType:电动车,status:已预约},{id:3,space:C-006,area:体育馆北侧停车区,plate:粤A·Q7529,vehicleType:小汽车,status:使用中}];添加停车位用户填写车位编号和停车区域后可以添加新的停车位privateaddRecord():void{constspace:stringthis.spaceText.trim();constarea:stringthis.areaText.trim();if(space.length0||area.length0){return;}constrecord:ParkingRecord{id:this.nextId,space,area,plate:等待预约,vehicleType:this.vehicleType,status:空闲};this.records[record,...this.records];this.nextId1;this.spaceText;this.areaText;}新添加的停车位默认处于空闲状态。实现车位预约和车辆入场车位状态按下面的顺序流转空闲 - 已预约 - 使用中 - 车辆离场 - 空闲预约车位和确认入场使用同一个方法privateadvanceStatus(id:number):void{constplate:stringthis.plateText.trim()||校园车辆;this.recordsthis.records.map((item:ParkingRecord){if(item.idid){letstatus:string空闲;letnextPlate:string等待预约;if(item.status空闲){status已预约;nextPlateplate;}elseif(item.status已预约){status使用中;nextPlateitem.plate;}return{id:item.id,space:item.space,area:item.area,plate:nextPlate,vehicleType:item.vehicleType,status};}returnitem;});this.plateText;}当车位为空闲状态时点击按钮会预约车位当车位已预约时点击按钮会确认车辆入场。实现车辆离场车辆离场后车位重新恢复为空闲状态privateleaveParking(id:number):void{this.recordsthis.records.map((item:ParkingRecord){if(item.idid){return{id:item.id,space:item.space,area:item.area,plate:等待预约,vehicleType:item.vehicleType,status:空闲};}returnitem;});}离场后车牌信息会重置为“等待预约”。筛选车位状态页面支持按车位状态筛选privategetFilteredRecords():ParkingRecord[]{if(this.filterType空闲车位){returnthis.records.filter((item:ParkingRecord)item.status空闲);}if(this.filterType已预约){returnthis.records.filter((item:ParkingRecord)item.status已预约);}if(this.filterType使用中){returnthis.records.filter((item:ParkingRecord)item.status使用中);}returnthis.records;}筛选按钮可以封装为一个自定义组件BuilderFilterButton(text:string){Button(text).height(34).layoutWeight(1).fontSize(12).fontColor(this.filterTypetext?Color.White:#344054).backgroundColor(this.filterTypetext?#0F766E:#E8EEF7).borderRadius(8).onClick((){this.filterTypetext;});}统计车位数据使用filter统计指定状态的车位数量privategetCount(status:string):number{returnthis.records.filter((item:ParkingRecord)item.statusstatus).length;}顶部统计区域展示以下数据this.StatCard(全部车位,${this.records.length},#0F766E,#F0FDFA);this.StatCard(空闲可用,${this.getCount(空闲)},#059669,#ECFDF3);this.StatCard(正在使用,${this.getCount(使用中)},#D97706,#FFF7E8);设置状态颜色不同车位状态使用不同颜色privategetStatusColor(status:string):ResourceColor{if(status空闲){return#059669;}if(status已预约){return#2563EB;}return#D97706;}颜色对应关系如下绿色空闲可用蓝色已经预约橙色车辆正在使用紫色小汽车车位青色电动车车位删除车位记录不再需要的停车位记录可以删除privatedeleteRecord(id:number):void{this.recordsthis.records.filter((item:ParkingRecord)item.id!id);}删除后列表和顶部统计数据都会自动更新。使用列表展示车位使用List和ForEach渲染筛选后的车位List({space:10}){ForEach(this.getFilteredRecords(),(item:ParkingRecord){ListItem(){this.ParkingCard(item)}},(item:ParkingRecord)item.id.toString());}.width(100%).layoutWeight(1).scrollBar(BarState.Off);每个车位使用独立卡片展示卡片中包含车位编号、停车区域、车辆类型、车辆号牌、状态和操作按钮。页面设计说明应用使用青绿色作为主题色突出校园停车和出行管理场景。页面主要分为以下区域顶部标题和空闲车位数量车位状态统计区域停车位登记区域车位状态筛选区域停车位列表区域页面采用浅灰色背景和白色卡片不同状态采用不同颜色便于快速查看可用车位。SDK 配置本项目使用 HarmonyOS API 24满足 API 23 及以上要求{ name: default, compatibleSdkVersion: 6.1.1(24), runtimeOS: HarmonyOS, targetSdkVersion: 6.1.1(24), compileSdkVersion: 6.1.1(24) }entry 模块中的运行系统也要保持一致{ apiType: stageMode, targets: [ { name: default, runtimeOS: HarmonyOS } ] }运行项目使用 DevEco Studio 打开项目然后找到entry/src/main/ets/pages/Index.ets等待项目同步完成点击右侧的Preview按钮即可查看应用效果。项目总结本文使用 HarmonyOS 和 ArkTS 实现了一个校园停车位预约与车辆出入记录应用。项目实现了车位登记、车辆类型选择、车位预约、确认入场、车辆离场、状态筛选、数据统计和删除等功能。通过这个项目可以掌握ArkTS 接口定义State状态管理TextInput输入组件List和ForEach列表渲染map和filter数组操作状态流转设计自定义Builder组件HarmonyOS 页面布局后续还可以加入车位地图、扫码入场、预约超时提醒、停车时长计算、费用结算和本地数据持久化等功能。

相关新闻

C++缓存系统实现:从LRU算法到多线程安全

C++缓存系统实现:从LRU算法到多线程安全

1. 项目概述:为什么从缓存系统开始学C?如果你正在学习C,并且已经啃完了语法书,写了一些控制台小游戏或者算法题,接下来该做什么?很多人的第一反应是迷茫。语法都懂,但不知道如何把它们组合成一个…

2026/7/22 15:43:12 阅读更多 →
C++ STL容器适配器:stack与queue的实现原理与应用实践

C++ STL容器适配器:stack与queue的实现原理与应用实践

1. 项目概述:从“容器”到“容器适配器”的思维跃迁在C的日常开发中,STL(Standard Template Library)是我们绕不开的利器。提到STL,大家第一时间想到的可能是vector、list、map这些耳熟能详的序列容器或关联容器。它们…

2026/7/21 7:51:14 阅读更多 →
Spring Boot 3.3与JDK 17升级实战:5大陷阱与解决方案

Spring Boot 3.3与JDK 17升级实战:5大陷阱与解决方案

1. 项目概述:Spring Boot 3.3与JDK 17升级的必要性最近在技术社区看到不少团队开始将Spring Boot 2.x项目升级到3.3版本,同时伴随JDK从8迁移到17。作为经历过完整升级周期的老司机,我必须提醒各位:这个升级过程远比你想象的复杂。…

2026/7/21 7:50:13 阅读更多 →

最新新闻

深入解析TI TLK10xL以太网PHY:时序、硬件配置与调试实战

深入解析TI TLK10xL以太网PHY:时序、硬件配置与调试实战

1. 项目概述与核心价值在嵌入式网络设备的设计中,以太网物理层(PHY)芯片扮演着“翻译官”和“信号调理师”的双重角色。它负责将来自MAC控制器的并行数字信号,转换成能在双绞线等物理介质上传输的差分模拟信号,反之亦然…

2026/7/23 14:32:59 阅读更多 →
电商系统缓存架构设计:从本地缓存到分布式缓存的多级缓存实践

电商系统缓存架构设计:从本地缓存到分布式缓存的多级缓存实践

一、 缓存是电商系统的"减震器"电商系统的流量特征决定了缓存是不可或缺的基础设施。商品详情页在促销活动期间可能被访问数百万次,如果每次请求都穿透到数据库,再强大的数据库也会被压垮。缓存的作用就是在数据库前面构建一道屏障&#xff0c…

2026/7/23 14:32:59 阅读更多 →
BQ40Z50-R5电池管理芯片SBS命令与Data Flash配置实战指南

BQ40Z50-R5电池管理芯片SBS命令与Data Flash配置实战指南

1. 项目概述:从芯片手册到实战配置如果你正在开发一款使用TI BQ40Z50-R5芯片的电池包,那么你肯定绕不开两个核心概念:SBS命令和Data Flash配置。手册上密密麻麻的表格和十六进制数,常常让人望而生畏。我接触过不少工程师&#xff…

2026/7/23 14:32:59 阅读更多 →
2026存储风暴:安防芯片市场的“成本大逃杀”与隐形赢家

2026存储风暴:安防芯片市场的“成本大逃杀”与隐形赢家

2026存储风暴:安防芯片市场的“成本大逃杀”与隐形赢家 2026年的存储市场,上演了一场令整个电子产业窒息的“超级上涨周期”。DDR5合约价Q1环比暴涨90-95%,NAND Flash累计上涨超246%。这不仅是价格的狂飙,更是供应链权力的重构。 …

2026/7/23 14:32:59 阅读更多 →
海思回归第二弹:瑞芯微的隐忧与对手的反击

海思回归第二弹:瑞芯微的隐忧与对手的反击

海思回归第二弹:瑞芯微的隐忧与对手的反击 上篇《海思回归后的安防芯片江湖》发出来后,收到很多吐槽。研究下当前市场,这篇尽可能公正一点。另外看看爱芯、君正、清微这些玩家到底能不能打? 这篇就接着聊——不止瑞芯微&#xff0…

2026/7/23 14:32:59 阅读更多 →
OpenWrt软路由DDNS避坑指南:为什么你的阿里云解析总失败?从依赖包到防火墙的全排查

OpenWrt软路由DDNS避坑指南:为什么你的阿里云解析总失败?从依赖包到防火墙的全排查

OpenWrt软路由DDNS深度排障:阿里云解析失效的8个关键检查点 深夜两点,路由器日志里又弹出一条"阿里云DDNS更新失败"的红色警告。这已经是本周第三次被半夜的报警吵醒,而明天早上九点还有个重要视频会议等着你。这不是什么新手安装教程能解决的问题——你需要的是…

2026/7/23 14:31:58 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/7/22 12:54:44 阅读更多 →

月新闻