测绘程序设计课件

上传人:29 文档编号:240971339 上传时间:2024-05-21 格式:PPT 页数:83 大小:1.23MB
返回 下载 相关 举报
测绘程序设计课件_第1页
第1页 / 共83页
测绘程序设计课件_第2页
第2页 / 共83页
测绘程序设计课件_第3页
第3页 / 共83页
点击查看更多>>
资源描述
第第 二二 章章 编程基础编程基础第 二 章 编程基础测 绘 程 序 设 计概要内容本章主要介绍了C#语言的基础知识,内容主要包括C#基本语法、数据类型、运算符和表达式。本章是后续章节的基础,学习完本章后,应可以编写简单C#应用程序。概要内容本章主要介绍了C#语言的基础知识,内容主要包括C#基目录目录v2.1C#基本语法v2.2变量简介v2.3C#数据类型v2.4运算符与表达式v小结目录2.1 C#基本语法2.1C#程序结构vC#代码的外观和操作方式与C+和JAVA类似vC#编译器不考虑代码中的空格、回车符或者Tab字符。vC#代码由一系列语句组成,每个语句用分号来结束。vC#是一种块结构的语言,所有的语句都是代码块的一部分。这些块用花括号来界定,代码块可以包含任意多行语句,或者不包含语句。注意花括号不需要带分号。v在C代码中,经常出现注释语句。编译器会忽略这些内容。/XXXXX/*这段代码由XXX编写*/v还需要说一点,C#代码是区分大小写的。必须使用正确的大小写形式输入代码。Console.WriteLine(“helloworld!”);console.WriteLine(“helloworld!”);2.1 C#程序结构C#代码的外观和操作方式与C+和JAV2.1C#基本语法控制台程序基本结构控制台程序基本结构2.1 C#基本语法控制台程序基本结构目录v2.1C#基本语法v2.2变量简介v2.3C#数据类型v2.4运算符与表达式v小结目录2.1 C#基本语法2.2变量简介v数据是程序的必要组成部分,也是程序处理的对象v变量关系到数据的存储。实际上,可以把计算机内存中的变量看作架子上的盒子。72.2 变量简介数据是程序的必要组成部分,也是程序处理的对象2.2变量简介v尽管计算机中所有数据事实上都是相同的东西,但变量有不同的内涵,称为类型(数据类型)。用盒子来类比,盒子有不同的形状和尺寸,某些东西只能放在特定的盒子中。v这个类型系统的另一个原因是,不同类型的数据需要不同的方法来处理。变量限定为不同的类型,可以避免混淆。例如,组成数字图片的0和1序列与组成声音文件的0和1序列,其处理方式是不同的。82.2 变量简介尽管计算机中所有数据事实上都是相同的东西,但2.2变量简介v变量与内存 变变量量创创建建时时,计计算算机机都都会会给给它它分分配配一一块块足足够够大大的的内内存存空空间间,来来保保存存该类型的变量。该类型的变量。相同类型的不同变量总是占据相同大小的内存。相同类型的不同变量总是占据相同大小的内存。不同类型的变量需要分配的内存空间不一样。不同类型的变量需要分配的内存空间不一样。v使用变量使用变量就是声明他们。可以使用的变量类型是无限多的。其原因是可以自己定义类型,存储各种复杂数据。尽管如此,总有一些数据类型是每个人都要使用的简单的预定义类型92.2 变量简介变量与内存9102.3C#数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱102.3 C#数据类型CTS类型112.3.1CTS类型vCTS简介:简介:CTS(Common Type System)公公共共类类型型系系统统,它它定定义义了了可可以以在在中中间间语语言言使使用用的的预预定定义义数数据据类类型型,用用于于.NET语语言言都都可可以以生生成成最最终终基基于于这这些类型的编译代码。些类型的编译代码。公公共共类类型型系系统统不不仅仅指指定定基基本本数数据据类类型型,还还定义了一个内容丰富的类型层次结构。定义了一个内容丰富的类型层次结构。112.3.1 CTS类型CTS简介:12CTS类型层次引用类型值类型内置值类型枚举用户定义的值类型指针类型接口类型自我描述类型委托封箱的值类型用户定义的引用类型数组类类型CTS类型层次结构图12CTS类型层次引用类型值类型内置枚举用户定义指针类型接口132.3C#数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱132.3 C#数据类型CTS类型142.3.2值类型与引用类型v数据类型分为值类型和引用类型两种。从概念上看,值类型直接存储其值,而引用类型存储对值的引用。从在内存中的存储位置上看,值类型变量把数据存储在栈中,引用类型变量把数据存储在堆中。142.3.2 值类型与引用类型数据类型分为值类型和引用类152.3.2值类型与引用类型v值类型与引用类型在内存中的存储int i20inti=20;“hello”strings=“hello”;intj=i;stringt=s;string ssint j20string tt152.3.2 值类型与引用类型值类型与引用类型在内存中的162.3C#数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱162.3 C#数据类型CTS类型172.3.3预定义类型v预定义数据类型是由C#语言和.NET框架提供的,每个预定义类型都映射为CTS中定义的类型。vC#中有15个预定义类型,其中有13个值类型和两个引用类型(string和object)。172.3.3 预定义类型预定义数据类型是由C#语言和.NE182.3.3预定义类型(值类型)v预定义的值类型C#关键字关键字.NET CTS类型类型值类型值类型位数位数SbyteSystem.SByte整数整数8shortSystem.Int16整数整数16intSystem.Int32整数整数32longSystem.Int64整数整数64byteSystem.Byte整数整数8ushortSystem.Uint16整数整数16uintSystem.Uint32整数整数32ulongSystem.Uint64整数整数64floatSystem.Single浮点浮点32doubleSystem.Double浮点浮点64decimalSystem.Decimal高精度小数高精度小数128boolSystem.Boolean布尔值布尔值1charSystem.Char整数整数16说明说明-128127-3276832767-21474836482147483647-9 223 372 036 854 775 8089 223 372 036 854 775 807025506553504 294 967 295018 446 744 073 709 551 615true或或false表示一个表示一个16位位(Unicode)的字符的字符182.3.3 预定义类型(值类型)预定义的值类型C#关键字19(1)shortint类型vShort和int类型分别对应CTS中的int16和int32,当你需要一个整数变量时,可以这样声明:v一些变量名称前的u表示不能在这些类型中存储负数,相应的整数存储范围变大。int myInt=32768;19(1)short int类型int myInt=3220(2)floatdouble类型vFloat和double类型对应CTS中的single和double,当你需要一个浮点数时,而不是整数时可以这样声明:v一些其他的类型bool是C#中最常见的一种变量类型,但编写应用程序的逻辑流程时,一个可以是ture或false的变量具有非常重要的分支作用。2.3.3预定义类型(值类型)double myDouble=3.14159262;20(2)float double类型2.3.3 预定义类212.3.3预定义类型(值类型)(3)char类型v存储单个字符。v一些字符不能直接放在引号中,必须使用转义字符,这些转义字符如下表所示。char的双重身份:的双重身份:char的的具具有有双双重重身身份份。它它表表示示字字符符但但却却被被看看作作是是整整数数家家族族的的一一部部分分,它它表表示示的的值值是是一一个个无无符符号号的的整整数数,范范围围在在065535。它它可可以以参参与与计计算算,并并可可以以隐隐式式转转换换成成int、long、ushort、uint和和ulong。212.3.3 预定义类型(值类型)(3)char类型cha222.3.3预定义类型(值类型)(2)char类型转义字符表222.3.3 预定义类型(值类型)(2)char类型转义字232.3.4预定义类型(引用类型)v预定义的引用类型C#支持两个预定义引用类型,如下表所示:232.3.4 预定义类型(引用类型)预定义的引用类型242.3.4预定义类型(引用类型)(1)object类型vobject类型是从所有内在和用户定义的类型中派生而来的 最 终 父 类 型,所 有 类 型 都 隐 含 地 最 终 派 生 于System.Object类。242.3.4 预定义类型(引用类型)(1)object类(1)object类型vobject类型可用于两个目的:1)使用object引用绑定任何特定子类型的对象,例如:2)object类型执行基本用途的方法,Equals()、GetHashCode()、GetType()和ToString()等等。252.3.4预定义类型(引用类型)int i=20;object o=i;(1)object类型252.3.4 预定义类型(引用类型262.3.4预定义类型(引用类型)(2)string类型v字符串变量是包含字母或数字字符的序列,它可以用来存放计算机或查询操作的输入信息。注意:对组成字符串的字符数没有限制。262.3.4 预定义类型(引用类型)(2)string类272.3.4预定义类型(引用类型)(2)string类型v声明字符串变量:string myStr1=“hello”;string myStr2=“world”;string myStr3=myStr1+myStr2;C#的string类型可以用“”直接连接,结果myStr3=“helloworld”272.3.4 预定义类型(引用类型)(2)string类(2)string类型v字符串中也可以包括转义字符:v结果如下:282.3.4预定义类型(引用类型)string的永恒性C#中,创建一个string对象后,它所代表的字符集不能修改。当把一个字符串变量赋给另一个字符串时,会得到内存中同一个字符串的两个引用。但是,修改其中一个字符串,注意这会创建一个全新的string对象,而另一个字符串没有改变。string sample=“hellonworld”;helloworld(2)string类型282.3.4 预定义类型(引用类型2.3.4预定义类型(引用类型)(2)string类型v请考虑下边的过程:string s1=“a string”;string s2=s1;s1=“another string”;string s1s1string s2s2“anothe string”“a string”对s1的修改是通过String类的各种方法来实现的,预定义的方法不会直接修改内存中的这个String,而是构造一个新的String。所以在表面上看上去象是修改没有影响到原字符串。2.3.4 预定义类型(引用类型)(2)string类型s(2)string类型vverbatim字符串通过加前缀,使编译器严格按照原样对其编译。字符串各种格式和转义字符将按原样输出。如:302.3.4预定义类型(引用类型)string s=“hellonworld”;hellonworld 结果输出:(2)string类型302.3.4 预定义类型(引用类型(2)string类型vverbatim字符串注意:引号是唯一例外,编译器必须将其转义,例如,生成字符串“Hello”的代码如下:输出结果为:312.3.4预定义类型(引用类型)string s=“Hello”;注意:Hello的两边都有3个引号 “Hello”注:转义字符处理一对(2)string类型312.3.4 预定义类型(引用类型322.3C#数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱322.3 C#数据类型CTS类型(1)声明变量v语法:v例如:该语句用public访问级声明int变量i。332.3.5变量modifiers datatype identifier;public int i;(1)声明变量332.3.5 变量modifiers 342.3.5变量(2)标识符(identifier)v标识符是给变量、用户定义的类型和这些类型的成员指定的名字。vC#变量命名的基本规则:变量名首字符必须是字母、下划线(“_”)或“”;其后字符必须是字母、下划线或数字;切忌使用C#关键字。如果需要使用,须在标识符前边加上“”(如abstract)。342.3.5 变量(2)标识符(identifier)352.3.5变量(2)标识符(identifier)v练习:下边哪些变量的命名是正确的 myBigVar 99BottleOfBeer namespace VAR1 _test Its-All-Over带红色下划线的变带红色下划线的变量名是正确的量名是正确的352.3.5 变量(2)标识符(identifier)带红362.3.5变量(2)标识符(identifier)v以下列出了命名变量的一些约定:给变量分配有意义的名称;命名类和方法时使用PascalCase样式,命名变量使用camelCase样式。不要通过大小写的不同来区分变量。变量命名的两种常用大小写样式变量命名的两种常用大小写样式Pascal样式名字中每个单词的第一个单词大写,样式名字中每个单词的第一个单词大写,AverageSpeed;Camel样式与样式与Pascal样式基本相同,不同的是标识符的第一个单样式基本相同,不同的是标识符的第一个单词小写,如词小写,如averageSpeed.362.3.5 变量(2)标识符(identifier)变量(3)初始化变量v变量声明后,我们必须初始化该变量。372.3.5变量class Test static void Main()int myTest=8;System.Console.WriteLine(myTest);Error cs0165:Use of unassigned local variable myTestint myTest;(3)初始化变量372.3.5 变量class TestEr(3)初始化变量v另外,注意初始值要与声明的类型相一致v可以通过附加后缀来指定数值类型382.3.5变量string myString=34.50;/错误string myString=“34.50”;/正确正确(3)初始化变量382.3.5 变量string myStr392.3.5变量(3)初始化变量v可使用的后缀如下表:392.3.5 变量(3)初始化变量402.3.5变量(4)变量的作用域v class Programv v static void Main(string args)v v string myString=string defined in Main;v write();v Console.ReadKey();v v static void write()v v Console.WriteLine(myString=0,myString);v v 402.3.5 变量(4)变量的作用域v static void Main(string args)v v string myString=string defined in Main;v write();v Console.WriteLine(n Now in the Main);v Console.WriteLine(myString=0,myString);v Console.ReadKey();v v static void write()v v string myString=string defined in Write;v Console.WriteLine(myString=0,myString);v 41示例 static void Main(string arg422.3.5变量(4)变量的作用域v变量的作用域是可以访问该变量的代码区域。作用域的确定规则:只要字段所属的类在某个作用域内,其字段也在该作用域内;局部变量存在于表示声明该变量的块语句结束的封闭花括号之前的作用域内;在循环或类似的语句中声明的局部变量存在于该循环体内。422.3.5 变量(4)变量的作用域(5)字段和局部变量v考虑下边的代码:432.3.5变量using System;Class ScopeTest static int j=20;public static void Main()int j=30;Console.WriteLine(j);return;定义了两个j,能通过编译吗?(5)字段和局部变量432.3.5 变量using Syst442.3.5变量(5)字段和局部变量vC使得在变量之间有一个基本的区分,它把声明为类型级的变量看作是字段,而把在方法中声明的变量看作局部变量。v所以前边的代码可以通过编译,运行结果是30!此时,在Main方法中声明的变量j隐藏了同名的类级别的变量。Program.j?442.3.5 变量(5)字段和局部变量Program.j(6)修饰符v修饰符用于限定类型以及类型成员的声明。C#语言共有13种修饰符,按功能可以分成3部分:类修饰符成员修饰符访问修饰符452.3.5变量(6)修饰符452.3.5 变量462.3.5变量(6)修饰符v访问修饰符462.3.5 变量(6)修饰符472.3.5变量(6)修饰符v以下是访问修饰符的一些规则:命名空间总是默认为public;类总是默认为public;类成员默认为private;(与C+不同)对于一个类成员只能使用一个访问修饰符,protectedinternal尽管是2个单词,但它是单个访问修饰符;成员的作用域永远不超出包含它的类。472.3.5 变量(6)修饰符482.3C#数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱482.3 C#数据类型CTS类型v语法:注意:声明常量时必须对其赋值。v例:492.3.6常量const type-name constant=value;const float pi=3.14f;const int earthRadius=6378;语法:492.3.6 常量const type-name c502.3C#数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱502.3 C#数据类型CTS类型512.3.7类型转换隐式转换隐式转换(implicit conversion)p显式转换显式转换(explicit conversion)512.3.7 类型转换(2)显式转换方式:语法如下:例:522.3.7类型转换type variable1=(cast-type)variable2;int x=500;short z=(short)x;(2)显式转换方式:522.3.7 类型转换type v532.3.7类型转换(2)显式转换方式:v考虑下边的代码:decimal d=1234.56M;int x=(int)d;转换的结果是,x值为1234long val=3000000000;int i=(int)val;编译器不会报错,但i中结果却是-1294967296532.3.7 类型转换(2)显式转换方式:decimal542.3.7类型转换(2)显式转换方式:v注意:显式转换是一种危险操作,它可能导致数据丢失,或数据溢出,从而得不到所需的结果,所以在执行显式转换之前一定要清楚自己在做什么。542.3.7 类型转换(2)显式转换方式:552.3.7类型转换(2)显式转换方式:vConvert.ToInt32、int.Parse、int.TryParse、(int)四者都可以将类型转换为int,其区别是:Convert.ToInt32与int.Parse较为类似,实际上Convert.ToInt32内部调用了int.Parse:Convert.ToInt32参数为null时,返回0;int.Parse参数为null时,抛出异常。Convert.ToInt32参数为时,抛出异常;Int.Parse参数为时,抛出异常。Convert.ToInt32可以转换的类型较多;int.Parse只能转换数字类型的字符串。552.3.7 类型转换(2)显式转换方式:562.3C#数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱562.3 C#数据类型CTS类型572.3.8复合类型v除了前面介绍的预定义类型外,C#和.NETFramework还允许用户根据这些简单类型定义复合类型。v与基本类型一样,复合类型可以分为值类型和引用类型572.3.8 复合类型除了前面介绍的预定义类型外,C#和(1)结构(struct)v语法:582.3.8复合类型(值类型)modifier struct identifier:interface member of struct;(1)结构(struct)582.3.8 复合类型(值类型592.3.8复合类型(值类型)(1)(1)结构结构(struct)vmember of struct包括:包括:构造函数构造函数(Constructor)、常数、常数(Destructor)、字段字段(Fields)、方法、方法(Methods)、属性属性(Attribute)、索引、索引(Indexes)、操作符操作符(Operators)和嵌套和嵌套(Nested)类型。类型。592.3.8 复合类型(值类型)(1)结构(struct602.3.8复合类型(值类型)(1)结构(struct)v示例:定义一个水准网间接平差的结构类型,用于保存某条路线的信息,包括:起始点号、终止点号、高差、权。602.3.8 复合类型(值类型)(1)结构(struct61 class Program struct LevelLine public string qPoint;public string zPoint;public double lDispersion;public double lWeight;public double getlWeight()return 1/lWeight;static void Main(string args)LevelLine abc;abc.qPoint=A;abc.zPoint=B;abc.lDispersion=0.25;abc.lWeight=4;Console.WriteLine(0到到1路路线的的权为2,abc.qPoint,abc.zPoint,abc.getlWeight();Console.ReadKey();p程序代码如下:61 class Program 程序代码如下:622.3.8复合类型(值类型)(1)结构(struct)v从功能上看结构就像一个小型的类,但二者还是有很大区别:第一,结构是一个值类型,它存储在栈中,而类是一个引用类型,它存储在堆中。第二,结构不允许继承。第三,在结构中不允许声明一个没有参数的构造函数,而类是允许的。622.3.8 复合类型(值类型)(1)结构(structv第四,在结构中不允许不允许有实例字段初始值设定项。632.3.8复合类型(值类型)public struct Rect public int x1=1;Error CS0573:“Rect.x1”:结构中不能有实例字段初始值设定项第四,在结构中不允许不允许有实例字段初始值设定项。632.3642.3C#数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱642.3 C#数据类型CTS类型(1)装箱(Boxing)v考虑下边的代码:v问题:j不过是栈上一个4字节的值,它是如何调用方法的?652.3.9装箱和拆箱Int j=10;string s=j.ToString();(1)装箱(Boxing)652.3.9 装箱和拆箱 (1)装箱(Boxing)vC#提供了一个有点魔术性的方式装箱!v装箱可以把值类型转换为引用类型,上例中的该转换是隐式进行的,还可以手工转换:662.3.9装箱和拆箱int i=20;object o=i;(1)装箱(Boxing)662.3.9 装箱和拆箱int672.3.9装箱和拆箱(1)装箱(Boxing)v第二条初始化语句中,o包含的引用并不指向i,因为i在栈中,引用指向栈将严重影响程序的健壮性(还会产生潜在的安全漏洞)。v作为替代,在堆中会产生i的一个精确拷贝,并将变量o的引用指向该拷贝这种自动拷贝就是装箱!672.3.9 装箱和拆箱(1)装箱(Boxing)(1)装箱(Boxing)v装箱过程如下图所示682.3.9装箱和拆箱栈堆int i20object oint i=20;object o=i;装箱20(1)装箱(Boxing)682.3.9 装箱和拆箱栈堆i(2)拆箱(Unboxing)v拆箱用于把引用类型转换为值类型,其中引用类型的值转换为值类型。v其语法类似于显式类型转换:692.3.9装箱和拆箱 object o=42;int i=(int)o;(2)拆箱(Unboxing)692.3.9 装箱和拆箱 702.3.9装箱和拆箱(2)拆箱(Unboxing)v拆箱过程如下图所示栈堆object oint i=(int)o;object o=42;42int i=(int)o42拆箱702.3.9 装箱和拆箱(2)拆箱(Unboxing)栈712.3.9装箱和拆箱(2)拆箱(Unboxing)v需要注意的是,在把引用类型转为值类型的时候,必须确保得到的值变量有足够的空间存储值类型中所有的字节。例:long a=33333423;object b=(object)a;int c=(int)b;CLR会抛出一个异常:“未处理的异常:system.InvalidCastException:指定的转换无效”712.3.9 装箱和拆箱(2)拆箱(Unboxing)l目录v2.1C#基本语法v2.2变量简介v2.3C#数据类型v2.4运算符与表达式v小结目录2.1 C#基本语法732.4运算符与表达式前面介绍了如何声明和初始化变量,下面讨论如何处理它们。C#包含许多进行这类处理的运算符。把变量和字面值与运算符组合起来,就可以创建表达式,他们是计算的基本构件。732.4 运算符与表达式前面介绍了如何声明和初始化变量,下742.4.1运算符vC#语言继承了C/C+原有所有运算符,并在此基础上增添了几个新的运算符,详见下页表。v另外,根据运算符所使用的操作数(运算符所操作的变量或常量)个数,可分为3类:一元运算符二元运算符三元运算符742.4.1 运算符C#语言继承了C/C+原有所有运算符75vC#运算符75C#运算符762.4运算符与表达式运算符运算符的优先级762.4 运算符与表达式运算符772.4.2运算符的优先级v运算符的优先级:是指在不同运算符混合使用时,运算进行时的顺序。vC#运算符的优先级如下页表所示。表的顶部的运算符有最高的优先级。772.4.2 运算符的优先级运算符的优先级:是指在不同运算78vC#C#运算符优先级运算符优先级优先级优先级运算符运算符优先级由高到低+,-(前缀),+,-(一元)*,/,%+,-=,*=,/=,%=,+=,-=+,-(后缀)2.4.2运算符的优先级78C#运算符优先级优先级运算符优先级由高到低+,-(前System.ConsoleSystem.Console类类v前面已经使用过Console类,虽然CUI不如GUI或基于Web的前端吸引人,但将程序示例限制在CUI,可以将重点集中在其他方面。vConsole类封装了基于控制台的应用程序的输入、输出和错误流操作。v输入、输出Writeline()Write()(无回车)ReadLine()Read()(一个字符)v格式化控制台输出01嵌入在字符串字面量中花括号语法在内部指定占位符练习:用数学运算符处理变量System.Console类前面已经使用过Console类求三角形面积求三角形面积v海伦公式:其中,v代码分析:海伦公式的表达式:s=Sqr(p-a)*(p-b)*(p-c)*p)p=(a+b+c)/2求三角形面积海伦公式:示例代码示例代码示例代码高斯投影分带计算高斯投影分带计算v高斯投影的分带:高斯投影是我国采用的地图投影方法,它从0子午线起,每隔经差6自西向东分带,成为6带。带号依次编为160。位于各带中央的子午线,称为中央子午线,其经度可按照下式计算:若已知某点的经度L,求该点所在的6带的带号可以用下式计算:N=Int(L+3)/6+0.5)v界面分析:输入带号输出中央经度,输如经度输出带号v代码分析:L=N*6-3;N=int(L+3)/6+0.5)高斯投影分带计算高斯投影的分带:小结小结v本章介绍了创建有效C#应用程序的大量基础知识,讲述了C#的基本语法。v重点讲述变量的用法。描述了变量的含义,阐述了如何创建变量,如何给它们赋值,如何处理它们以及它们包含的值。支持所有工作都是顺序完成的,之后介绍使用循环技术和条件分支控制程序的流程。83小结本章介绍了创建有效C#应用程序的大量基础知识,讲述了C#
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


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

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


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