CMMI-软件开发代码编程规范模板下载

上传人:新** 文档编号:24639716 上传时间:2021-07-06 格式:DOCX 页数:46 大小:129.54KB
收藏 版权申诉 举报 下载
CMMI-软件开发代码编程规范模板下载_第1页
第1页 / 共46页
CMMI-软件开发代码编程规范模板下载_第2页
第2页 / 共46页
CMMI-软件开发代码编程规范模板下载_第3页
第3页 / 共46页
资源描述:

《CMMI-软件开发代码编程规范模板下载》由会员分享,可在线阅读,更多相关《CMMI-软件开发代码编程规范模板下载(46页珍藏版)》请在装配图网上搜索。

1、广东技术股份有限公司编 程 规 范文件编号HW-SP-IMPT-G01文件状态 草稿 正式发布 正在修改当前版本V1.0拟 制张三日期年 月 日审 核李四日期年 月 日批 准王五日期年 月 日发布日期年 月 日生效日期 年 月 日广东技术股份有限公司修订历史记录 A - 增加 M - 修订 D - 删除变更版本号日期变更类型(A*M*D)修改人摘 要备注1.0A建立编程规范目 录1目的42使用范围43C/C+编程规范43.1文件结构43.2程序的版式83.3命名规则143.4缩进规则174JAVA编程规范194.1代码组织与风格194.2注解204.3命名224.4声明244.5表达式和语句2

2、54.6错误处理和异常事件254.7可移植性254.8复用251 目的定义组织的C/C+,JAVA编程规范,以提高程序的可读性、可靠性。2 使用范围适合于公司采用C/C+、JAVA编程语言开发的所有软件项目。3 C/C+编程规范3.1 文件结构每个C/C+程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。C/C+程序的头文件以“.h”为后缀,C 程序的定义文件以“.c”为后缀,C+程序的定义文件通常以“.cpp”为后缀(也有一些系统以“.cc”或“.cxx”

3、为后缀,这里以Windows平台为准)。3.1.1 版权和版本的声明版权和版本的声明位于头文件和定义文件的开头(参见示例3-1),主要内容有: 版权信息 文件名称、标识符、摘要 当前版本号、作者/修改者、完成日期 版本历史信息示例3-1版本和版权的声明说明:Description一项描述本文件的内容、功能、内部各部分之间的关系及本文件与其它文件关系等。History是修改历史记录列表,每条修改记录应包括修改日期、修改者及修改内容简述。示例:示例3-2版本和版权的声明示例3-4 C+/C定义文件的结构3.1.2 头文件的结构头文件由三部分内容组成: 头文件开头处的版权和版本声明(参见示例 3-1

4、) 预处理块 函数和类结构声明等假设头文件名称为 Sample.h,头文件的结构参见示例 3-3示例3-3C/C+头文件的结构 【规则3-2-1】为了防止头文件被重复引用,应当用 ifndef/define/endif结构产生预处理块 【规则3-2-2】用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索) 【规则3-2-3】用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的目录开始搜索) 【建议3-2-1】头文件中只存放“声明”而不存放“定义”在 C+ 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会

5、带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多么小 【建议3-2-2】不提倡使用全局变量,尽量不要在头文件中出现象 extern int value 这类声明3.1.3 定义文件的结构定义文件有三部分内容:(1) 定义文件开头处的版权和版本声明(参见示例 3-1)(2) 对一些头文件的引用(3) 程序的实现体(包括数据和代码)假设定义文件的名称为 Sample.cpp,定义文件的结构参见示例 3-4。3.1.4 头文件的作用早期的编程语言如 Basic、Fortran没有头文件的概念,C/C+语言的初学者虽然会用使用头文件,但常常不明其理。这

6、里对头文件的作用略作解释:(1) 通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。(2) 头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。3.1.5 目录结构如果一个软件的头文件数目比较多(如超过十个),通常应将头文件和定义文件分别保存于不同的目录,以便于维护。例如可将头文件保存于 include目录,将定义文件保存于 source

7、目录(可以是多级目录)。如果某些头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声明”。为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。3.2 程序的版式版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要构成因素。可以把程序的版式比喻为“书法”。好的“书法”可让人对程序一目了然,看得兴致勃勃。差的程序“书法”如螃蟹爬行,让人看得索然无味,更令维护者烦恼有加。请程序员们学习程序的“书法”,弥补大学计算机教育的漏洞,实在很有必要。3.2.1 空行空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序的布局更加清晰。空行不会

