Shell脚本代码复杂度度量与分析_第1页
Shell脚本代码复杂度度量与分析_第2页
Shell脚本代码复杂度度量与分析_第3页
Shell脚本代码复杂度度量与分析_第4页
Shell脚本代码复杂度度量与分析_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

20/23Shell脚本代码复杂度度量与分析第一部分脚本复杂度度量标准 2第二部分控制流复杂度分析方法 5第三部分数据流复杂度计算模型 8第四部分圈复杂度测度指标体系 11第五部分代码路径复杂度评估技术 13第六部分模块间复杂度耦合分析 17第七部分代码可维护性度量指标 19第八部分脚本可靠性评价方法 20

第一部分脚本复杂度度量标准关键词关键要点【逻辑代码块个数】:

1.逻辑代码块个数是指脚本中独立的逻辑代码块的数量。

2.每个逻辑代码块包含一个或多个语句,并由控制结构(如if-else、for、while等)或函数定义分隔。

3.逻辑代码块的个数可以反映脚本的结构复杂程度,越多的逻辑代码块意味着脚本的结构越复杂,越难理解和维护。

【代码行数】:

一、圈复杂度(CyclomaticComplexity)

圈复杂度于1976年由ThomasJ.McCabe提出,是衡量脚本复杂度的基本标准之一。圈复杂度是根据控制流图(CFG)计算脚本函数的复杂度,其中控制流图由节点和边组成,节点表示函数中的基本块,边表示函数中的控制流。圈复杂度计算的基本步骤如下:

1.构造控制流图。

2.计算每个节点的出口数目。

3.计算圈复杂度:

```

CyclomaticComplexity=E-N+2

```

其中:

*E:图中边的数目。

*N:图中节点的数目。

圈复杂度越大,脚本函数的复杂度越高。

二、条件复杂度(ConditionalComplexity)

条件复杂度是衡量脚本函数中条件语句复杂度的标准。条件复杂度计算的基本步骤如下:

1.确定脚本函数中的所有条件语句。

2.计算每个条件语句的复杂度:

```

ConditionalComplexity=N+2

```

其中:

*N:条件语句中子句的个数。

3.计算脚本函数的条件复杂度:

```

ConditionalComplexity=Σ(ConditionComplexity)

```

其中:

*Σ:求和符号。

条件复杂度越高,脚本函数的复杂度越高。

三、NPath复杂度(NPathComplexity)

NPath复杂度于1988年由SuzanneHenry和DavidKafura提出,是衡量脚本函数复杂度的又一标准。NPath复杂度计算的基本步骤如下:

1.构造脚本函数的控制流图。

2.计算控制流图中所有可能的路径数目。

3.计算NPath复杂度:

```

NPathComplexity=NPath

```

其中:

*NPath:控制流图中所有可能的路径数目。

NPath复杂度越大,脚本函数的复杂度越高。

四、Halstead度量

Halstead度量是用于衡量软件复杂度的一组度量指标,包括长度度量和难度度量。长度度量主要衡量软件的规模,难度度量主要衡量软件的复杂性。

Halstead度量是一组综合性的度量指标,可以从多个角度衡量脚本的复杂度,但Halstead度量计算复杂度需要对脚本进行词法分析和语法分析,计算过程相对复杂。

五、其他复杂度度量标准

除了上述标准之外,还有其他一些复杂度度量标准,包括:

*代码行数(SourceLinesofCode,SLOC):代码行数是衡量脚本规模的最简单的方法,但代码行数与脚本的复杂度并不完全相关。

*函数个数(NumberofFunctions):函数个数是衡量脚本结构复杂度的简单方法,但函数个数与脚本的复杂度也不完全相关。

*参数个数(NumberofParameters):参数个数是衡量脚本函数复杂度的简单方法,但参数个数与脚本函数的复杂度也不完全相关。

*嵌套层数(NestingLevel):嵌套层数是衡量脚本函数复杂度的简单方法,但嵌套层数与脚本函数的复杂度也不完全相关。

这些复杂度度量标准都具有各自的优缺点,在实际应用中,可以根据具体情况选用适当的度量标准。第二部分控制流复杂度分析方法关键词关键要点控制流复杂度度量方法概述

