专升本辅导第7章面向对象程序设计-PPT精选

PPT
  • 阅读 93 次
  • 下载 0 次
  • 页数 64 页
  • 大小 321.500 KB
  • 2022-11-12 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
专升本辅导第7章面向对象程序设计-PPT精选
可在后台配置第一页与第二页中间广告代码
专升本辅导第7章面向对象程序设计-PPT精选
可在后台配置第二页与第三页中间广告代码
专升本辅导第7章面向对象程序设计-PPT精选
可在后台配置第三页与第四页中间广告代码
专升本辅导第7章面向对象程序设计-PPT精选
专升本辅导第7章面向对象程序设计-PPT精选
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 64
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】专升本辅导第7章面向对象程序设计-PPT精选.ppt,共(64)页,321.500 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-2529.html

以下为本文档部分文字说明:

2022/11/12第7章面向对象程序设计7.1对象7.2类2022/11/12•VisualFoxPro6.0在支持传统的面向过程编程方法的基础上,全面引入面向对象的程序设计方法。•使得用户通过面向对象的方法,可以设计

出更加美观的应用程序界面,开发出真正的关系数据库应用程序。•面向对象程序设计根本性地改变了早期FoxPro应用程序面向过程的开发方式,将重点放在了对象之间的联系上,而不是具体实现的细节。面向对象程序设计通过代码重用和继承的方式

,使用户在设计程序时不再做大量的重复劳动,且将对象的细节隐藏起来,让用户将注意力集中在对象与系统其他部分的联系上,这是面向过程的程序设计方法所不能做到的。2022/11/127.1对象•7.1.1对象的属性•7.1.2事件•7

.1.3方法程序•7.1.4数据环境•7.1.5对象的引用2022/11/12•客观世界里的任何实体都可以被看作是对象。对象可以是具体的物,也可以指某些概念。任何对象都具有自己的特征和行为。•在面向对象程序设计中,所有事物都可以被抽象为对象,例如表单上的命令铵钮是对象,表单本身也是一个对象。•在

VFP中,又将对象分为控件对象和容器对象两种。•对象建立以后,其操作就可以通过与对象有关的属性、事件和方法来描述。2022/11/127.1.1对象的属性•对象的属性即对象的特征、性质,例如当描述一个命令按钮时,可以用它所在位置、尺寸大小、颜色及它上面显示的文

字的字体、字号等特征来形容,这些特征都可用属性来表示。•在VFP中,不同对象的属性是不相同的,但有些属性(如名称、标题等属性)是很多对象都具有的。2022/11/121.对象的属性窗口•表单设计器打开后,只要选择【显示】菜单中的【属性】命令或选择“表单”快捷菜单中

的【属性】命令,即可打开如图7.1所示的“属性”窗口。该窗口能显示当前对象的属性、事件和方法程序,并允许用户更改属性、定义事件代码和修改方法程序。•属性窗口自上至下依次包括对象组合框、选项卡、属性设置框、属性列表和属性说明5个部分,各部分功能如下:

2022/11/12(1)对象组合框:•包括当前表单、表单集及全部控件的列表,用户可在列表中选择表单或控件,这和在表单窗口选择对象的效果是一致的。多个控件之间在这里是分多级显示,以体现它们之间的父与子的关系。2022/

11/12(2)选项卡:•共有5个,分别用来显示对象的属性、事件、方法程序等选项,选项按字母顺序排列。•各选项卡的作用如下:“全部”选项卡:列出全部属性、事件和方法程序。“数据”选项卡:列出显示或操纵数据的属性。“方法程序”选项卡:列出方法程序与事件

。方法程序与事件都是对象的程序,区别在于,带Event后缀的选项是事件,否则就是方法程序。“布局”选项卡:列出位置、大小等属性。“其他”选项卡:列出类信息和用户自定义属性。2022/11/12除“全部”选项卡外的4个选项卡都是分类选项卡,用户既可在

全部选项卡中查找所要的选项,也可在分类选项卡中查找选项。2022/11/12(3)属性设置框:•可以是文本框或组合框,用于更改或设置对象的属性值。•在属性设置框左侧有3个按钮的功能如下:•确认按钮:在属性设置文本框中输入属性值后,单击此按钮可确认对属性的更改,

