HarmonyOS ArkTS 实战:实现一个校园食堂排队取餐记录应用
项目效果本文实现一个基于 HarmonyOS 和 ArkTS 的校园食堂排队取餐记录应用。应用可以记录不同食堂窗口的排队时间、用餐时段和口味评价并支持取餐状态切换、推荐窗口筛选、长队统计和平均等待时间统计。最终运行效果如下页面功能包括记录食堂窗口名称记录早餐、午餐、晚餐时段记录等待分钟数标记推荐、一般、避雷标记排队中或已取餐按全部、已取餐、排队中、推荐筛选统计已取餐数量、平均等待时间、长队窗口数量。前言校园食堂经常会出现某些窗口排队特别久、某些窗口味道稳定、某些窗口偶尔踩雷的情况。对学生来说如果能记录每次排队和取餐体验就能逐渐整理出自己的“食堂选择参考”。这个项目的业务场景比较轻量但很适合练习 ArkTS 状态管理。它涉及表单输入、数组新增、状态切换、条件筛选、列表渲染和动态统计能够覆盖单页面应用中常见的数据处理方式。一、核心数据结构每一条取餐记录使用MealRecord表示interfaceMealRecord{id:number;windowName:string;mealType:string;waitMinutes:number;taste:string;finished:boolean;}其中windowName表示食堂窗口mealType表示早餐、午餐或晚餐waitMinutes表示等待时间taste表示推荐、一般或避雷finished表示是否已经取餐。二、页面状态设计页面使用State保存输入内容、筛选条件和记录列表StateprivatewindowText:string;StateprivatewaitText:string;StateprivatemealType:string午餐;StateprivatetasteType:string推荐;StateprivatefilterType:string全部;StateprivatenextId:number5;Stateprivaterecords:MealRecord[][{id:1,windowName:一食堂盖浇饭窗口,mealType:午餐,waitMinutes:12,taste:推荐,finished:true},{id:2,windowName:二食堂面馆窗口,mealType:晚餐,waitMinutes:18,taste:一般,finished:false},{id:3,windowName:早餐包子窗口,mealType:早餐,waitMinutes:6,taste:推荐,finished:true},{id:4,windowName:麻辣烫窗口,mealType:晚餐,waitMinutes:25,taste:避雷,finished:false}];这些状态变化后ArkUI 会自动刷新页面。三、添加取餐记录添加记录时需要读取窗口名称和等待时间并把等待时间从字符串转换成数字privateaddRecord():void{constwindowName:stringthis.windowText.trim();constwaitMinutes:numberNumber(this.waitText);if(windowName.length0||Number.isNaN(waitMinutes)||waitMinutes0){return;}constrecord:MealRecord{id:this.nextId,windowName,mealType:this.mealType,waitMinutes,taste:this.tasteType,finished:false};this.records[record,...this.records];this.nextId1;this.windowText;this.waitText;}这里把新记录放在数组最前面方便用户优先看到最新添加的窗口。四、状态切换和删除点击“完成取餐”时只需要切换当前记录的finished状态privatetoggleFinished(id:number):void{this.recordsthis.records.map((item:MealRecord){if(item.idid){return{id:item.id,windowName:item.windowName,mealType:item.mealType,waitMinutes:item.waitMinutes,taste:item.taste,finished:!item.finished};}returnitem;});}删除记录使用filter()privatedeleteRecord(id:number):void{this.recordsthis.records.filter((item:MealRecord)item.id!id);}五、筛选和统计筛选逻辑如下privategetFilteredRecords():MealRecord[]{if(this.filterType已取餐){returnthis.records.filter((item:MealRecord)item.finished);}if(this.filterType排队中){returnthis.records.filter((item:MealRecord)!item.finished);}if(this.filterType推荐){returnthis.records.filter((item:MealRecord)item.taste推荐);}returnthis.records;}平均等待时间和长队窗口数量也直接从数组计算privategetAverageWait():number{if(this.records.length0){return0;}lettotal:number0;this.records.forEach((item:MealRecord){totalitem.waitMinutes;});returnMath.round(total/this.records.length);}privategetLongWaitCount():number{returnthis.records.filter((item:MealRecord)item.waitMinutes15).length;}六、页面布局说明页面主要由四部分组成顶部标题卡片展示应用名称和说明统计卡片展示已取餐、平均等待、长队窗口添加表单输入窗口名称和等待时间选择时段和口味记录列表展示每条窗口记录并支持取餐状态切换和删除。列表使用List和ForEach渲染List(){ForEach(this.getFilteredRecords(),(item:MealRecord){ListItem(){this.MealCard(item);}},(item:MealRecord)item.id.toString());}当筛选结果为空时页面显示空状态提示避免列表区域空白。七、运行测试在 DevEco Studio 中打开项目进入entry/src/main/ets/pages/Index.ets使用 Preview 预览页面。测试步骤如下输入食堂窗口名称输入等待分钟数选择早餐、午餐或晚餐选择推荐、一般或避雷点击“添加记录”点击“完成取餐”切换状态使用筛选按钮查看不同记录删除单条记录检查统计卡片是否同步变化。经过测试添加记录、状态切换、筛选、删除和统计功能均可正常运行。八、总结本文基于 HarmonyOS 和 ArkTS 实现了一个校园食堂排队取餐记录应用。项目通过State管理页面数据使用 ArkUI 完成页面布局并实现了取餐记录添加、状态切换、口味评价、筛选展示和动态统计等功能。这个项目虽然是单页面应用但业务场景具体交互逻辑完整适合用来练习 ArkTS 中的表单输入、数组操作、条件渲染和列表渲染。后续可以继续扩展本地存储、窗口评分、食堂分类和历史趋势统计等功能。

