需求是怎么一步一步变态的

news2024/11/25 5:02:16

最初的需求

需求是处理一些数据,数据例子:
在这里插入图片描述
而界面要显示的样子:
在这里插入图片描述
看起来不太难,可以分解出需求:

  1. 每一列的所有数据要都能参与选择,或者输入
  2. 当一个参数选中之后,比如选中A选中1,则B的选项范围只有3,4,5,6,7;C则只能输入1~16中的一个数

需求很清楚,需要行和列一一对应。简单的过滤就可以了。

需求开始变态

这是后业务说又有些新数据加入进来,他们长这样:

在这里插入图片描述

新加入的D参数有些类似C,但是又有点不一样,D依赖于A,不再是单纯的行对应,这里需要计算。
当然也可以解决,D的初始值,可以根据A的最大值求出来,然后选择的时候,再根据实时的值,实时计算。

接着变态

业务又加了参数:
在这里插入图片描述

新加的参数E是一个条件式的数据,它依赖于B的值。
不过也可以搞,变成表达式:

0<=B<5&&E<=C;5<=B<=16&&E<=C-2;B>16&&E<=C-5

分号表示或者,&&表示并且。计算初始值时,根据B的值找到C的最大值,然后得到E的最大值,然后取并集,得到所有可能范围,这个范围可能是不连续的多个区间。实时选择时,根据已选中的值,再次计算,仍然可以得到可选的范围。

进一步变态

业务又加了三个参数:
在这里插入图片描述
F在选择是是不显示的,G和H是要显示的,但是G和H的和要满足G+H<=F。
这个也可以搞,这个比上面的依赖繁琐一点,多个循环依赖,要检测。
这里所有参数都有个默认规则,就是肯定是大于等于0的。
检测的循环的时候,就把其中一个当0处理,然后求一个一元一次方程,根据定义域得到值域。实时选择时,仍然如此。

没有最变态,只有更变态

业务遇到新的数据:
在这里插入图片描述
一次添加了IJKLMNO。
以为只是复刻了前面的参数,当然还有要求。
I的值是JKL

  • 当I选择J的时候,右侧参数只能有J和M
  • 当I选择K的时候,右侧参数只能有K和N
  • 当I选择L的时候,右侧参数只能有L和O

O还依赖G。

本来是想重新规划参数,加一下互斥组什么的,业务说我就不,我就要在原有的数据格式上录入。
没办法,最后折中
业务想录成这种:
在这里插入图片描述
当然这这三条,实际数据业务录入了1000条,头皮发麻。
硬着头皮搞了,支持参数值为无,当只有无时,不显示这参数。

实际的变态

有超级多的表格,每个表格的参数名字不相同,顺序也不同,值的格式也不同,依赖的参数是多个。
选择的时候要联动更新依赖这个参数的选框,不仅更新值,还要更新范围,更新选项。

做了好久,差不多做完了,使用了math.js和algebra.js前端库
没错,计算是在前端计算的。
https://mathjs.org/index.html
http://algebra.js.org/

  • 使用math.js来计算表达式的值
  • 使用algebra来求方程的解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1029648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《人人都是提示工程师》读书笔记01.PDF

本书旨在介绍提示&#xff08;prompt&#xff09;工程师的工作内容和相关技能。本书首先讲述提示技术的基本工作原理、提示工程师的常用工具、提示技术的基础模式和提示技术的进阶知识&#xff08;包括零样本提示、少样本提示和思维链提示&#xff09;&#xff1b;然后讲解自然…

uni-app跳转到另一个app

第一步&#xff1a; 首先要知道 app的包名 获取方式如下 第二步&#xff1a; 在第一个 demo1 app 一个页面中需要一个按钮去跳转 方法如下 <template><view class"content"><button click"tz">跳转</button></view> </…

【动态规划刷题 16】最长等差数列 (有难度) 等差数列划分 II - 子序列

1027. 最长等差数列 https://leetcode.cn/problems/longest-arithmetic-subsequence/ 给你一个整数数组 nums&#xff0c;返回 nums 中最长等差子序列的长度。 回想一下&#xff0c;nums 的子序列是一个列表 nums[i1], nums[i2], …, nums[ik] &#xff0c;且 0 < i1 <…