与按回车键等效。•取消按钮:当属性设置文本框输入属性值,但还没有确认时,单击此按钮可取消刚才的输入值,并恢复以前的值。•函数按钮fx:单击此按钮可打开表达式生成器,用来设置一个表达式,该表达式的值将作为属性值。对于用表达式设置的属性,在属性

值之前将自动插入一个等号。2022/11/12(4)属性列表:•属性列表的每一行包含两列内容,即名字列和值列。•用户选择某属性后即可更改属性值。更改过的属性仍可恢复默认值,只要选择该属性后右单击该属性,在弹出的快捷菜单中选择【重置

为默认值】命令即可。•需要注意的是,在属性值列表中,以斜体字显示的选项表表示只读,用户不能修改,用户修改过的选项将以黑体显示。2022/11/12(5)属性说明信息:•在属性列表中选择某属性、事件或方法程序后,属性窗口的底部即简要地显示它的意义。2022/11/122.常用的对象属性

•不同的对象所具有的属性也是不相同的,这也可从属性的定义中体现出来,但是一些对象会有一些共性,表7.1列出了一些对象共有而且常用的属性。2022/11/12属性说明应用于Caption设置对象的标题表单、标签、命令按钮等Name设置

对象的名字(在程序中引用)任何对象Value设置控件当前状态(取值)文本框、列表框等ForeColor设置对象中的前景色(文本和图形颜色)表单、标签、文本框、命令按钮等BackColor设置对象内部的背景色表单、标签、文本框、列表框等BackStyle设置对象

背景是否透明标签、文本框、图像等AutoSize控件是否根据正文自动调整大小标签框、单选按钮组、复选框等Height指定对象在屏幕上的高度标签框、文本框等Width指定对象在屏幕上的宽度标签框、文本框等Top指定相对父对象最顶端所在的位置标

签框、文本框等Left指定相对父对象的左边界标签框、文本框等FontName指定对象显示文本的字体标签框、文本框等FontSize指定对象显示文本的字号标签框、文本框等FontBold设置对象显示文本是否粗体标

签框、文本框等Alignment控件正文水平对齐方式标签框、文本框、复选框等AlwaysOnTop是否处于其他窗口之上表单AutoCenter是否在VFP主窗口内自动居中表单Closable标题栏中关闭按

钮是否有效表单Controlbox是否取消标题栏所有按钮表单、工具栏MaxButton是否有最大化按钮表单MinButton是否有最小化按钮表单Movable运行时表单能否移动表单WindowState设置运行时是最大化或最小化表单WindowType用于控制表单是非模式表单还是模式表单表单

AutoCloseTables表单释放时是否关闭表或视图,默认为.T.表单AutoOpenTables表单加载时是否关闭表或视图,默认为.T.表单ShowTips当鼠标放在控件上时确定是否显示工具提示表单、工具栏Sho

wWindow指定表单是一个顶层表单还是一个子表单表单Enabled指定控件是否可用表单、命令按钮等Visible指定控件是否可见表单、命令按钮等2022/11/127.1.2事件•事件是指可能会发生在对象上的事情,也即对对象所作的操作(或者系统对某个对象的操作

)。•如按钮被单击,对象被拖动、被改变大小、被双击等。•一个对象可以有多个事件,但是每个事件都是由系统预先规定的。•一个事件对应于一个程序,即事件过程。2022/11/121.事件触发方式•事件一旦被触发,系统马上要去执行与该事件对应的过程。等事件过程执行结束后,系统又处于等待某事件发

生的状态。即事件包括事件过程和事件触发方式两个方面。事件过程的代码应该事先编写好。从表7.2列出的VFP系统常见的事件可看出事件的触发方式分三种:•(1)用户触发:如单击命令按钮等。•(2)系统触发:如计时器事件,将会自动按设定的时间间隔发生。•(3)代码触发:用代

码来调用事件过程。2022/11/12常用事件事件发生时机事件发生时机Click单击鼠标左键时GotFocus对象获得焦点时DblClick双击鼠标左键时Activate对象激活时DragDrop鼠标拖放时Init创建对象时RightClick单

