“你帮我助”软件开发(Final)
本项目是上海交通大学 CS-3331 软件工程课程大作业。
作业描述
“你帮我助”软件开发(Final)
新的功能需求:
- 物品有公共的信息(物品名称,物品说明,物品所在地址,联系人手机,邮箱)。为了便于管理和查询,物品可以分成不同的类别(例如食品、书籍、工具等),不同类别的物品可能有不同的属性(例如食品有保质期,数量;书籍有作者,出版社等)。
- 互帮互助系统有两种类型的用户:管理员和普通用户。
- 管理员可以设置新的物品类型(定义物品类型的名称和各个属性),修改物品类型。
- 普通用户在添加物品时先选择物品类型,然后再填入物品信息。普通用户搜寻物品时,需要先选择类型,再输入关键字,关键字可以再用户名称和说明中进行匹配。
普通用户需要注册(填入基本信息,包括住址,联系方式等),管理员批准后才能成为正式用户。
- 为了便于使用上述功能,软件需要提供 GUI。
文档需求:
- 需要提供一个文档:其中包括(1)用例模型;(2)针对用例画顺序图;(3)类图。
作业完成要求:
作业需要在 16 周前提交,并发布在你的 GitHub 仓库中;
作业完成后需要进行演示,请提前一周与助教约好。(每周周二下午都可以约);演示的内容包括写的文档、软件的功能(包括第一次,第二次功能)。
在技术博客上写一篇总结文章,对照软件工程的知识,对开发该程序的体会进行总结。
使用说明:
运行项目后,进入登录界面。如果没有账号,则可选择注册功能,填写相关信息后注册账号,注册成功将提示“请等待管理员审核”。登录时可选择登录为普通用户或是管理员。
登录为管理员后,将显示管理员界面。管理员可用功能为审核新用户,设置新的物品类型。选择“审核新用户”功能后,将显示审核界面,点击“获取新用户信息”,界面将显示最新的一条新用户信息,管理员可选择通过(该条信息将被存入用户信息文档),或是不通过(该条信息将被存入被拒绝用户文档);管理员可通过“ok"按键关闭审核界面。选择“新增物品类型”功能后,将显示新增物品类型界面,管理员可通过输入物品类型名称和相应的属性新建物品类型。
登录为普通用户后,将显示用户界面,普通用户可使用功能为“添加”,“删除”,“搜索”,“列表”。以“添加”为例,用户选择“添加”功能后,将显示添加物品界面。用户需要先输入待添加物品类型,系统将在数据库中获取该物品类型包含的属性,并显示在界面上,用户需在提示下输入相应的属性,再点击添加按钮;用户可通过“OK”键关闭审核界面。
开发体会:
由于本人编程水平有限,且之前连续病了将近一周,这个项目完成的着实有些匆忙,有很多细节的地方没有考虑到。主要的困难是界面间的跳转和数据库的处理上,界面跳转方面我在csdn上查找了相关资料,尝试了近一个小时后终于实现了跳转;数据库的处理主要在于新建物品类型时,我的设想是直接新建一张数据表,但是运行的时候新建物品类型的界面丢失了确认创建的那个按键,至今没有找到bug在哪里(界面上的另一个按键存活且能正常使用),因此只能将新建物品类型的代码直接拎出来,写了另一个程序手动创建了两个物品类型,以便测试普通用户的功能。
在考虑修改物品类型这个功能时,我没有想好已存在的物品数据应该如何处理。删除的物品属性可以直接删掉相应数据,但是新增的物品属性如果都空着感觉不太合理。因此最终就没有做这个功能。
目前这个系统依然存在的一些问题有:没有实现“退出登录”这一功能;以及如果在使用一个功能的过程中,没有点选“ok“键便点选了另一个功能,界面会出现错乱(因为摧毁新界面上的元件是通过ok键关联的函数来实现的),这个问题可以通过在运行一个功能时,让选择其他功能的按键“deactivate”来解决(但是我16周要考三门暂时来不及改了QAQ,考完会进一步对这个系统做一些完善)
“你帮我助”软件开发(Final)的更多相关文章
- 软件工程大作业——“你帮我助”软件开发v2.0
项目简介 在疫情管控期间,很多物资由于信息不对称,不能达成资源的有效分配,尽管这样的事件已经基本不会在新冠疫情的场景中出现,但是开发出一个物品交换的公开信息平台在任何一个社区中都是有必要的,这是构建完 ...
- TCL校园招聘——软件开发工程师(java) 只招5个。。。
简介 TCL集团股份有限公司创立于1981年,是全球性规模经营的消费类电子企业集团之一,广州2010年亚运会合作伙伴,总部位于广东省惠州市仲恺高新区TCL科技大厦.旗下拥有TCL集团.TCL多媒体科技 ...
- java 软件开发面试宝典
一. Java 基础部分........................................................................................ ...
- 减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同
本篇文章讨论并不是:不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用.而是关于:"业务逻辑是不是要封装在存储过程中实现,这样子php.java等就是调用存储过程". ...
- 敏捷软件开发(1)--- STATE 模式
如果状态在运行过程中,不停的切换和改变,我们怎么办? 状态的迁移是我们生活和工程中非常普遍的一个概念.于是在数学上有一种理论来分析和解决这个问题. 有限状态机理论是一个非常成熟的理论,所有动作和流程的 ...
- SaaS系列介绍之十四: SaaS软件开发分析
1 引言 真正的问题,不是电脑是否具备思考能力,而是人类是否具备这种能力 ________B.F.Skinner<计算机科学> SaaS模式不同于传 ...
- 程序员带你十天快速入门Python,玩转电脑软件开发(三)
声明:本次教程主要适用于已经习得一门编程语言的程序员.想要学习第二门语言.有梦想,立志做全栈攻城狮的你 . 如果是小白,也可以学习本教程.不过可能有些困难.如有问题在文章下方进行讨论.或者添加QQ群5 ...
- 纯干货!华为软件开发云编译构建之Maven
一.Maven介绍 Maven是一个项目管理和整合的工具.Maven为开发者提供了一套完整的构建生命周期框架.开发团队基本不用花多少时间就能自动完成工程的基础构建配置,因为Maven使用了一个标准的目 ...
- 从Windows角度看Mac OS X上的软件开发
如果原来从事Windows软件开发,想跨足或转换至Mac OS X环境,需要知道那些东西?有什么知识技能可以快速运用在Mac OS X环境上的?这两个问题应该是Windows开发者进入Mac OS X ...
- [No0000138]软件开发基础知识
1. 本文目的 本文目的在于,介绍软件开发的各种基础知识 以实现,看了之后,对于软件开发的很多领域的基础知识有所了解 如此在进行后续的真正的软件开发时,遇到各种细节知识,才会明白由来和背景知识 第 1 ...
随机推荐
- MySQL的MDL锁
MDL锁的概念和分类 1.MDL类型 锁名称 锁类型 说明 适用语句 MDL_INTENTION_EXCLUSIVE 共享锁 意向锁,锁住一个范围 任何语句都会获取MDL意向锁, 然后再获取更强级别的 ...
- xshell he xftp下载网址
https://www.xshell.com/zh/free-for-home-school/
- mysql建表常用关键字
DISTRIBUTE BY HASH(`id`) INDEX_ALL='Y' STORAGE_POLICY='HOT'
- 从Sql Server转战Oracle 之 变量声明
1 --两种声明方法:没有sql所谓的select或者select @para from table 以及 set 赋值,且赋值的时候需要在begin end事务内 2 一 直接声明 3 declar ...
- 使用Wireshark完成实验2-TCP
1.打开Google Chorme,进入https://gaia.cs.umass.edu/wireshark-labs/alice.txt 2.将文本保存,进入https://gaia.cs.uma ...
- Tomcat put 漏洞批量工具
工具下载 https://share.weiyun.com/96ffd3bf26b09ffece8d01317f3b3efb
- dead code?
public static void main(String[] args) { DriverBase dbase = new DriverBase(); dbase.driverBase(); dr ...
- uiautomator2自动化工具的下载与安装
前言: 相信很多使用appium做过APP自动化的人都深有感触: 1,安装麻烦,配置环境可能会难道不少人 2,appium运行慢.时间长 3,uiautomatorviewer定位元素时得关掉appi ...
- python机器学习——KNN(K近邻算法)
背景与原理: KNN算法其实是逻辑最简单的分类算法--我们认为一个数据的类型是由与其最接近的数据决定的,而"接近"实际上就是我们度量两个数据点之间的距离,如果我们把一组数据看做一个 ...
- python 操作MongoDB pymongo
python操作MongoDB 1.安装pymongo pip install pymongo 2.连接数据库 启动mongodb服务: 包含mongod.exe文件夹bin :shift+鼠标右键, ...