1.控制流复杂度是指程序控制流的复杂程度,它反映了程序的结构和逻辑的复杂性。

2.控制流复杂度度量方法主要有三种:节点度量、边度量和环度量。

3.节点度量法计算程序中节点的个数,边度量法计算程序中边的个数,环度量法计算程序中环的个数。

控制流复杂度度量方法的分类

1.节点度量方法包括:基本块个数、路径数、环路数、独立路径数等。

2.边度量方法包括:总边数、扇入边数、扇出边数等。

3.环度量方法包括:环路总数、平均环路长度、环路直径等。

控制流复杂度度量方法的应用

1.控制流复杂度度量方法可以用于软件质量评估、软件可靠性评估、软件维护性评估等方面。

2.控制流复杂度度量方法可以帮助软件开发人员识别和消除程序中的潜在缺陷,提高程序的质量和可靠性。

3.控制流复杂度度量方法可以帮助软件维护人员理解和维护程序,降低软件维护的成本。

控制流复杂度度量方法的局限性

1.控制流复杂度度量方法只能衡量程序的静态复杂度,而无法衡量程序的动态复杂度。

2.控制流复杂度度量方法只能衡量程序的局部复杂度,而无法衡量程序的全局复杂度。

3.控制流复杂度度量方法只能衡量程序的结构复杂度,而无法衡量程序语义复杂度。

控制流复杂度度量方法的发展趋势

1.控制流复杂度度量方法正朝着智能化、自动化和综合化的方向发展。

2.控制流复杂度度量方法正在与其他软件度量方法相结合,形成新的综合软件度量体系。

3.控制流复杂度度量方法正在与软件测试方法相结合,形成新的软件测试方法和工具。

控制流复杂度度量方法的前沿研究方向

1.基于机器学习和深度学习的控制流复杂度度量方法。

2.基于程序理解和自然语言处理的控制流复杂度度量方法。

3.基于程序运行时行为的控制流复杂度度量方法。控制流复杂度分析方法

控制流复杂度分析方法是一种度量Shell脚本代码复杂度的常用方法。它通过计算脚本中控制流的复杂度来衡量脚本的复杂度。控制流复杂度通常用以下几个度量标准来衡量:

*圈复杂度(cyclomaticcomplexity):圈复杂度是衡量控制流复杂度最常用的度量标准之一。它计算的是脚本中独立路径的数量。独立路径是指从脚本的开始到结束,不经过任何重复路径的路径。圈复杂度越高,脚本的控制流就越复杂。

*嵌套深度(nestingdepth):嵌套深度是衡量控制流复杂度的另一个常用标准。它计算的是脚本中嵌套的控制结构的深度。嵌套深度越高,脚本的控制流就越复杂。

*条件复杂度(conditionalcomplexity):条件复杂度是衡量控制流复杂度的第三个常用标准。它计算的是脚本中条件语句的数量。条件语句越多,脚本的控制流就越复杂。

控制流复杂度分析方法可以帮助开发人员了解脚本的复杂度,并发现潜在的缺陷。复杂度高的脚本通常更难维护和调试,也更容易出错。通过控制流复杂度分析,开发人员可以发现脚本中复杂的部分,并采取措施降低脚本的复杂度。

控制流复杂度分析方法有很多不同的实现方式。其中一种常用的实现方式是使用抽象语法树(AST)来表示脚本的控制流。AST是一种树形结构,它可以表示脚本的语法结构和控制流结构。通过分析AST,可以计算出脚本的圈复杂度、嵌套深度和条件复杂度。

控制流复杂度分析方法是一种有效的度量Shell脚本代码复杂度的工具。通过控制流复杂度分析,开发人员可以了解脚本的复杂度,并发现潜在的缺陷。这有助于提高脚本的质量,降低脚本的维护成本。

控制流复杂度分析方法的步骤

1.构建脚本的抽象语法树(AST)。AST是一种树形结构,它可以表示脚本的语法结构和控制流结构。

2.计算AST中节点的数量。节点数量表示脚本中语句的数量。

3.计算AST中边的数量。边数量表示脚本中控制流转移的数量。

4.计算脚本的圈复杂度。圈复杂度是AST中独立路径的数量。

5.计算脚本的嵌套深度。嵌套深度是AST中嵌套的控制结构的深度。

