项目简介

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

项目要求

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

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

可行性研究

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

需求分析

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

总体设计

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

详细设计

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

实现

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

面向对象

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

总结

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

软件工程大作业——“你帮我助”软件开发v2.0的更多相关文章

  1. 软件工程大作业(学生会管理系统)Web端个人总结报告

    软件工程大作业(学生会管理系统)Web端个人总结报告 一.小组信息 1.所在小组:第二组 2.小组选题:学生会管理系统 3.项目源代码链接: Web端源代码:code 小程序端源代码:code APP ...

  2. 【Beta】“北航社团帮”发布声明——小程序v2.0与网页端v1.0

    目录 Beta版本新功能 小程序v2.0新功能 新功能列表 功能详情图 新功能动图展示 网页端v1.0功能 登录方式 社团信息的修改 新闻的录入和修改 活动的录入和修改 这一版修复的缺陷 Beta版本 ...

  3. 软件工程课堂作业(三)——Right-BICEP软件单元测试

    一.测试方法:Right-BICEP Right-结果是否正确?B-是否所有的边界条件都是正确的?I-能查一下反向关联吗?C-能用其他手段交叉检查一下结果吗?E-你是否可以强制错误条件发生?P-是否满 ...

  4. BUAA软件工程个人作业-软件案例分析

    BUAA个人博客作业-软件案例分析 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 软件案例分析 我在这个课程的目标是 学习开发软件的能力 这个作 ...

  5. python27期day16:序列化、json、pickle、hashlib、collections、软件开发规范、作业。

    序列化模块:什么是序列化呢? 序列化的本质就是将一种数据结构(如字典.列表)等转换成一个特殊的序列(字符串或者bytes)的过程就叫做序列化.将这个字典直接写入文件是不可以的,必须转化成字符串的形式, ...

  6. c++小学期大作业攻略(一)环境配置

    UPDATE at 2019/07/20 20:21 更新了Qt连接mysql的方法,但是是自己仿照连VS的方法摸索出来的,简单测试了一下能work但是不保证后期不会出问题.如果你在尝试过程中出现了任 ...

  7. HIT大作业——hello的一生

    hello的一生 关键词:计算机系统:功能:流程:P2P;O2O;hello                              目  录   第1章 概述- 4 - 1.1 Hello简介 - ...

  8. 软件工程第一次作业:Warm Up

    Warm Up 项目 内容 作业所属课程 2021春季软件工程(罗杰 任健) 作业要求 第一次阅读作业 课程目标 培养通过团队协作使用软件开发工具按照软件工程方法开发高质量并且可用的复杂软件系统的能力 ...

  9. BUAA软件工程热身作业

    写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 热身作业(阅读) 课程目标 培养软件开发能力 本作业对实现目标的具体作用 深入认识自己,总结过往并展望 ...

  10. BUAA 2020 软件工程 热身作业

    BUAA 2020 软件工程 热身作业 Author: 17373051 郭骏 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第一次作业-热身! ...

随机推荐

  1. 2_爬豆瓣电影_ajax动态加载

    爬豆瓣 什么是 AJAX ? AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJAX = Asynchronous JavaScript and XML(AJAX = 异步 ...

  2. 谣言检测(PLAN)——《Interpretable Rumor Detection in Microblogs by Attending to User Interactions》

    论文信息 论文标题:Interpretable Rumor Detection in Microblogs by Attending to User Interactions论文作者:Ling Min ...

  3. NOI2018 D1T1 洛谷P4768 归程 (Kruskal重构树)

    实际上是一个最短路问题,但加上了海拔这个条件限制,要在海拔<水位线p中找最短路. 这里使用Kruskal重构树,将其按海拔建成小根堆,我们就可以在树中用倍增找出他不得不下车的点:树中节点有两个权 ...

  4. 220514 T2 画画 (二维差分)

    首先我们需要特判只涂了一种颜色的情况: (1)k=1,此时答案就是1:(2)k>1,涂的这种颜色肯定不能是第一个,答案是k-1; 对于其他正常情况,我们对于每个颜色找到一个最小的矩形(这个矩形内 ...

  5. 使用 etcdadm 快速、弹性部署 etcd 集群

    Etcd 是一个可靠的分布式键值存储, 常用于分布式系统关键数据的存储:而 etcdadm 是一个用于操作 etcd 集群的命令行工具,它可以轻松创建集群.向现有集群添加成员.从现有集群中删除成员等操 ...

  6. MySQL 全局锁、表级锁、行级锁,你搞清楚了吗?

    大家好,我是小林. 最近重新补充了<MySQL 有哪些锁>文章内容: 增加记录锁.间隙锁.net-key 锁 增加插入意向锁 增加自增锁为 innodb_autoinc_lock_mode ...

  7. VSCode设置鼠标滚轮滑动设置字体大小

    1. 打开"文件->首选项->设置 2. 打开settings.json文件 3. 在setting.json 中添加"editor.mouseWheelZoom&qu ...

  8. 【JavaWeb】学习笔记——Tomcat集成

    简介 Tomcat是基于Java的一个开放源代码.运行servlet和JSP Web应用的Web应用软件容器,又称servlet容器 安装 官方网站:https://tomcat.apache.org ...

  9. C/C++ 知海拾遗

    C语言知识拾遗 2022/11/11 memset()函数用法 包含头文件:<string.h> 作用:给任意类型变量数组初始化,即万能初始化函数. 使用形式:memset( void* ...

  10. tool1

    //导出 public void excel(List<Long> ids, HttpServletResponse response) { List<StockPageVo> ...