作业要求
大学生经常有些物品觉得扔掉可惜,不处理又觉得浪费自己的地方。请你编写一个物品“复活”软件
该程序允许添加物品的信息(物品名称,物品描述,联系人信息),删除物品的信息,显示物品列表,也允许查找物品的信息
你实现的程序可以采用命令行方式使用,但是鼓励提供GUI
加分功能需求:
1、物品有公共的信息(物品名称,物品说明,物品所在地址,联系人手机,邮箱)。为了便于管理和查询,物品可以分成不同的类别(例如食品、书籍、工具等),不同类别的物品可能有不同的> 属性(例如食品有保质期,数量;书籍有作者,出版社等)。
2、物品复活系统有两种类型的用户:管理员和普通用户。
管理员可以设置新的物品类型(定义物品类型的名称和各个属性),修改物品类型。
普通用户在添加物品时先选择物品类型,然后再填入物品信息。普通用户搜寻物品时,需要先选择类型,再输入关键字,关键字可以再用户名称和说明中进行匹配。
普通用户需要注册(填入基本信息,包括住址,联系方式等),管理员批准后才能成为正式用户。
3、为了便于使用上述功能,软件需要提供GUI。
在这次物品“复活”软件的开发过程中,我深刻理解了《软件工程》课程所讲的理论和实践知识。原本以为繁琐的开发流程,实际上在实际开发中起到了预防问题、解决冲突和挑战的关键作用。
1. 需求分析与功能设计
需求分析是软件工程的第一步,也是非常关键的一环。通过对项目需求的梳理,结合自身代码能力,我明确了系统的核心功能:用户注册与登录、物品信息的添加、查找、删除与查看,以及物品类别的管理。根据这些需求,我设计了一个简单的用户界面,并使用Tkinter实现了图形化界面(GUI)。需求分析阶段,帮助我确保了开发过程中的每个步骤都有明确的目标,并能够在设计阶段就对潜在问题进行预测。
2. 系统设计与架构
系统设计是软件开发中至关重要的一步。在这部分,参考模块化设计理念,将整个系统分为用户模块、物品模块和类别管理模块。通过这样的分层设计,在后续的开发过程中保持代码的结构清晰,且便于未来的维护与扩展。(虽然逐渐写到后面才发现自己对于代码的重用与继承还是做的稀烂)
- 用户模块:负责用户的注册、登录及信息管理
- 物品模块:负责物品的增删查等操作
- 类别管理模块:管理不同类别的物品,支持用户选择物品类型
通过将系统模块化,减少了代码之间的耦合,也提高了系统的灵活性和可维护性。这是《软件工程》中提到的“模块化”和“解耦”的重要原则,实践证明这对于项目的可扩展性至关重要。
3. 编码与实现
在编码过程中,我选择使用Python语言实现程序。为了实现物品信息的存储,我选用了简单的文本文件存储方式。虽然在《软件工程》中强调了数据库在大规模系统中的重要性,但考虑到本次作业的规模,文本文件已经足够满足需求。用户信息的存储也采用了文件存储方式,并通过基本的密码加密和验证机制来保障数据的安全性。
在实现物品管理时,我对物品信息进行了分类存储,并通过简单的模糊匹配算法来进行查询操作。
4. 测试与调试
测试是软件开发中不可或缺的一部分。在这一阶段,我手动进行了功能验证,确保每个模块能够按照预期运行。例如,在用户注册与登录模块中,我模拟了不同用户的操作,验证系统是否能够正确识别用户身份并返回相应的提示信息。我还进行了异常情况的测试,确保当用户输入错误格式的物品信息时,系统能够友好地给出提示,而不会崩溃。
良好的单元测试和集成测试是保证软件质量的基础,这次的测试环节让我深刻理解了这一点。虽然我的项目规模较小,但这些基础的测试环节为后续可能出现的功能问题提供了有效的预防。
5. 问题与挑战
在开发过程中,除了由于编程能力不断带来的编码错误外,在功能设计方面还有如下尚未实现的需求:
- 物品类别管理:由于系统中并没有设计管理员角色,物品类别无法动态修改。这一限制了系统的灵活性。我在最终版本中保留了一个固定类别的物品管理方式,但在未来的改进中,我计划加入管理员权限,支持物品类别的动态增删。
- 存储问题:虽然文本文件存储简单,但当数据量增大时,可能会遇到性能瓶颈。未来如果扩展系统,需要将存储方式改为数据库,如SQLite或MySQL,以提高性能和可靠性。
6. 总结与展望
通过这次项目的开发,我不仅加深了对《软件工程》课程中各个环节的理解,如需求分析、系统设计、模块化编程和数据存储,还提升了自己的编程能力和问题解决技巧。未来,我计划进一步优化这个项目,加入管理员权限,动态管理物品类别,改进数据存储机制,并且加入更多用户交互功能。
此外,这次项目让我深刻认识到,软件开发不仅仅是写代码,更重要的是要根据需求进行系统设计,解决实际问题,注重用户体验。我将继续积累经验,在更复杂的项目中不断提升自己的开发能力。
标签:存储,软件开发,系统,用户,类别,模块,物品,复活 From: https://www.cnblogs.com/dy2iin/p/18654212