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/19 12:47:37 阅读更多 →
5分钟找回QQ空间丢失的说说:GetQzonehistory终极数据恢复指南

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

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

2026/7/19 12:47:37 阅读更多 →
HarmonyOS ArkTS 实战:实现一个校园迎新与报到注册应用

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

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

2026/7/19 12:47:37 阅读更多 →

最新新闻

YOLOv5+OpenPose双阶段检测:智能摔倒识别系统的技术实现与应用部署

YOLOv5+OpenPose双阶段检测:智能摔倒识别系统的技术实现与应用部署

YOLOv5OpenPose双阶段检测:智能摔倒识别系统的技术实现与应用部署 【免费下载链接】ism_person_openpose yolov5人体检测openpose姿态检测 实现摔倒检测 项目地址: https://gitcode.com/gh_mirrors/is/ism_person_openpose 在当今智能化安防体系中&#xff0…

2026/7/19 18:56:15 阅读更多 →
SPI协议详解:从基础原理到高级应用实践

SPI协议详解:从基础原理到高级应用实践

1. SPI协议概述SPI(Serial Peripheral Interface)是一种同步串行通信接口标准,由摩托罗拉在1980年代初期开发,现已成为嵌入式系统领域的事实标准。它主要用于短距离的芯片间通信,连接微控制器与各种外设芯片&#xff0…

2026/7/19 18:56:15 阅读更多 →
BatteryML终极指南:如何用开源平台构建企业级电池寿命预测系统

BatteryML终极指南:如何用开源平台构建企业级电池寿命预测系统

BatteryML终极指南:如何用开源平台构建企业级电池寿命预测系统 【免费下载链接】BatteryML 项目地址: https://gitcode.com/gh_mirrors/ba/BatteryML 在电动汽车和储能系统蓬勃发展的今天,电池寿命预测已成为决定产品可靠性和商业成功的关键技术…

2026/7/19 18:56:15 阅读更多 →
3步实战:如何用FigmaToUnityImporter破解UI设计与开发的时间瓶颈

3步实战:如何用FigmaToUnityImporter破解UI设计与开发的时间瓶颈

3步实战:如何用FigmaToUnityImporter破解UI设计与开发的时间瓶颈 【免费下载链接】FigmaToUnityImporter The project that imports nodes from Figma into unity. 项目地址: https://gitcode.com/gh_mirrors/fi/FigmaToUnityImporter 你是否经历过这样的场景…

2026/7/19 18:55:14 阅读更多 →
DsHidMini:Windows平台下PlayStation手柄兼容性问题的创新解决方案

DsHidMini:Windows平台下PlayStation手柄兼容性问题的创新解决方案

DsHidMini:Windows平台下PlayStation手柄兼容性问题的创新解决方案 【免费下载链接】DsHidMini Virtual HID Mini-user-mode-driver for Sony DualShock 3 Controllers 项目地址: https://gitcode.com/gh_mirrors/ds/DsHidMini 在Windows游戏生态系统中&…

2026/7/19 18:55:14 阅读更多 →
Android媒体框架:MediaSession与MediaBrowser深度解析

Android媒体框架:MediaSession与MediaBrowser深度解析

1. Android媒体框架核心组件解析 在Android应用开发中,MediaSession和MediaBrowser是两个构建媒体应用的关键组件。它们共同构成了Android媒体交互的基础架构,从Android 5.0(Lollipop)开始引入,经过多个版本的迭代已成…

2026/7/19 18:54:14 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/7/19 0:00:40 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/7/19 0:00:40 阅读更多 →

月新闻