首页 > 其他分享 >软件工程课程项目“物品复活“软件开发最终版本

软件工程课程项目“物品复活“软件开发最终版本

时间:2025-01-01 14:42:23浏览次数:6  
标签:软件开发 用户 用例 JSON 软件工程 管理员 物品 复活

软件工程项目总结:基于JSON的物品管理与用户审批系统

摘要:
本项目通过使用 Python、PyQt5 等技术栈,开发了一个基于 JSON 文件进行数据持久化的物品管理与用户审批系统。系统包含了用户注册与登录、管理员审批、物品添加与删除、物品查看以及物品分类管理的完整功能。本文将从软件工程的角度,对该系统的开发过程、主要技术点、以及个人在实践过程中获得的体会进行总结。


一、项目背景与需求分析

  1. 需求来源:

    • 需要一个简易但功能完备的系统来管理物品,让普通用户可以添加、删除并查看物品,同时允许管理员对用户进行审批、对物品分类进行管理。
    • 系统以JSON文件为主要数据存储方式,避免了部署数据库的复杂度。
  2. 主要功能需求:

    • 用户注册与登录:用户通过用户名和密码进行登录;若为管理员则进入管理员界面,否则进入普通用户界面。
    • 管理员审批:管理员能够查看所有待审批的用户,并且可以批准注册用户成为正式用户。
    • 物品管理:普通用户可以添加、删除、查看物品信息;管理员可以为物品创建新分类。
    • 物品分类:物品按类别进行区分,便于查询和管理。
  3. 非功能需求:

    • 系统界面简洁、易用;
    • 无需依赖外部数据库,采用 JSON 文件进行持久化;
    • 保证正确性和易维护性,防止数据丢失或格式错误。

在此阶段,通过需求分析,可以明确系统的主体用例和角色,为后续设计做铺垫。


二、软件工程思想在设计与实现中的应用

  1. 面向对象设计

    • 我们将系统的主要对象抽象为 UserItemDAO 和界面相关的 GUI 类,这种高内聚、低耦合的设计风格,使得程序后续的维护、功能扩展变得更加方便。
    • UserItem 作为核心数据模型,负责描述用户和物品的属性与行为;DAO 负责读写 JSON 文件,并提供统一的数据接口,避免了业务逻辑与数据操作的耦合。
  2. 迭代式开发

    • 本系统的开发基本遵循了自顶向下,分阶段迭代的思路:
      1. 首先实现最核心的功能——用户登录与注册、管理员审批等;
      2. 接着引入物品管理功能,如添加、删除与查看;
      3. 最后扩展物品分类功能,使管理员可以新建分类、用户可以选择分类进行物品管理。
    • 这种分层次、分优先级的迭代开发使我们在功能逐步稳定的同时,也能迅速进行需求变化的适配。
  3. 用例驱动

    • 在需求分析后,我们抽取出关键的用例:注册、登录、审批、物品增删查、分类管理等;每个用例对照顺序图,实现对应的功能逻辑,并在测试时针对每个用例进行验证。
    • 用例驱动的设计有利于聚焦用户实际操作场景,确保系统满足最核心的业务需求。
  4. 统一建模语言 (UML) 的应用

    • 在设计阶段,使用用例图顺序图类图对系统进行建模:
      • 用例图将系统功能与用户的交互关系进行明确;
      • 顺序图展示用例执行过程中各对象(类)之间的消息交互顺序;
      • 类图则帮助我们从全局上把握系统中的类结构及其相互关系。
    • 通过 UML 建模,可以很好地理清思路,也让团队沟通和后续维护变得更直观。
  5. 数据持久化

    • 使用 JSON 文件存储物品、用户以及分类信息,减少了对于外部数据库的依赖;
    • 需要在读写时注意 编码(统一使用 utf-8),并采取适当的错误处理策略,以防止文件损坏或读取错误。
  6. 易维护与可扩展

    • 系统采用DAO 类封装所有数据操作,外部只通过固定接口与之交互,利于后续切换其他存储方式(如数据库)时的兼容;
    • 在添加物品分类管理的功能时,我们只需在 DAO 中增加对分类文件的读写逻辑,配合管理员 GUI 调用即可,最大化降低对已有功能的影响。

三、测试与质量保证

  1. 单元测试

    • 针对 DAO 类的关键方法(如 add_useradd_itemdelete_item 等)进行单元测试,验证 JSON 文件存储和数据读取的正确性。
  2. 集成测试

    • 将 GUI 与 DAO 结合起来,进行集成测试,确保界面上的操作能正确调用 DAO 的接口并最终写入 JSON 文件。
  3. 用户验证

    • 使用用例场景对系统进行验证,模拟实际用户的操作流程,如“先注册后登录”、“管理员创建分类,用户选择分类添加物品” 等,检验所有功能的有效性。