击鼠标右键时Load表单被装入内存时MouseUp释放鼠标时Unload释放对象时MouseDown按下鼠标键时InteractiveChange改变控件的值时KeyPress按下并释放某键盘时Resize调整对象大小时DownCl

ick单击控件的上下箭头时Timer在设置的时间间隔内发生Destroy释放一个对象时Valid当一个控件失去聚焦时2022/11/122.为事件编写代码•事件代码需在代码编辑窗口中编写,打开某对象代码编辑窗口的方法有

多种:•(1)双击该对象。•(2)选择对象快捷菜单中的【代码】命令。•(3)选中对象,选择【显示】菜单的【代码】命令。•以上方法均可弹出图7.2所示的代码编辑窗口。2022/11/127.1.3方法程序•方法程序又称方法,是指对象所固有完成某种任务的功能,它是VFP为对象内定的通用过程,用户可

以在需要的时候调用,由于方法的代码由VFP定义,所以对用户是不可见的。•方法程序与事件有相似之处,都是为了完成某个任务,但同一个事件可完成不同任务取决于用户所编写的代码,而方法则是固定的,任何时候调用都是完成同一个任务。所以其中的代码也不需要再编写。•表7.3列出了常用

的方法。2022/11/12方法程序功能Cls清除表单中的图形和文本Clear清除组合框和列表框控件中的内容Show把表单或表单集的Visible属性设置为.T.,并使表单成为活动对象Hide通过把Visible属性

设置为.F.,隐藏表单、表单集或工具栏Move用于移动一个对象SetFocus为一个控件指定焦点,使其成为活动对象Box在表单对象上画一个矩形Circle在表单对象上画一个圆或椭圆Line在表单对象上绘制一条线Print在表单对象上

打印一个字符串AddItem给组合框或列表框控件增加一个新数据项Refresh重画表单或控件,并刷新所有的值Release从内存中释放表单集或表单Quit结束一个VFP实例2022/11/127.1.4数据环境•1.数据环境的概念•数据环境是指在打开或修改一个表单或报表时需要使用的数据源,包括打

开的全部表、视图和关系。•数据环境及其中的表与视图都是对象。数据环境一旦建立,当打开或运行表单时,其中的表或视图即自动打开,与数据环境是否显示无关;而在关闭或释放表单时,表或视图也能随之关闭。2022/11/122.数据环境设计器的使用•数据环境设计器可用

来可视化的创建或修改数据环境,可以从表单的快捷菜单中选择【数据环境】命令,或者选择【显示】菜单的【数据环境】命令均可打开如图7.3所示的“数据环境”设计器,在弹出的对话框中添加要使用的表或视图。2022/11/123.数据环境菜单•当数据环境设计器处于打开状态时,会出现

数据环境菜单,菜单中提供的几个命令具有查看和修改数据环境的功能,各命令选项功能如下:•添加:用于向数据环境添加表或视图。•移去:移去选择的表或视图。•浏览:浏览选择的表或视图。•执行表单:运行表单。2022/11/127.1.5对象的引用•在面向对象的程序设计中常常要引用对象,或引用对象的属性

、事件与调用方法程序。在引用对象时要遵循一定的规则,主要包括以下4个方面:•(1)在程序代码中一般用以下关键字开头:•ThisFormSet&&表示当前表单集•ThisForm&&表示当前表单•This&&表示当前

对象2022/11/12(2)引用格式•一般在引用关键字后跟一个点号,表示从属关系,再写出被引用对象或者对象的属性、事件或方法程序。•例如:•ThisForm.Label1.Caption="标签标题"•ThisForm.cl

s2022/11/12(3)允许多级引用•在应用程序中,多个对象之间有多级的从属关系,引用时可提供对象的完整容器层次来引用(称绝对引用),也可从当前层次来引用(称相对引用)。以下是常用的引用格式:•ThisFormSet.属性名|事件|

方法程序|对象名•ThisForm.属性名|事件|方法程序|对象名•This.属性名|事件|方法程序|对象名•对象名.属性名|事件|方法程序2022/11/12(4)父调用•父调用即控件引用包含它的容器控件。例如:•Thi

