SJTU软件工程-期末大作业:物品交换系统2.0
【项目需求】
1、物品有公共的信息(物品名称,物品说明,物品所在地址,联系人手机,邮箱)。为了便于管理和查询,物品可以分成不同的类别(例如食品、书籍、工具等),不同类别的物品可能有不同的属性(例如食品有保质期,数量;书籍有作者,出版社等)。
2、互帮互助系统有两种类型的用户:管理员和普通用户。
- 管理员可以设置新的物品类型(定义物品类型的名称和各个属性),修改物品类型。
- 普通用户在添加物品时先选择物品类型,然后再填入物品信息。普通用户搜寻物品时,需要先选择类型,再输入关键字,关键字可以再用户名称和说明中进行匹配。
普通用户需要注册(填入基本信息,包括住址,联系方式等),管理员批准后才能成为正式用户。
3、为了便于使用上述功能,软件需要提供GUI。
【项目功能】
管理员:1.添加物品类型。2.显示物品类型。3.修改物品类型。4.审核注册。
用户:1.添加物品。2.删除物品。3.修改物品。4.搜索物品。5.显示物品。6.注册。
【项目介绍】
本项目使用Python语言,pycharm编译器,以便实现GUI。
使用时,应先使用初始管理员账号(见附录)登录系统,添加所需的物品类型并补全信息。然后,使用初始用户账号(见附录)登录系统,进行各种操作。此外,可以注册新的用户账号,待管理员审核通过后,可以使用登录。
本系统支持<=5种物品类型,因为每个物品类型对应了一个json文件,一共建立了5个物品json文件。
【个人感想】
1、由于我基础薄弱,这是我第一次实现GUI,也是我目前为止写过规模最大的项目,因此,很多东西都是找着各种教程一步步现学的,前后花费了一个月时间,可能会有一些写的不够好的地方和一些冗余的代码。
2、通过本学期软工的学习,在这个项目中,我绘制了用例图、顺序图、类图。通过这些系统的方法,整个过程变得更加条理清晰、按部就班。软工所教会我的办法,虽然会增加软件制作的工作量,但却是必不可少的一环。本项目尚且是(包含<50个类)中小型项目,且类与类、对象与对象之间耦合性不高,关系也不复杂,即便如此,调试时也出现过一些记不清功能关系、搞错层次关系之类的问题,而此时系统化的方法就能帮助解决问题。日后,我必然会涉足到更为复杂的项目,也会遇到要与人合作制作软件的时刻,因此,软工教会我的方法是很关键的。
3、我认为这个项目还有很多可以改进的地方,比如:GUI界面不美观、没有项目特色,值得改进;一个物品类型就占用一个json,虽提高了操作时的效率,却限制了类型的容量,尚有优化的空间;搜索物品时只根据物品名称进行匹配,但实际情况中往往是根据实际意思搜索物品,因此,我设想构建一个加权搜索函数(名称权重最高,其次是说明中重合4个字、3个字...),根据加权函数排序后显示。
【附录】
1、以下为系统初始数据,储存在对应json文件中,可通过修改对应json文件来修改。
系统初始管理员账户有3个,分别为:
账号 | 密码 |
admin1 | 111 |
admin2 | 222 |
admin3 | 333 |
账号 | 密码 |
user1 | 111111 |
类型名称 | 附加属性1 | 附加属性2 | 附加属性3 |
药品 | 保质期 | 适用症状 | 是/否处方药 |
食品 | 保质期 | 数量 |
2、代码及用例文档见仓库:https://github.com/liu20020814/GoodsExchange