8、浪费内存,虽然打印含有空行的程序是会多消耗一些纸张,但是值得。所以不要舍不得用空行。 【规则 2-3-1】在每个类声明之后、每个函数定义结束之后都要加空行。参见示例2-1(a) 【规则 2-3-2】在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。参见示例 2-1(b )示例2-1(b) 函数内部的空行示例2-1(a) 函数之间的空行3.2.2 代码行 【规则 2-2-1】一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。 【规则 2-2-2】if、for、while、do等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少

9、都要加。这样可以防止书写失误。 【建议 2-2-1】尽可能在定义变量的同时初始化该变量(就近原则)如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用了未被初始化的变量,可能会导致程序错误。本建议可以减少隐患。例如:int width = 10; / 定义并初绐化widthint height = 10; / 定义并初绐化heightint depth = 10; / 定义并初绐化depth示例 2-2(a)为风格良好的代码行,示例 2-2(b)为风格不良的代码行。int width; / 宽度int height; / 高度int depth; / 深度int width

10、, height, depth; / 宽度高度深度x = a + b;y = c + d;z = e + f;X a + b; y = c + d; z = e + f;if (width height)dosomething();if (width =”、“=”、“+”、“*”、“%”、“&”、“|”、“”这类操作符前后不加空格。 【建议 2-3-1】对于表达式比较长的 for语句和 if语句,为了紧凑起见可以适当地去掉一些空格,如for (i=0; i10; i+)和 if (a=b) & (c= 2000) / 良好的风格if(year=2000) / 不良的风格if (a=b) & (

11、c=b&c=d) / 不良的风格for (i=0; i10; i+) / 良好的风格for(i=0;i10;i+) / 不良的风格for (i = 0; I 10; i +) / 过多的空格x = a b ? a : b; / 良好的风格x=aFunction(); / 不要写成b - Function();示例2-3 代码行内的空格3.2.4 对齐 【规则 2-4-1】程序的分界符和应独占一行并且位于同一列,同时与引用它们的语句左对齐。 【规则 2-4-2】 之内的代码块在右边数格处左对齐。示例 2-4(a)为风格良好的对齐,示例 2-4(b)为风格不良的对齐。void Function(i

12、nt x) / program codevoid Function(int x) / program codeif (condition) / program codeelse / program codeif (condition) / program codeelse / program codefor (initialization; condition; update) / program codefor (initialization; condition; update) / program codeWhile (condition) / program codewhile (co

13、ndition) / program code如果出现嵌套的,则使用缩进对齐,如:示例2-4(b) 风格不良的对齐示例2-4(a) 风格良好的对齐3.2.5 长行拆分 【规则 2-5-1】代码行最大长度宜控制在 70至 80个字符以内。代码行不要过长,否则眼睛看不过来,也不便于打印。 【规则 2-5-2】长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。if (very_longer_variable1 = very_longer_variable12)& (very_longer_variable3 = very

14、_longer_variable14)& (very_longer_variable5 Draw(); / 类的成员函数 【规则 3-3-9】用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。例如:int minValue;int maxValue;int SetValue();int GetValue(); 【建议 3-3-1】尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。这是为了防止程序员偷懒,不肯为命名动脑筋而导致产生无意义的名字(因为用数字编号最省事)。3.3.2 简单的 Windows应用程序命名规则本文对“匈牙利”命名规则做了合理的简化

15、,下述的命名规则简单易用,比较适合于 Windows应用软件的开发。 【规则 3-2-1】类名和函数名用大写字母开头的单词组合而成。例如:class Node; / 类名class LeafNode; / 类名void Draw(void); / 函数名void SetValue(int value); / 函数名 【规则 3-2-2】变量和参数用小写字母开头的单词组合而成。例如:BOOL flag;int drawMode; 【规则 3-2-3】常量全用大写的字母,用下划线分割单词。例如:const int MAX = 100;const int MAX_LENGTH = 100; 【规则

16、3-2-4】静态变量加前缀 s_(表示 static)。例如:void Init()static int s_initValue; / 静态变量 【规则 3-2-5】如果不得已需要全局变量,则使全局变量加前缀 g_(表示 global)。例如:int g_howManyPeople; / 全局变量int g_howMuchMoney; / 全局变量 【规则 3-2-6】类的数据成员加前缀 m_(表示 member),这样可以避免数据成员与成员函数的参数同名。例如:void Object:SetValue(int width, int height)m_width = width;m_heigh

17、t = height; 【规则 3-2-7】类的数据成员加前缀h表示变量是一个HANDLE类型的句柄。例如:hFIleHandle3.3.3 C+Builder控件命名规则分类前缀类控件类型单元/容器fm_TForm窗体fa_TFrameFramepanel_TPanel面板按钮btn_HWutton下拉式列表框bbtn_HWiHWutton图片按钮sbtn_TSpeedButton快速按钮文本/输入/选择lab_TLabel标签ed_TEdit文本输入框red_TRichEditRich Edit控件memo_TMemoMemo控件chk_TCheckBoxCheckBoxlb_TLisHW

18、ox列表框rd_TRadioButtonRadioButton图像img_TImage图片框imgl_TImageList图片列表cht_TChart图表菜单mm_TMainMenu主菜单mi_TMenuItem菜单项pop_TPopMenu弹出菜单工具栏HW_TToolBar工具栏HWtn_TToolButton工具条按钮cb_TCoolBarCoolBar网格sg_TStringGrid网格asg_TAdvStringGridAdvStringGrid(第三方控件)布局/信息组织lv_TListViHW列表显示控件tv_TTreeViHW树型结构显示控件tabc_TTabControl分页

19、、选项卡pagc_TPageControlspl_TSplitter分隔条scr_TScrollBar滚动条stat_TStatusBar状态栏3.4 缩进规则在各个编译环境中把Tab键的长度改为4个空格长。大括号单独占一行,但是不缩进。SQL语句的缩进风格(1)查询列表的书写风格(与注释综合考虑)一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进SELECT col1,col2,. colm,coln,. INTO v_col1,v_col2,. v_colm,.(2)WHERE 子句的书写规范每个条件占一行嵌套查询条件书写规范 WHERE con1 AND con2 AND col

20、3 NOT IN ( SELECT col3 FROM t2 WHERE .);控制结构的缩进程序应以缩进形式展现程序的块结构和控制结构。下列保留字的下一行缩进四格,BEGIN、THEN、ELSE、ELSIF、LOOP下列保留字所在行前移四格 END、ELSE、ELSIF、END IF、END LOOP缩进的限制(1)每次缩进标准为 4个空格,可使用 TAB 键。(2)任何一个程序最大行宽不得超过80列,第一行续行语句缩进四格,后续续行语句与第一行续行语句对齐。长语句的下一语句以长语句为对齐基准参照上面规定执行。4 Java编程规范 4.1 代码组织与风格4.1.1 缩进:代码中以TAB 4缩

21、进。4.1.2 长度:单个函数长度不应大于100行(不包括注释行),超过时应当考虑使用子函数。4.1.3 行宽:程序最大行宽一般不超过80列,超过者应折行书写(因编译器、工具兼容问题可以不折行)。4.1.4 间隔:类、方法等之间应以空行相隔,以增加可读性。4.1.5 风格:对每个文件、类、接口、方法等都应有较详细的注释。类、接口、方法的左括号换行并独占一行;各控制、条件、循环的语句级别的左括号紧跟该代码段最后一句后,不单独占行。较长的方法以及类、接口等的右括号后应使用/end .标识其结束。具体参考如下例:/* 文件、包注释*/package user;/* 引用包注释*/import jav

22、a.uitl.*;/* 类注释*/public class User/变量注释private Name;/* 方法注释*/ public String getUserName(String userID) String userName = nHW String(); /语句注释 if ( null != userID) /条件注释 userName = UserBean.getUserName(userID); /end if return userName;/end getUserNameend User4.2 注解4.2.1 基本原则1 注释应该增加代码的清晰度。代码注释的目的是要使代码

23、更易于被同时参与程序设计的开发人员以及其他后继开发人员理解。2 如果你的程序不值得注释,那么它也很可能也不值得运行。3 避免使用装饰性内容。4 保持注释的简洁。5 注释信息不仅要包括代码的功能,还应给出原因。6 尽量不使用行末注释。4.2.2 文件、包注解在每个文件、包的头部都应该对该文件的功能、作用、作者、版权以及修改记录等进行注解。参考如下模板:/* * title 任务队列管理类 * version 1.0 * copyright Copyright (c) 2003-4-18 * company Eastcompeacecom Smart Card Co., Ltd. * author

24、 Jack * date 2003-04-18 * description 管理任务队列 * history * 1. 2005-05-08 Jack 完成该类的编码 * 2. 2005-05-09 david 添加getProperties() */ 4.2.3 类、接口注解在类、接口定义之前当对其进行注释,包括类、接口的目的、作用、功能、继承于何种父类,实现的接口以及重大的修改记录等等,基本依据标准的JavaDoc规范。4.2.4 方法注解依据标准JavaDoc规范对方法进行注释,以明确该方法功能、作用、各参数含义以及返回值等。复杂的算法用/*/在方法内注解出。如: /* * YHPCZL

25、am sql SQL语句 * return ResultSet结果集 * throws SQLException SQL异常 * description 执行查询。 * 该方法调用Statement的executeQuery(sql)方法并返回ResultSet结果集。 */ public ResultSet executeQuery(String sql) throws SQLException 4.2.5 语句注解应对重要的变量加一注释,以说明其含义等。应对不易理解的分支条件表达式加注释。不易理解的循环,应说明出口条件。过长的方法实现,应将其语句按实现的功能分段加以概括性说明。对于异常处理

26、注明正常情况及异常情况或者条件,并说明当异常发生时程序当如何处理。单行语句注解应当比其注解的语句缩进两个字符。4.2.6 注解参考表项目注释部分参数参数类型 参数用来做什么任何约束或前提条件示例字段/属性字段描述 注释所有使用的不变量示例并行事件可见性决策类类的目的 已知的问题类的开发/维护历史、版本注释出采用的不变量并行策略编译单元每一个类/类内定义的接口,含简单的说明 文件名和/或标识信息修改/维护记录版权信息获取成员函数若可能,说明为什么使用滞后初始化接口目的 它应如何被使用以及如何不被使用局部变量用处/目的成员函数注释成员函数做什么以及它为什么做这个 哪些参数必须传递给一个成员函数成员

27、函数返回什么已知的问题任何由某个成员函数抛出的异常可见性决策成员函数是如何改变对象的包含任何修改代码的历史如何在适当情况下调用成员函数的例子适用的前提条件和 后置条件成员函数内部注释控制结构 代码做了些什么以及为什么这样做局部变量难或复杂的代码或代码处理顺序包包的基本原理 包中的类功能和用途包的开发/修改/维护/版本信息版权信息4.3 命名4.3.1 基本原则1 使用可以准确说明变量/字段/类的完整的英文描述符。例如,采用类似 firstName,grandTotal 或 CorporateCustomer 这样的名字。2 采用该领域的术语。如果用户称他们的“客户” (clients) 为“顾

28、客” (customers),那么就采用术语 Customer 来命名这个类,而不用 Client。3 采用大小写混合,提高名字的可读性。一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。4 尽量少用缩写。5 避免使用长名字(最好不超过 15 个字母)。6 避免使用相似或者仅在大小写上有区别的名字。4.3.2 字段1 常量:采用完整的英文大写单词,在词与词之间用下划线连接。2 变量:对不易清楚识别出该变量类型的变量应使用类型缩写作其前缀,如字符串使用strXXX,boolean使用isXXX,hasXXX等等。除第一各个单词外其余单词首字母大写。3 命名时应使

29、用复数来表示它们代表多值。如:orderItems。4 组件/部件:应采用完整的英文描述符命名组件(接口部件),使用匈牙利命名法则。如:btnOK,lblName。5 集合:一个集合,例如数组和矢量,应采用复数命名来表示队列中存放的对象类型。命名应采用完整的英文描述符,名字中所有非开头的单词的第一个字母应大写,适当使用集合缩写前缀。如:orderItems,aryUsers。4.3.3 类、接口应当所有单词首字母大写。应当能间接而确切地反应该类、接口的含义。一般采用名词。4.3.4 方法方法的命名应采用完整的英文描述符,大小写混合使用:所有中间单词的第一个字母大写。方法名称的第一个单词常常采用

30、一个有强烈动作色彩的动词。取值类使用get前缀,设值类使用set前缀,判断类使用is(has)前缀。例: getName()setSarry()isLogin()方法参数建议顺序:(被操作者,操作内容,操作标志,其他)例:public void replace(String sourceStr,String oldStr,String nHWStr)4.3.5 文件、包文件名当与其类严格相同,包名一律小写,多单词以下划线连接。基本包:org.skyinn,所有包、文件都属于此包。4.3.6 命名约定列表操作项命名约定示例参数使用传递值/对象的完整的英文描述符。 userID字段/属性字段采用完

31、整的英文描述,第一个字母小写,任何中间单词的首字母大写。firstName布尔型的获取成员函数所有的布尔型获取函数必须用单词 is(has)做前缀。isString(),hasMoney()类采用完整的英文描述符,所有单词的第一个字母大写。Customer编译单元文件使用类或接口的名字,或者如果文件中除了主类之外还有多个类时,加上前缀 java 来说明它是一个源码文件。Customer.java部件/组件使用完整的英文描述来说明组件的用途,将组件类型使用匈牙利命名法则作其前缀 btnOK,cboTypeList构造函数使用类名Customer()析构函数Java 没有析构函数,但一个对象在垃圾

32、收集时,调用成员函数 finalize() 。finalize()异常通常采用字母 e 表示异常。e静态常量字段(常量)全部采用大写字母,单词之间用下划线分隔。采用静态常量获取成员函数。DEFAULT_NAME获取成员函数被访问字段名的前面加上前缀 get。getUserName()接口采用完整的英文描述符说明接口封装,所有单词的第一个字母大写。使用I前缀,其后使用able,. ible 或者 er等后缀,但这不是必需的。IRunnableIPrompter局部变量采用完整的英文描述符,第一个字母小写,但不要隐藏已有字段。例如,如果有一个字段叫 firstName,不要让一个局部变量叫 fir

33、stName。strName,totalMoney循环计数器通常采用字母 i,j,k 或者 counter,indexi,j,k,count,index包采用完整的英文描述符,所有单词都小写,多个单词以下划线相连。所有包都属于org.skyinnorg.skyinn.quasarorg.skyinn.skyhome成员函数采用完整的英文描述说明成员函数功能,第一个单词尽可能采用一个生动的动词,除第一个单词外,每个单词第一个字母小写。openFile()addUser()设置成员函数被访问字段名的前面加上前缀 set。setName()setPower()4.4 声明4.4.1 包1 packa

34、ge 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。 2 在导入包时当完全限制代码所使用的类的名字,而少用通配符的方式,如:import java.awt.Color;import java.awt.Button;3 在包名下空一行再写import.package com.EP.dev1.personinformationsys.sysmanage.log;import java.io.*;import java.sql.Connection;import com.e

35、p.dev1.personinformationsys.dbsys.dbtools.*;4.4.2 类、接口开括号与闭括号各自独立成行,并对齐,并使用/end .标识。声明顺序(建议):私有字段公有/受保护字段构造函数finalize()公共成员函数被保护成员函数私有成员函数尽力使类的公共和保护接口最小化。在开始编写类的代码之前应先定义该类的公共接口。4.4.3 字段公共和保护的可见性应当尽量避免,所有的字段都应置为私有,由获取和设置成员函数(存取函数)访问。不允许“隐藏”字段,即给局部变量、参数或者字段所取的名字,与另一个更大范围内定义的变量、参数或者字段的名字相同(或相似)。例如,如果把一

36、个字段叫做 firstName ,就不要再生成一个局部变量或者参数叫做 firstName,或者任何类似的名字,如 firstNames 或 fistName。一行代码只声明一个变量,仅将变量用于一件事。4.4.4 方法良好的程序设计应该尽可能减小类与类之间耦合,所遵循的经验法则是:尽量限制成员函数的可见性。如果成员函数没必要公有 (public),就定义为保护 (protected);没必要保护 (protected),就定义为私有 (private)。4.5 表达式和语句1 各功能块间以空行相隔。2 判断中如有常量,则应将常量置与判断式的右侧。如:3 if ( true = isAdmin

37、().4 尽量不使用三目条件判断。5 循环计数器如i,j等需在循环体前声明,避免使用如for( int i = 0; i = N; i+).等语句。6 循环跳转条件当注明清楚。4.6 错误处理和异常事件通常的思想是只对错误采用异常处理:逻辑和编程错误,设置错误,被破坏的数据,资源耗尽,等等。通常的法则是系统在正常状态下以及无重载和硬件失效状态下,不应 产生任何异常。最小化从一个给定的抽象类中导出的异常的个数。对于经常发生的可预计事件不要采用异常。不使用异常实现控制结构。确保状态码有一个正确值。在本地进行安全性检查,而不是让用户去做。4.7 可移植性为保证系统的跨平台性,不得使用任何某平台专有/用的资源、类库等。在代码级也必须同时保证系统的可移植性。必须在UNIX、WINDOWS下都进行测试,并且保证处理结果的一致性。4.8 复用任何可复用的代码、资源等必须打成可重用包。任何从外部源所购买/复用的 Java 类库或者包应是 100% 纯粹的 Java 语言,以确保所用的部件能在所有平台上工作。46

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!