s.Parent.BackColor=RGB(192,0,0)&&将本对象的父对象的背景色设置为暗红色2022/11/127.2类•7.2.1类的概念•7.2.2自定义类•7.2.3创建工具栏2022/11/12

7.2.1类的概念•类是一组具有相同特性的对象的抽象的定义。•它将属性和方法统一起来,把具有相似特征和行为的对象形成一个结构。2022/11/121.类与对象•类和对象的关系密切,但并不相同。类包含了有关对象的特征和行为信息,它是对象的蓝图和框架。类是定义了对象特征以及对象外观和

行为的模板。比如,在表单控件工具栏中,每个按钮都代表一个类,用其中某个按钮在表单上创建的一个控件就是一个对象。类与对象存在如下关系:•(1)类是对象的定义。类规定并提供了对象具有的属性、事件和方法程序。•(2)对象通过类而产生。•(3)对象

是类的一个实例。2022/11/122.基类与子类•(1)基类•基类是VFP系统预先定义的类,在如图7.4所示的“新建类”对话框的“派生于”下拉列表框中,包含了全部基类,初始的表单控件工具栏中包含的类也是基类。2022/11/12(2)子类•子类是指以某个类的定

义为基础创建的新类,子类所基于的类称为父类。•比如若要从基类创建出新类时,那么基类就是父类,新建类即为子类。•子类将继承父类的全部特征,包括对父类的所做的修改。2022/11/12(3)用户自定义类•用户可以从基类派生出子类,即用户自定义类;VFP还允许

从用户定义类派生出子类,也就是说用户自定义类可以是子类,也可以是父类。•用户可以为用户自定义类设置属性、编写代码与方法程序,也可创建新的属性和方法程序。用户还可以将自己定义的类添加到表单控件工具栏中。2022/11/12(4

)容器类和控件类•VFP提供了两大基类:容器类和控件类。容器类可以容纳别的对象。如表单类中可以放命令按钮、复选框按钮、文本框控件等,因此表单可以看成一个容器类。控件类是可以包含在容器类中并由用户派生的VFP基类。2022/11/12(

5)类库•类库可用来存储以可视方式设计的类,其文件扩展名为.vcx。•一个类库通常可容纳多个子类,这些子类允许由不同的基类派生。2022/11/123.类的特征•类有如下特征,这些特征对提高代码的可重用性和易维护性有很好用处。•(1)封装性•封装的目的就

是信息隐藏,把对象的内部代码隐藏起来。用户只需知道该对象具有什么功能以及如何使用该对象,而不必了解这些功能是如何实现的。•封装特性使得对代码的修改和维护变得比以前更容易了,同时还可以很方便地利用提供的基本类库

来实现强大的功能。•(2)继承性•继承是面向对象程序设计技术中的一个重要的技术。它用来描述类之间的共同属性,减少了相似类之间的重复说明;它体现了一般化及特殊化的原则。•在面向对象程序设计中,继承用以说明子类延用父类特征的能力。如果父类特征发生改

变,则子类将继承这些新特征。•(3)多态性•多态性是指不同的对象接收到相同的消息时,可以作出完全不同的解释,进而生产完全不同的行为。利用多态性,应用程序可以发送一般形式的消息,而将所有实现的细节留给接收消息的对象来解决。2022/11/127.2.2自定义类•VFP最强大的功能之一就是支

持创建在应用程序中重复使用的类,用户定义的类可添加到表单控件工具栏中。用户自定义的类通常有以下功能:•封装通用功能:为通用功能创建自定义类,可以将它们的实例添加到表单中。例如表单关闭按钮类、帮助按钮类

等。•赋予应用程序统一的外观和风格:比如创建了独特外观的文本框类,便可在应用程序所有需要文本框的地方都使用这个类。2022/11/121.创建用户自定义类•下面通过一个实例讲述创建用户自定义类的步骤。•【例7.1】使用类设计器创建一个用户自定义类,类名为“记录指针移动

类”。基类为命令按钮组,存储到c:\ProgramFiles\MicrosoftVisualStudio\vfp98\commandgroup1.vcx类库中。•操作步骤如下:•(1)执行【文件】菜单中的【新建】命令,弹出“新建”对话框,选

