本项目是上海交通大学 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. Vuex4.x 简介及state、getters、mutations、actions详解(OptionApi 和 CompositionApi)

    http://t.zoukankan.com/yaopengfei-p-15439203.html 作       者 : Yaopengfei(姚鹏飞) 博客地址 : http://www.cnbl ...

  2. MySQL 利用时间(秒分时日月年)分组统计

    1.统计 七天 前 人数 select count(*) from your_table where last_login_time> date_sub(date(now()), interva ...

  3. 异步按照同步顺序执行的function

    function  step1 (callback) {     console.log(111111)     callback.call() } function  step2 (callback ...

  4. Mysql Dao

    1 package dao; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sq ...

  5. B. Going to the Cinema

    https://codeforces.com/contest/1782/problem/B 题目大意就是给定n个人,每个人有一个除自己之外的最少陪同人数,选一部分人去电影院,要求去的人人数大于等于去的 ...

  6. PHP myadmin 无路径getshell

    PHP>5 & MySQl>5 环境:windows下常规的集成环境如 phpstudy,wamp,xampp等. 条件:当已经用弱口令或者爆破登录myadmin以后,没登录进入就 ...

  7. Java-JSP页面实现简单登录退出(菜鸟一枚、仅供参考)

    1.JSP页面代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pag ...

  8. 我的第一周C语言作业

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-2 这个作业要求在哪里 https://edu.cnblogs.com/campus/zs ...

  9. idea常用快捷键记录

    实用编写代码辅助快捷键 Ctrl+Alt+V 提出选中内容为局部变量 Ctrl+Backspace 按单词删除 Ctrl+D 复制行 Ctrl+Y 删除当前行 Ctr+Shift+U 大小写转化 Sh ...

  10. 在 Linux 上微调 Nginx 获得最佳性能的 8 种方法

    转载来自:Linux迷链接:https://www.linuxmi.com/linux-nginx-performance.html NGINX 是一种流行的.免费的开源 Web 服务器.默认的 NG ...