软件工程作业:“物品复活”
题目
大学生经常有些物品觉得扔掉可惜,不处理又觉得浪费自己的地方。请你编写一个物品“复活”软件
该程序允许添加物品的信息(物品名称,物品描述,联系人信息),删除物品的信息,显示物品列表,也允许查找物品的信息
你实现的程序可以采用命令行方式使用,但是鼓励提供GUI
解答
代码见https://github.com/Delong003/item_revive
PSP统计
1. 计划阶段
活动:明确需求,估算整体工作量和时间。
时间:用了 10min 来规划项目功能、界面布局及实现逻辑等。
2. 设计阶段
活动:设计程序的结构,包括数据存储方式(字典存储物品)、界面元素(Tkinter的组件布局)、功能(增删改查)。
时间:用了 3 小时 来设计程序的框架、数据结构以及界面布局。
3. 编码阶段
活动:编写代码实现功能,包括 Tkinter 的 UI 创建、事件处理函数、字典的增删改查功能。
时间:用了 1小时 来编写和调试代码。
4. 代码复审阶段
活动:阅读代码,查找潜在问题,如变量命名不规范、冗余代码、潜在的逻辑错误等。
时间:用了 0.5 小时 来检查代码。
5. 测试阶段
活动:对添加、删除、显示和查找功能进行测试,确保输入、输出正确,弹窗提示信息符合预期。
时间:用了 10min 小时 来进行功能测试。
计算工作量
总共花费6h
总结
由于这是我第一次将软件工程课程中学到的开发流程应用到实际项目中,所以尽管这是个小项目,我的操作仍然显得不够熟练。在一开始撰写设计文档时,我因为急于开始编写代码,往往追求速度而忽略了细节,导致设计文档并不完整。一些功能(如“通过子字符串查找物品”以及“添加物品时避免重复名称”)其实在设计阶段就应该考虑到,但直到测试时才发现这些问题。
未来优化方向
- 数据持久化:
- 问题:目前物品数据存储在内存中的字典中,程序关闭后数据将丢失。
- 改进:引入数据库(如 SQLite)来存储物品信息,使数据可以持久保存,即使程序关闭也能保存物品信息。
- 输入校验:
- 问题:在添加物品时,没有对输入的格式或内容进行校验,比如物品名称是否包含特殊字符,联系人信息是否包含有效的联系方式。
- 改进:增加输入校验功能,确保输入内容合理。例如,可以检查是否输入了有效的电话号码或电子邮件地址。
- 防止重复添加:
- 问题:目前程序允许添加相同名称的物品,这可能会导致数据重复或混乱。
- 改进:在添加物品时,检查物品名称是否已经存在,如果存在,则提示用户物品已存在。
- 改进搜索功能:
- 问题:搜索功能只能根据完全匹配的物品名称进行搜索,不能进行模糊搜索。
- 改进:实现模糊搜索功能,允许用户根据部分匹配的关键字查找物品。
- 用户体验提升:
- 问题:用户界面相对简单,功能按钮的布局和交互方式可以进一步优化。
- 改进:
- 添加清空输入框的功能:在添加、删除或搜索操作完成后,清空输入框。
- 添加确认对话框:在删除物品时,弹出确认对话框,防止误删。
- 改进界面布局,使其更加美观和符合用户习惯。
- 调整按钮布局:
- 问题:当前按钮布局可能不是特别直观,功能按钮没有根据功能分组。
- 改进:可以将添加、删除、显示、搜索等功能按钮分组显示,并调整它们的布局,使其更符合用户的使用习惯。