择“类”单选按钮,弹出如图7.5所示的“新建类”对话框;2022/11/12(2)在“新建类”对话框中指定新建类的类库、基类与类名。•在“类名”文本框用于指定类名;“派生于”下拉列表框用于指定新生成类的基类;“存储于”文本框用于指定新类库名或已有类库的名字,类库名可包含路径,若

未指出路径表示使用默认路径。2022/11/12(3)指定各项内容后,单击【确定】按钮,打开如图7.6所示的“类设计器”窗口。2022/11/12(4)通过表单设计器控件工具栏添加相应的控件,设计相应的属性与事件代码。本例中添加五个命令按钮。•(5)属性设置:•“记录指针移动类”

的ButtonCount属性值设置为:5•五个命令按钮的标题Caption属性分别设置为:第一个记录、前一个记录、后一个记录、最后一个记录、退出。如图7.7所示。2022/11/12“第一个记录”按钮Command1的Click事件代码为:•gotop•Th

is.Parent.Command2.Enabled=.F.•This.Parent.Command3.Enabled=.T.•This.Parent.Command4.Enabled=.T.•This.Parent.Command5.Enabled

=.T.•ThisForm.Refresh2022/11/12“前一个记录”按钮Command2的Click事件代码为:•skip–1•ifbof()•=MessageBox("已是第一个记录!",48

,"信息窗口")•This.Enabled=.F.•This.Parent.Command1.Enabled=.F.•Else•This.Enabled=.T.•This.Parent.Command1.Enabled=

.T.•Endif•This.Parent.Command3.Enabled=.T.•This.Parent.Command4.Enabled=.T.•This.Parent.Command5.Enabled=.T.•ThisForm.Refresh2022/

11/12“后一个记录”按钮Command3的Click事件代码为:•skip•ifeof()•=MessageBox("已是最后一个记录!",48,"信息窗口")•skip-1•This.Enabled=.F.•T

his.Parent.Command4.Enabled=.F.•Else•This.Enabled=.T.•This.Parent.Command4.Enabled=.T.•Endif•This.Parent.Command1.Enabled=.T.•This.Pare

nt.Command2.Enabled=.T.•This.Parent.Command5.Enabled=.T.•ThisForm.Refresh2022/11/12“最后一个记录”按钮Command4的Click事件代码为:•

gobottom•This.Parent.Command1.Enabled=.T.•This.Parent.Command2.Enabled=.T.•This.Parent.Command3.Enabled

=.F.•This.Parent.Command5.Enabled=.T.•ThisForm.Refresh2022/11/12“退出”按钮Command5的Click事件代码为:•ThisForm.Release2022/11/122.将类添加到工具栏•用户自定义类完成后,即可以

将其添加到表单控件工具栏中,然后通过使用该工具栏中的“查看类”按钮来打开定义的类。2022/11/12操作步骤:•(1)选择【文件】菜单中的【新建】命令,打开“新建”对话框选择“表单”单选按钮,单击【新建文件】按钮,新建一表单,如图7.8所示。2022/11/12•(2)在“表单控件”

工具栏上单击【查看类】按钮,在弹出的菜单中选择【添加】命令,然后在弹出的“打开”对话框中指定要添加的可视类库的文件名,如图7.9所示。单击【打开】按钮,则打开表单控件工具栏如图7.10所示。2022/11/12•

(3)单击新添加的“记录指针移动类”按钮,在表单中创建“记录指针移动类1”控件。结果如图7.11所示。2022/11/12新添加类按钮2022/11/123.类的编辑•在VFP中,用户可以修改用户自定义的

类,也可以删除类库中的类,或删除类库。•(1)修改用户自定义的类•若要为用户自定义的类设置属性,编写事件代码或方法程序代码,或者是创建新的属性或方法程序,都必须打开类设计器来实现。要打开类设计器,只要打开一个可视类库,并选择其中的一个类即可。2022

/11/12【例7.3】修改【例7.1】中创建的“记录指针移动类”。•操作步骤如下:•①执行【文件】菜单的【打开】命令,在“打开”对话框的文件类型列表框中选择可视类,从中选择类库名Commandgroup1.vcx,单击【确定】按钮。•