相关新闻

Kimi    LeetCode 3464. 正方形上的点之间的最大距离 Python3实现

Kimi LeetCode 3464. 正方形上的点之间的最大距离 Python3实现

LeetCode 3464. 正方形上的点之间的最大距离 — Python3 实现题目概述给定正方形边长 side,以及位于正方形边界上的若干点。需要从中选出 k 个点,使得任意两点之间的最小曼哈顿距离最大化。- 曼哈顿距离:|x1 - x2| |y1 - y2| - 关键约束&…

2026/7/5 14:00:15 阅读更多 →
六西格玛在AI与云原生时代的实战重构:女性技术专家的质量方法论

六西格玛在AI与云原生时代的实战重构:女性技术专家的质量方法论

1. 项目概述:一场聚焦女性科技从业者的行业活动,为何以“Sixies”为名?“Women Working in Tech Event Features Sixies”——这个标题乍看像一则简讯,但拆开来看,信息量远超表面。“Women Working in Tech”直指核心人…

2026/7/5 13:58:15 阅读更多 →
一线老师傅经验谈:选对海绵喷胶源头厂家,粘接寿命延长8年

一线老师傅经验谈:选对海绵喷胶源头厂家,粘接寿命延长8年

最容易被忽视的胶水,正在吃掉你30%的利润早些年我也走过弯路,总觉得海绵喷胶这种大通货,哪家便宜就用哪家,结果频繁出现**开胶起泡**。最严重的一个月,车间返工率飙升到**23%**,光是拆解、擦胶、重新喷涂的…

2026/7/5 13:54:14 阅读更多 →

最新新闻

C语言 二维数组在内存中的存储

C语言 二维数组在内存中的存储

1.二维数组在内存中是怎么存储的?请问这个二维数组在内存中的布局?int arr[3][4] { {1,2,3,4,},{5,6,7,8},{9,10,11,12 } };你的答案是这样的吗。我们说这是我们想象的逻辑结构,那实际的布局,即物理结构是怎样的呢?in…

2026/7/5 15:00:27 阅读更多 →
手把手教你学Simulink——基于平均电流模式(Average Current Mode Control, ACMC)的双向 DC‑DC 变换器控制仿真

手把手教你学Simulink——基于平均电流模式(Average Current Mode Control, ACMC)的双向 DC‑DC 变换器控制仿真

目录 手把手教你学Simulink——基于平均电流模式(Average Current Mode Control, ACMC)的双向 DC‑DC 变换器控制仿真 一、为什么要用 平均电流模式控制(ACMC) 二、仿真目标** 三、主电路拓扑与参数** 3.1 拓扑(双向两象限 Buck‑Boost) 3.2 参数表 四、ACMC 控制框…

2026/7/5 15:00:27 阅读更多 →
告别格式障碍:SketchUp STL插件让你的3D设计轻松走进现实世界

告别格式障碍:SketchUp STL插件让你的3D设计轻松走进现实世界

告别格式障碍:SketchUp STL插件让你的3D设计轻松走进现实世界 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl 你是…

2026/7/5 14:58:26 阅读更多 →
4-20mA电流环检测与PIC单片机信号处理方案

4-20mA电流环检测与PIC单片机信号处理方案

1. 4-20mA电流环基础与行业应用工业现场最可靠的信号传输方式莫过于4-20mA电流环,这个看似简单的标准已经统治过程控制领域半个多世纪。电流信号相比电压信号具有显著优势:抗干扰能力强,可长距离传输(理论可达数公里)&…

2026/7/5 14:56:26 阅读更多 →
6. 【C语言】格式化输入输出:和程序说说话

6. 【C语言】格式化输入输出:和程序说说话

前面五篇文章,我们熟悉了变量、常量、数据类型,但程序还像个闷葫芦——要么沉默不语,要么只喊一句固定的“Hello, World”。要让程序真正和人互动,就得学会两样本事: 输出:把数据展示给用户看(…

2026/7/5 14:56:25 阅读更多 →
MWC26 上海开幕,人形机器人点球大战、Agentic AI 成主角——智能体从概念走向赛场

MWC26 上海开幕,人形机器人点球大战、Agentic AI 成主角——智能体从概念走向赛场

MWC26 上海开幕,人形机器人点球大战、Agentic AI 成主角——智能体从概念走向赛场 6 月 24 日,MWC26 上海世界移动通信大会开幕。今年最大的看点不是 5G,不是 6G,而是人工智能。 人形机器人点球大战 MWC26 上海首次举办了"人…

2026/7/5 14:52:25 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