当前位置: 首页 > news >正文

【项目新功能开发篇】需求分析和开发设计

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产生了写一个博客专栏想法,介绍当前互联网企业JAVA项目开发如何快速入门。

本文收录于《30天企业JAVA项目开发实战入门》专栏,该专栏内容以当前互联网软件企业中的项目实战为线索,介绍企业JAVA项目开发中涉及到的开发流程、技术、工具、规范要求等等。帮助想从事JAVA开发的大学生或新人,更快的、更好的入门JAVA后端开发工作。

文章目录

    • 一、前言
    • 二、需求分析和开发设计
        • (1)需求分析
        • (2)接口设计
        • (3)数据存储设计
    • 三、总结

一、前言

由于本专栏项目实战学习,是以若依开源项目RuoYi-Cloud为示例。所以,本文介绍一下若依开源项目RuoYi-Cloud中若依管理后台系统的新功能开发,如何做需求分析和开发设计,以管理后台系统中的兴趣爱好管理模块开发为示例。

  • 若依项目RuoYi-Cloud简介

    若依项目RuoYi-Cloud 是一个 Java EE 企业级的开源免费的快速开发平台,是一个基于Spring Boot、Spring Cloud & Alibaba的微服务的权限管理系统。如果想快速的开发一个Java EE 企业级项目,可以在若依项目的基础上,开发定制自己的项目。尤其是如果要开发一个后台管理系统,由于若依开源项目中已经内置完整的权限管理模块,所以能够更加快速的完成项目的开发工作;

  • 若依项目RuoYi-Cloud技术选型

    采用前后端分离的模式,微服务版本前端基于 Vue/Element UI ;
    ​ 后端采用Spring Boot、Spring Cloud & Alibaba微服务架构;
    ​ 注册中心、配置中心选型Nacos,权限认证使用Redis;
    ​ 流量控制框架选型Sentinel,分布式事务选型Seata;

  • 若依项目官方网站和文档地址

    若依官网地址:https://www.ruoyi.vip/
    若依演示地址:https://vue.ruoyi.vip/login
    技术文档地址:https://doc.ruoyi.vip/ruoyi-cloud/
    代码下载地址:https://gitee.com/y_project/RuoYi-Cloud

二、需求分析和开发设计

  • 在若依项目RuoYi-Cloud中,开发新的功能模块,如何进行需求分析和开发设计呢?

这里以兴趣爱好管理模块开发为示例,介绍如何进行需求分析和开发设计。其中,开发设计,一般包括接口设计和数据存储设计。

(1)需求分析

​ 首先,要了解兴趣爱好管理模块包括哪些功能。一般在实际项目中,通过召开需求会议的方式,产品人员会给开发人员,介绍产品的功能需求。

兴趣爱好管理模块主页面设计如下:
在这里插入图片描述
兴趣爱好管理模块新增页面设计如下:
在这里插入图片描述
兴趣爱好管理模块修改页面设计如下:
在这里插入图片描述
兴趣爱好管理模块导出Excel字段内容设计如下:
在这里插入图片描述

从以上设计页面可知,兴趣爱好管理模块包括如下功能;

  • 新增:通过新增功能,可以新增一条兴趣爱好记录。其中,新增的内容字段信息包括兴趣爱好编码、兴趣爱好名称、显示顺序、备注;
  • 修改:通过修改功能,可以修改兴趣爱好记录。其中,可以修改的内容字段信息包括兴趣爱好编码、兴趣爱好名称、显示顺序、备注;
  • 删除:通过删除功能,可以删除一条或多条兴趣爱好记录;
  • 查询:通过查询功能,可以根据用户输入的查询条件,查询符合条件的兴趣爱好记录列表;其中,查询条件字段信息包括兴趣爱好编码、兴趣爱好名称、显示顺序;查询的列表信息字段包括兴趣爱好ID、兴趣爱好编码、兴趣爱好名称、显示顺序、状态、备注;
  • 导出:通过导出功能,可以把查询出来的兴趣爱好记录,导出为Excel文档格式;其中,导出的字段信息包括兴趣爱好编码、兴趣爱好名称、显示顺序、状态;
  • 重置:通过重置功能,可以重置查询条件;