②在弹出的“打开”对话框中右边的列表框中选择要修改的类“记录指针移动类”,单击【打开】按钮。•③在弹出的“类设计器”窗口中,选择要修改内容的按钮后,利用属性窗口修改相应的内容。•④关闭类设计器窗口,选择保存修改。2022/11

/12(2)删除类库中的一个类•一个类库文件中可以包含多个类,要删除类库中的某个类,可以用以下方法:•使用命令:REMOVECLASS<类名>OF<类库名>•在项目管理器的“类”选项卡中选择指定类库中的一个类,单击【移去】按钮即可。2022

/11/12(3)删除类库•要删除类库只要将指定的类库文件删除即可。2022/11/124.为字段设置类•要在表单上创建控件有两种方法,一种是直接在表单控件工具栏上选择控件后,在表单上单击即可。•另一种方法就是在数据环境中

拖动有关的字段到表单设计器窗口来产生控件。•数据库表的每一个字段从数据环境拖动到表单后会自动生成一个控件,如将XSK表的姓名字段拖动到表单上会默认产生一个文本框,除使用默认控件外,用户还可以通过设置产生其它控件。

这些设置是在数据库“表设计器”窗口通过为字段指定类库和类实现的。2022/11/12【例7.4】设计XSK表的结构,使得将XSK表的奖学金字段拖动到表单上后产生微调控件。•操作步骤:•(1)在项目管理器窗口的“数据”选项卡中选择XSK表,然后单击右侧的【修改】按钮,打开“表设计器”窗口,如

图7.12所示。2022/11/12(2)在字段选项卡中的字段列表框中选择奖学金字段,在下面的“匹配字段类型到类”选项组中的“显示类”下拉列表框中选择Spinner,然后单击【确定】按钮。(3)新建一表单,添加XSK表到数据环境,从数据环

境中拖动奖学金字段到表单中,即产生一个微调控件。如图7.13所示。2022/11/127.2.3创建工具栏•工具栏是一组图形方式的小按钮,单击后可以执行指定的一组命令。•工具栏可以浮动在窗口中,也可以停放在VFP主窗口的上部、下部或两边。你可以定制VFP提供的工具栏,也可以用VFP提供的工

具栏基类创建自己的工具栏。2022/11/121.创建工具栏•要创建自定义工具栏,必须首先为它定义一个类。VFP提供了一个工具栏基类,在此基础上,你可以创建所需要的类。•操作步骤如下:•(1)在“项目管理器”中,选定“类”选项卡;•(2)单击【新建】按钮,弹出图7.14所示的对话框

;2022/11/12•(3)在“类名”框中,键入新类的名称,如Mytools;•(4)在“派生于”框中,选择“Toolbar”,以使用工具栏基类,或者单击三点按钮,选择其他的工具栏类;•(5)在“存储于”框中,键入类库名,保存创

建的新类,或者单击三点按钮选择一个已有的类库;•(6)单击【确定】按钮,将在“类设计器”中显示新建的类;•(7)使用表单控件工具栏向新建的工具栏中添加对象;•(8)为各控件编写处理程序,这与为表单中控件编写处理程序的方式一样。2022/11/122.将工具栏连接到表单•创

建了工具栏类后,把新建的工具栏类作为一个类保存在某个类库中。•现在需要将工具栏连接到某个表单中,使得在打开表单的同时,也打开工具栏。•为了向表单中添加新建的工具栏对象,则必须先选择该工具栏所在的类库,选择方法是在“表单控件”工具栏中选择【查看类】按钮,在弹出的菜单中单击【添加】,系统将打开选择文件

对话框,从中选择包含工具栏的类库,单击【打开】后,包含该工具栏的类库如图7.15所示。2022/11/12•单击工具栏中【查看类】按钮,会发现新建的类库作为注册类显示在菜单中。单击Mytools控件,并在表单中单击某个地方,由于未创建表单集,系统将给出如图7.16所示的提示。2022/1

1/12•单击【是】,你会发现新的工具栏加入到已有的表单中,如图7.17所示。•有一点值得注意,只能在表单集中添加工具栏,让工具栏与表单集中的各个表单一起打开,而不能直接在某个表单中添加工具栏。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?