TRIZ经典矛盾矩阵.exe

news2024/11/16 15:35:41

TRIZ经典矛盾矩阵.exe

  • 一、概要
  • 二、技术细节
    • I.函数open_dialog()和open_version_dialog()
    • II.函数resolvent()
    • III.函数Invention_Principle_Content()
  • 三、源文件:[TRIZ经典矛盾矩阵.zip](https://download.csdn.net/download/weixin_46153372/88797934)

一、概要

在这里插入图片描述
  这是一款基于pyqt5开发的用于查询TRIZ经典矛盾矩阵的软件。

  矛盾矩阵是一种工具,可以帮助人们解决技术创新过程中遇到的各种矛盾。它最早由阿奇舒勒先生在1970年提出,后来经过其他人的不断发展和完善,现在已经成为一套比较成熟的理论和方法体系。

  矛盾矩阵的作用是提供一种系统性检索入口,根据系统的改善参数和恶化参数,找到解决特定类型技术矛盾的发明原理。它可以通过分析技术系统中的矛盾,并利用矩阵的形式表达各元素之间的矛盾关系,从而帮助人们更好地理解和解决这些矛盾。使用矛盾矩阵的方法如下:

  1. 确定技术系统中的矛盾:首先需要明确技术系统中存在的矛盾,这可以通过分析系统的功能、性能、成本等方面来确定。
  2. 确定通用工程参数:技术系统中的矛盾通常可以用一些通用工程参数来描述,例如:强度、硬度、稳定性等等。需要根据矛盾确定需要关注的通用工程参数。
  3. 构建矛盾矩阵:根据确定的需要关注的通用工程参数以及其他相关因素,构建一个矛盾矩阵。该矩阵中包含了各种可能的矛盾关系,以及解决这些矛盾的发明原理。
  4. 检索发明原理:在矛盾矩阵中,可以系统性地检索可以解决特定矛盾的发明原理。可以根据矩阵中提供的检索入口,快速找到可能解决问题的发明原理。
  5. 应用发明原理:在检索到可能解决问题的发明原理后,可以将其应用到实际的技术系统中,尝试解决存在的矛盾。

  在使用矛盾矩阵时,需要注意的是,它只是一种工具,不能保证一定能解决问题。但是,通过矛盾矩阵提供的信息和指导,可以帮助人们更有效地发现和解决技术系统中的矛盾。

TRIZ经典矛盾矩阵表.xslx

二、技术细节

I.函数open_dialog()和open_version_dialog()

# 使用说明对话框
def open_dialog(self):
    # 创建对话框实例
    dialog = Instructions_Dialog(self)
    # 显示对话框并等待用户响应
    dialog.exec_()

# 版本对话框
def open_version_dialog(self):
    # 创建对话框实例
    dialog = version_Dialog(self)
    # 显示对话框并等待用户响应
    dialog.exec_()

  代码中,这两个函数(open_dialogopen_version_dialog)的流程看起来比较简单。下面是基于这些代码的分析:

  1. open_dialog函数:

    • 创建一个名为Instructions_Dialog的对话框实例,这个对话框包含一些使用说明和指导信息。
    • 通过调用exec_()方法来显示这个对话框,并等待用户的响应。这个方法会阻塞当前线程,直到用户关闭对话框。
  2. open_version_dialog函数:

    • 创建一个名为version_Dialog的对话框实例,这个对话框用来显示软件的版本信息。
    • 同样,通过调用exec_()方法来显示这个对话框,并等待用户的响应。

  需要注意的是,这些函数并没有明确的返回值,它们的工作主要是显示对话框并等待用户交互。当用户关闭对话框后,exec_()方法会返回,这时就可以根据需要对用户输入进行进一步的处理。

II.函数resolvent()

# 寻找解决方法
def resolvent(self):
    try:
        self.textBrowser.clear()
        self.greetings()        # 软件使用问候语
        data_dict = {'运动物体的重量': 3, '静止物体的重量': 4, '运动物体的长度': 5, '静止物体的长度': 6, '运动物体的面积': 7, '静止物体的面积': 8, '运动物体的体积': 9, '静止物体的体积': 10, '速度': 11, '力': 12, '应力、压强': 13, '形状': 14, '稳定性': 15, '强度': 16, '运动物体的作用时间': 17, '静止物体的作用时间': 18, '温度': 19, '照度': 20, '运动物体的能量消耗': 21, '静止物体的能量消耗': 22, '功率': 23, '能量损失': 24, '物质损失': 25, '信息损失': 26, '时间损失': 27, '物质的量': 28, '可靠性': 29, '测量精度': 30, '制造精度': 31, '作用于物体的有害因素': 32, '物体产生的有害因素': 33, '可制造性': 34, '操作流程的方便性': 35, '可维修性': 36, '适应性、通用性': 37, '系统的复杂性': 38, '控制和测量的复杂性': 39, '自动化程度': 40, '生产率': 41}
        # 打开Excel文件
        workbook = openpyxl.load_workbook(r'D:\python_demo\TRIZ经典矛盾矩阵\statics\TRIZ矛盾矩阵表.xlsx')
        # 选择工作表
        worksheet = workbook['经典矛盾矩阵']
        # 读取单元格内容
        # self.improve_parameter_comboBox.currentText()  改善的通用工程参数
        # self.deterioration_parameters_comboBox.currentText()  恶化的通用工程参数
        cell_value = worksheet.cell(row=data_dict[self.deterioration_parameters_comboBox.currentText()], column=data_dict[self.improve_parameter_comboBox.currentText()]).value
        self.textBrowser.append("解决的发明原理序号为:" + str(cell_value) + "(按优先级排序)")

        # 读取发明原理
        self.Invention_Principle_Content(str(cell_value))

    except EOFError as e:
        self.textBrowser.append(str(e))

  整体架构流程可以归纳为以下几点:

  1. 在一个名为resolvent的方法中,首先清除了textBrowser中的任何先前的内容。
  2. 然后调用greetings函数来显示一些问候语。
  3. 定义了一个名为data_dict的字典,其中包含一些关键词和其对应的数值。
  4. 打开一个Excel文件并选择一个工作表。
  5. 根据用户从两个下拉菜单(self.improve_parameter_comboBox.currentText()self.deterioration_parameters_comboBox.currentText())选择的参数名,从Excel表中读取对应的单元格内容。
  6. 然后,这个读取的值被添加到textBrowser中,显示给用户。
  7. 接下来,使用从Excel表中读取的值作为参数调用Invention_Principle_Content函数。
  8. 如果在上述过程中发生EOFError异常,将在textBrowser中显示该异常的消息。

III.函数Invention_Principle_Content()

# 根据发明原理序号读取发明原理
def Invention_Principle_Content(self, content):
    try:
        # content含有数字
        if any(char.isdigit() for char in content):
            Invention_Principle_list = content.split('、')

            # 打开Excel文件
            workbook = openpyxl.load_workbook(r'D:\python_demo\TRIZ经典矛盾矩阵\statics\TRIZ矛盾矩阵表.xlsx')
            # 选择工作表
            worksheet = workbook['40个发明原理']

            for item in Invention_Principle_list:
                name = worksheet.cell(row=int(item), column=1).value
                method = worksheet.cell(row=int(item), column=2).value
                example = worksheet.cell(row=int(item), column=3).value
                self.textBrowser.append("##############################################################################################")
                self.textBrowser.append("—————————————————————————原理说明————————————————————————")
                self.textBrowser.append("{}、{}:".format(item, name) + "\n" + method)
                self.textBrowser.append("——————————————————————————例子—————————————————————————")
                self.textBrowser.append(example)
                self.textBrowser.append("##############################################################################################")
                self.textBrowser.append(" ")

        # content含有"+"
        elif "+" in content:
            self.textBrowser.append("当矛盾矩阵中的某个元素为+时,表示其中一个元素在某种意义上是另一个元素的矛盾,即它们之间存在相互排斥或相反的关系。例如,在某些情况下,一个元素的存在可能意味着另一个元素的消失,或者一个元素的好可能意味着另一个元素的坏。")

        # content含有"-"
        elif "-" in content:
            self.textBrowser.append("当矛盾矩阵中的某个元素为-时,表示其中一个元素在某种意义上是另一个元素的补充或延伸,即它们之间存在相互依存或相辅相成的关系。例如,在某些情况下,一个元素的存在可能意味着另一个元素的增加或增强,或者一个元素的好可能意味着另一个元素的更好或完善。")

    except EOFError:
        self.textBrowser.append("An exception occurred while reading the invention principle!")

  在给定的代码中,函数Invention_Principle_Content接受一个参数content,并根据该参数的内容执行不同的操作。代码的主要流程是根据输入的内容(content)进行一系列判断,并根据这些判断执行特定的操作。以下是这段代码的基本流程:

  1. 接受一个输入参数content
  2. 判断content是否含有数字。如果有数字,执行以下步骤:
    • 通过split函数以’、'为分隔符将content分割成列表Invention_Principle_list
    • 打开一个Excel文件并选择工作表。
    • 遍历Invention_Principle_list列表中的每个元素(这里假设每个元素代表一个行的索引)。对于每个元素,执行以下步骤:
      • 从Excel表中获取相应的行,并从中获取名称、方法和单元格内容。
      • textBrowser中添加关于原理的说明和示例的信息。
  3. 判断content是否包含"+“。如果包含,向textBrowser中添加一段关于矛盾矩阵中”+"元素含义的说明。
  4. 判断content是否包含"-“。如果包含,向textBrowser中添加一段关于矛盾矩阵中”-"元素含义的说明。
  5. 如果在处理过程中出现EOFError异常(可能是由于输入内容非法或者其他原因引起),向textBrowser中添加一条错误消息。

三、源文件:TRIZ经典矛盾矩阵.zip

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

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

相关文章

Log4j2-24-log4j2 相同的日志打印 2 次

现象 相同的日志打印了两次,且因为日志的配置不同,导致脱敏的情况不一致。 代码与配置 代码 package com.ryo.log4j2.cfg.additivity;import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger;public class SimpleDemo…

蓝桥杯省赛无忧 编程14 肖恩的投球游戏加强版

#include <stdio.h> #define MAX_N 1003 int a[MAX_N][MAX_N], d[MAX_N][MAX_N]; // 差分数组的初始化 void init_diff(int n, int m) {for (int i 1; i < n; i) {for (int j 1; j < m; j) {d[i][j] a[i][j] - a[i-1][j] - a[i][j-1] a[i-1][j-1];}} } // 对差…

oracle数仓rac两个节点查询耗时不一致问题处理

问题描述 数据库节点1查询比节点2查询慢。现场操作应用发现发现同一sql语句在节点2上只要2分钟左右&#xff0c;在节点1&#xff0c;该条sql执行要超过30分钟。 处理过程 根据问题&#xff0c;初步判断是由于错误的执行计划&#xff0c;导致性能问题&#xff0c;但实际上对两…

【云原生】docker容器实现https访问

目录 步骤一&#xff1a;在宿主机生成服务端的公钥证书和私钥文件 步骤二&#xff1a;准备Dockerfile文件构建镜像 步骤三&#xff1a;docker run启动容器并将其映射到443端口 步骤一&#xff1a;在宿主机生成服务端的公钥证书和私钥文件 //生成ca证书 &#xff08;1&#x…

0131-2-关于事件捕获和冒泡

关于事件捕获和冒泡 DOM事件流分为三个阶段&#xff1a;捕获阶段、目标阶段、冒泡阶段 点击目标元素后&#xff0c;不会马上触发目标元素&#xff0c;而是先执行事件捕获&#xff0c;从顶部逐步到目标元素&#xff1b;处于目标阶段的时候触发目标元素&#xff1b;最后冒泡阶段…

随机 Transformer

在这篇博客中&#xff0c;我们将通过一个端到端的示例来讲解 Transformer 模型中的数学原理。我们的目标是对模型的工作原理有一个良好的理解。为了使内容易于理解&#xff0c;我们会进行大量简化。我们将减少模型的维度&#xff0c;以便我们可以手动推理模型的计算过程。例如&…

CSS 3D三角彩色锥形旋转动画效果

<template><view class="pyramid-loader"><view class="wrapper"><span class="side side1"></span> <!-- 金字塔的一个面 --><span class="side side2"></span> <!-- 金字塔的…

基于stm32F4卷积神经网络手写数字识别项目

加我微信hezkz17 可以申请加入嵌入式人工智能技术研究开发交流答疑群&#xff0c;赠送企业嵌入式AI 图像理解/音/视频项目核心开发资料 1 采用CNN BP反向传播算法更新权重系数 2 原理解析 3 实现策略 训练与识别分离&#xff0c;先在电脑上训练好CNN BP神经网络的模型&#…

[Python] 什么是PCA降维技术以及scikit-learn中PCA类使用案例(图文教程,含详细代码)

什么是维度&#xff1f; 对于Numpy中数组来说&#xff0c;维度就是功能shape返回的结果&#xff0c;shape中返回了几个数字&#xff0c;就是几维。索引以外的数据&#xff0c;不分行列的叫一维&#xff08;此时shape返回唯一的维度上的数据个数&#xff09;&#xff0c;有行列…

Java数组-初识数组

签名&#xff1a;但行好事&#xff0c;莫问前程。 文章目录 前言一、数组的概述1、数组中的概念2、数组的特点 二、数组的声明与初始化1、先声明后初始化2、声明的同时直接初始化3、静态初始化数组4、动态初始化数组 三、数组的赋值与取值1、给数组的元素赋值2、遍历数组的元素…

【Midjourney】新手指南:命令

1./ask 向Midjourney提问&#xff0c;不过问题和回答都是英文的&#xff0c;例如&#xff1a; 2./blend 将两张图片合并为一张 ​ 3./describe 上传一张图片&#xff0c;Midjourney会生成四组该图片相关的关键词&#xff0c;可以使用这些关键词再生成图片。 ​ 4./turbo …

缓存之SpringCache整合redis(五)

SpringCache整合redis 一、引入pom二、配置1.springCache自动配置了redis2.配置yml3.开启缓存功能4.测试使用缓存5.缓存保存JSON格式 三、springCache的读写模式1.读模式2.写模式&#xff08;缓存和数据库一致性&#xff09; 一、引入pom <!--springCache依赖 --> <d…

在Meteor Lake上测试基于Stable Diffusion的AI应用

上个月刚刚推出的英特尔新一代Meteor Lake CPU&#xff0c;预示着AI PC的新时代到来。AI PC可以不依赖服务器直接在PC端处理AI推理工作负载&#xff0c;例如生成图像或转录音频。这些芯片的正式名称为Intel Core Ultra处理器&#xff0c;是首款配备专门用于处理人工智能任务的 …

Java EE 5 SDK架构

Java EE 5 SDK架构 大型组织每天都要处理大量数据和多用户的相关事务。为管理该组织如此大型而又复杂的系统,开发了企业应用程序。企业应用程序是在服务器上托管的应用程序,通过计算机网络同时向大量用户提供服务。这种应用程序可采用各种技术开发,如Java EE 5。Java EE 5平…

Git--07--GitExtension

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、GitExtension下载GitExtension官网下载教程 二、GitExtension安装三、GitExtension配置四、GitExtension使用 一、GitExtension下载 官网下载&#xff1a; http…

day38 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

动态规划是前一个状态推导过来的&#xff0c;贪心是局部最优解。 class Solution { public:int fib(int n) {int a0;int b1;int res0;if(n1) return 1;for(int i2;i<n;i){resab;ab;bres;}return res;} }; 可以由前面状态推出后面状态&#xff0c;是动态规划。由于始终只要后…

【正点原子STM32】IWDG 独立看门狗(简介、工作原理、IWDG寄存器配置操作步骤、IWDG溢出时间计算、IWDG配置步骤、独立看门狗流程)

一、IWDG简介 IWDG有什么作用&#xff1f; 二、IWDG工作原理 三、IWDG框图 四、IWDG寄存器 键寄存器&#xff08;IWDG_KR&#xff09;预分频器寄存器 (IWDG_PR)重装载寄存器(IWDG_RLR) 状态寄存器(IWDG_SR) 寄存器配置操作步骤 五、IWDG溢出时间计算 IWDG溢出时间计算公式…

delphi fmxui 做的一些跨平台app

pascal语音显然已经没落&#xff0c;但delphi还在坚挺着&#xff0c;每年都会发布新版本&#xff0c; 主要是做跨平台应用。 如果你觉得qt qml 写android app 比较麻烦&#xff0c;那可以尝试delphi 12&#xff0c;可以用c builder 尝试 android&#xff0c;ios 开发 下面的…

burp靶场--xss下篇【16-30】

burp靶场–xss下篇【16-30】 https://portswigger.net/web-security/all-labs#cross-site-scripting 实验16&#xff1a;允许使用一些 SVG 标记的反射型 XSS ### 实验要求&#xff1a; 该实验室有一个简单的反射型 XSS漏洞。该网站阻止了常见标签&#xff0c;但错过了一些 S…

基于flask的个人博客项目从0到1

项目展示(持续完善中…) 首页 文章时间线页面 笔记页面 留言页面 关于页面 后台页面-文章管理 后台页面-笔记页面 后台页面-分类 后台管理-新增标签 后台管理-标签页面 后台管理-新增标签 后台管理-关于页面 2.项目详述 该博客开源地址点击跳转&#xff0c;该项目已部署上…