6.计算脚本的条件复杂度。条件复杂度是AST中条件语句的数量。

控制流复杂度分析方法的优点

*简单易懂。控制流复杂度分析方法的原理简单易懂,即使是非专业人士也可以理解。

*计算方便。控制流复杂度分析方法的计算方法简单,可以很容易地实现。

*通用性强。控制流复杂度分析方法可以用于分析任何类型的Shell脚本。

控制流复杂度分析方法的缺点

*准确性有限。控制流复杂度分析方法只能衡量脚本的控制流复杂度,而不能衡量脚本的其他复杂度因素,如数据复杂度和算法复杂度。

*粒度较粗。控制流复杂度分析方法只能衡量脚本的整体复杂度,而不能衡量脚本中特定部分的复杂度。

控制流复杂度分析方法的应用

控制流复杂度分析方法可以用于以下几个方面:

*代码审查。在代码审查过程中,可以利用控制流复杂度分析方法来发现脚本中复杂的部分,并要求开发人员对这些部分进行改进。

*质量保证。在质量保证过程中,可以利用控制流复杂度分析方法来衡量脚本的质量。复杂度高的脚本通常更难维护和调试,也更容易出错。

*性能优化。在性能优化过程中,可以利用控制流复杂度分析方法来发现脚本中性能瓶颈。复杂度高的脚本通常性能较差。第三部分数据流复杂度计算模型关键词关键要点【数据流复杂度计算模型】:

1.数据流复杂度计算模型是度量Shell脚本代码复杂度的重要方法之一,它通过分析Shell脚本代码中数据流的走向来计算代码的复杂度。

2.数据流复杂度计算模型的计算方法有多种,其中最常用的是控制流图方法和数据流图方法。

3.控制流图方法是将Shell脚本代码转换成控制流图,然后根据控制流图的结构来计算代码的复杂度。

4.数据流图方法是将Shell脚本代码转换成数据流图,然后根据数据流图的结构来计算代码的复杂度。

【循环复杂度计算模型】:

数据流复杂度计算模型

#概述

数据流复杂度计算模型是一种度量Shell脚本程序复杂度的模型。该模型基于程序中的数据流来计算程序的复杂度。数据流复杂度计算模型认为,程序的复杂度与程序中数据流的复杂度成正比。因此,可以通过计算程序中数据流的复杂度来计算程序的复杂度。

#基本概念

数据流复杂度计算模型的基本概念包括:

*数据流:数据流是指程序中数据在不同变量、函数和语句之间流动的情况。

*数据流图:数据流图是一种表示程序中数据流的图。数据流图中,结点表示变量、函数和语句,边表示数据在结点之间的流动。

*数据流复杂度:数据流复杂度是指程序中数据流的复杂度。数据流复杂度可以通过计算数据流图的复杂度来计算。

#数据流复杂度计算模型的定义

数据流复杂度计算模型的定义如下:

```

程序的复杂度=数据流图的复杂度

```

其中,数据流图的复杂度可以通过以下公式计算:

```

数据流图的复杂度=数据流图中结点的数量+数据流图中边的数量

```

#数据流复杂度计算模型的应用

数据流复杂度计算模型可以用于以下方面:

*评估程序的复杂度:数据流复杂度计算模型可以用于评估程序的复杂度。通过计算程序的数据流复杂度,可以了解程序的复杂程度。

*比较程序的复杂度:数据流复杂度计算模型可以用于比较不同程序的复杂度。通过比较不同程序的数据流复杂度,可以了解不同程序的复杂程度。

*优化程序的复杂度:数据流复杂度计算模型可以用于优化程序的复杂度。通过分析程序的数据流复杂度,可以发现程序中复杂度较高的部分,并对这些部分进行优化,从而降低程序的复杂度。

#数据流复杂度计算模型的优缺点

数据流复杂度计算模型具有以下优点:

*易于理解:数据流复杂度计算模型易于理解,不需要太多专业知识。

*易于计算:数据流复杂度计算模型易于计算,只需要计算数据流图的复杂度即可。

*准确性高:数据流复杂度计算模型的准确性较高,可以较为准确地反映程序的复杂度。

数据流复杂度计算模型也具有以下缺点:

