发布时间:2026/7/15 1:02:24
HarmonyOS ArkTS 实战:实现一个校园自动售货机库存与补货记录应用
HarmonyOS ArkTS 实战实现一个校园自动售货机库存与补货记录应用项目效果本文使用 HarmonyOS 和 ArkTS 实现一个校园自动售货机库存与补货记录应用。应用可以登记校园售货机记录设备名称、所在位置、设备类型、商品库存和运行状态并提供库存预警、快速补货、故障上报、维修完成、状态筛选和数据统计等功能。项目使用 DevEco Studio 开发适配 API 23 及以上版本。功能介绍本项目实现了以下功能登记新的校园自动售货机记录设备名称和所在位置选择饮料机、零食机或综合机类型设置设备初始库存自动识别低库存设备一键为售货机补充库存上报设备故障标记设备维修完成按库存和运行状态筛选设备统计设备总数、缺货数量和故障数量删除不再使用的设备记录定义数据结构首先定义自动售货机的数据结构interfaceVendingRecord{id:number;name:string;location:string;stock:number;type:string;status:string;}字段说明如下id设备记录的唯一编号name售货机名称或编号location设备所在位置stock当前商品库存type售货机类型status设备运行状态初始化页面状态使用State保存输入内容和筛选条件StateprivatenameText:string;StateprivatelocationText:string;StateprivatestockText:string;StateprivatemachineType:string饮料机;StateprivatefilterType:string全部;StateprivatenextId:number6;准备一些初始设备数据Stateprivaterecords:VendingRecord[][{id:1,name:A-01 售货机,location:图书馆一楼,stock:42,type:饮料机,status:正常},{id:2,name:B-03 售货机,location:第二教学楼,stock:8,type:综合机,status:缺货},{id:3,name:C-02 售货机,location:南区宿舍大厅,stock:25,type:零食机,status:正常},{id:4,name:D-01 售货机,location:东区体育馆,stock:16,type:饮料机,status:故障}];初始数据包含正常、缺货和故障三种状态可以让 Preview 直接展示完整页面效果。添加售货机用户填写设备名称、位置和初始库存后可以登记新的售货机privateaddRecord():void{constname:stringthis.nameText.trim();constlocation:stringthis.locationText.trim();conststock:numberNumber(this.stockText);if(name.length0||location.length0||Number.isNaN(stock)||stock0){return;}constrecord:VendingRecord{id:this.nextId,name,location,stock,type:this.machineType,status:stock10?缺货:正常};this.records[record,...this.records];this.nextId1;this.nameText;this.locationText;this.stockText;}如果初始库存小于或等于 10系统会自动将设备标记为“缺货”。实现快速补货点击“补货 20”按钮后设备库存增加 20同时将状态恢复为正常privaterestock(id:number):void{this.recordsthis.records.map((item:VendingRecord){if(item.idid){return{id:item.id,name:item.name,location:item.location,stock:item.stock20,type:item.type,status:正常};}returnitem;});}这里使用map创建新数组使 ArkUI 能够自动刷新设备卡片和统计数据。上报故障和完成维修点击“上报故障”可以将设备标记为故障。维修完成后再次点击按钮即可恢复设备状态privatetoggleFault(id:number):void{this.recordsthis.records.map((item:VendingRecord){if(item.idid){conststatus:stringitem.status故障?(item.stock10?缺货:正常):故障;return{id:item.id,name:item.name,location:item.location,stock:item.stock,type:item.type,status};}returnitem;});}维修完成后系统还会检查库存。如果库存不足设备恢复为缺货状态否则恢复为正常状态。筛选设备记录页面可以按运行状态筛选售货机privategetFilteredRecords():VendingRecord[]{if(this.filterType库存不足){returnthis.records.filter((item:VendingRecord)item.status缺货);}if(this.filterType设备故障){returnthis.records.filter((item:VendingRecord)item.status故障);}if(this.filterType运行正常){returnthis.records.filter((item:VendingRecord)item.status正常);}returnthis.records;}筛选按钮封装如下BuilderFilterButton(text:string){Button(text).height(34).layoutWeight(1).fontSize(12).fontColor(this.filterTypetext?Color.White:#344054).backgroundColor(this.filterTypetext?#0891B2:#E8EEF7).borderRadius(8).onClick((){this.filterTypetext;});}在页面中调用Row({space:8}){this.FilterButton(全部);this.FilterButton(库存不足);this.FilterButton(设备故障);this.FilterButton(运行正常);}.width(100%);统计设备状态使用filter统计指定状态的设备数量privategetCount(status:string):number{returnthis.records.filter((item:VendingRecord)item.statusstatus).length;}页面顶部展示设备总数、库存不足和设备故障数量this.StatCard(设备总数,${this.records.length},#0891B2,#ECFEFF);this.StatCard(库存不足,${this.getCount(缺货)},#D97706,#FFF7E8);this.StatCard(设备故障,${this.getCount(故障)},#D92D20,#FEE4E2);计算设备在线率设备在线率可以根据故障设备数量动态计算constonlineRate:numberthis.records.length0?0:Math.round((this.records.length-this.getCount(故障))/this.records.length*100);在页面顶部显示在线率可以让管理人员快速了解校园售货机的整体运行情况。设置状态颜色不同状态使用不同颜色进行区分privategetStatusColor(status:string):ResourceColor{if(status正常){return#059669;}if(status缺货){return#D97706;}return#D92D20;}颜色含义如下绿色设备运行正常橙色库存不足需要补货红色设备发生故障青色页面主要操作和统计信息删除设备记录不再使用的售货机可以从列表中删除privatedeleteRecord(id:number):void{this.recordsthis.records.filter((item:VendingRecord)item.id!id);}删除后设备列表和顶部统计数据会同时更新。使用列表渲染设备使用List和ForEach渲染筛选后的设备记录List({space:10}){ForEach(this.getFilteredRecords(),(item:VendingRecord){ListItem(){this.MachineCard(item)}},(item:VendingRecord)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 模块中的runtimeOS也需要保持一致{ apiType: stageMode, targets: [ { name: default, runtimeOS: HarmonyOS } ] }运行项目使用 DevEco Studio 打开项目然后找到页面文件entry/src/main/ets/pages/Index.ets等待项目同步完成点击右侧Preview按钮即可查看页面运行效果。如果修改代码后预览页面没有变化可以点击 Preview 窗口中的刷新按钮。项目总结本文使用 HarmonyOS 和 ArkTS 实现了一个校园自动售货机库存与补货记录应用。项目实现了设备登记、类型选择、库存预警、快速补货、故障上报、维修完成、状态筛选、数据统计和删除等功能。通过这个项目可以掌握ArkTS 接口定义State状态管理TextInput输入组件List和ForEach列表渲染map和filter数组操作条件判断和状态切换自定义Builder组件HarmonyOS 页面布局简单的库存与设备状态管理后续还可以加入商品明细、库存消耗记录、自动补货提醒、设备地图、销售额统计和本地数据持久化等功能。

相关新闻

CC3230x嵌入式开发实战:SD主机、定时器与低功耗模式深度解析
2026/7/15 0:02:24

CC3230x嵌入式开发实战:SD主机、定时器与低功耗模式深度解析

1. 项目概述:为什么需要关注CC3230x的SD主机、定时器与低功耗?在物联网和嵌入式设备开发领域,我们常常面临一个核心矛盾:设备需要具备强大的连接能力、可靠的数据存储和实时控制功能,同时又必须严格控制功耗以延长电池…

阅读更多
Java企业为什么需要AI框架
2026/7/15 0:02:24

Java企业为什么需要AI框架

Java企业在AI时代的尴尬处境 Java是全球企业级应用开发的主流语言——全球超过一半的企业系统跑在Java上。但在AI浪潮面前,很多Java企业感到尴尬:大模型的接口是各种语言的,AI开发社区以其他语言为主流,似乎Java在AI时代"掉队…

阅读更多
AI框架决定企业AI能走多远
2026/7/15 0:02:24

AI框架决定企业AI能走多远

企业AI建设的第一性原理 企业搞AI,最关键的决定是什么?不是选哪家大模型,不是先做哪个场景,不是招多少AI人才——而是选哪个AI开发框架。 为什么?因为框架决定了企业AI能力的"天花板"。选对了框架&#xff0…

阅读更多
M估计的迭代重加权最小二乘(IRLS)求解与C++实践
2026/7/15 2:02:24

M估计的迭代重加权最小二乘(IRLS)求解与C++实践

1. M估计:当数据遇到异常值时,我们该怎么办?想象一下,你正在用最小二乘法拟合一组数据点,突然发现数据里混进了几个"捣蛋鬼"——异常值。这些异常值就像聚会上的不速之客,会把你的拟合直线拽得偏…

阅读更多
PowerDC IR Drop仿真:从原理到实战的避坑指南
2026/7/15 2:02:24

PowerDC IR Drop仿真:从原理到实战的避坑指南

1. 什么是IR Drop?为什么它会让工程师头疼?想象一下你家的水管系统。当所有水龙头同时打开时,离水泵最远的那个水龙头水流会变小——这就是IR Drop在电路中的直观体现。IR Drop指的是电流(I)流经电阻(R)时产生的电压降,这个看似简…

阅读更多
三维姿态的数学基石:从欧拉角到旋转矩阵的转换原理与实战陷阱
2026/7/15 2:02:24

三维姿态的数学基石:从欧拉角到旋转矩阵的转换原理与实战陷阱

1. 三维姿态的数学基石:欧拉角与旋转矩阵初探第一次接触三维姿态描述时,我被各种术语绕得头晕眼花。直到在无人机项目中栽了跟头——因为姿态解算错误导致炸机,才真正理解欧拉角和旋转矩阵这对"孪生兄弟"的重要性。想象你手里拿着一…

阅读更多
【自动控制原理复试面试】从基础概念到前沿应用的深度剖析与应答策略
2026/7/15 2:02:24

【自动控制原理复试面试】从基础概念到前沿应用的深度剖析与应答策略

1. 自动控制原理基础概念精要自动控制原理作为控制工程的核心课程,其基础概念的理解深度直接影响面试表现。面试官通常会从最基础的问题切入,考察考生对知识体系的掌握是否扎实。控制系统三要素是面试高频考点:稳定性、快速性和准确性。稳定性…

阅读更多
谢希仁《计算机网络》核心知识点精讲:从理论到实战应用
2026/7/15 2:02:24

谢希仁《计算机网络》核心知识点精讲:从理论到实战应用

1. 计算机网络基础概念与分层模型计算机网络的核心目标是实现资源共享和信息传递。谢希仁教授在《计算机网络》中将其定义为"将地理位置不同的具有独立功能的计算机及其外部设备,通过通信线路连接起来"的系统。理解这个定义需要抓住三个关键点&#xff1a…

阅读更多
130.2026年国家级科研痛点 燃气轮机控制系统(DCS)高可靠冗余架构
2026/7/15 1:02:24

130.2026年国家级科研痛点 燃气轮机控制系统(DCS)高可靠冗余架构

2026年国家级科研痛点 燃气轮机控制系统(DCS)高可靠冗余架构 痛点直陈 现役燃机DCS冗余架构的核心死结在于“双机热备主从切换”的刚性中心逻辑:两套CPU一主一备,心跳线实时同步数据,主CPU故障后备用CPU接管。但该架构…

阅读更多
智慧树刷课插件:5分钟实现自动化学习的智能助手
2026/7/14 6:43:28

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

阅读更多
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案
2026/7/14 11:30:33

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

阅读更多
办公自动化实战:5个免费工具构建合同处理流水线
2026/7/14 19:02:31

办公自动化实战:5个免费工具构建合同处理流水线

1. 这不是“又一个工具包”,而是一套经过237次真实场景验证的效率组合拳“2026.04.28实用教程工具分享”这个标题乍看平平无奇,像极了你邮箱里被自动归入“促销/订阅”文件夹的那类通知——但如果你真把它当普通更新忽略,接下来半年里&#x…

阅读更多
YOLO11 改进 - 特征融合 | STFFM空间时间特征融合模块,强化时空互补、抑制噪声,助力小目标检测高效涨点
2026/7/15 0:02:23

YOLO11 改进 - 特征融合 | STFFM空间时间特征融合模块,强化时空互补、抑制噪声,助力小目标检测高效涨点

前言 本文介绍了面向红外小目标检测的时空特征融合模块——STFFM,用于增强复杂背景下目标与噪声、杂波的区分能力。该方法通过拼接空间特征与时间/运动特征,并结合通道注意力、空间注意力和残差增强机制,实现对关键语义通道与疑似目标区域的…

阅读更多
YOLO26 改进 - 特征融合 | STFFM空间时间特征融合模块,强化时空互补、抑制噪声,助力小目标检测高效涨点
2026/7/15 0:02:24

YOLO26 改进 - 特征融合 | STFFM空间时间特征融合模块,强化时空互补、抑制噪声,助力小目标检测高效涨点

前言 本文介绍了面向复杂背景小目标检测的时空特征融合模块——STFFM。该模块通过空间分支与时间/运动分支的特征拼接,引入通道注意力和空间注意力对融合特征进行自适应筛选,并结合残差增强与通道压缩,突出目标区域、抑制背景噪声。我们将 S…

阅读更多
AI框架决定企业AI能走多远
2026/7/15 0:02:24

AI框架决定企业AI能走多远

企业AI建设的第一性原理 企业搞AI,最关键的决定是什么?不是选哪家大模型,不是先做哪个场景,不是招多少AI人才——而是选哪个AI开发框架。 为什么?因为框架决定了企业AI能力的"天花板"。选对了框架&#xff0…

阅读更多
基于Dify与DeepSeek构建私有知识库问答系统实战指南
2026/7/13 21:11:56

基于Dify与DeepSeek构建私有知识库问答系统实战指南

在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…

阅读更多
FAE放射组学分析工具:医学影像特征探索的完整解决方案
2026/7/14 16:39:14

FAE放射组学分析工具:医学影像特征探索的完整解决方案

FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE 你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…

阅读更多
DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!
2026/7/14 16:39:14

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖! 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版,思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址:…

阅读更多