“你帮我助”软件开发(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 ...
随机推荐
- 【FPGA学习】根据datasheet编写Verilog驱动(PCF8574 IO扩展板练习)
在之间的博客中已经讲了如何阅读一本datasheet并编写Verilog驱动代码,而在这篇博客中就加以应用,为PCF8574 IO扩展板编写驱动并观察效果,至于为什么选择这个,一方面是因为这个芯片功能 ...
- maven本地安装jar包
mvn install:install-file -Dfile=cs-pay-client-2.0.0.jar -DgroupId=com.test.pay -DartifactId=gh-epay- ...
- Token过期导致页面多个请求报错提示多次
关于Token过期导致页面多个请求报错提示的问题 我们先在全局定义一个变量(global.js)来控制token是否过期 export default { // token无效标记 TokenInva ...
- jquery 页面追加换行等等操作备份
var str= "a<br/>b<br/>c<br/>"; var Newstr = str.replace("<br/> ...
- pg_freespacemap查看表膨胀
pg_freespacemap模块提供一种检查自由空间映射(FSM)的手段.它提供一个名为pg_freespace的函数,或精确的说是两个重载函数.该函数在一个给定的页面或关系中的所有页面的自由空间映 ...
- Linux系统安装&VMware安装二
第八步: 完成后,选择刚刚创建好的系统
- 给定两个字符串,均只包含英文字母,需区分大小写,一个是源字符串SS(长度<1000), 另一个是目标字符串TS(长度<1000),请问能否通过删除SS中的字符(不改变顺序)将它变换成TS,如果可以输出“YES",不可以则输出“NO"。 输入说明:第一行为源字符串SS,第二行为目标字符串TS。
import java.util.Scanner;/* 给定两个字符串,均只包含英文字母,需区分大小写,一个是源字符串SS(长度<1000), 另一个是目标字符串TS(长度<1 ...
- 基于Python接口自动化测试持续集成----在jenkins创建任务->检出git的代码-->生成报告-->发送邮件
步骤一:先在jenkins创建一个自由风格的任务 步骤二:然后在源码管理选择git检出代码的方式,需要提供代码所在git的路径和登录git的账号和密码 步骤三:返回到任务配置的界面,先在构建后操作增加 ...
- Java中String,JSON对象,java实体类(Bean)之间的相互转换
FastJson对于json格式字符串的解析主要用到了一下三个类: (1)JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换. (2)JSONObje ...
- c++学习3 转义字符
一 "/"和某些字符的结合,产生新的字符就叫转义字符. '\0'==ASCII码值的"0". '\n'==换行符. '\t'==tab缩进符. '\a'==发出 ...