# 第三题 把想法做成 App - **类型**:开发挑战(选做) - **基础要求**:使用 Swift 开发可交互的 App,界面优先采用 SwiftUI - **提交材料**:个人 Fork 中的项目、需求说明与实际运行展示 - **AI 规则**:允许辅助开发及生成主要代码,作品须亲自运行、检查,并在二面展示和说明 ## 两条题目路线 ### 路线 A 开发第二题的设计 从第二题方案中选择一个范围可控的版本实现。可以在开发时调整方案,简述调整原因。 在项目中放一份简短需求说明:主要用户、要完成的操作、首版功能、重要数据、正常与异常情形的预期结果,以及与原设计不同的地方。第二题的 PDF 可以引用,不必重新写成长文。 ### 路线 B 完成统一题目 出门前 开发一个可反复使用的出门清单 App,帮助用户建立物品清单、检查是否准备齐全,并在下次使用时保留自己的内容。 下面的需求说明就是路线 B 的实现依据。你可以自行决定布局、视觉和代码组织。 ## 两条路线共用的完成标准 1. 有一个可以真正操作的界面,能够完成需求说明中的一条完整核心流程。 2. 用户能够输入或选择信息,操作会改变应用内容,并看到相应结果或反馈;不能只是几个静态页面互相跳转。 3. 至少一类与核心用途相关的用户数据能够本地保存,并在彻底退出、重新启动 App 后恢复。例如清单内容、收藏、当前进度或用户配置。 4. 能处理至少两种与自身场景相关的空白、无结果、取消、重复或操作失败情形,且行为与需求说明一致。 5. 明确列出已完成、未完成和已知问题,提交足以复现的项目与运行说明。 自选题不按功能数量堆难度。共同标准应自然服务于你的用途,不能为了凑项塞入无关功能。如果第二题方案过大,可先实现满足这些标准的小版本。统一题仍需完整实现下方明确列出的基础需求。 ## 统一题需求说明 出门前 ### 用户与目标 用户想在出门前逐项检查要带的东西,并在第二天继续使用同一份清单。只需维护一张本地清单。 ### 必须实现的功能 | 编号 | 需求 | 可检查的结果 | | --- | --- | --- | | R1 | 新增、修改名称、删除物品 | 操作后列表中出现对应变化;新增项默认未准备 | | R2 | 勾选为已准备,或取消勾选 | 每项状态独立变化,可以改回未准备 | | R3 | 显示准备进度 | 显示已准备数与总数;全部准备后给出提示;空清单显示创建提示 | | R4 | 开始新一轮检查 | 用户确认后,保留全部物品名称,将勾选全部清除;取消时不改变任何数据 | | R5 | 本地保存 | 名称、列表内容与准备状态在彻底退出、重新启动后恢复;新增、改名、删除和重置结果同样保存 | ### 统一题的边界规则 - 空名称或只有空白的名称不能保存,并向用户说明原因;名称首尾空白在保存前去掉。 - 同名物品可以存在;修改、删除或勾选其中一项不能误改另一项。 - 删除物品、取消勾选或开始新一轮后,进度及时更新。 - 清单为空时不显示“全部准备好了”,而是引导新增物品。 - 确认开始新一轮和正常继续检查是不同操作,重新打开 App 不应自动清除状态。 ### 一次验收示例 从空清单开始 → 添加“校园卡”和两条“水杯” → 只勾选其中一条水杯,进度为 1/3 → 将另一条改为“钥匙”,三条仍独立 → 删除未勾选的“钥匙”,进度为 1/2 → 退出并重新启动,内容及进度恢复 → 发起新一轮但取消,仍为 1/2 → 再次发起并确认,保留两条名称,进度变为 0/2 → 再次重启仍为 0/2。 另外验证空白名称被拒绝,以及最后一条物品删除后出现空清单提示。 ### 范围限制 不要求账号登录、服务器、云同步、通知、地图、多平台适配、应用商店上架或复杂架构。额外功能可以展示,但不能替代基础需求。只有一两个页面也可以是合格的完整作品。 ## Fork 与提交 Fork 本次考核仓库,在个人 Fork 的 [development/](../development/README.md) 目录完成项目,保留原题文件。两条路线都采用这一方式,不要求把完整 App 合并回原题仓库。 提交内容包括: - 完整源码和打开、运行项目的方法; - 路线选择与需求说明。路线 B 可引用本题 R1–R5,补充自己的完成情况; - 实际运行录屏,覆盖核心操作、至少两种边界情形,以及退出重启后的恢复; - AI 使用方式、本人如何检查结果、一个遇到的问题与处理过程。没有遇到明显故障可说明一次验证或调整,不必编造经历; - 个人 Fork 地址及用于验收的提交版本,在原题仓库提交作品入口。 开发目录已预留,见 [开发目录说明](../development/README.md)。截止时刻、作品入口的提交步骤、Fork 可见性和具体设备操作将在正式发布时统一说明。 ## AI 与二面 可以让 AI 协助需求拆分、写代码、解释、排错和修改,甚至由 AI 生成主要代码;你需要负责判断它是否符合要求,并亲自操作验证。第二题的独立构思规则仍然有效,不因选择路线 A 就允许回头用 AI 重写第二题的想法。 二面重点看:能否演示完整流程;是否知道重要信息在哪里变化和保存;如何发现结果不符合需求;为什么保留某个实现或调整。必要时会讨论一个小变化以及怎样实现、验证,实践环节允许继续使用 AI。 不要求背诵全部代码,也不按手写代码比例评判。能使用 AI 把作品做成、检查清楚并说明关键选择,同样是有效能力。 ## 挑战完成标记 记录为“未选做”“已尝试”“作品完成待二面确认”或“挑战通过”。挑战通过需要符合路线需求与共同完成标准,并经真实运行和二面确认。未选做不扣共同题成绩。