四、体会与收获

  1. 合理抽象,提高复用性

    • 在该系统中,将用户和物品提炼为两个核心数据模型,把读写逻辑封装进 DAO 中,可以灵活地扩展或修改系统的功能,如新增“搜索功能”、“分页显示”时,原有类与接口可继续复用,改动量较小。
  2. 循序渐进的需求实现

    • 软件开发过程中,遵循迭代思路,从最小可行产品(MVP)开始,不断融入更高级的需求(分类管理、审批等),逐步完善系统,也让我们在开发过程中始终保持系统可用并可演示。
  3. 注重用户体验

    • 通过 PyQt5 提供的 GUI 界面,减少了用户使用时的上手难度;
    • 在表单输入、系统提示、异常处理等方面进行友好设计,能大大提升用户对系统的满意度。
  4. 编码与排错技巧

    • 使用 JSON 进行数据存储,需要注意文件编码以及数据结构的严格性;
    • 单元测试与断点调试能快速定位问题;
    • 养成良好的日志记录与异常捕获习惯,可以显著降低排错成本。
  5. 软件工程实践的重要性

    • 通过需求分析、用例建模、UML 设计、迭代开发、测试与验证等步骤,本项目很好地体现了软件工程从想法到实现的完整流程;
    • 做好事前的需求和设计规划,有助于在后期的开发过程中减少返工和修改;
    • 将理论(如 UML、需求分析、迭代式开发)落地到实际代码,是软件工程学习与实践的关键环节。

结语

本次的基于 JSON 文件的数据管理系统,虽然规模不大,却基本覆盖了软件工程项目的主要环节,包括需求分析、系统设计、编码实现、测试与验证以及最终的演示部署。通过本项目实践,我们不仅加深了对 UML 建模面向对象设计GUI 界面开发JSON 数据存储 等知识点的理解,也亲身体验了需求演化迭代式开发的实际操作方式。

在今后更复杂的项目中,可以继续采用类似的流程,结合更先进的工具(如数据库、容器化部署、云服务等),进一步提升系统的可扩展性与易维护性。希望本项目的开发经验能够为大家后续从事软件工程项目提供一定的参考与借鉴。

标签:软件开发,用户,用例,JSON,软件工程,管理员,物品,复活
From: https://www.cnblogs.com/specture/p/18645922

相关文章

  • 【软件工程】期末复习-第1章 软件工程学概述
    【软件工程】期末复习第1章软件工程学概述第2章可行性研究第3章需求分析第5章总体设计第6章详细设计第7章实现文章目录【软件工程】期末复习前言一、软件危机1.软件危机的定义2.软件危机的表现形式3.产生软件危机的原因4.消除软件危机的途径二、软件工程1.软件......
  • 【软件工程】期末复习-第2章 可行性研究
    【软件工程】期末复习第1章软件工程学概述第2章可行性研究第3章需求分析第5章总体设计第6章详细设计第7章实现教材目录期末速成,主要针对考点总结,可能缺少部分章节内容,持续更新。督促自己快快复习。一、可行性研究的任务1.可行性研究的目的用最小的代价在......
  • 【软件工程】期末复习-第3章 需求分析
    【软件工程】期末复习第1章软件工程学概述第2章可行性研究第3章需求分析第5章总体设计第6章详细设计第7章实现文章目录【软件工程】期末复习前言一、需求分析的任务1.需求分析的结构化分析方法遵守准则2.需求分析的任务二、与用户沟通获取需求的方法1.访......
  • 停更十年,诈尸复活...
    点击蓝字关注我们作者| 风雨软件前言最近有小伙伴找我要美颜软件,我翻了翻以前用过的软件才发现,有一款停更了10年之久的软件突然诈尸更新了。今天给大家推荐的就是这款老牌软件——光影魔术手光影魔术手光影魔术手是一款非常经典的图片处理工具,它是一款完全免费的软件......
  • 追光记——2024软件工程秋个人总结报告
    软件工程https://edu.cnblogs.com/campus/fzu/SE2024作业要求https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315作业目标软件工程个人总结学号102201311一、学期回顾1.1SE之初印象论:大三上最难的一门课是哪个?操作系统吧,毕竟是408要求的大课......
  • ‍禁止蕉绿——软件工程个人总结
    这个作业属于哪个课程软件工程这个作业要求在哪里软件工程2024秋——个人总结作业这个作业的目标学期总结学号102202150......
  • 软件工程师实习面试
    1.配合软件开发工程师负责下项目软件部分的开发调试工作2.负责项目客户的培训和疑难解答3.负责项目运维过程中软件问题的处理4.参加软件开发中的测试需要的要求:1.有较强的学习能力,能够快速上手软件产品的日常使用2.具备基本的软件部署环境能力,如远程桌面,环境变量控制,配套......
  • 【2025优质学术推荐】征稿控制科学、仪器、智能系统、通信、计算机、电子信息、人工智
    【2025优质学术推荐】征稿控制科学、仪器、智能系统、通信、计算机、电子信息、人工智能、大数据、机器学习、软件工程、网络安全方向【2025优质学术推荐】征稿控制科学、仪器、智能系统、通信、计算机、电子信息、人工智能、大数据、机器学习、软件工程、网络安全方向......
  • 轻舟已过万重山:我的软件工程实践之旅
    轻舟已过万重山:我的软件工程实践之旅一、学期回顾1.1回顾你对于软件工程课程的想象在课程开始之前,我对软件工程课程充满了期待。我认为,这门课程会教会我如何合作,如何组织项目,以及如何实现一个完整的软件实体。回顾这一学期的所学所想,有些目标完成了:证实合作的重要性:在团队......
  • 软件工程实践总结
    这个作业属于哪个课程https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315这个作业的目标软件工程实践总结学号082100170学期回顾对于软件工程课程的想象还未正式上这门课前,我本希望......