(2)接口设计

需求分析完成后,进行后端API接口设计。通过API接口设计,确定API接口的名称、请求URL地址、请求方式、入参、返回值等信息;

  • 接口名称:查询兴趣爱好信息列表
    请求URL地址:/system/interest/list
    请求方式:get
    入参:兴趣爱好编码、兴趣爱好名称、显示顺序
    返回值:兴趣爱好ID、兴趣爱好编码、兴趣爱好名称、显示顺序、状态、备注

  • 接口名称:查询兴趣爱好信息详细
    请求URL地址:/system/interest/{ interestId}
    请求方式:get
    入参:兴趣爱好ID
    返回值:兴趣爱好ID、兴趣爱好编码、兴趣爱好名称、显示顺序、状态、备注

  • 接口名称:新增兴趣爱好信息
    请求URL地址:/system/interest
    请求方式:post
    入参:兴趣爱好编码、兴趣爱好名称、显示顺序、备注
    返回值:无

  • 接口名称:修改兴趣爱好信息
    请求URL地址:/system/interest
    请求方式:put
    入参:兴趣爱好ID、兴趣爱好编码、兴趣爱好名称、显示顺序、备注
    返回值:无

  • 接口名称:删除兴趣爱好信息
    请求URL地址:/system/interest/{ interestId}
    请求方式:delete
    入参:兴趣爱好ID字符串
    返回值:无

  • 接口名称:导出兴趣爱好信息列表
    请求URL地址:/system/interest/export
    请求方式:export
    入参:兴趣爱好编码、兴趣爱好名称、显示顺序
    返回值: 兴趣爱好编码、兴趣爱好名称、显示顺序、状态

(3)数据存储设计

之后,进行数据存储设计。计划将兴趣爱好信息记录数据存储在MySQL数据库的兴趣爱好信息表sys_interest中;

其中,兴趣爱好信息表sys_interest结构设计如下:
在这里插入图片描述

兴趣爱好信息表sys_interest创建表的脚本内容如下:

