软件功能要求
- 物品有公共的信息(物品名称,物品说明,物品所在地址,联系人手机,邮箱)。为了便于管理和查询,物品可以分成不同的类别(例如食品、书籍、工具等),不同类别的物品可能有不同的属性(例如食品有保质期,数量;书籍有作者,出版社等)。
- 互帮互助系统有两种类型的用户:管理员和普通用户。
管理员可以设置新的物品类型(定义物品类型的名称和各个属性),修改物品类型。
普通用户在添加物品时先选择物品类型,然后再填入物品信息。普通用户搜寻物品时,需要先选择类型,再输入关键字,关键字可以在用户名称和说明中进行匹配。
普通用户需要注册(填入基本信息,包括住址,联系方式等),管理员批准后才能成为正式用户。
项目地址
本项目已发布在GitHub上:项目地址
开发心得
通过这一次的大作业,我使用python语言实现了一个物品交换管理系统的开发。首先选用python语言进行开发,一个是因为对于python语言,我相对更为熟悉;另一方面,该项目要求提供GUI,在以往我有通过python语言实现GUI程序的经验,最后python语言的语法相对较为简洁,有大量的可用的第三方库的支持,可以为编写程序提供一定的便利。
在编写程序的过程中,我采用了相对统一的代码风格、命名方式及注释风格,在实现功能的过程中在代码边上添加注释,便于以后修改的时候能快速了解之前的想法。
软件的实现采用面向对象的思想,进行模块化的开发,我将物品、用户及一些控制窗口封装成一个又一个的类。在实现软件的各个功能的过程中,我主要采用了单元测试的方法。这个项目要实现的功能可以分成若干个子功能,采取分而治之的方法,逐个实现各个子功能。软件中,每一个功能均集合在一个窗体中。每完成一个窗体,就实现了程序的一项功能。完成窗体后便立刻对完成的窗体进行测试,再将可以正确运行的各个窗体增加窗体之间跳转的功能。通过这种测试方法,解决了这个软件开发过程中遇到的大多数问题。软件中窗体的实现采用python的tkinter库,tkinter库在实现各种窗体的过程中相对较为便利,里面有大量现成的窗体及控件对象类。考虑到这个项目没有要求实现线上交互,并且自身也没有学习过实现线上交互的变成技术,因此软件运行过程中的数据在本地进行保存。
在编写软件之前,我先绘制了软件的用例图、类图及顺序图,设计软件的基本逻辑,为之后的开发提供一定的思路(最终软件的实现可能与类图、顺序图中所绘制的略有差异)。相比于以往很多程序都是一上手就写,这个项目我也是第一次在系统的分析软件的各种需求并进行设计后开始书写。利用软件工程的相关知识,相比于以往,在软件开发的过程中更为有序且不容易出错。
这个项目也存在许多不足之处。囿于个人的编程能力,有一些功能实现效果并不太好,用户体验可能不佳。另外,由于学业繁重及时间精力的限制,用户界面并不太美观,软件中也可能仍然存在一些潜在的未发现的bug,这将会在以后进一步的维护中对其进行修正。
通过软件工程课程的学习与这一次的软件开发项目,我在编程能力上有了一定提升,更在编程的方法论上有了进一步的了解,通过软件工程课程的学习我是感到受益匪浅的。在未来的软件开发中(如果有),我将进一步学习软件工程的相关原理,继续将所学到的软件工程相关原理运用其中。
标签:软件开发,python,物品,最终版,窗体,我助,软件,实现 From: https://www.cnblogs.com/pseudoChemist/p/16989428.html