TRIZ经典矛盾矩阵.exe

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

svn 安装路径

SVN客户端安装(超详细) 一、SVN客户端安装 1、下载安装包地址:https://tortoisesvn.net/downloads.html 此安装包是英文版的,还可以下载一个语言包,在同界面的下方 一直点击下一步,直到弹出选择红框 然…

You Only Look Once

You Only Look Once 真方便, 一行代码, 直接输出超炫效果图_哔哩哔哩_bilibili使用yolov8中等模型对视频进行分割, 视频播放量 465、弹幕量 0、点赞数 7、投硬币枚数 4、收藏人数 3、转发人数 2, 视频作者 宝安钢铁侠, 作者简介 一个分享国产电子DIY的阿婆主,啥也不会,就想分…

qt5-入门-信号槽理解+QMainWindow

参考: Qt 深入了解信号槽_w3cschool https://www.w3cschool.cn/learnroadqt/wz3t1j47.html Qt MainWindow_w3cschool https://www.w3cschool.cn/learnroadqt/uqjl1j4b.html 本地环境: win10专业版,64位 信号槽 最简单的例子:写一…

spring cache的使用(Redis)

要在Spring Boot应用中使用Redis作为缓存,你需要遵循一些步骤来配置和使用Redis。以下是使用Spring Cache抽象与Redis进行整合的详细说明: 1. 添加依赖 首先,需要在pom.xml中添加Spring Boot的Redis starter依赖以及缓存的starter依赖。这会…

我的创作纪念日和前端碎碎念

机缘 作为一个前端开发者,我一直热衷于将设计和技术相结合,尽可能提升用户体验。我最初成为创作者的初心源于学习记录,把创作当作一个笔记,希望把自己遇到的问题,以及学习到的实用技巧记录下来,方便学习回…

新书速览|Docker与Kubernetes容器运维实战

帮助读者用最短的时间掌握Docker与K8s运维技能 内容简介 随着云计算和容器技术的发展,Docker与Kubernetes已经成为各个企业首选的部署工具,使用它们可以提高系统的部署效率和运维能力,降低运维成本。本书是一本为初学者量身定制的Docker与Kub…

nodejs+vue+mysql校园失物招领网站38tp1

本高校失物招领平台是为了提高用户查阅信息的效率和管理人员管理信息的工作效率,可以快速存储大量数据,还有信息检索功能,这大大的满足了用户和管理员这两者的需求。操作简单易懂,合理分析各个模块的功能,尽可能优化界…

nodejs+vue+ElementUi学生兼职招聘求职系统b8t93

浏览器:谷歌浏览器课题主要分为三大模块:即管理员模块和学生、企业模块,主要功能包括:学生、企业、岗位类型、招聘信息、应聘信息、投诉建议等; 运行软件:vscode 前端nodejsvueElementUi 语言 node.js 框架&#xff1…

【MBtiles数据索引和服务发布】GeoServer改造Springboot番外系列二

xyz地图服务访问示例:http://192.168.1.240:8081/gmserver/raster/xyz/firstWP:Imagery-raster/{z}/{x}/{y}.jpg 访问示例如下: mbtiles目录结构 根据z,x,y获取对应mbtiles文件路径的工具方法 说明:重点是使用getMb…

STM32——I2C

通信协议见(STM32——SPI) 一、I2C协议 1.1 I2C协议介绍; I2C是(Inter IC Bus)是由Philips公司开发的一种通用数据总线; 有多根通信线; 一根SDA(串行通信线)&#xf…

PySpark(一)Spark原理介绍、PySpark初体验及原理

Spark简介 Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎,其特点就是对任意类型的数据进行自定义计算。 Spark VS Hadoop 尽管Spark相对于Hadoop而言具有较大优势,但Spark并…

Three.js 纹理贴图 - 环境贴图 - 纹理贴图 - 透明贴图 - 高光贴图

文章目录 Three.js 纹理贴图纹理贴图 map属性纹理贴图的映射方式 texture.Mapping纹理加载器 THREE.TextureLoader监听单个材质监听多个材质 - LoadingManager类 1. 颜色贴图与材质的颜色2.渲染效果:UV坐标 - 描述纹理贴图的坐标自定义顶点UVgeometry.attributes.uv…

Java 数据抓取

大家好我是苏麟 , 今天聊聊数据抓取 . 大家合理使用 注意,爬虫技术不能滥用,干万不要给别人的系统造成压力、不要侵犯他人权益! 数据抓取 实质上就是java程序模拟浏览器进行目标网站的访问,无论是请求目标服务器的接口还是请求目标网页内容…

python基础——池

池的介绍: 提前创建进程池,防止创建的进程数量过多导致系统性能受到影响,在系统执行任务时,系统会使用池中已经创建进程/线程,从而防止资源的浪费,创建的进程/线程可以让多个进程使用,从而降低…

Unity技术手册-UGUI零基础详细教程-Canvas详解

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

备战蓝桥杯---数据结构与STL应用(入门4)

本专题主要是关于利用优先队列解决贪心选择上的“反悔”问题 话不多说,直接看题: 下面为分析: 很显然,我们在整体上以s[i]为基准,先把士兵按s[i]排好。然后,我们先求s[i]大的开始,即规定选人数…

电源模块欠压保护点测试方法分享 纳米软件

电源欠压保护原理 欠压保护是指当电源电压低于一定值时,电源的保护功能会及时断开电路,避免设备受到损坏。电源欠压保护一般是通过一个或多个传感器来检测电压,当电压低于设定值时就会触发电源的保护功能,断开电路,保护…

Git--07--GitExtension

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

Docker中安装MySql的遇到的问题

目录 一、mysql查询中文乱码问题 1. 进入mysql中进行查看数据库字符集 2. 修改 my.cnf 中的配置 3. 重启mysql容器,使得容器重新加载配置文件 4. 测试结果 二、主从同步中遇到的问题 2.1 Slave_IO_Running:Connecting 的解决方案 1. 确定宿主机防火墙开放my…

嵌入式学习第十四天!(结构体、共用体、枚举、位运算)

1. 结构体: 1. 结构体类型定义: 嵌入式学习第十三天!(const指针、函数指针和指针函数、构造数据类型)-CSDN博客 2. 结构体变量的定义: 嵌入式学习第十三天!(const指针、函数指针和…