CREATE TABLE `sys_interest` (`interest_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '兴趣爱好ID',`interest_code` varchar(64) NOT NULL COMMENT '兴趣爱好编码',`interest_name` varchar(128) NOT NULL COMMENT '兴趣爱好名称',`interest_sort` int(4) NOT NULL COMMENT '显示顺序',`status` char(1) NOT NULL DEFAULT '0' COMMENT '状态(0正常 1停用)',`create_by` varchar(64) DEFAULT '' COMMENT '创建者',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_by` varchar(64) DEFAULT '' COMMENT '更新者',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`interest_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='兴趣爱好信息表';

三、总结

以上,介绍一下若依开源项目RuoYi-Cloud中若依管理后台系统的新功能开发,以兴趣爱好管理模块开发为示例,如何做需求分析和开发设计。

如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)

相关文章:

【项目新功能开发篇】需求分析和开发设计

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…...

CentOS 7 下离线安装RabbitMQ教程

CentOS 7 下安装RabbitMQ教程一、做准备(VMWare 虚拟机上的 CentOS 7 镜像 上安装的) (1)准备RabbitMQ的安装包(rabbitmq-server-3.8.5-1.el7.noarch)下载地址mq https://github.com/rabbitmq/rabbitmq-se…...

【Servlet】session保存作用域

session保存作用域:一次会话范围都有效 Java的服务器端,有一块内存专门存储在session保存作用域的数据。 session保存作用域是和具体的某一个session对应的。 常用API: void session.setAttribute(k, v)Object session.getAttrivute(k) —…...

企业周年庆3d云展厅促进了客企间交流与互动

在数字化浪潮席卷而来的今天,传统的展示方式已难以满足现代人对信息获取与体验的高标准需求。为此,一种革命性的展示方式——线上3D虚拟展厅应运而生,以其独特的魅力逐渐引领展示方式的革新。 线上3D虚拟展厅开发,不仅为参与者带来…...

Android Studio学习5——布局layout与视图view

wrap_content,内容有多大,就有多宽(包裹) 布局 padding 边框与它自身的内容 margin 控件与控件之间...

设计模式(15):迭代器模式

介绍 提供一中可以遍历聚合对象的方式。又称为: 游标cursor模式 迭代器模式角色 抽象聚合类(Aggregate):提供了聚合相关的方法,并提供获取迭代器的方法;具体集合类(ConcreteAggregate):实现了抽象聚合类;抽象迭代器(Iterator):…...

前端内部技术分享---前端组件之表格组件的封装与使用(Vue3)

业务背景 在我们接触的项目中,PC端的项目中基本上百分之60或以上,都会用到表格,我们最常用的 就是element-plus 组件库,相信大家都对el-table 都比较熟悉了,但是在许许多多大同小异的界面中,每次都要写很多…...

【一】Mac 本地部署大模型

盘古开天辟地开始 # 安装brew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"(echo; echo eval "$(/opt/homebrew/bin/brew shellenv)") >> /Users/wangxin52/.zprofileeval "$(/opt/homeb…...

vue实现相机拍摄,可录视频、拍照片、前置后置切换(简单小demo)

内容比较简单&#xff0c;不做过多赘述&#xff0c;只做分享&#xff0c;测试demo&#xff0c;功能有些缺陷&#xff0c;希望路过的大佬多多指正 /(*/ω&#xff3c;*) <script setup> import { showToast, showSuccessToast, showFailToast, showLoadingToast } from …...

【项目】牛马点评 问题汇总

如果一个人换很多个不同电话号发验证码会怎样 项目里没实现&#xff0c;如果让我做的话&#xff0c;我会获得用户的ip地址&#xff0c;然后存到redis里&#xff0c;设置个ttl比如1分钟&#xff0c;每次请求过来后就先看看redis里有没有这个ip&#xff0c;有的话就不发验证码。…...

使用 Docker Compose 部署邮件服务器

使用 Docker Compose 部署邮件服务器 很多时候为了方便&#xff0c; 我们都直接使用第三方邮箱进行收发邮件。 但第三方邮箱有些要求定期修改密码&#xff0c;有些限制发邮箱的次数&#xff0c; 对于一些个人和企业来说&#xff0c; 有自己的域名和服务器为什么不自己搭建一个邮…...

FastAPI+React全栈开发21 探索React路由器和其他好东西

Chapter04 Setting Up a React Workflow 21 Exploring React Router and other goodies FastAPIReact全栈开发21 探索React路由器和其他好东西 So far, we have only created a couple of single-page apps that are really single pages, we haven’t touched some advance…...

Java pdfbox 给 PDF 添加文字和图片水印 并旋转45度

POM <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.27</version> </dependency> 代码&#xff1a; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdf…...

微信小程序中路由跳转方式

文章目录 wx.switchTab(Object)wx.reLaunch(Object)wx.redirectTo(Object)wx.navigateTo(Object)wx.navigateBack(Object) 常见的微信小程序页面跳转方式有如下&#xff1a; wx.switchTab(Object)&#xff1a;跳转到 tabBar 页面&#xff0c;并关闭其他所有非 tabBar 页面&…...

Flutter应用发布前的关键iOS设备测试策略

本文探讨了使用Flutter开发的iOS应用能否上架&#xff0c;以及上架的具体流程。苹果提供了App Store作为正式上架渠道&#xff0c;同时也有TestFlight供开发者进行内测。合规并通过审核后&#xff0c;Flutter应用可以顺利上架。但上架过程可能存在一些挑战&#xff0c;因此可能…...

深入理解Linux环境配置文件:.bashrc、.bash_profile和.profile

在Linux世界中&#xff0c;理解各种shell配置文件如.bashrc、.bash_profile和.profile的作用和区别对于有效地管理和定制你的命令行环境至关重要。许多用户经常对这些文件的功能和使用场景感到困惑。本文旨在详细解释这些配置文件的差异、作用以及它们的正确使用方法。 .bashr…...

数据库设计规范(三大范式)

1、第一范式*&#xff08;确保每列保持原子性&#xff09; 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值&#xff0c;就说明该数据库满足第一范式。 第一范式的合理遵循需要根据系统给的实际需求来确定。比如某些数据库系统中需要用到“地址”这…...

图论模板详解

目录 Floyd算法 例题&#xff1a;蓝桥公园 Dijkstra算法 例题&#xff1a;蓝桥王国 SPFA算法 例题&#xff1a;随机数据下的最短路问题 总结 最小生成树MST Prim算法 Kruskal算法 例题&#xff1a;聪明的猴子 Floyd算法 最简单的最短路径算法&#xff0c;使用邻接…...

ArcGIS Pro打不开Excel?Microsoft驱动程序安装不上?

刚用ArcGIS pro的朋友们可能经常在打开xls或者xlsx文件的时候都会提示&#xff0c;未安装所需的Microsoft驱动程序。 怎么办呢&#xff1f;当然&#xff0c;按照提示装一下驱动就会好吗&#xff1f;有什么状况会出现&#xff1f;有什么临时替代方案呢&#xff1f; 全文目录&a…...

简单了解裸眼3D呈现技术

裸眼3D呈现是一种不需要佩戴任何特殊设备&#xff08;如3D眼镜或头盔&#xff09;即可观看到3D效果的技术。这种技术近年来得到了快速发展&#xff0c;为观众带来了更加沉浸式的视觉体验。 实现裸眼3D呈现的关键步骤包括&#xff1a; 创建立体图像源&#xff1a;首先需要有一…...

单元测试——Junit (断言、常用注解)

单元测试 Junit单元测试框架 使用 断言测试 使用Assert.assertEquals(message, 预期值, 实际值); 这段代码是用于在测试中验证某个方法的返回值是否符合预期。其中&#xff0c;"方法内部有bug"是用于在断言失败时显示的提示信息。4是预期的返回值&#xff0c;index…...

【蓝桥杯每日一题】4.2 全球变暖

原题链接&#xff1a;1233. 全球变暖 - AcWing题库 由题意可知&#xff1a; 需要找到淹没的岛屿的数量淹没的岛屿所具备的条件&#xff1a;咩有“高地”&#xff0c;也就是说岛屿&#xff08;连通块&#xff09;中的所有元素的 4 4 4-邻域中均含有’ . ’ 思路1&#xff1a;…...

ffmpeg点对点音视频udp协议传输

参考&#xff1a;https://zhuanlan.zhihu.com/p/636152437?utm_id0 ffmpeg查看可用设备&#xff1a; ffmpeg -list_devices true -f dshow -i dummy1、音频 局域网内两台设备间 设备1-音频&#xff1a; ffmpeg -f dshow -i audio"麦克风阵列 (适用于数字麦克风的英特…...

ensp华为AC+AP上线配置

AR1配置&#xff1a; <Huawei>system-view # 进入系统视图<Huawei>sysname R1 # 设备重命名[R1]dhcp enable # 开启DHCP功能[R1]interface GigabitEthernet0/0/0 # 进入接口 [R1-GigabitEthernet0/0/0]ip address 192.168.0.1 23 # 配置接口地址 [R1-GigabitE…...

JAVA基础02-Java语言基础以及编译准备工作

什么是JAVA语言 Java是一门面向对象的编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用的两个特征。 &#xff08;可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式…...

Photoshop 2024 Mac/win---图像处理的新纪元,解锁无限创意

Photoshop 2024是一款功能强大的图像处理软件&#xff0c;以其卓越的性能和广泛的应用领域&#xff0c;赢得了设计师、摄影师、图形艺术家等各类创意工作者的青睐。它提供了丰富的绘画和编辑工具&#xff0c;让用户能够轻松进行图片编辑、合成、校色、抠图等操作&#xff0c;实…...

【MySQL系列】使用 ALTER TABLE 语句修改表结构的方法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

ElementUI 表格横向滚动条时滚动到指定位置

ElementUI 表格横向滚动条时滚动到指定位置 getColumnOffset(columnProp) {this.$nextTick(() > {const table this.$refs.tableRef.$refs.multipleTable;const columns table.columns;const column columns.find((col) > col.property columnProp);if (column) {// …...

【论文阅读】DETR 论文逐段精读

【论文阅读】DETR 论文逐段精读 文章目录 【论文阅读】DETR 论文逐段精读&#x1f4d6;DETR 论文精读【论文精读】&#x1f310;前言&#x1f4cb;摘要&#x1f4da;引言&#x1f9ec;相关工作&#x1f50d;方法&#x1f4a1;目标函数&#x1f4dc;模型结构⚙️代码 &#x1f4…...

负载均衡:实现高效稳定的网络服务

随着互联网技术的快速发展&#xff0c;网络应用服务的规模和复杂性日益增加。为了满足日益增长的用户需求&#xff0c;确保服务的高可用性和稳定性&#xff0c;负载均衡技术应运而生。本文将详细介绍负载均衡的概念、原理、分类以及应用场景&#xff0c;帮助读者深入了解这一关…...

微信开发人/北京网站优化外包

Sqoop中文手册 1. 概述 本文档主要对SQOOP的使用进行了说明&#xff0c;参考内容主要来自于Cloudera SQOOP的官方文档。为了用中文更清楚明白地描述各参数的使用含义&#xff0c;本文档几乎所有参数使用说明都经过了我的实际验证而得到。 2. codegen 将关系数据库表映射…...

做商品条形码的网站/网络推广是诈骗吗

为什么80%的码农都做不了架构师&#xff1f;>>> http://www.expressjs.com.cn/starter/hello-world.html expressjs入门教程 http://bubkoo.com/2014/12/02/use-nodemon-with-node-applications/ nodemon监视代码变动&#xff0c;及自动重启服务 转载于:https:…...

企业品牌logo设计/关键词优化公司前十排名

React中为什么要使用bind&#xff1f; 函数传参 比如在一个组件中&#xff0c;有一个点击事件&#xff0c;当点击时触发一个方法&#xff0c;onClick{ this.fun }&#xff0c;能达到我们的目的&#xff0c;触发了方法&#xff0c;执行了函数里的代码&#xff0c;但是有一个问…...

织梦做的网站打包在dw修改/2022最火营销方案

大小尾数 小尾数&#xff1a;低位字节存储在低内存位置或寄存器的低位地址&#xff0c;高位字节存储在高内存位置或寄存器的高位地址。 大尾数&#xff1a;和小尾数的存储顺序是相反的&#xff0c;低位字节存储在高位地址。 intel采用的是小尾数存储格式&#xff1a; 检测&…...

cnzz网站代做/下载百度网盘app最新版

文章目录一、C的const关键字二、const在类中的含义一、C的const关键字 这里可以分为两种情况&#xff1a; 一种是类似与C语言里面的 const char*&#xff0c;char* const&#xff1b; 一种是C用于类里面限定函数的。 const int* // const关键字 const int MAX_AGE 100; con…...

江桥网站建设/网站排名前十

虽然去年就自学过Java&#xff0c;也写过Android。但是最近又爆出很多问题&#xff0c;很多细节问题&#xff0c;很多基础问题。这让我再次意识到基础的重要性。问题一&#xff1a;子类何时调用父类的构造方法如果你之前问我&#xff0c;我肯定会说&#xff0c;super的时候。。…...