*只能度量程序的静态复杂度:数据流复杂度计算模型只能度量程序的静态复杂度,而无法度量程序的动态复杂度。

*无法度量程序的并发复杂度:数据流复杂度计算模型无法度量程序的并发复杂度。第四部分圈复杂度测度指标体系关键词关键要点【圈复杂度测度指标体系】:

1.圈复杂度测度指标体系是一种用于度量Shell脚本复杂度的指标体系,它由多个指标组成,每个指标都反映了Shell脚本的某个特定方面。

2.圈复杂度最常用的度量指标是环状复杂度,它是指Shell脚本中独立执行路径的数量,由于复杂度高,不容易理解其含义,被广泛应用于软件测试、程序设计等领域。

3.圈复杂度另一常用的度量指标是条件复杂度,它是指Shell脚本中条件语句的数量,在不同情况下,返回值可能会不同,从而使得程序更难以控制。

【依赖关系测度指标体系】:

#Shell脚本代码复杂度度量与分析

圈复杂度测度指标体系

圈复杂度(CyclomaticComplexity)是由ThomasJ.McCabe于1976年提出的,用来衡量程序控制流的复杂程度,是判断程序的可读性和易维护性的重要指标之一。圈复杂度主要考察程序中的决策点个数,决策点越多,程序的复杂度就越高。

#基本圈复杂度

基本圈复杂度(EssentialCyclomaticComplexity)是圈复杂度的基本形式,它只考虑程序中的顺序结构、选择结构和循环结构,而忽略其他控制结构,如跳转、goto等。基本圈复杂度的计算公式如下:

$$V(G)=E-N+2$$

其中:

*V(G)是程序的基本圈复杂度

*E是程序中的边的数量

*N是程序中的节点的数量

#扩展圈复杂度

扩展圈复杂度(ExtendedCyclomaticComplexity)是在基本圈复杂度的基础上,增加了对程序中其他控制结构的考虑,如跳转、goto等。扩展圈复杂度的计算公式如下:

$$V'(G)=E-N+P+1$$

其中:

*V'(G)是程序的扩展圈复杂度

*E是程序中的边的数量

*N是程序中的节点的数量

*P是程序中goto语句的条数

#圈复杂度的度量指标体系

圈复杂度测度指标体系是一种综合利用多种圈复杂度指标来衡量程序复杂度的指标体系。圈复杂度测度指标体系包括以下几个指标:

*基本圈复杂度:反映程序中顺序结构、选择结构和循环结构的复杂程度。

*扩展圈复杂度:反映程序中所有控制结构的复杂程度。

*圈复杂度密度:反映程序中每行代码的圈复杂度,计算公式为圈复杂度除以代码行数。

*圈复杂度分布:反映程序中圈复杂度的分布情况,可以绘制圈复杂度分布图来展示。

*圈复杂度趋势:反映程序中圈复杂度的变化趋势,可以绘制圈复杂度趋势图来展示。

圈复杂度测度指标体系可以帮助开发人员识别程序中复杂的模块,并采取措施降低其复杂度,从而提高程序的可读性和易维护性。第五部分代码路径复杂度评估技术关键词关键要点循环复杂度

1.循环复杂度衡量循环体内的执行路径数量,是评估循环复杂度最常用的指标之一。

2.循环复杂度越高,表示循环体内的执行路径越多,程序的可维护性和可读性越差。

3.循环复杂度可以通过计算循环体内的独立路径数量来度量,也可以通过计算循环体内的嵌套循环层数来度量。

决策复杂度

1.决策复杂度衡量决策语句中可能存在的执行路径数量,是评估决策复杂度最常用的指标之一。

2.决策复杂度越高,表示决策语句中可能存在的执行路径越多,程序的可维护性和可读性越差。

3.决策复杂度可以通过计算决策语句中条件分支的数量来度量,也可以通过计算决策语句中嵌套决策层数来度量。

函数复杂度

1.函数复杂度衡量函数体内执行路径的数量,是评估函数复杂度最常用的指标之一。

2.函数复杂度越高,表示函数体内执行路径越多,程序的可维护性和可读性越差。

3.函数复杂度可以通过计算函数体内独立路径的数量来度量,也可以通过计算函数体内嵌套函数层数来度量。

