第11章.ppt

大学VISUAL BASIC程序设计教程-课件PPT

收藏

资源目录
跳过导航链接。
大学VISUALBASIC程序设计教程-课件PPT.zip
VISUAL BASIC程序设计教程-PPT演示文稿
VISUAL BASIC程序设计教程-PPT课件文件
VISUAL BASIC程序设计教程-大学教学资料
(课件资料)VISUAL BASIC程序设计教程
压缩包内文档预览:(预览前20页/共41页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:21836467    类型:共享资源    大小:5.82MB    格式:ZIP    上传时间:2019-09-06 上传人:QQ24****1780 IP属地:浙江
25
积分
关 键 词:
大学VISUAL BASIC程序设计教程-课件PPT 大学 visual basic 程序设计 教程 课件 ppt
资源描述:
大学VISUAL BASIC程序设计教程-课件PPT,大学VISUAL,BASIC程序设计教程-课件PPT,大学,visual,basic,程序设计,教程,课件,ppt
内容简介:
11.1 类的创建与应用,11.2 系统对象,11.3 文件系统对象模型,第11章 面向对象的编程,退出,11.1 类的创建与应用,11.1.1类模块的基本概念,11.1.2 类的创建过程,返回,退出,11.1.3 对类的访问,11.1.1类模块的基本概念,在面向对象的程序设计中,类是进行数据封装和数据隐藏的工具。 类是对象的归纳和抽象。 类与过程既有共同之处,也有着本质的区别。 在VB6.0中,类是种通用代码,通过类模块建立。它是关于某个对象的外观(即属性)和性能(即方法)的描述。 类模块与窗体十分类似,只是在运行期间类模块总是不可见的,而窗体是可见的,可以说类模块是一种没有可视界面的控件。每个类模块定义一个类,类模块中的Sub和Function函数过程是类的方法,类模块中的模块层变量和属性过程是类的属性。 用类模块定义类的主要任务就是建立在运行期间由对象使用的属性和方法。面向对象程序设计的主要概念之一,就是把与特定对象有关的所有数据和过程集合在一起,这就是把所有对象的属性和方法定义在一个类模块中的原因。,11.1.2 类的创建过程,创建类的基本步骤为:,(1)插入一个类模块,(2)定义类的属性,(3)添加类的方法,(4)响应缺省事件和创建自定义事件,例11-1:某单位根据销售人员的销售额决定奖金额。在数据文件“c:nemployee.dat”中存放着雇员编号、姓名、销售额和奖金。创建一个应用程序,当单击窗体上的“销售情况查询”按钮时,要求用户在InputBox框中输入姓名和密码来查询有关资料。参见图11-1。 下面结合这一实例,介绍类的创建过程和使用方法。,1.插入一个类模块 新建一个工程,单击“工程 | 添加类模块”命令,在“添加类模块”对话框中的“新建”标签中选择“类模块”,插入类模块,可以在“工程资源管理器”中看到其图标,新类的缺省“名称”属性为Class1,这里将其改为bonusClass,且保存到磁盘上时默认名为bonusClass.Cls。,图11-1运行界面,图11-2 类的创建,2.定义类的属性 (1)使用公共变量 使用公共变量定义类的属性应在类模块的声明部分进行,其格式为: Public 属性名 As 类型 (2)使用属性过程 使用属性过程定义属性的步骤: (1)单击“工程 | 添加过程”命令,打开 “添加过程”对话框。 (2)在名称栏类输入过程的名称employee,该名称将成为创建对象后的属性名。 (3)选中“属性”单选按钮后,单击“确定”按钮,在代码窗口将显示该属性过程的框架,参见图11-3。,图11-3 “添加过程”对话框 图11-4 类模块中属性过程框架,下面就是采用属性过程在该程序的类模块bonusClass中定义lemployee属性和lpassword属性: Private memployee() As String Private mpassword() As String Public Property Get lemployee() As String() lemployee = memployee End Property Public Property Let lemployee(arr() As String) memployee = arr End Property Public Property Get password() As Variant lpassword = mpassword End Property 从上面的代码可知,lemployee属性是可读写的,lpassword属性是只读的。这里,在类模块bonusClass的声明部分,将memployee和mpassword声明为字符数组变量(当然可以使用一般变量,如本例中如果不同的用户使用同一个密码,就可以将声明部分lpassword()后的()去掉),用于在属性过程之间传递数据,而对类模块之外的应用程序而言是不可见的,因而类模块中的数据具有隐蔽性。 Lemployee属性是可读写的,因而可以在类模块外部改变其属性值,而在类模块之外对lpassword属性的改变是无效的。,3.添加类的方法 窗体和图片框具有Print方法,列表框和组合框具有AddItem方法。同样,由类创建的对象也可以具有方法。为类添加的方法就是在类模块中添加公共过程。使用Public Sub子过程创建的方法没有返回值,而采用 Public Function函数过程创建的方法可以有返回值。也可以在类模块中创建私有过程,但是只能在类模块内部调用,在外部是不可见的。 下面在bonusClass类模块中创建displayemployee方法,该方法用于显示雇员的编号、姓名、销售额和奖金数据。 Public Function displayemployee() As String Dim mdisplay As String RaiseEvent Salenum 激发Salenum事件 mdisplay = “雇员号:“ & memployee(1) & vbCrLf mdisplay = mdisplay & “姓名:“ & memployee(2) & vbCrLf mdisplay = mdisplay & “销售额:“ & memployee(3) & vbCrLf mdisplay = mdisplay & “奖金:“ & memployee(4) & vbCrLf If memployee(1) “ Then displayemployee = mdisplay Else MsgBox “没有您的数据或密码错误!“ End If End Function,系统自身为创建类提供的事件为类的缺省事件,这类事件有两种,即Initialize事件和Terminate事件。此外,用户也可以在类模块中自定义事件。 (1) 缺省事件 在类模块代码窗口的“对象”框中选择“Class”,将自动创建Initialize事件过程的框架,此时在“过程”框中选择“Terminate”,将创建Terminate事件过程的框架。 在本例中,可以为用户密码进行初始化设置以及初始化用户数据,其代码为: Private Sub Class_Initialize() ReDim mpassword(1 To 4) ReDim memployee(1 To 4) mpassword(1) = “111111“ : mpassword(2) = “222222“ mpassword(3) = “333333“ : mpassword(4) = “444444“ memployee(1) = “ : memployee(2) = “ memployee(3) = 0 : memployee(4) = 0 End Sub 一旦由创建类一个对象,程序将首先执行Initialize事件过程,为密码属性附值。,4.类模块的缺省事件和自定义事件,11.1.3 对类的访问,只有在程序中创建了类对象后,才能为类对象设置属性值,调用其方法和响应事件过程(即为类对象编写事件过程代码),这就是对类的访问。具体步骤包括声明类对象变量、创建类对象,使用类对象的属性、方法和响应事件过程,如有必要,还应释放对类对象的引用。 由于类没有可视化的界面,因此访问类时,一般要借助窗体或窗体上的控件。 1.声明对象变量 在创建类的对象时,应如同前面章节介绍的创建窗体类对象变量一样,应在创建前声明对象变量,其格式为: Dim 对象变量名 As 类名 本例的对象声明为: Private WithEvents mybonus As bonusClass,2.创建对象 仅仅声明了一个对象变量后,并没有为对象变量指明具体的对象,因此对象变量的值为“Noting”。如执行 Print TypeName(mybonus) 语句,将在窗体上显示Noting。 可以使用Set语句创建具体的对象,其格式为: Set 对象变量=New 类名 Set mybonus=New bonusClass 一旦在内存中为对象指明了存储单元后,就可以使用多个对象变量指向同一个对象。如在上述创建对象的基础上,还声明了另一个对象变量: Private WithEvents youbonus As bonusClass 则下面的Set语句 Set youbonus= bonusClass 将对象变量youbonus指向上次创建的同一个bonusClass对象。 除了采用先声明对象,然后使用Set语句创建对象的方法来创建对象外,还可以直接在声明对象时“隐式”地创建对象,其格式为: Dim 对象变量名 As New类名,3.使用对象 创建了类对象后,就可以像使用标准控件一样使用类对象,只不过类对象是不可见的。 在本例中,响应自定义事件Salenum的代码为: Private Sub mybonus_Salenum() 响应Salenum事件过程 ReDim carr(1 To 4) As String Dim newname As String, newpassword As String * 6 newname$ = InputBox(“请输入你的姓名“) newpassword$ = InputBox(“请输入你的密码“) Open “c:employee.txt“ For Random As #1 Len = Len(nemployee) s = LOF(1) / Len(nemployee) For i = 1 To s Get #1, i, nemployee carr(1) = nemployee.enumber : carr(2) = nemployee.ename carr(3) = nemployee.esallnumber : carr(4) = nemployee.ebonus If Trim(nemployee.ename) = newname And newpassword = mybonus.lpassword(i) Then mybonus.lemployee = carr 为属性赋值 Exit For Else Erase mybonus.lemployee End If Next Close #1 End Sub, 在标准模块中建立自定义变量: Type mdemployee enumber As String * 10 epassword As String * 6 ename As String * 20 esallnumber As Long ebonus As Currency End Type Dim nemployee As mdemployee 在窗体声明部分声明窗体级变量 Private WithEvents mybonus As bonusClass 在窗体声明部分声明类对象变量 窗体加载事件代码: Private Sub Form_Load() Set mybonus = New bonusClass 创建类对象 End Sub 命令按钮单击事件代码: Private Sub Command1_Click() Print mybonus.displayemployee 调用类的方法 End Sub,4.释放对象 如果在程序中不再需要某个类对象变量,可以使用语句 Set 类对象名=Nothing 来释放对象变量所占的内存空间。 为进一步地理解类模块中各属性、方法和事件的内部运行机制及其相互关系,可以按F8键,使用逐语句执行的方式运行应用程序。也可以按F4键,打开对象浏览器窗口来查看类的各个成员。如图11-5为本例中的bonusclass类的成员,包括属性lemployee、lpassword,方法displayemployee,缺省事件Class_Initialize,自定义事件Salenum和类内部使用的私有变量memployee、lpassword等。,图11-5 对象浏览器窗口,11.2 系统对象,11.2.1 App对象,11.2.2 Clipboard对象,11.2.3 Screen对象,11.2.4 Printer 对象和 Printers 集合,11.2.5 其他系统对象,返回,退出,App 对象是通过关键字 App 访问的全局对象。它提供了十多个属性,包括应用程序的标题、版本信息、可执行文件和帮助文件的路径及名称以及是否运行前一个应用程序的示例。,表11-1 App对象的主要属性,11.2.1 App对象,11.2.2 Clipboard对象,Clipboard 对象用于操作剪贴板上的文本和图形。它使用户能够复制、剪切和粘贴应用程序中的文本和图形。,表11-2 Clipboard对象的常用方法,例11-2:利用Clipboard对象将图片框Picture1中的图片粘贴到图片框Picture2中,将Clipboard对象中的文本粘贴到文本框Text1中。Private Sub Picture2_Click() Clipboard.Clear Clipboard.SetData Picture1.Picture Picture2 = LoadPicture(“) Picture2 = Clipboard.GetData() End Sub Private Sub Text1_Click() Text1 = Clipboard.GetText() End Sub,图11-6 Clipboard对象应用实例,11.2.3 Screen对象,Screen 对象是指整个 Windows 桌面。Screen 对象,可以访问当前窗体、控件以及其他与屏幕有关的信息,如修改屏幕鼠标指针。表11-3为Screen对象的常见属性。,表11-3 Screen对象的常见属性,例11-3:在窗体上依次添加两个图片框Picture1和Picture2和一个时钟Timer1控件(将其Interval属性设置为1000),编写如下代码: Private Sub Timer1_Timer() Static screenfontscount As Integer If screenfontscount Screen.FontCount Then Screen.ActiveControl.Cls Screen.ActiveControl.Print Screen.Fonts(screenfontscount) If Trim(Screen.Fonts(screenfontscount) = “Arial“ Then Timer1.Enabled = False MsgBox “这就是我想要的字体“ Exit Sub End If screenfontscount = screenfontscount + 1 End If End Sub,11.2.4 Printer 对象和 Printers 集合,使用 Printer 对象可以实现与系统打印机的通讯(最初是缺省系统打印机)。使用Printers 集合可获取有关系统上所有可用打印机的信息,Count属性表示Printers 集合中的元素个数。,Printer 对象的常用属性有Height、Width、PaperSize、DeviceName、FontName和FontSize等,分别代表打印纸的长度、宽度、纸张大小、打印机的名称、打印字体名称和字体尺寸。,Printer 对象重要的方法有:EndDoc方法(开始打印)、KillDoc方法(中断打印)和NewPage方法(换页)。,例11-4:将“关于软件设计大赛的通知”文本打印10份,并在页前面加上页码。 Private Sub Command1_Click() Dim npage As Integer, str As String Printer.FontName = “宋体“: Printer.FontSize = 20 For npage = 1 To 10 str = “第“ & Printer.Page & “页“ & vbCrLf & “关于软件设计大赛的通知“ 打印内容 Print str Printer.Print str Printer.NewPage 换页 Next Printer.EndDoc 将打印内容送到打印缓冲区,如果设备就绪,则开始打印 End Sub,例11-5:在系统所有的打印机中查找第一个将页码方向设置为纵向的打印机,然后将其设置为缺省打印机。 Dim X As Printer For Each X In Printers If X.Orientation = vbPRORPortrait Then Set Printer = X 设定为系统缺省打印机。 Exit For End If Next,11.2.5 其他系统对象,1.Control 对象与Control 集合对象 Control 对象为所有Visual Basic 内部控件的类名。可以将一个变量标为 Control 对象,然后象把控件放到窗体上一样来引用它。下面是使用Control 对象的实例: Private Sub Command3_Click() Dim c As Control For Each c In Form1.Controls Print c.Name Next Set c = Command1 Print c.Name End Sub 程序运行时,首先打印窗体上所有控件的名称,然后在打印变量c的名称(即Command1)。 Control 集合对象包含窗体上所有控件。,2.Form1对象 Form对象是窗口、或者对话框。Forms 集合是一个集合,它的元素代表每一个在应用程序中加载的窗体。集合包括应用程序的 MDI 窗体,MDI 子窗体和非 MDI 窗体。Forms 集合只有一个属性 Count,指定集合中元素的数目。下面的实例的作用是,当Form1成为活动窗体时,在窗体上名为lstAllForms的列表框中显示所有已经加载的窗体和对话框的标题。 Private Sub Form_Activate() Dim I Declare variable. 重新填充列表(当添加或删除一个实例时)。 lstAllForms.Clear Clear list box. For I = 0 To Forms.Count - 1 lstAllForms.AddItem Forms(I).Caption Next I End Sub,3.Err对象 Err对象含有关于运行时错误的信息。Err 对象是具有全局范围的固有对象。在代码中没有必要建立这些对象的实例。 Err 对象的缺省属性是 Number。 当运行时错误发生时,Err 对象的属性被填入明确识别错误的信息以及处理这个错误所使用的信息。 Err 对象有两个方法,Raise 方法用于在代码中生成运行时错误。Clear 方法用于清除 Err 对象的所有属性设置。 在任意形式的 Resume 或 On Error 语句之后以及在错误处理子程序内的 Exit Sub、Exit Function、或 Exit Property 语句之后,可使用 Clear 方法将 Err 对象的属性重新设置为零或长度为零的字符串 (“)。,图11-7 应用Err对象实例,例11-6:下面的程序使用 Err 对象的各个属性建立一个显示错误信息的对话框(参见图11-7)。 Private Sub Command1_Click() Dim Msg On Error Resume Next 改变错误处理的方式 Err.Clear m = 10 / 0 生成一个“除数为零”错误。 If Err.Number 0 Then 检查错误代号 Msg = Err.Source & “产生“ & Str(Err.Number) & “ 号错误,“ & “错误原因: “ & Chr(13)_ & Err.Description MsgBox Msg, , “错误“, Err.HelpFile, Err.HelpContext 显示错误信息 End If End Sub,11.3 文件系统对象模型,11.3.1Scripting 类型库,11.3.2 FileSystemObject 对象,11.3.3 Drive 对象,11.3.4 Folder对象,11.3.5 File对象,11.3.6 TextStream对象,退出,返回,11.3.1Scripting 类型库,FSO包含在Scripting 类型库中,如果要在工程中使用FSO,就必须添加对Scripting 类型库的引用。单击“工程 | 引用”命令,打开“引用”对话框,选中“Microsoft Scripting Runtime”复选框,即可将FSO对象模型引入到系统中。FSO 对象模型包括表11-4所示5个对象。按F2 键打开“对象浏览器”,在Scripting 类型库中了解FSO 对象模型中各种对象、集合、属性、方法、事件以及它的常数的信息。参见图11-8。,表11-4 FSO 对象模型中的对象,FSO 对象模型编程的基本过程为: (1)使用CreateObject 方法,或将一个变量声明为 FileSystemObject 对象类型来创建一个 FileSystemObject 对象。 (2)对新创建的对象使用适当的方法。 (3)访问该对象的属性。,图11-8 了解FSO 对象的有关信息,11.3.2 FileSystemObject 对象,1.创建 FileSystemObject 对象 可以通过如下两种方法创建一个 FileSystemObject 对象: (1)使用New关键字将一个变量声明为 FileSystemObject 对象类型 Dim Myfso As New FileSystemObject (2)使用 CreateObject 方法来创建一个 FileSystemObject 对象 Dim Myfso As Object Set Myfso = CreateObject(“Scripting.FileSystemObject“) 2.FileSystemObject对象的属性 FileSystemObject对象只有一个属性,即Drive属性,用来返回包含本地机器上所有可用 Drive 对象的 Drives 集合。下述代码可在立即窗口显示系统中可用驱动器的名称。 Private Sub ShowDriveList() Dim myfso, mydc, d, str Set myfso = CreateObject(“Scripting.FileSystemObject“) Set mydc = myfso.Drives For Each d In mydc str = str & d.DriveLetter & “ - “ Next Debug.Print str End Sub,表11-5 .FileSystemObject对象的方法,3.FileSystemObject对象的方法,Drive 对象用于对特定磁盘驱动器或网络共享的属性提供访问。要使用Drive对象,应首先声明一个驱动器类型变量,然后使用.FileSystemObject对象的GetDrive方法来返回一个Drive对象,例如: Dim Mydrv As Drive Set Mydrv =Myfso.GetDrive(“C“),表11-6 Drive 对象的常用属性,11.3.3 Drive 对象,例11-7:下列示例说明了如何使用ListView列表视图控件和Drive 对象来收集有关驱动器的信息。 Private Sub Command1_Click() Dim Myfso As New FileSystemObject, Mydrv As Drive, s As String For Each Mydrv In Myfso.Drives With ListView1.ListItems.Add(, ,Mydrv.DriveLetter & “:“) .SubItems(1) = Choose(Mydrv.DriveType, “软盘“, “硬盘“, “硬盘“, “光盘“) .SubItems(2) = Mydrv.TotalSize / 1024 .SubItems(3) = Mydrv.FreeSpace / 1024 End With Next End Sub,图11-9 显示驱动器信息,11.3.4 Folder对象,Folder对象提供对一个文件夹所有属性的访问。要使用Folder对象,应首先声明一个文件夹类型的变量,然后用FileSystemObject对象的GetFolder方法来返回一个Folder对象,如: Dim Myfld As Folder Set Myfld = Myfso.GetFolder(“C:Myfolder“),表11-7 Folder对象的常用属性,11.3.5 File对象,File对象提供对文件所有属性的访问。要使用File对象,应首先声明一个文件夹类型的变量,然后用FileSystemObject对象的GetFile方法来返回一个File对象,如: Dim Myfile As File Set Myfile = Myfso.GetFile (“C:Myfolderfile1.txt“),表11-8 File对象的常用属性,File对象的方法有Copy、Delete、Move等。对一个 File 或 Folder,Copy 方法的结果和执行 FileSystemObject.CopyFile 或FileSystemObject.CopyFolder 操作的结果是一样的,在后者中, 对象所引用的文件或文件夹是作为参数传递的。应当注意,后面的方法能够复制多个文件或文件夹。 Private Sub Command1_Click() Dim Myfso As New FileSystemObject , Mydrv As Drive , Myfile As File Set Mydrv = Myfso.getdrive(“A:“) Set Myfile = Myfso.GetFile(“C:My Documentsemployee.txt“) If Not Mydrv.isready Then MsgBox “ 请在A驱插入软盘 “ Exit Sub End If If Mydrv.FreeSpace Myfile.Size Then MsgBox “ 软盘剩余空间不够,请更换软盘 “ Exit Sub End If If Not Myfso.folderexists(“A:temp“) Then Myfso.createfolder (“A:temp“) Myfile.Copy “A:temptmfile.txt“ End If End Sub,1. TextStream对象的声明、创建及其属性和方法 TextStream对象用于读写顺序文件。FSO 对象模型尚不支持创建随机文件或二进制文件。要创建随机文件和二进制文件,请参考“文件”一章。 声明TextStream对象的语句为: Dim Myts As TextStream 然后,可以如下两种方法打开和创建TextStream对象: (1)使用FileSystemObject 对象创建和打开TextStream对象 Set Myts = Myfso.CreateTextFile(“c:testfile.txt“, ForReading,True) 这里,要打开的文件为“c:testfile.txt“,参数ForReading表示从文件读出信息(Forwriting则为向文件写入信息,ForAppending表示向追加信息),True表示如果文件“c:testfile.txt“不存在,则创建一个新的文件。 (2)使用File对象创建和打开TextStream对象 Set Myfile = Myfso.CetFile(“c:testfile.txt“) Set Myts = Myfile.OpenAsStream(ForReading),11.3.6 TextStream对象,表11-9 TextStream对象的常用属性,表11-10 TextStream对象的常用方法,2. 用 FSO创建文件、添加以及读取数据 (1)用 FSO创建文件 有三种不同方法来创建一个顺序文本文件(TextStream 文件)。 1) 使用 CreateTextFile 方法 Dim Myfso As New FileSystemObject, Myfil As File Set Myfil = Myfso.CreateTextFile(“c:Mytestfile.txt“,True) 这样,就在C盘的根目录下创建了一个空的、名为Mytestfile.txt的TextStream 文件。 2)使用OpenTextFile 方法 Dim Myfso As New FileSystemObject, Myts As New TextStream Set Myts = Myfso.OpenTextFile(“c: Mytestfile.txt“, ForWriting) 3)使用OpenAsTextStream 方法: Dim Myfso As New FileSystemObject, Myfil As File, Myts As TextStream Set Myfso = CreateObject(“Scripting.F
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:大学VISUAL BASIC程序设计教程-课件PPT
链接地址:https://www.renrendoc.com/p-21836467.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

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