C#语言程序设计解析_第1页
C#语言程序设计解析_第2页
C#语言程序设计解析_第3页
C#语言程序设计解析_第4页
C#语言程序设计解析_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

C#语言程序设计第1章 C#语言及其开发环境1.1 C#简介1.1.1 什么是.NET框架.NET框架(.NET Framework)的主要版本有1.0、2.0、3.0、4.0等,其内容主要包含4部分l 通用语言运行时 (Common Language Runtime,简称CLR):它定义了一个代码运行的环境。CLR运行一种称为通用中间语言的字节码,这个是微软的通用中间语言实现版本。l .NET基础类库:简单地说,.NET基础类库是一套函数库。l .NET开发语言:C#,Visual Basic,C+等。l Visual Studio.NET集成开发环境:它是用于提供程序开发环境的应用程序,包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务。1.1.2 C#语言特点1. 语法简单2. 面向对象3. 与Web应用紧密结合4. 强大的安全机制5. 兼容性1.2 C#语言开发环境1.2.1 Visual Studio.NET开发环境的版本及安装Visual Studio.NET开发环境的主要版本有:2001、2003、2005、2008、2010、2012、2015等。其运行环境为Windows操作系统。通过.NET软件包中安装程序可自行安装.NET类库、CLR、开发语言、开发环境等。1.2.2 Visual Studio.NET 2010开发环境Visual Studio.NET 2010开发环境主要有以下区域组成:菜单、工具箱面板、主编辑区、解决方案面板、属性面板、输出面板。1.3 开始C#的第一步1.3.1 创建控制台应用程序1. 在U盘指定根目录创建一控制台应用程序。2. 打开解决方案资源管理器其中:l AssemblyInfo.cs:保存项目信息。l 引用文件夹:列出了该项目中应用的所有类库。l Program.cs:包含了程序启动的静态方法。代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1 class Program static void Main(string args) Console.WriteLine(第一个控制台应用程序); 说明:1. 各关键字;2. Write和WriteLine方法;3. Ctrl+F5及Dos下其它exe程序的运行方法。习题:创建控制台应用程序,要求输入自己名字,然后打印出欢迎文字。提示:string name = Console.ReadLine(); Console.WriteLine(欢迎+name+光临);1.3.2 创建Windows窗体应用程序1. 在U盘指定根目录创建一Windows应用程序。2. 打开解决方案资源管理器其中:l Resources.resx和Resources.Designer.cs:窗体资源文件。l Settings.settings和Settings.Designer.cs:项目属性配置文件。l Program.cs:包含了程序启动的静态方法。代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;namespace WindowsFormsApplication1 static class Program / / 应用程序的主入口点 / STAThread static void Main() Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1(); 说明:1. STAThread属性;2. Run方法。3. 从工具箱中拖一标签控件到窗体中,并设置相应属性后运行程序。习题:创建Windows窗体应用程序,要求在文本框中输入自己名字,单击命令按钮后,在标签中显示出欢迎文字。1.3.3 创建Web应用程序1. 在U盘指定根目录创建一Web应用程序。2. 打开解决方案资源管理器其中:Web.config:网站配置文件,在首次运行网站时会提示修改该文件。3. 添加一HTML文件,输入信息后,浏览该文件。4. 从工具箱中拖一标签控件到窗体中,并设置相应属性后运行程序。习题:创建Web窗体应用程序,要求在文本框中输入自己名字,单击命令按钮后,在标签中显示出欢迎文字。第2章 C#语法基础C#语言的语法与语言语法基本相同。C#语言在.cs文件的类中书写。2.1 常量和变量2.1.1 声明变量变量命名规则与C语言基本相同。例: int i; int a = 100; char c; string s; string s1 = 这是一串字符;Console.WriteLine(a); Console.WriteLine(s1);2.1.2 声明常量常量一旦初始化后就不能再改变其内容。例: const double PI = 3.1415; / 声明常量 double r = 3.2; / 声明变量 double area = PI * r * r; / 定义变量并计算面积 Console.WriteLine(area); / 输出到控制台中在变量定义赋值格式前加上const关键字就是定义常量。此外,还可在const前加public、private等关键字用以限定常量被访问的范围。2.2 数据类型C#中数据类型可分为两类:值类型:该类型的数据长度固定,存放于栈内。如:int、float等。引用类型:该类型的长度可变,存放于堆中。如:string、数组等。2.3 值类型值类型包括:整数类型、浮点类型、字符类型、布尔类型、结构类型和枚举类型。2.3.1 整数类型C#支持8种整数类型。名称CTS类型说明范围sbyteSystem.SByte8位有符号整数128127(27271)shortSystem.Int1616位有符号整数3276832767(2152151)intSystem.Int3232位有符号整数2312311longSystem.Int6464位有符号整数2632631byteSystem.Byte8位无符号整数0255(0281)ushortSystem.Uint1616位无符号整数065535(02161)uintSystem.Uint3232位无符号整数02321ulongSystem.Uint6464位无符号整数02641例:int s1 = -10; / 声明变量并赋值int s2 = 100; / 声明变量并赋值int s3 = s2 - s1; / 声明变量并设置运算方法/ 输出运算结果Console.Write(计算结果为);Console.WriteLine(s3);2.3.2 浮点类型C#的浮点型包括:float(Single)和double。float类型可表示精度为 7 位、在大约 1.5 1045 到 3.4 1038 的范围内的值。double类型可表示精度为 15 位或 16 位、在大约 5.0 10324 到 1.7 10308 的范围内的值。例: float f; double d = 3.14159;浮点型精度较低,不推荐两个浮点型之间比较大小的判断。2.3.3 decimal类型decimal类型可以表示具有 28 或 29 个有效数字、从 1.0 10-28 到大约 7.9 1028 范围内的值。 decimal类型是采用四舍六入五考虑的银行家舍入法进行计算的,decimal 类型是适合财务和货币计算的 128 位数据类型。说明:float是单精度,double是双精度,decimal是数字型,它们所占的内存空间不一样,表示的位数也不一样。除了科学计算以外,一般不用double型的。对于数字(包括小数)一般用decimal型的。2.3.4 字符类型C#的字符型可以保存单个字符的值。与语言相同,C#中也有转义字符,如:、r等。例:char c1 = C;2.3.5 布尔类型C#的布尔型是bool,其取值包括true和false。例:bool b = true;Console.WriteLine(b);2.3.6 结构类型除去上面介绍的简单值类型之外,用户还可以定义复合值类型。常用的复合值类型包括结构和枚举,首先来看结构。一个结构(struct)是包含多个基本类型或复合类型的统一体,在C#中可以使用struct关键字创建结构,例如,一个学生信息结构如下。 / / 学生信息结构 / public struct Student public long Sid; /学号 public string Sname; /姓名 public double Score; /成绩 结构和类基本相同,其定义位置与类相同。与类相比,结构有如下优点:l 结构占用堆内存,操作效率高。l 结构使用完自动释放内存。l 结构易复制,可使用等号将一结构赋给另一结构。定义好类后,可在如下类中调用Student:class Program static void Main(string args) Student s = new Student(); / 创建一个结构对象 / 设置对象的属性学好姓名成绩 s.Sid = 1; s.Sname = 张三; s.Score = 80; / 输出到控制台中并显示出来 Console.WriteLine(s.Sid); Console.WriteLine(s.Sname); Console.WriteLine(s.Score); 习题:仿照上述示例,自行定义一结构类型(如:学生、课程、教室、汽车等),并在主函数中调用该类型。2.3.7 枚举类型枚举(enum)其实是一个整数类型,用于定义一组基本整数数据,并可以给每个整数指定一个便于记忆的名字。以下代码声明了一个星期枚举类型。例:class Program static void Main(string args) / 声明一个变量 int i = int.Parse(Console.ReadLine(); / 条件分支语句 switch (i) case (int)enumWeek.Sunday: /返回 Console.WriteLine(今天不上班); break; case (int)enumWeek.Monday: /返回 Console.WriteLine(开始上班); break; case (int)enumWeek.Thuesday: /返回 Console.WriteLine(去见客户); break; default: break; / / 星期枚举 / public enum enumWeek Sunday = 0, Monday = 1, Thuesday = 2, Wedensday = 3, Thursday = 4, Friday = 5, Saturday = 6习题:仿照上述示例,自行定义一枚举类型(如:星期、职务、学历等),并在主函数中调用该类型。2.4 引用类型C#不允许在安全代码中使用指针,因此要处理堆中的数据就需要使用引用数据类型,使用new关键字实例化引用数据类型的对象,并指向堆中的对象数据。例如:Obj1 new Obj();Obj1即指向堆中的Obj对象。对象的使用方法将在后面章节中详细介绍,此处,首先了解一下C#中内置的一些引用数据类型。2.4.1 什么是引用类型与值类型不同,引用类型存储的并不是真正的数值,而是数值地址的引用。举个生活中的例子来比较引用类型与值类型。值类型就好比书架上的书籍,看的时候,直接拿过来就可以了。而引用类型就相当于存储在计算机系统中的书目或索引,查到的只是某一本书的索引和信息,而不是真正书架上的书。如果想要获取这本书,就需要根据书的索引信息,找到书架上的位置,然后去取。计算机内存分为两种存储方式:堆和栈。堆存储的是引用类型,而栈存储的则是值类型。2.4.2 引用类型的应用场合引用类型包括了内置引用类型、数组以及类等。1内置引用类型l Object类型:保存引用对象的 32 位(4 字节)地址。可以为 Object 的变量分配任何引用类型(字符串、数组、类或接口)。Object 变量还可以引用任何值类型(数值、Boolean、Char、Date、结构或枚举)的数据。例:int a = 3;Object o = a;Console.WriteLine(o);l String类型:该类型用于存放字符串。字符串是 Unicode 字符的有序集合,用于表示文本。String 对象称为不可变的(只读),因为一旦创建了该对象,就不能修改该对象的值。看来似乎修改了String对象的方法实际上是返回一个包含修改内容的新 String 对象。如果需要修改字符串对象的实际内容,请使用 StringBuilder 类。例:string s = abcdefg;Console.WriteLine(s);2数组数组是相同类型的对象的集合。由于数组几乎可以为任意长度,因此可以使用数组存储数千乃至数百万个对象,但必须在创建数组时就确定其大小。数组元素索引从0开始。例:int array = new int5;int array1 = new int 1, 3, 5, 7, 9 ;int array2 = 1, 3, 5, 7, 9;例:string days = Sun, Mon, Tue, Wed, Thr, Fri, Sat;System.Console.WriteLine(days0); / Outputs Sun例:多维数组/ declare multidimension array (two dimensions) int, array2D = new int2, 3; / declare and initialize multidimension array int, array2D2 = 1, 2, 3 , 4, 5, 6 ; / write elements in a multidimensional array for (int i = 0; i 2; i+) for (int j = 0; j 3; j+) array2Di, j = (i + 1) * (j + 1); / read elements in a multidimensional array for (int i = 0; i 2; i+) for (int j = 0; j 3; j+) System.Console.Write(array2Di, j); System.Console.WriteLine(); 习题:利用数组对十个整数进行排序后输出。3类、接口类是 C# 中功能最为强大的数据类型。像结构一样,类也定义了数据类型的数据和行为。然后,程序员可以创建作为此类的实例的对象。与结构不同,类支持继承,而继承是面向对象编程的基础部分。后续内容将更详细介绍。接口描述的是可属于任何类或结构的一组相关功能。2.5 类型转换在高级语言中,数据类型是很重要的一个概念,只有具有相同数据类型的对象才能够互相操作。很多时候,为了进行不同类型数据的运算(如整数和浮点数的运算等),需要把数据从一种类型转换为另一种类型,即进行类型转换。C#有两种转换方式。l 隐式转换:编译系统自动转换。l 显式转换:需要指定转换类型。2.5.1 隐式转换当两个不同类型的操作数进行运算时,编译器会试图对其进行自动类型转换,使两者变为同一类型。但是,不同的数据类型具有不同的存储空间,如果试图将一个需要较大存储空间的数据,转换为存储空间较小的数据,就会出现错误。例如:int result;long val1=1;long val2=2;result=val1 + val2;C#支持的隐式转换的数据类型如下表:源类型目的类型sbyteshort、int、long、float、double、decimalbyteshort、ushort、int、uint、ulong、float、double、decimalshortint、long、float、double、decimalushortint、uint、long、ulong、float、double、decimalintlong、float、double、decimaluintlong、ulong、float、decimallong、ulongfloat、double、decimalfloatdoublecharushort、int、uint、long、ulong、float、double、decimal2.5.2 显式转换显示类型转换,又叫做强制类型转换。在有些情况下,编译器不能够隐式转换数据类型。但由于某种原因,程序员必须要进行这样的操作,那么,这时就需要显式转换数据类型,强迫编译器进行转换。强制转换的方式有多种,以下举例说明:long a1 = 100;int a2 = (int)a1;string b1=100;int b2 = int.Parse(b1);double c1 = 3.14159;int c2 = Convert.ToInt32(c1);习题:在窗体中编写一对两个数进行加减乘除的计算器。2.5.3 装箱和拆箱隐式和显示类型转换属于不同值类型之间的转换,而如果要在值类型和引用类型之间转换,则需要了解装箱和拆箱的操作。确切地说,装箱和拆箱的过程是值类型与Object类型之间的转换。装箱是把值类型转换为Object类型,而拆箱则相反,把Object类型转换为值类型。如下面的代码就是一个装箱和拆箱的过程,代码如下所示。int a = 0;Object obj = a;int b = (int)obj;2.6 类型检查为了避免在数据类型转换时,出现异常,有必要在类型转换之前,进行类型检查。C#中提供了有关两个类型检查的运算符:is和as。is运算符用来类型转换前的兼容性检查,而as运算符是在转换过程中类型兼容性的检查。本节将介绍这两个运算符及其应用。2.6.1 is运算符is运算符用来检查对象是否与制定的类型兼容或一致,其运算结果为逻辑值。例:int obj = 100;if (obj is int) /可改变int为其它类型进行测试 Console.WriteLine(obj);2.6.2 as运算符as运算符的作用是执行显示类型转换,as运算符首先会检查类型是否兼容,如果兼容则开始转换,并获得正确转换后的结果,否则返回null。所以,使用as运算符可以进行安全的类型转换,而不会在运行时因为异常而终止程序的运行。as运算符的语法格式同is运算符相同,as关键字的前面是变量,后面是类型。语法格式如下所示。变量 as 数据类型如下面的代码所示,使用as运算符转换两种不同类型,获得不同的结果。object obj = hello;string str = obj as string;int i = obj as int;/结果为null例: object o1 = Some String; object o2 = 5; string s1 = o1 as string; string s2 = o2 as string; Console.WriteLine(字符串s1的值为:0, s1); Console.WriteLine(字符串s2的值为:0, s2); /null值2.7 运算符运算符通常是编译器定义的,所以不同语言的运算符写法上可能会不同。但是大多数高级语言的运算符定义同数学一样,有着加、减、乘、除的运算,平方、开放、平方根等运算。除了这些基础数学中的运算之外,还包括了和计算机二进制相关的运算符,如移位运算。每种语言的编译器不同,所以可能定义的写法不同。本节将要介绍C#中运算符的应用,主要包括了算数运算符、赋值运算符、关系逻辑运算符等。2.7.1 算术运算符算数运算是数学中的基础运算,包括了加、减、乘、除等比较熟悉的运算方式。除此之外,还包括了累加和递减的运算,这是数学中没有的。符号示例意义+a+b加法运算ab减法/取负运算*a*b乘法运算/a/b除法运算%a%b取余数+a+累加a递减说明:两个整数相除的结果始终为一个整数。例如,5 除以 2 的结果为 2。若要获取作为有理数或分数的商,应将被除数或除数设置为 float 类型或 double 类型。可以通过在数字后添加一个小数点来隐式执行此操作。例:Console.WriteLine(5/2);Console.WriteLine(5 / 2.1);Console.WriteLine(5.1 / 2);Console.WriteLine(-5 / 2);2.7.2 赋值运算符赋值运算符最常用的就是等号,即将右边变量的值赋值给左边的变量。除此之外,C#中还定义了与赋值相结合的复合运算符:+=、-=、*=、/=、%=。2.7.3 关系与逻辑运算符关系和逻辑运算符大都用在条件判断时。符号示例为真条件aab当a的值大于b值时=a=a=b当a的值大于或等于b值时= =a=b当a的值等于b值时!=a!=b当a的值不等于b值时&a&b当a为真并且b都为真时|a|b当a为真或者b都为真时!a当a为假时2.7.4 其他运算符符号示例意义newnew Class1();创建一个类的实例typeoftypeof(int);获取数据类型说明.Obj.method();获取对象的方法或属性? :(expr1)?(expr2) : (expr3);若expr1则expr2;否则expr3例:/ 声明变量a和变量bint a = 29;int b = 30;/ 声明变量c,并使用条件运算符判断变量a和b的值string c = a b ? 变量a大于变量b : 变量a小于等于变量b;/将结果输出到控制台中Console.WriteLine(c);习题:1使用三元运算符判断分数是否及格。2使用三元运算符嵌套,计算折扣。要求:如果顾客消费满100元,打9折;满300元,打8折;满500元,打7折。2.7.5 运算符的优先级运算符的优先级是指在表达式中哪一个运算符应该首先计算。算术中四则运算时“先乘除,后加减”便是运算符优先级的很好体现。C#根据运算符的优先级确定表达式的求值顺序:优先级高的运算先做,优先级低的操作后做,相同优先级的操作从左到右依次做,同时用小括号控制运算顺序,任何在小括号内的运算最优先进行。级别运算符1new、typeof2赋值运算符3|、&4|、5&6+、(加、减运算符)7/、*、%89+、10+、(正、负号运算符)!11= =, !=, 12, , =13? :2.8 小结本章主要介绍了数据类型的相关知识,包括了值类型和引用类型,并详细讲解了如何使用。在本章的最后,还介绍了类型转换,隐式类型转换和显示类型转换。本章的重点在于如何声明变量和常量,并在实际中应用。本章的难点在于类型转换和数据运算。下一章将介绍程序流程,详细讲解C#中的各种程序语句。第3章 流程控制同其他高级语言类似,在处理事物之间逻辑关系的时候,都需要使用程序结构。C#的程序结构除顺序结构外,主要有分支结构和循环结构,另外,C#还支持无条件跳转。本章将会详细讲解C#程序流程中的各种结构语句,包括条件语句、循环语句、跳转语句和异常语句等。在本章中,将重点学习以下内容:使用条件语句;使用循环语句;使用跳转语句;使用异常语句;3.1 条件语句C#中的条件语句主要有两个:if语句和switch语句。if语句是最常用的判断语句,但是在对同一个变量的不同值做条件判断时,使用switch语句效率会更高一些。3.1.1 if-else语句及应用if语句是最常用的条件语句,通过判断布尔表达式的值,选择执行后面的内嵌语句。if语句有三种格式。1if格式2ifelse格式3ifelse if格式例: string nScore = Console.ReadLine(); if(int.Parse(nScore) = 60) Console.WriteLine(及格); 例: string nScore = Console.ReadLine(); if(int.Parse(nScore) = 60) Console.WriteLine(及格); else Console.WriteLine(不及格); 例: int nScore = int.Parse(Console.ReadLine(); if(nScore 80) Console.WriteLine(优秀); else if(nScore = 60) Console.WriteLine(及格); else Console.WriteLine(不及格); 习题:使用if语句判断输入的用户名和密码是否正确。假设用户名和密码分别为Admin、123。3.1.2 switch语句及应用当程序面临多叉路口时,就可以使用swtich语句进行分支。例如,当对一个学生评估时,可能会有多个选择:60以下、6069、7079、8089、90100,需要视其分数给予不同评语,这时就可以使用swtich语句进行分支。switch语句语法结构为:1. switch(variable)2. 3. case value1:4. statement15. break;6. case value2:7. statement28. break;9. 10. default:11. statement12. break;13. 例: class Program static void Main(string args) int nWeekday = int.Parse(Console.ReadLine(); /使用switch switch (nWeekday) case (int)enumWeek.Monday: Console.WriteLine(客户提案); break; case (int)enumWeek.Thuesday: Console.WriteLine(菲菲的生日); break; case (int)enumWeek.Wedensday: Console.WriteLine(我要shopping); break; case (int)enumWeek.Thursday: Console.WriteLine(去健身房); break; case (int)enumWeek.Friday: Console.WriteLine(向Boss汇报工作); break; case (int)enumWeek.Saturday: Console.WriteLine(我要吃!); break; case (int)enumWeek.Sunday: Console.WriteLine(周末欢); break; default: break; / 创建一个枚举类型enum enumWeek Sunday = 0, Monday = 1, Thuesday = 2, Wedensday = 3, Thursday = 4, Friday = 5, Saturday = 6习题:输入一成绩,根据成绩值输出成绩档次:优、良、中、及格、不及格。要求使用switch case语句实现。3.2 循环语句循环语句又称为迭代语句,是程序中一种很重要的结构。其特点是:在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。3.2.1 while语句及应用当程序需要不停执行某种功能,直到达到某种条件才停止,需要采用循环程序结构。例如,当需要输出100次“我不敢了”的时候,就需要用循环结构来实现。while循环用来在指定的条件内,不断地重覆指定的动作。语法如下:1. while (expression) 2. 3. statement4. 例:求1到100的和。 int s = 0,i=1; while (i = 100) s += i; i+; Console.Write(s);3.2.2 do.while语句及应用例:求1到100的和。int s = 0,i=1; do s += i; i+; while (i = 100); Console.Write(s);3.2.3 for语句及应用for语句同样是用来实现循环结构,同while功能类似,语法为:1. for (expression1; expression2; expression3) 2. 3. statement4. 例:求1到100的和。 int s = 0; for(int i=1;i=100;i+) s += i; Console.Write(s);3.3 使用跳转语句跳转语句提供了程序之间跳转执行的功能。在某些条件和需求下,跳转语句可以使得编写代码更加灵活、方便和有效。C#中的跳转语句包括了break、continue、return和goto等,其中goto语句不建议使用。3.3.1 break语句及应用break语句常常出现在循环语句中,其作用是可以终止当前所在的循环语句。break语句也可以被应用在switch判断条件语句中,可以终止其所在的case条件,并跳出当前switch语句。例: int i; for (i = 0; i 10; i+) Console.WriteLine(循环次数: + i.ToString(); / 判断循环次数是否为8次 if (i = 8) Console.WriteLine(循环8次后跳出for语句); break; 3.3.2 continue语句及应用continue语句经常配合循环语句一起使用,其作用是终止当前循环,而继续下一次循环。与break语句不同的是,continue语句不是终止当前的语句,只是终止当前的循环,继而执行下一次的循环。例: int i; for (i = 0; i 10; i+) if (i 8) continue; Console.WriteLine(i); 习题:1. 求二个整数的最大公约数。2. 判断一个整数是否为素数。3. 7个评委对选手评分,去掉一个最高分和一个最低分,剩下5个评委的平均分为选手的得分。试在7个文本框中输入7个分数,单击一按钮后显示选手得分。3.3.3 return语句及应用return语句一般都是应用在方法中,终止下面的执行代码,并将控制返回给调用方法。return语句还可以返回一个可选值,如果没有返回值,则调用方法为void类型。例: class Program static void Main(string args) int radius = 18; / 声明半径变量 radius / 调用方法CalculateArea(),计算圆的面积,并输出到控制台中 Console.WriteLine(输出结果为:); Console.WriteLine(计算后的面积是 0:0.00, CalculateArea(radius); /* * 计算圆形的面积 * param r 圆的半径 * return 圆的面积 */ static double CalculateArea(int r) double area = r * r * Math.PI; return area; 习题:设有两半径分别为20和10的同心圆,试利用上例求圆面积的函数求两同心圆构成的环形面积。3.4 使用异常语句程序中的异常是指,当程序在执行时遇到错误或者意外行为。使用异常处理语句就可以精确捕获这些异常,以提供更多的信息来解决问题或者给出提示。本节将要介绍C#中的异常处理语句,主要包括两种:try-catch- finally语句和throw语句。3.4.1 try-catch-finally语句及应用try-catch-finally语句常常被应用在异常情况的处理中。

温馨提示

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

评论

0/150

提交评论