本项目是上海交通大学 CS-3331 软件工程课程大作业。

作业描述

“你帮我助”软件开发(Final)

新的功能需求:

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

文档需求:

  1. 需要提供一个文档:其中包括(1)用例模型;(2)针对用例画顺序图;(3)类图。

作业完成要求:

作业需要在 16 周前提交,并发布在你的 GitHub 仓库中;
作业完成后需要进行演示,请提前一周与助教约好。(每周周二下午都可以约);演示的内容包括写的文档、软件的功能(包括第一次,第二次功能)。
在技术博客上写一篇总结文章,对照软件工程的知识,对开发该程序的体会进行总结。

使用说明:

运行项目后,进入登录界面。如果没有账号,则可选择注册功能,填写相关信息后注册账号,注册成功将提示“请等待管理员审核”。登录时可选择登录为普通用户或是管理员。

登录为管理员后,将显示管理员界面。管理员可用功能为审核新用户,设置新的物品类型。选择“审核新用户”功能后,将显示审核界面,点击“获取新用户信息”,界面将显示最新的一条新用户信息,管理员可选择通过(该条信息将被存入用户信息文档),或是不通过(该条信息将被存入被拒绝用户文档);管理员可通过“ok"按键关闭审核界面。选择“新增物品类型”功能后,将显示新增物品类型界面,管理员可通过输入物品类型名称和相应的属性新建物品类型。

登录为普通用户后,将显示用户界面,普通用户可使用功能为“添加”,“删除”,“搜索”,“列表”。以“添加”为例,用户选择“添加”功能后,将显示添加物品界面。用户需要先输入待添加物品类型,系统将在数据库中获取该物品类型包含的属性,并显示在界面上,用户需在提示下输入相应的属性,再点击添加按钮;用户可通过“OK”键关闭审核界面。

开发体会:

由于本人编程水平有限,且之前连续病了将近一周,这个项目完成的着实有些匆忙,有很多细节的地方没有考虑到。主要的困难是界面间的跳转和数据库的处理上,界面跳转方面我在csdn上查找了相关资料,尝试了近一个小时后终于实现了跳转;数据库的处理主要在于新建物品类型时,我的设想是直接新建一张数据表,但是运行的时候新建物品类型的界面丢失了确认创建的那个按键,至今没有找到bug在哪里(界面上的另一个按键存活且能正常使用),因此只能将新建物品类型的代码直接拎出来,写了另一个程序手动创建了两个物品类型,以便测试普通用户的功能。

在考虑修改物品类型这个功能时,我没有想好已存在的物品数据应该如何处理。删除的物品属性可以直接删掉相应数据,但是新增的物品属性如果都空着感觉不太合理。因此最终就没有做这个功能。

目前这个系统依然存在的一些问题有:没有实现“退出登录”这一功能;以及如果在使用一个功能的过程中,没有点选“ok“键便点选了另一个功能,界面会出现错乱(因为摧毁新界面上的元件是通过ok键关联的函数来实现的),这个问题可以通过在运行一个功能时,让选择其他功能的按键“deactivate”来解决(但是我16周要考三门暂时来不及改了QAQ,考完会进一步对这个系统做一些完善)