嵌套复杂度

1.嵌套复杂度衡量程序中嵌套结构的深度,是评估程序复杂度最常用的指标之一。

2.嵌套复杂度越高,表示程序中嵌套结构越深,程序的可维护性和可读性越差。

3.嵌套复杂度可以通过计算程序中嵌套结构的层数来度量,也可以通过计算程序中嵌套函数的层数来度量。

模块复杂度

1.模块复杂度衡量模块中函数和变量的数量,是评估模块复杂度最常用的指标之一。

2.模块复杂度越高,表示模块中函数和变量越多,程序的可维护性和可读性越差。

3.模块复杂度可以通过计算模块中函数的数量和变量的数量来度量,也可以通过计算模块中嵌套模块的层数来度量。

程序复杂度

1.程序复杂度衡量程序整体的复杂度,是评估程序复杂度最常用的指标之一。

2.程序复杂度越高,表示程序整体越复杂,程序的可维护性和可读性越差。

3.程序复杂度可以通过计算程序中函数的数量、变量的数量、嵌套结构的深度、模块的数量等指标来度量,也可以通过计算程序中执行路径的数量来度量。代码路径复杂度评估技术概述

代码路径复杂度,又称圈复杂度,是衡量代码复杂度的常用指标之一。它表示代码中独立执行路径的数量,是程序执行流程图上连通路径的条数。代码路径复杂度度量了代码的控制流复杂度,反映了代码中分支和循环语句的使用情况。代码路径复杂度越高,代码越复杂,越难理解和维护。

代码路径复杂度评估技术

代码路径复杂度的评估技术有多种,其中最常用的是[圈复杂度(CyclomaticComplexity)](/wiki/Cyclomatic_complexity)和[条件复杂度(ConditionComplexity)](/wiki/Condition_complexity)。

圈复杂度

圈复杂度是衡量代码路径复杂度最常用的指标。它表示代码中独立执行路径的数量,可通过以下公式计算:

```

圈复杂度=分支语句数+1

```

分支语句包括`if`、`elseif`、`switch`、`for`、`while`、`dowhile`等。

条件复杂度

条件复杂度是衡量代码路径复杂度的另一个常用指标。它表示代码中条件语句的数量,可通过以下公式计算:

```

条件复杂度=条件语句数+1

```

条件语句包括`if`、`elseif`、`switch`等。

代码路径复杂度评估技术的应用

代码路径复杂度评估技术可以用于以下方面:

*代码的可维护性分析

*代码的可测试性分析

*代码的可读性分析

*代码的安全性分析

代码路径复杂度评估技术的优缺点

代码路径复杂度评估技术的优点包括:

*简单易懂

*计算方便

*与代码的执行时间和空间复杂度相关

代码路径复杂度评估技术的缺点包括:

*只度量了代码的控制流复杂度,没有度量数据流复杂度

*没有考虑代码的规模和结构

*不能反映代码的语义复杂度

总结

代码路径复杂度评估技术是衡量代码复杂度的常用指标之一。它可以用于代码的可维护性分析、代码的可测试性分析、代码的可读性分析和代码的安全性分析。代码路径复杂度评估技术简单易懂、计算方便,但只度量了代码的控制流复杂度,没有度量数据流复杂度,没有考虑代码的规模和结构,不能反映代码的语义复杂度。第六部分模块间复杂度耦合分析关键词关键要点【模块间复杂度耦合分析】:

1.模块间复杂度耦合分析是指分析软件系统中模块之间的复杂度和耦合程度。复杂度是指模块内部的复杂程度,耦合度是指模块之间相互依赖的程度。

2.模块间复杂度耦合分析可以帮助开发人员了解软件系统的结构和设计,并识别可能存在问题的模块。

3.模块间复杂度耦合分析可以通过多种方法进行,包括:

*McCabe度量:计算模块的圈复杂度和路径复杂度。

*Halstead度量:计算模块的运算符数、操作数数、长度和体积。

*Fan-in和Fan-out度量:计算模块的传入依赖关系数和传出依赖关系数。

【模块化设计】:

模块间复杂度耦合分析

#模块间复杂度耦合的概念

