校园失物招领小程序 —— 软件工程第三次结对作业
学号姓名:
【尼玛顿珠】-【102401635】 (计算机学院 2024 级)
学号姓名:【杜佳伟】-【102401623】 (计算机学院 2024 级)
一、作业背景与学习成果
动工前我们阅读了《构建之法》第 3 章和第 8 章,运用其中的结对协作、用户场景与 PSP 方法完成本次作业。
二、需求分析
2.1 主要用户及其需求
主要用户是校园学生,分三类:失主快速发布寻物信息、拾主方便发布招领信息、查找者按关键词定位信息。现状是信息分散在班级群与朋友圈,易被新消息覆盖,拾主与失主难以匹配。
2.2 软件解决的问题
本软件将寻物与招领信息集中到统一平台,提供发布、浏览、搜索等功能,解决信息分散、查找不便的问题,提高失物找回与归还效率。按课程要求定位为轻量方案,不实现后台管理、实名认证、即时聊天、地图定位等功能。
2.3 需求小结
功能需求包括浏览、发布寻物 / 招领、搜索、查看详情、修改信息状态;非功能需求包括界面简洁、操作直观、证件类信息注意隐私保护。
三、软件主要功能
-
浏览信息:首页按时间展示,支持失物 / 招领筛选;
-
发布寻物 / 招领:填写名称、类别、地点、时间、描述、图片与联系方式;
-
搜索物品:按关键词搜索,支持筛选;
-
查看详情:查看照片与完整信息,联系发布者;
-
修改状态:在 “我的发布” 中更新为已找到 / 已归还。
四、原型设计
4.1 原型开发工具
原型展示在线链接:
墨刀在线链接(点开即进入原型):
https://modao.cc/proto/KynWIX3Ctm0retOuQIQwbw/sharing?view_mode=device&screen=rbpVWPtMtvd4vOVMj&canvasId=rcbodyVWPtNK7o3kxyn5 #校园失物招领小程序-分享
4.2 原型页面说明
原型共 5 个主页面:首页、搜索页、信息详情页、发布信息页、我的发布页,另演示校验、上传、发布中 / 成功 / 失败等状态。首页浏览与筛选;搜索页支持关键词、最近 / 热门搜索与区域筛选;详情页展示照片与信息,提供联系发布者、标记已归还;发布页通过必填校验与图片上传完成发布;我的发布页管理信息、修改状态并编辑。统一绿色主色调与卡片式布局,操作直观。
4.3 页面清单
| 页面 | 主要内容 |
|---|---|
| 首页 | 顶部搜索栏、发布寻物/发布招领入口、信息列表与筛选 |
| 搜索页 | 搜索框、最近/热门搜索、类型区域筛选、搜索结果列表与空态 |
| 信息详情页 | 物品大图、标签、信息卡、联系发布者(三步)、标记已归还 |
| 发布信息页 | 寻物/招领切换、名称、类别、地点、时间、描述、照片、联系方式与必填校验 |
| 我的发布 | 实名卡片、数据统计、我的发布列表、编辑与状态修改 |
4.4 原型展示





五、、基本使用流程
完整业务流程图如下,用户从首页进入后分「发布」和「查看 / 搜索」两条路径,最终在状态维护处汇合:
发布流程:首页点击「我丢东西了」/「我捡到东西了」→ 选择发布类型(寻物 / 招领)→ 填写名称、类别、地点时间、描述图片、联系方式 → 必填不完整标红提示,完整则「立即发布」→ 发布成功,同步到首页与搜索结果。
查看 / 搜索流程:浏览首页列表或搜索关键词 → 查看结果 → 无匹配显示空态调整关键词,有匹配进详情查看大图与发布者信息 → 判断是否自己的物品:不是则继续浏览,是则联系发布者,线下核对归还 / 领回。
状态维护:发布者在「我的发布」标记已归还 / 已找回,信息不再对外展示,流程结束。

六、PSP 表格
| PSP 阶段 | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|
| 需求分析与讨论 | 60 | 70 |
| 绘制流程图 | 40 | 50 |
| 原型设计与制作 | 120 | 180 |
| 撰写博客 | 60 | 60 |
| 总结与检查 | 30 | 40 |
| 合计 | 310 | 400 |
七、结对过程记录
我们 9 月 26 号晚上开始,先各自把作业要求和《构建之法》第 3、8 章过了一遍,第二天上午碰头定方向。一开始想法挺多,定位、举报、实时聊天都想塞进去,后来对照作业要求一删,只留浏览、发布、搜索、详情、改状态这五块,清爽不少,后面做原型基本没返工。分工没分得很死,大体上我负责需求整理和流程梳理,搭档负责在墨刀上搭页面,每个阶段做完互相看一眼。最开始的流程图画得又复杂又丑,泳道、分支全堆在一起,自己都看不懂,干脆推倒重画成三张简单的,每张一条主线加一个判断。原型那边也是,第一版不够干净,统一换成浅灰底、物品配上图才顺眼。中间也折腾,墨刀 AI 生成的页面导出后入口顺序不对、截图尺寸不统一,两人排查了半天才弄好。到 9 月 27 号晚上,三条流程在演示模式里都能走通了,再分工写博客,最后才收尾。
八、个人总结
本实验编写了基于 TCP 套接字的客户端 / 服务器通信程序,并将网络通信与文件 I/O 结合,实现 "读文件→网络发送→接收→写盘" 的完整闭环。服务端按 socket→bind→listen→accept→read/send 流程监听并收发数据,客户端按 socket→connect→send/read 流程连接通信;文件读写采用基于文件描述符的系统调用 open/read/write,套接字与普通文件以统一接口收发,体现了 Linux"一切皆文件" 的思想。相比基础 socket 示例,本程序增加了文件 I/O 模块,把网络传输的数据持久化到磁盘。实验结果符合预期:客户端读取 send_msg.txt 发送给服务端,服务端接收写入 recv_log.txt,服务端再回传文件,客户端保存为 client_recv.txt,三个文件内容一致,验证了通信与读写的正确性。
自学中掌握了 TCP 套接字编程流程、文件描述符概念、open 标志位及 read/write 按实际字节数读写的要点。遇到的问题及解决:端口被占用,用 setsockopt 设置 SO_REUSEADDR 解决;找不到 send_msg.txt,检查发现是文件名多出备份后缀~,用 mv 改名解决;client_recv.txt 未生成,是客户端读文件失败提前退出,修正后正常生成。通过本次实验,深入理解了网络通信与文件 I/O,锻炼了定位与解决问题的能力。
浙公网安备 33010602011771号