软件工程大作业——“你帮我助”软件开发v2.0

项目简介

在疫情管控期间,很多物资由于信息不对称,不能达成资源的有效分配,尽管这样的事件已经基本不会在新冠疫情的场景中出现,但是开发出一个物品交换的公开信息平台在任何一个社区中都是有必要的,这是构建完美市场的必要条件。

项目要求

比起上一次v1.0的要求,这次的软件更加优化,添加了许多功能:

  1. 物品有公共的信息(物品名称,物品说明,物品所在地址,联系人手机,邮箱)。为了便于管理和查询,物品可以分成不同的类别(例如食品、书籍、工具等)。
  2. 互帮互助系统有两种类型的用户:管理员和普通用户。管理员可以设置新的物品类型(定义物品类型的名称和各个属性),修改物品类型。普通用户在添加物品时先选择物品类型,然后再填入物品信息。普通用户搜寻物品时,需要先选择类型,再输入关键字,关键字可以再用户名称和说明中进行匹配。普通用户需要注册(填入基本信息,包括住址,联系方式等),管理员批准后才能成为正式用户。
  3. 为了便于使用上述功能,软件提供了GUI。

可行性研究

首先我思考了一下整个软件操作起来是怎么样的,这些功能对我来说难度是否大:因为之前使用C++来开发,由于功能简单,所以基本实现,但是我大一修的是Python,今年才接触C++,学艺不精,弄不清C++的语法架构等,来开发这次的大作业可能就有些捉襟见肘。所以我选择了重新用Python,但是GUI我之前并没有涉猎,其他的功能应该都能简单地用顺序储存的数据结构实现。所以主要的困难就是GUI+文件本地储存。

需求分析

站在用户的角度来看,其基本需求应该是拥有一个属于自己的账户,查看市场上所有的物品并能够联系物主以及上传自己的物品信息。配合学到的实体-联系图、数据流图、状态转换图,把具体的流程抽象了出来,并运用IPO图明确输入和输出。

总体设计

我的设计思路是:先设计一个大家都可以使用登录的主界面,增删查,后续再加入管理员、审核制、物品属性更改、删除功能权限化等功能,两个主界面的数据是耦合的。

详细设计

这里的结构基本不涉及循环,就是简单的顺序结构,登录-选择类型-填写信息-上传/搜索,其中也牵涉到了一些简单的人机交互,比如输错密码的提示,添加物品成功的弹窗。这里的添加物品也不需要用到循环结构,无论是否添加成功都会完成一次流程。

实现

反反复复的测试。首先采用黑盒测试:把我想要的功能全部测试实现了一遍,在用户注册审核过程中遇到了显示的问题,遂Debug解决;然后白盒测试:根据内部的工作流程全部过了一遍,没有发现大问题。

面向对象

这是最难的Part,除了对用户和物品的类是自行设计的,现学现卖的GUI是调用了Tkinter的库,其中的窗口是已经封装好的类,用户的操作其实都是通过窗口的方法实现的,并保存在本地的文件中。

总结

总的来说,这是我第一次自主设计一款带有GUI交互界面的软件,感觉很有趣,很有收获,感谢软件工程这门课程,也感谢老师助教的辛勤付出!

posted @ 2022-12-19 21:22  RobeRrtt  阅读(84)  评论(0)    收藏  举报