C++之浅拷贝、深拷贝、拷贝构造函数、拷贝赋值运算符、自定义的深拷贝函数应用总结(二百二十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

宝塔重装注意事项

欢迎关注我的公众号&#xff1a;夜说猫&#xff0c;让一个贫穷的程序员不靠打代码也能吃饭~ 前言 宝塔8.0版本&#xff0c;宝塔卸载重装&#xff0c;或者重装Linux系统后重新安装宝塔也适用。 不能上来直接就执行安装宝塔脚本&#xff0c;除非之前没有安装过宝塔。 步骤 1、…

短视频源码php

对于php短视频源码而言&#xff0c;视频质量与用户使用体验息息相关&#xff0c;高质量的视频观感更有利于留下用户。但实际上视频质量很容易受到各种因素的影响&#xff0c;接下来我们分析一下php短视频源码中导致视频出现异常的各种原因吧。 所谓短视频源码的原生开发&#…

华为云云耀云服务器L实例评测|华为云上安装kafka

文章目录 华为云云耀云服务器L实例评测&#xff5c;华为云上安装kafka一、kafka介绍二、华为云主机准备三、kafka安装1. 安装什么版本java2. 安装zookeeper服务3. 使用systemctl 管理启动ZooKeeper服务4. 修改kafka配置5. 使用systemctl 管理启动kafka服务6. 创建一个测试 topi…

Springboot 实践(21)服务熔断机制

在微服务架构中&#xff0c;服务众多&#xff0c;通常会涉及到多个服务层的调用&#xff0c;一旦基础服务发生故障&#xff0c;很可能会导致级联故障&#xff0c;继而造成整个系统不可用&#xff0c;这种现象被称为服务雪崩效应。 服务熔断引入熔断器概念&#xff0c;熔断器如果…

libopenssl 实现私钥加密公钥解密

在需要验证可信来源时&#xff0c;需要用到签名验签。因此&#xff0c;需要使用私钥加密&#xff0c;公钥解密&#xff0c;取得被加密的信息。这就会使用到私钥加密&#xff0c;公钥解密的场景了。 参考&#xff1a; https://github.com/openssl/openssl/issues/20493 https:/…

【Python】Pycharm使用anaconda中的PaddleOCR的虚拟环境 卡在loading package list(保姆级图文)

目录 异常表现&#xff1a;解决方法1. 试着使用pytcharm的http代理&#xff08;很确定没用&#xff0c;无法成功&#xff0c;直接看下一步&#xff09;2. conda换国内源&#xff08;换源后重启&#xff1f;不知道有没有用&#xff0c;不确定是否关键&#xff09;3. 在conda中更…

2023年浙工商MBA新生奖学金名单公布,如何看待?

浙工商MBA项目官方最新公布了2023年的非全日制新生奖学金名单&#xff0c;按照政策约定&#xff0c;共分为特等奖学金1名&#xff0c;一等奖学金10名&#xff0c;二等奖学金15名&#xff0c;三等奖学金30名&#xff0c;额度对应3万、1万、0.8万、0.5万不等&#xff0c;主要名单…

c++ 继承与多态

一、c如何解决菱形继承的问题 例子一 菱形继承问题 #include <iostream> #include <string.h> using namespace std; class Animal { public:int m_Age; }; class Sheep : public Animal {}; class Tuo : public Animal {}; class SheepTuo :public Sheep, publ…

phpstudy脚本编写 和sql注入编写

1.phpstudy编写 2.sql注入编写

一、iMove源码解读:初识

引言&#xff1a;随着低代码思想的不断蔓延&#xff0c;除了大企业&#xff0c;中小企业也尝试构建自己的低代码平台&#xff0c;以期降低开发门槛&#xff0c;提高开发效率&#xff0c;降低生产成本。本文中的iMove是一款面向前端开发者的逻辑编排工具&#xff0c;通过它设计出…

【Java 基础篇】Java线程安全与并发问题详解

多线程编程在Java中是一个常见的需求&#xff0c;它可以提高程序的性能和响应能力。然而&#xff0c;多线程编程也带来了一系列的线程安全与并发问题。在本文中&#xff0c;我们将深入探讨这些问题&#xff0c;以及如何解决它们&#xff0c;适用于Java初学者和基础用户。 什么…

机器学习入门教学——损失函数(交叉熵法)

1、前言 我们在训练神经网络时&#xff0c;最常用到的方法就是梯度下降法。在了解梯度下降法前&#xff0c;我们需要了解什么是损失(代价)函数。所谓求的梯度&#xff0c;就是损失函数的梯度。如果不知道什么是梯度下降的&#xff0c;可以看一下这篇文章&#xff1a;机器学习入…

人工智能的未来:技术与道德的交汇

人工智能的未来&#xff1a;技术与道德的交汇 摘要引言技术的前景1. 机器学习的进展2. 自主智能系统 道德考量3. 数据隐私与安全4. 自主决策的伦理 社会影响5. 就业与教育6. 医疗与健康 总结参考资料 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1f466;…

新款 锐科达 SV-2402VP SIP广播音频模块 支持RTP流音频广播

新款 锐科达 SV-2402VP SIP广播音频模块 支持RTP流音频广播 SV-2402VP网络音频模块是一款通用的独立SIP音频功能模块&#xff0c;可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行编解码。 该模块支持多种网络协议和音频编解码协议&#xff0c;可用于VoI…

Spring底层原理之 BeanFactory 与 ApplicationContext

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Spring底层原理 一、 BeanFactory 与 Appli…

华为杯数学建模比赛经验分享第二期——编程手篇

数学建模比赛中编程手是较为重要的角色&#xff0c;不仅需要根据建模手的思路完成代码的编写&#xff0c;还需要与写作手沟通结果分析与呈现。 所以&#xff0c;编程手必须在不同的阶段完成相应的学习&#xff0c;这里我把它分为赛前和赛中。 1、赛前 在短短4天的学习新的代码…