尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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 页面布局简单的库存与设备状态管理后续还可以加入商品明细、库存消耗记录、自动补货提醒、设备地图、销售额统计和本地数据持久化等功能。
RELATED

相关推荐

MATLAB高效读取复杂格式TXT数据的实战指南

MATLAB高效读取复杂格式TXT数据的实战指南

1. 为什么需要掌握复杂TXT文件读取技巧在实际工程和科研项目中,我们经常会遇到各种非标准格式的文本数据文件。这些文件可能包含表头注释、不规则分隔符、混合数据类型(数字与文本并存)以及缺失值等复杂情况。我处理过的一个气象数据集就包含…

📅 2026/7/19 3:37:30
信息学奥赛一本通 1219:马走日 | OpenJudge NOI 2.5 8465:马走日

信息学奥赛一本通 1219:马走日 | OpenJudge NOI 2.5 8465:马走日

1. 马走日问题解析马走日是中国象棋中马的移动方式,也是信息学奥赛中经典的搜索算法练习题。题目要求计算马从棋盘起点出发,经过棋盘上所有格子的路径总数。这个问题看似简单,但蕴含着深度优先搜索(DFS)和回溯算法的核…

📅 2026/9/12 6:53:10
【超详细】三大主流合成器原理拆解+场景选型+品牌特性对比,音频从业者必看

【超详细】三大主流合成器原理拆解+场景选型+品牌特性对比,音频从业者必看

文章目录前言一、三大合成器核心工作原理深度解析1.1 波表合成器:基于采样回放的数字化发声逻辑1.2 FM合成器:基于频率调制的动态波形生成逻辑1.3 白噪声滤波合成器:基于噪声塑形的随机音色生成逻辑二、三类合成器音色特征与实战适用场景2.1 …

📅 2026/7/19 17:36:56
MORE NEWS

更多资讯

📰

OFDM信道估计中的EM算法:数据辅助迭代与工程实现

简介:这是一份基于MATLAB的OFDM系统EM信道估计仿真程序,面向无线通信、信号处理方向的学习者与科研人员,适用于Wi-Fi、4G/5G等场景的机理演示,解决多径衰落环境下信道状态信息获取困难、误码率偏高等问题。压缩包共30个文件&#…

📰

Dify 自定义工具开发与多租户隔离沙箱实战

Dify 自定义工具开发与多租户隔离沙箱实战开源 LLM 应用开发平台 Dify 凭借其直观的可视化工作流(DSL Workflow)、强大的 Prompt 编排与完善的知识库管理,已成为国内外众多企业落地 AI 应用的首选低代码基础设施。 然而,当企业研发…

📰

MCP Client 高性能连接池管理:在多 Agent 并发中的复用实践

MCP Client 高性能连接池管理:在多 Agent 并发中的复用实践在企业级多智能体系统(MAS)中,当数十个并发的 Agent 实例需要频繁调用远程 MCP(Model Context Protocol) Server 上的工具与资源时,很…

📰

ingress-nginx 集成 ModSecurity:为 Kubernetes Ingress 启用 OWASP WAF 防护

ingress-nginx 集成 ModSecurity:为 Kubernetes Ingress 启用 OWASP WAF 防护 【免费下载链接】ingress-nginx Ingress NGINX Controller for Kubernetes 项目地址: https://gitcode.com/GitHub_Trending/in/ingress-nginx ModSecurity 是由 OWASP 社区开发的…

📰

libSQL 中的 SQLite no_std Rust 绑定:sqlite-rs-embedded 架构与零拷贝实战解析

libSQL 中的 SQLite no_std Rust 绑定:sqlite-rs-embedded 架构与零拷贝实战解析 【免费下载链接】libsql libSQL is a fork of SQLite that is both Open Source, and Open Contributions. 项目地址: https://gitcode.com/GitHub_Trending/li/libsql 本文以 …

📰

Pydantic Evals 评估器(Evaluator)完全指南:从确定性断言到 LLM 裁判与实验级报告评估

Pydantic Evals 评估器(Evaluator)完全指南:从确定性断言到 LLM 裁判与实验级报告评估 【免费下载链接】pydantic-ai How Python does AI. Agents, realtime voice, image generation, embeddings. Every model, every interface, typed end …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