“你帮我助”软件开发(Final)文档
本项目是上海交通大学《软件工程》期末大作业。
背景描述
这是一个物品交换应用程序,它的目的是帮助居民能够在疫情期间进行物品交换和互通有无。通过使用这个应用程序,居民可以方便地找到所需的物品,并与其他居民进行交换,在这个困难的时期里互相帮助。
功能简介
这个应用程序允许用户添加、删除、显示和查找物品的信息。每个物品都有公共信息,包括物品名称、物品说明、物品所在地址、联系人手机和邮箱。为了便于管理和查询,物品可以分成不同的类别,不同类别的物品可能有不同的属性。
这个应用程序还有两种类型的用户:管理员和普通用户。管理员可以设置新的物品类型,以及修改物品类型。普通用户在添加物品时需要先选择物品类型,然后再填入物品信息。普通用户搜寻物品时,需要先选择类型,再输入关键字,关键字可以在物品名称和说明中进行匹配。此外,普通用户需要先进行注册,填写基本信息,包括住址和联系方式。注册后,普通用户的注册申请需要经过管理员的批准,方能成为正式用户。
这个应用程序还提供了图形界面(GUI),使用户能够方便地使用应用程序。
数据存储
本应用程序使用 SQLite3 数据库来存储数据。SQLite3 是一个轻量级的关系型数据库管理系统,它不需要单独的服务器进行维护,并且可以方便地被嵌入到应用程序中。
在本应用程序中,有三个数据表:一个用于存储物品类型信息,一个用于存储物品信息,另一个用于存储用户信息。
具体来看,物品信息存储在 items 表中,表中有如下字段:
id: 物品的编号,类型为 INTEGER,并设置为主键。
name: 物品的名称,类型为 TEXT
description: 物品的说明,类型为 TEXT
location: 物品所在的地址,类型为 TEXT
contact_phone: 物品联系人的手机号码,类型为 TEXT
contact_email: 物品联系人的邮箱地址,类型为 TEXT
item_type: 物品的类型,类型为 TEXT
attributes: 物品的附加属性,类型为 TEXT
具体来看,用户信息存储在 users 表中,表中有如下字段:
id: 用户的唯一标识,类型为 INTEGER
username: 用户名,类型为 TEXT
password: 密码,类型为 TEXT
location: 住址,类型为 TEXT
contact_phone: 联系电话,类型为 TEXT
contact_email: 邮箱,类型为 TEXT
is_admin: 是否为管理员,类型为 INTEGER,默认值为 0(否)
is_approved: 是否被批准成为正式用户,类型为 INTEGER,默认值为 0(否)
用户界面
程序使用 PyQt5 库提供了图形界面(GUI),并提供了多个界面来支持用户的操作。
用户登录界面允许用户输入用户名和密码,并登录到应用程序中。
用户注册界面允许用户输入注册信息,然后提交注册申请。
普通用户登录后进入普通用户操作界面,允许用户查看物品信息列表,选择已有的物品类型增添物品信息,删除物品信息,以及根据物品类型和关键字查找物品。
管理员登录后进入管理员操作界面,允许管理员创建新的物品类型,删除物品类型,以及批准用户注册申请。
用例图
顺序图
用户注册-审批用例
普通用户操作用例
管理员用户操作用例
类图
心得体会
在开发这个程序的过程中,我感受到了面向对象这一思想的重要性。
首先,软件工程的需求分析阶段让我明白了需要先确定项目的功能和目标,并且要考虑用户的需求和期望。这样才能设计出合理的架构和系统模块,使得程序能够顺利实现所需功能。
其次,软件工程的设计阶段让我学会了分析系统的模块和类之间的关系,并使用合适的设计模式来解决设计中遇到的问题。这样可以使得程序的结构清晰,代码易于维护和扩展。
面向对象的编程思想让我学会了如何将现实世界的实体映射成程序中的对象。通过封装对象的属性和行为,可以使得程序代码更加清晰易懂。
另外,在开发这个程序的过程中,我还学会了如何使用 PyQt5 这一 GUI 库来创建用户界面,以及如何使用 sqlite3数据库来存储和管理数据。通过 PyQt5 的多种组件,可以轻松地创建出丰富多彩的用户界面,并通过信号和槽的机制来实现用户交互。通过使用面向对象的思想,我们可以将 sqlite3 的操作封装成类的方法,使得代码更加清晰,更易于维护和扩展。
此外,软件工程的测试阶段也让我明白了测试的重要性。通过测试可以发现程序中的错误和缺陷,并使用调试工具来解决这些问题。这样可以使得程序在运行时能够稳定、可靠。
总之,在开发这个程序的过程中,我学会了软件工程的重要性,以及面向对象的编程思想,并且掌握了使用 PyQt5 创建用户界面的技能,sqlite3 数据库的使用方法。我认识到了在开发软件时应遵循的软件工程流程,并学会了使用相应的方法和技术来实现这个流程。我认识到了软件开发过程中的不同阶段所要解决的问题以及如何解决这些问题。
标签:心得体会,用户,应用程序,物品,管理员,类型,我助,普通用户,Final From: https://www.cnblogs.com/HsShao/p/17003805.html