HarmonyOS ArkTS 实战:实现一个校园宿舍管理与查寝应用
HarmonyOS ArkTS 实战实现一个校园宿舍管理与查寝应用项目效果本文使用 HarmonyOS 和 ArkTS 实现一个校园宿舍管理与查寝应用。应用可以管理宿舍成员信息进行查寝签到记录晚归情况进行卫生评分并提供宿舍报修、水电费查询和查寝统计等功能。项目使用 DevEco Studio 开发适配 API 23 及以上版本。运行效果功能介绍本项目实现了以下功能宿舍成员管理查寝签到晚归登记卫生检查评分宿舍报修水电费查询请假外宿登记查寝记录查看卫生排名统计晚归次数统计宿舍公告定义数据结构首先定义宿舍成员和查寝记录的数据结构interfaceDormMember{id:number;studentId:string;name:string;bedNumber:string;major:string;phone:string;isRoomLeader:boolean;}interfaceCheckRecord{id:number;date:string;time:string;type:string;status:string;lateReason:string;score:number;remark:string;}interfaceDormitory{id:number;building:string;roomNumber:string;floor:number;members:DormMember[];checkRecords:CheckRecord[];hygieneScore:number;notice:string;}字段说明如下DormMember宿舍成员id成员编号studentId学号name姓名bedNumber床位号major专业phone电话isRoomLeader是否宿舍长CheckRecord查寝记录id记录编号date日期time时间type类型查寝/卫生检查/晚归status状态在寝/晚归/不在/请假lateReason晚归原因score卫生评分remark备注Dormitory宿舍id宿舍编号building楼栋roomNumber房间号floor楼层members成员列表checkRecords查寝记录hygieneScore卫生评分notice宿舍公告初始化页面状态使用State保存签到信息、评分StateprivatelateReasonText:string;StateprivateremarkText:string;StateprivatehygieneScore:number90;StateprivateselectedStatus:string在寝;StateprivatenextRecordId:number10;准备一些初始宿舍数据Stateprivatedormitories:Dormitory[][{id:1,building:12号楼,roomNumber:302,floor:3,hygieneScore:92,notice:本周四下午卫生检查请大家整理好内务,members:[{id:1,studentId:2023001,name:张三,bedNumber:1号床,major:计算机科学与技术,phone:138****1234,isRoomLeader:true},{id:2,studentId:2023002,name:李四,bedNumber:2号床,major:计算机科学与技术,phone:139****2345,isRoomLeader:false},{id:3,studentId:2023003,name:王五,bedNumber:3号床,major:软件工程,phone:137****3456,isRoomLeader:false},{id:4,studentId:2023004,name:赵六,bedNumber:4号床,major:软件工程,phone:136****4567,isRoomLeader:false}],checkRecords:[{id:1,date:2026-07-17,time:22:30,type:查寝,status:在寝,lateReason:,score:0,remark:全员在寝},{id:2,date:2026-07-16,time:22:45,type:查寝,status:晚归,lateReason:实验室做项目,score:0,remark:李四晚归15分钟},{id:3,date:2026-07-15,time:15:00,type:卫生检查,status:,lateReason:,score:92,remark:整体整洁桌面需整理}]}];查寝签到宿舍长进行查寝签到privatesubmitCheck(dormId:number):void{constnownewDate();constdate${now.getFullYear()}-${String(now.getMonth()1).padStart(2,0)}-${String(now.getDate()).padStart(2,0)};consttime${String(now.getHours()).padStart(2,0)}:${String(now.getMinutes()).padStart(2,0)};this.dormitoriesthis.dormitories.map((dorm:Dormitory){if(dorm.iddormId){constrecord:CheckRecord{id:this.nextRecordId,date,time,type:查寝,status:this.selectedStatus,lateReason:this.lateReasonText,score:0,remark:this.remarkText};this.nextRecordId1;return{...dorm,checkRecords:[record,...dorm.checkRecords]};}returndorm;});this.lateReasonText;this.remarkText;this.selectedStatus在寝;}卫生检查评分privatesubmitHygieneCheck(dormId:number):void{constnownewDate();constdate${now.getFullYear()}-${String(now.getMonth()1).padStart(2,0)}-${String(now.getDate()).padStart(2,0)};consttime${String(now.getHours()).padStart(2,0)}:${String(now.getMinutes()).padStart(2,0)};this.dormitoriesthis.dormitories.map((dorm:Dormitory){if(dorm.iddormId){constrecord:CheckRecord{id:this.nextRecordId,date,time,type:卫生检查,status:,lateReason:,score:this.hygieneScore,remark:this.remarkText};this.nextRecordId1;return{...dorm,hygieneScore:this.hygieneScore,checkRecords:[record,...dorm.checkRecords]};}returndorm;});this.remarkText;}请假外宿登记privatesubmitLeave(dormId:number,reason:string):void{constnownewDate();constdate${now.getFullYear()}-${String(now.getMonth()1).padStart(2,0)}-${String(now.getDate()).padStart(2,0)};consttime${String(now.getHours()).padStart(2,0)}:${String(now.getMinutes()).padStart(2,0)};this.dormitoriesthis.dormitories.map((dorm:Dormitory){if(dorm.iddormId){constrecord:CheckRecord{id:this.nextRecordId,date,time,type:请假,status:请假,lateReason:reason,score:0,remark:已报备辅导员};this.nextRecordId1;return{...dorm,checkRecords:[record,...dorm.checkRecords]};}returndorm;});}统计数据privategetLateCount(dorm:Dormitory):number{returndorm.checkRecords.filter(rr.status晚归).length;}privategetPresentCount(dorm:Dormitory):number{returndorm.checkRecords.filter(rr.status在寝).length;}privategetAverageScore(dorm:Dormitory):number{constscoresdorm.checkRecords.filter(rr.type卫生检查).map(rr.score);if(scores.length0)return0;returnMath.round(scores.reduce((a,b)ab,0)/scores.length);}privategetLeaveCount(dorm:Dormitory):number{returndorm.checkRecords.filter(rr.status请假).length;}顶部统计区域展示本月查寝、在寝率、晚归次数、卫生评分this.StatCard(本月查寝,${dorm.checkRecords.filter(rr.type查寝).length}次,#15803D,#DCFCE7);this.StatCard(在寝率,${Math.round(this.getPresentCount(dorm)/(this.getPresentCount(dorm)this.getLateCount(dorm)this.getLeaveCount(dorm))*100)}%,#059669,#ECFDF5);this.StatCard(晚归次数,${this.getLateCount(dorm)}次,#DC2626,#FEF2F2);this.StatCard(卫生评分,${dorm.hygieneScore}分,#F59E0B,#FFFBEB);设置状态颜色privategetStatusColor(status:string):ResourceColor{if(status在寝)return#059669;if(status晚归)return#DC2626;if(status请假)return#F59E0B;return#6B7280;}privategetStatusBgColor(status:string):ResourceColor{if(status在寝)return#DCFCE7;if(status晚归)return#FEE2E2;if(status请假)return#FEF3C7;return#F3F4F6;}privategetScoreColor(score:number):ResourceColor{if(score90)return#059669;if(score80)return#F59E0B;return#DC2626;}绿色在寝/优秀红色晚归/不合格橙色请假/良好灰色其他深绿色系页面主题色状态选择按钮封装BuilderStatusButton(text:string){Button(text).height(36).padding({left:16,right:16}).fontSize(13).fontColor(this.selectedStatustext?Color.White:#344054).backgroundColor(this.selectedStatustext?#15803D:#F3F4F6).borderRadius(18).onClick((){this.selectedStatustext;});}宿舍成员网格展示使用Grid展示宿舍成员Grid(){ForEach(dorm.members,(member:DormMember){GridItem(){Column(){Circle().width(48).height(48).fill(#15803D20).overlay(Text(member.name.charAt(0)).fontSize(18).fontColor(#15803D))Text(member.name).fontSize(13).fontWeight(FontWeight.Medium).margin({top:8})Text(member.bedNumber).fontSize(11).fontColor(#6B7280).margin({top:2})if(member.isRoomLeader){Text(宿舍长).fontSize(10).fontColor(#15803D).backgroundColor(#DCFCE7).padding({left:6,right:6,top:2,bottom:2}).borderRadius(4).margin({top:4})}}.width(100%).padding(12).backgroundColor(Color.White).borderRadius(12)}},(member:DormMember)member.id.toString())}.columnsTemplate(1fr 1fr 1fr 1fr).rowsGap(12).columnsGap(12).width(100%)页面设计说明应用使用深绿色作为主题色体现宿舍、生活、整洁的氛围。页面主要分为以下区域顶部宿舍信息查寝数据统计宿舍公告成员网格展示查寝签到表单卫生评分查寝记录列表页面采用浅灰色背景和白色卡片。床位使用4列网格展示查寝状态使用不同颜色标签卫生评分使用星级展示查寝记录使用时间倒序排列宿舍长使用特殊标记。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状态管理查寝签到流程Grid网格布局展示成员List和ForEach列表渲染评分和统计计算自定义Builder组件HarmonyOS 宿舍管理类应用布局后续还可以加入人脸识别查寝、自动定位签到、水电费缴纳、宿舍报修、调宿申请、文明宿舍评选、访客登记和宿舍评比等功能。

相关新闻

SinaL2实战指南:构建高性能实时Level2行情数据处理系统

SinaL2实战指南:构建高性能实时Level2行情数据处理系统

SinaL2实战指南:构建高性能实时Level2行情数据处理系统 【免费下载链接】SinaL2 Level2 from dHydra 项目地址: https://gitcode.com/gh_mirrors/si/SinaL2 在量化交易领域,Level2行情数据是构建精准交易策略的关键基础设施。SinaL2作为一款专为P…

2026/7/29 13:54:28 阅读更多 →
5分钟找回QQ空间丢失的说说:GetQzonehistory终极数据恢复指南

5分钟找回QQ空间丢失的说说:GetQzonehistory终极数据恢复指南

5分钟找回QQ空间丢失的说说:GetQzonehistory终极数据恢复指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾在深夜翻看QQ空间时,发现那些承载青春记忆…

2026/7/26 8:01:08 阅读更多 →
HarmonyOS ArkTS 实战:实现一个校园迎新与报到注册应用

HarmonyOS ArkTS 实战:实现一个校园迎新与报到注册应用

HarmonyOS ArkTS 实战:实现一个校园迎新与报到注册应用 项目效果 本文使用 HarmonyOS 和 ArkTS 实现一个校园迎新与报到注册应用。 应用可以帮助新生完成线上报到,填写个人信息,缴纳学费,查看报到流程,分配宿舍&#x…

2026/7/29 14:48:47 阅读更多 →

最新新闻

基于SpringBoot的B/S架构票务管理系统设计与实现

基于SpringBoot的B/S架构票务管理系统设计与实现

1. 项目背景与需求分析 在数字化浪潮席卷各行各业的今天,传统票务管理方式正面临前所未有的挑战。纸质票务系统不仅效率低下、容易出错,更难以应对现代商业场景中复杂的票务需求。基于B/S架构的线上票务管理系统应运而生,它通过浏览器即可完成…

2026/7/30 9:50:55 阅读更多 →
大模型技术全景:从Transformer到产业应用

大模型技术全景:从Transformer到产业应用

1. 大模型技术全景解析:从AI演进到产业落地最近两年,大语言模型(LLM)的爆发式发展正在重塑整个科技行业。作为从业者,我见证了从GPT-3到Claude、Llama等模型的迭代过程,也深刻体会到这项技术对开发者和普通…

2026/7/30 9:50:55 阅读更多 →
PlantUML+EA描述《分析模式》第6章存货和会计(8)

PlantUML+EA描述《分析模式》第6章存货和会计(8)

《GJJ-004 分析模式及实现》&#xff0c;umlchina.com/url/video.html 原图6.25 EA绘制 图6.29 对应账户。 PlantUML startuml skinparam nodesep 120 skinparam ranksep 100 class 账户 { -- <i>constraints</i> {传递: 对应账户s 对应账户s->closure(对…

2026/7/30 9:50:55 阅读更多 →
Arduino驱动8x8 LED点阵屏:从动态扫描原理到74HC595实战

Arduino驱动8x8 LED点阵屏:从动态扫描原理到74HC595实战

1. 项目概述&#xff1a;点亮你的第一个8x8点阵 如果你玩Arduino有一段时间了&#xff0c;点亮过单个LED&#xff0c;也玩过数码管&#xff0c;那么8x8 LED点阵屏绝对是你下一个该征服的“小目标”。它不像OLED或者TFT屏那么“高级”&#xff0c;需要复杂的驱动库和协议&#x…

2026/7/30 9:50:55 阅读更多 →
STM32 HAL库工程模板:从零构建规范可移植的开发起点

STM32 HAL库工程模板:从零构建规范可移植的开发起点

1. 项目概述&#xff1a;为什么需要一个“一步到位”的工程模板&#xff1f; 如果你刚开始接触STM32&#xff0c;或者刚从标准库&#xff08;Standard Peripheral Library&#xff09;转向HAL库&#xff08;Hardware Abstraction Layer&#xff09;&#xff0c;那么新建一个工程…

2026/7/30 9:50:55 阅读更多 →
多环境设计:从配置混乱到标准化部署的工程实践指南

多环境设计:从配置混乱到标准化部署的工程实践指南

1. 项目概述&#xff1a;从“多环境”的混乱到有序干了这么多年项目&#xff0c;从后端开发到前端部署&#xff0c;再到带团队做产品&#xff0c;我踩过最多的坑&#xff0c;往往不是代码逻辑有多复杂&#xff0c;而是环境配置有多混乱。你肯定也遇到过这种场景&#xff1a;开发…

2026/7/30 9:49:55 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具&#xff1a;DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼&#xff1f;是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper&#xff1a;网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具&#xff0c;它并非替代教师&#xff0c;而是通过语义理解、知识图谱与多模态生成能力&#xff0c;将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档&#xff0c;可以直接使用&#xff01;系统支持图片、视频、摄像头等多种方式检测裂缝&#xff0c;功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像&#xff01; pubg绝地求生目标检测数据集 1分类&#xff1a;e_body&#xff0c;14905个标签&#xff0c;txt格式 共计14244张图&#xff0c;99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别&#xff1a; allies enemy tag图片总量&#xff1a;7247张训练集&#xff1a;5139张验证集&#xff1a;1425张测试集&#xff1a;683张标注状态&#xff1a;全部已标注&#xff0c;即拿即用数据格式&#xff1a;支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