在软件工程中,模块间复杂度耦合是模块之间相互依赖的程度。复杂度耦合的高低直接影响软件的维护性和可扩展性。

模块间复杂度耦合的度量方法有很多,其中一种比较常见的方法是模块间调用复杂度耦合。模块间调用复杂度耦合是通过计算模块之间调用的次数来度量模块之间的复杂度耦合。

#模块间复杂度耦合的度量

模块间复杂度耦合的度量方法有很多,其中一种比较常见的方法是模块间调用复杂度耦合。模块间调用复杂度耦合是通过计算模块之间调用的次数来度量模块之间的复杂度耦合。

模块间调用复杂度耦合的计算方法如下:

```

CC(M1,M2)=C(M1,M2)+C(M2,M1)

```

其中,

*CC(M1,M2)表示模块M1和模块M2之间的复杂度耦合。

*C(M1,M2)表示模块M1调用模块M2的次数。

*C(M2,M1)表示模块M2调用模块M1的次数。

#模块间复杂度耦合的分析

模块间复杂度耦合的分析可以帮助软件工程师了解软件的结构,并发现软件中存在的问题。软件工程师可以通过分析模块间复杂度耦合来:

*识别软件中的高复杂度耦合模块。

*分析高复杂度耦合模块之间的依赖关系。

*发现软件中存在的问题,例如循环依赖、过度耦合等。

*制定相应的措施来降低软件的复杂度耦合。

#模块间复杂度耦合降低的方法

降低模块间复杂度耦合的方法有很多,其中一些常见的方法包括:

*使用松散耦合的方式来设计软件。

*使用接口来隔离模块之间的依赖关系。

*避免循环依赖。

*避免过度耦合。

*使用设计模式来降低模块之间的复杂度耦合。

通过降低模块间复杂度耦合,可以提高软件的维护性和可扩展性,并降低软件开发的成本。第七部分代码可维护性度量指标关键词关键要点【代码复杂度度量指标】:

1.代码复杂度是衡量代码可维护性的重要指标之一,包括代码行数、圈复杂度、函数个数、函数长度等。

2.代码复杂度越高,代码越难理解和维护,也更容易出错。

3.代码复杂度度量可以帮助开发者识别代码中潜在的问题,并及时采取措施进行改进。

【代码可读性度量指标】:

代码可维护性度量指标

代码的可维护性是衡量代码易于理解、修改和扩展的程度。代码的可维护性对于软件的长期发展和维护非常重要。

代码可维护性度量指标可以分为以下几类:

*结构性度量指标:度量代码的结构和组织,例如,代码的模块化程度、耦合度和内聚度等。

*认知度量指标:度量代码的可读性、可理解性和可修改性,例如,代码的注释率、命名规范、代码的复杂度和深度等。

*过程性度量指标:度量代码开发和维护过程中的一些过程,例如,代码的版本控制、缺陷跟踪、测试覆盖率等。

以下是一些常用的代码可维护性度量指标:

*模块化程度:度量代码被分解成独立模块的程度。模块化程度高的代码更容易理解、修改和扩展。

*耦合度:度量模块之间相互依赖的程度。耦合度高的代码难以理解、修改和扩展。

*内聚度:度量模块内部元素之间的相关程度。内聚度高的代码更容易理解、修改和扩展。

*注释率:度量代码中注释的数量。注释率高的代码更容易理解和修改。

*命名规范:度量代码中标识符的命名是否符合规范。命名规范统一的代码更容易理解和修改。

*代码复杂度:度量代码的复杂程度。代码复杂度高的代码难以理解、修改和扩展。

*代码深度:度量代码的嵌套深度。代码深度深的代码难以理解、修改和扩展。

*版本控制:度量代码的版本控制情况。版本控制完善的代码更容易维护和扩展。

*缺陷跟踪:度量代码的缺陷跟踪情况。缺陷跟踪完善的代码更容易修复和维护。

*测试覆盖率:度量代码的测试覆盖率。测试覆盖率高的代码更容易发现和修复缺陷。

这些代码可维护性度量指标可以帮助软件开发人员识别代码的可维护性问题,并采取措施提高代码的可维护性。第八部分脚本可靠性评价方法关键词关键要点【软件复杂性度量模型】:

1.软件复杂性度量模型是用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论