“你帮我助”软件开发(Final)的更多相关文章

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

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

  2. TCL校园招聘——软件开发工程师(java) 只招5个。。。

    简介 TCL集团股份有限公司创立于1981年,是全球性规模经营的消费类电子企业集团之一,广州2010年亚运会合作伙伴,总部位于广东省惠州市仲恺高新区TCL科技大厦.旗下拥有TCL集团.TCL多媒体科技 ...

  3. java 软件开发面试宝典

    一. Java 基础部分........................................................................................ ...

  4. 减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同

    本篇文章讨论并不是:不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用.而是关于:"业务逻辑是不是要封装在存储过程中实现,这样子php.java等就是调用存储过程". ...

  5. 敏捷软件开发(1)--- STATE 模式

    如果状态在运行过程中,不停的切换和改变,我们怎么办? 状态的迁移是我们生活和工程中非常普遍的一个概念.于是在数学上有一种理论来分析和解决这个问题. 有限状态机理论是一个非常成熟的理论,所有动作和流程的 ...

  6. SaaS系列介绍之十四: SaaS软件开发分析

    1 引言 真正的问题,不是电脑是否具备思考能力,而是人类是否具备这种能力                     ________B.F.Skinner<计算机科学> SaaS模式不同于传 ...

  7. 程序员带你十天快速入门Python,玩转电脑软件开发(三)

    声明:本次教程主要适用于已经习得一门编程语言的程序员.想要学习第二门语言.有梦想,立志做全栈攻城狮的你 . 如果是小白,也可以学习本教程.不过可能有些困难.如有问题在文章下方进行讨论.或者添加QQ群5 ...

  8. 纯干货!华为软件开发云编译构建之Maven

    一.Maven介绍 Maven是一个项目管理和整合的工具.Maven为开发者提供了一套完整的构建生命周期框架.开发团队基本不用花多少时间就能自动完成工程的基础构建配置,因为Maven使用了一个标准的目 ...

  9. 从Windows角度看Mac OS X上的软件开发

    如果原来从事Windows软件开发,想跨足或转换至Mac OS X环境,需要知道那些东西?有什么知识技能可以快速运用在Mac OS X环境上的?这两个问题应该是Windows开发者进入Mac OS X ...

  10. [No0000138]软件开发基础知识

    1. 本文目的 本文目的在于,介绍软件开发的各种基础知识 以实现,看了之后,对于软件开发的很多领域的基础知识有所了解 如此在进行后续的真正的软件开发时,遇到各种细节知识,才会明白由来和背景知识 第 1 ...

随机推荐

  1. winform 登录后跳转百度地图报错 使用委托解决

    最近用winform做一个登录后跳转到百度地图的小程序,使用了线程,winform的UI是单线程操作的,由于百度地图写在另外一个窗体,导致报错.后来使用了委托解决了这个小问题. delegate vo ...

  2. 项目中pom.xml的某些坐标无法加载

    项目中pom.xml的某些坐标无法加载 maven官方查找对应的坐标文件下载 https://mvnrepository.com/artifact/com.fasterxml.jackson.core ...

  3. Python中变量和对象的关系

    变量和对象 Python中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是对象.而变量是对象的一个引用(也可以称为标签或者名字),对象的操作都是通过引用来完成的. 例如,[]是一个空列 ...

  4. Python打包时包含静态文件处理方法

    Python打包时包含静态文件处理方法 使用场景 已搭建了PyPI私有库,上传公共库包含静态文件,如需要使用sql静态文件初始化数据库. 打包python包,给其他人使用,但项目中包含静态文件,如ht ...

  5. python3+selenium+BeautifulReport生成自动化测试报告

    https://www.jianshu.com/p/3d2c0e092ffb 自动化测试,最重要的还是测试报告,下面就教大家使用BeautifulReport生成自动化测试报告GitHub:https ...

  6. 求两个自然数之间的最大公约数C++实现

    1 #include "pch.h" 2 #include <iostream> 3 using namespace std; 4 5 int main() 6 { 7 ...

  7. 3Com-OfficeConnect-Wireless-11宽带路由器默认口令

    网络空间资产搜索: app="3Com-OfficeConnect-Wireless-11g-Cable/DSL-Router" 找到环境 账户密码 admin/a***n End ...

  8. Epoll的使用例子

    本篇文章在上一篇的基础上,使用 epoll  实现了一个事件监听和回调处理的模块.如何编写一个使用该模块的例子呢? 监测什么类型的fd,监测什么类型的事件,监测到事件以后需要做什么?后来可以看看如何将 ...

  9. Java实验 继承与接口

     一.实验目的 1.理解 Java 语言的继承和多态特性: 2.掌握变量的隐藏.方法的覆盖.重载: 3.掌握抽象类和接口的使用. 二.实验要求 1.根据实验步骤中提出的要求,使用eclipse等开发工 ...

  10. Vue3 + echarts 统一封装

    1. 新建 echartsLib.js 文件,统一导入需要的组件 import * as echarts from "echarts/core"; import { SVGRend ...