软件工程大作业——“你帮我助”软件开发v2.0
项目简介
在疫情管控期间,很多物资由于信息不对称,不能达成资源的有效分配,尽管这样的事件已经基本不会在新冠疫情的场景中出现,但是开发出一个物品交换的公开信息平台在任何一个社区中都是有必要的,这是构建完美市场的必要条件。
项目要求
比起上一次v1.0的要求,这次的软件更加优化,添加了许多功能:
- 物品有公共的信息(物品名称,物品说明,物品所在地址,联系人手机,邮箱)。为了便于管理和查询,物品可以分成不同的类别(例如食品、书籍、工具等)。
- 互帮互助系统有两种类型的用户:管理员和普通用户。管理员可以设置新的物品类型(定义物品类型的名称和各个属性),修改物品类型。普通用户在添加物品时先选择物品类型,然后再填入物品信息。普通用户搜寻物品时,需要先选择类型,再输入关键字,关键字可以再用户名称和说明中进行匹配。普通用户需要注册(填入基本信息,包括住址,联系方式等),管理员批准后才能成为正式用户。
- 为了便于使用上述功能,软件提供了GUI。
可行性研究
首先我思考了一下整个软件操作起来是怎么样的,这些功能对我来说难度是否大:因为之前使用C++来开发,由于功能简单,所以基本实现,但是我大一修的是Python,今年才接触C++,学艺不精,弄不清C++的语法架构等,来开发这次的大作业可能就有些捉襟见肘。所以我选择了重新用Python,但是GUI我之前并没有涉猎,其他的功能应该都能简单地用顺序储存的数据结构实现。所以主要的困难就是GUI+文件本地储存。
需求分析
站在用户的角度来看,其基本需求应该是拥有一个属于自己的账户,查看市场上所有的物品并能够联系物主以及上传自己的物品信息。配合学到的实体-联系图、数据流图、状态转换图,把具体的流程抽象了出来,并运用IPO图明确输入和输出。
总体设计
我的设计思路是:先设计一个大家都可以使用登录的主界面,增删查,后续再加入管理员、审核制、物品属性更改、删除功能权限化等功能,两个主界面的数据是耦合的。
详细设计
这里的结构基本不涉及循环,就是简单的顺序结构,登录-选择类型-填写信息-上传/搜索,其中也牵涉到了一些简单的人机交互,比如输错密码的提示,添加物品成功的弹窗。这里的添加物品也不需要用到循环结构,无论是否添加成功都会完成一次流程。
实现
反反复复的测试。首先采用黑盒测试:把我想要的功能全部测试实现了一遍,在用户注册审核过程中遇到了显示的问题,遂Debug解决;然后白盒测试:根据内部的工作流程全部过了一遍,没有发现大问题。
面向对象
这是最难的Part,除了对用户和物品的类是自行设计的,现学现卖的GUI是调用了Tkinter的库,其中的窗口是已经封装好的类,用户的操作其实都是通过窗口的方法实现的,并保存在本地的文件中。
总结
总的来说,这是我第一次自主设计一款带有GUI交互界面的软件,感觉很有趣,很有收获,感谢软件工程这门课程,也感谢老师助教的辛勤付出!
软件工程大作业——“你帮我助”软件开发v2.0的更多相关文章
- 软件工程大作业(学生会管理系统)Web端个人总结报告
软件工程大作业(学生会管理系统)Web端个人总结报告 一.小组信息 1.所在小组:第二组 2.小组选题:学生会管理系统 3.项目源代码链接: Web端源代码:code 小程序端源代码:code APP ...
- 【Beta】“北航社团帮”发布声明——小程序v2.0与网页端v1.0
目录 Beta版本新功能 小程序v2.0新功能 新功能列表 功能详情图 新功能动图展示 网页端v1.0功能 登录方式 社团信息的修改 新闻的录入和修改 活动的录入和修改 这一版修复的缺陷 Beta版本 ...
- 软件工程课堂作业(三)——Right-BICEP软件单元测试
一.测试方法:Right-BICEP Right-结果是否正确?B-是否所有的边界条件都是正确的?I-能查一下反向关联吗?C-能用其他手段交叉检查一下结果吗?E-你是否可以强制错误条件发生?P-是否满 ...
- BUAA软件工程个人作业-软件案例分析
BUAA个人博客作业-软件案例分析 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 软件案例分析 我在这个课程的目标是 学习开发软件的能力 这个作 ...
- python27期day16:序列化、json、pickle、hashlib、collections、软件开发规范、作业。
序列化模块:什么是序列化呢? 序列化的本质就是将一种数据结构(如字典.列表)等转换成一个特殊的序列(字符串或者bytes)的过程就叫做序列化.将这个字典直接写入文件是不可以的,必须转化成字符串的形式, ...
- c++小学期大作业攻略(一)环境配置
UPDATE at 2019/07/20 20:21 更新了Qt连接mysql的方法,但是是自己仿照连VS的方法摸索出来的,简单测试了一下能work但是不保证后期不会出问题.如果你在尝试过程中出现了任 ...
- HIT大作业——hello的一生
hello的一生 关键词:计算机系统:功能:流程:P2P;O2O;hello 目 录 第1章 概述- 4 - 1.1 Hello简介 - ...
- 软件工程第一次作业:Warm Up
Warm Up 项目 内容 作业所属课程 2021春季软件工程(罗杰 任健) 作业要求 第一次阅读作业 课程目标 培养通过团队协作使用软件开发工具按照软件工程方法开发高质量并且可用的复杂软件系统的能力 ...
- BUAA软件工程热身作业
写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 热身作业(阅读) 课程目标 培养软件开发能力 本作业对实现目标的具体作用 深入认识自己,总结过往并展望 ...
- BUAA 2020 软件工程 热身作业
BUAA 2020 软件工程 热身作业 Author: 17373051 郭骏 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第一次作业-热身! ...
随机推荐
- MySql的InnoDB的三层B+树可以存储两千万左右条数据的计算逻辑
总结/朱季谦 B+树是一种在非叶子节点存放排序好的索引而在叶子节点存放数据的数据结构,值得注意的是,在叶子节点中,存储的并非只是一行表数据,而是以页为单位存储,一个页可以包含多行表记录.非叶子节点存放 ...
- [题解] Topcoder 15279 SRM 761 Div 1 Level 3 SpanningSubgraphs DP,容斥
题目 考虑DP.\(f(msk,i)\) 表示集合 \(msk(一定包含0号点)\) ,选了恰好i条边的连通方案数.转移用容斥,用这个点集内部所有连边方案减去不连通的.令\(|e_{msk}|\)表示 ...
- C#-13 泛型
一 泛型 泛型提供了一种更优雅的方式,可以让多个类型共享一组代码.泛型允许我们声明类型参数化的代码,可以用不同的类型进行实例化. 也就是说,我们可以用"类型占位符"来写代码,然后在 ...
- .Net WebApi 中的 FromBody FromForm FromQuery FromHeader FromRoute
在日常后端Api开发中,我们跟前端的沟通中,通常需要协商好入参的数据类型,和参数是通过什么方式存在于请求中的,是表单(form).请求体(body).地址栏参数(query).还是说通过请求头(hea ...
- mac通过docker一键部署MySQL8
目录 mac通过docker一键部署MySQL8 一.前言 二.系统配置 三.安装步骤 Dockerhub查看镜像地址 1.一键安装 1.1.克隆脚本 1.2.安装程序 1.2.1.安装程序详情 1. ...
- input框限制只能输入数字的两种方法
方法一: <input type="text" oninput="value=value.replace(/[^\d.%]/g,'')"> 方法 ...
- 后端框架的学习----mybatis框架(8、lombok)
8.lombok #测试环境搭建 1.导入lombok 2.新建实体类Teacher,Student 3.建立mapper接口 4.建立mapper.xml文件 5.在核心配置文件中绑定注册mappe ...
- C语言客房管理&酒店管理
#include<iostream> #include<string.h> #include<stdlib.h> #include<iomanip> # ...
- 基于SqlSugar的开发框架循序渐进介绍(17)-- 基于CSRedis实现缓存的处理
在一个应用系统的开发框架中,往往很多地方需要用到缓存的处理,有些地方是为了便于记录用户的数据,有些地方是为了提高系统的响应速度,如有时候我们在发送一个短信验证码的时候,可以在缓存中设置几分钟的过期时间 ...
- Windows7下驱动开发与调试体系构建——2.R3与R0的通信示例
目录/参考资料:https://www.cnblogs.com/railgunRG/p/14412321.html 在阅读本节前,建议先阅读<Windows内核安全与驱动开发>第五章内容, ...