过程调用和参数传递PPT课件.ppt

上传人:石*** 文档编号:44664743 上传时间:2022-09-22 格式:PPT 页数:50 大小:1.22MB
返回 下载 相关 举报
过程调用和参数传递PPT课件.ppt_第1页
第1页 / 共50页
过程调用和参数传递PPT课件.ppt_第2页
第2页 / 共50页
点击查看更多>>
资源描述

《过程调用和参数传递PPT课件.ppt》由会员分享,可在线阅读,更多相关《过程调用和参数传递PPT课件.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、关于过程调用与参数传递第一张,PPT共五十页,创作于2022年6月知识要点知识要点1、过程的基本概念、过程的基本概念2、sub过程过程定义格式定义格式定义方法定义方法窗体事件的执行顺序窗体事件的执行顺序3、Function过程(定义格式、定义方过程(定义格式、定义方法)法)第二张,PPT共五十页,创作于2022年6月7.3 7.3 过程调用过程调用7.3.1 7.3.1 事件过程的调用事件过程的调用7.3.2 7.3.2 调用调用SubSub过程过程7.3.3 7.3.3 调用调用FunctionFunction过程过程7.3.4 7.3.4 调用其它模块中的公有过程调用其它模块中的公有过程

2、第三张,PPT共五十页,创作于2022年6月 事件过程由一个发生在事件过程由一个发生在Visual BasicVisual Basic中的事件中的事件来自动调用或者由同一模块中的其它过程显式调来自动调用或者由同一模块中的其它过程显式调用。用。请看示例。请看示例。p131p1317.3.1 7.3.1 事件过程的调用事件过程的调用第四张,PPT共五十页,创作于2022年6月 Sub Sub过程和过程和functionfunction过程必须在事件过程或其他过程过程必须在事件过程或其他过程中中显式调用显式调用,否则过程代码就永远不会被执行。,否则过程代码就永远不会被执行。在调用程序时,程序执行到调

3、用某通用过程的语在调用程序时,程序执行到调用某通用过程的语句后,句后,系统就会将控制转移到被调用的过程。系统就会将控制转移到被调用的过程。在被调用在被调用的过程中,的过程中,从第一条从第一条subsub或或functionfunction语句开始语句开始,依次执,依次执行其中的所有语句,行其中的所有语句,当执行到当执行到end subend sub或或end functionend function语句后语句后,返回到主调程序的断点返回到主调程序的断点,并,并从断点处继续从断点处继续程序的程序的执行。执行。7.3.2 7.3.2 调用调用SubSub过程过程第五张,PPT共五十页,创作于202

4、2年6月主调程序主调程序 调用过程调用过程AEnd Sub过程过程AEnd Sub调用调用SubSub通用过程流程通用过程流程第六张,PPT共五十页,创作于2022年6月Sub子过程的调用子过程的调用(1)用用Call语句语句调用调用Sub过程过程 语法:语法:Call 过程名(实在参数表)过程名(实在参数表)实在参数的实在参数的个数个数、类型类型和和顺序顺序,应该与被调用,应该与被调用过程的形式参数相匹配,有多个参数时,用逗号分过程的形式参数相匹配,有多个参数时,用逗号分隔。如果被调用的过程是一个无参过程,则括号可隔。如果被调用的过程是一个无参过程,则括号可以省略以省略.第七张,PPT共五十

5、页,创作于2022年6月Private Sub Command1_Click()Dim a As Integer,b As Integer a=Val(Text1.Text):b=Val(Text2.Text)Call add(a,b)End Sub例:例:Private Sub add(x As Integer,y As Integer)s=x+y Text3.Text=sEnd Sub调用调用add子过程子过程第八张,PPT共五十页,创作于2022年6月Private Sub Command1_Click()Dim a As Integer,b As Integer a=Val(Text1

6、.Text):b=Val(Text2.Text)s=a+b Text3.Text=sEnd Sub等价于:等价于:第九张,PPT共五十页,创作于2022年6月例7-2编写一个找出任意一个正整数的因子的程序编写一个找出任意一个正整数的因子的程序Private Sub Command1_Click()Dim Inta As Integer,St As String Inta=Text1.Text Call Factor(Inta,St)Text2.Text=StEnd SubPrivate Sub Factor(ByVal N As Integer,S As String)Dim I As Int

7、eger For I=1 To N-1 If N Mod I=0 Then S=S&Str(I)Next IEnd Sub第十张,PPT共五十页,创作于2022年6月(2)把)把过程名作为一个语句过程名作为一个语句来用来用语法:过程名语法:过程名 实参实参1,实参,实参2它与(它与(1)的不同点是:)的不同点是:去掉了关键字去掉了关键字call和和实参列表实参列表的括号的括号Private Sub Command1_Click()Dim a As Integer,b As Integer a=Val(Text1.Text):b=Val(Text2.Text)add a,bEnd SubPriv

8、ate Sub add(x As Integer,y As Integer)s=x+y Text3.Text=sEnd Sub第十一张,PPT共五十页,创作于2022年6月练一练练一练:使用第使用第2种调用方式修改例种调用方式修改例7.2。Private Sub Command1_Click()Dim Inta As Integer,St As String Inta=Text1.Text Factor Inta,St Text2.Text=StEnd SubPrivate Sub Factor(ByVal N As Integer,S As String)Dim I As Integer F

9、or I=1 To N-1 If N Mod I=0 Then S=S&Str(I)Next IEnd Sub第十二张,PPT共五十页,创作于2022年6月课堂练习课堂练习2:编写一个实现两数交换的程序,要求:编写一个实现两数交换的程序,要求程序中定义一个交换两数的通用过程。程序中定义一个交换两数的通用过程。Private Sub command1_click()Dim a%,b%a=text1.text b=text2.text call swap(a,b)text1.text=a text2.text=bEnd SubPrivate Sub Swap(X As Integer,Y As I

10、nteger)Dim temp As Integer Temp=X:X=Y:Y=TempEnd Sub第十三张,PPT共五十页,创作于2022年6月 调调用用FunctionFunction过过程程的的方方法法与与调调用用Visual Visual BasicBasic内内部部函函数数方方法法相相同同。即即在在表表达达式式中中写写出出它它的的名名称称和和相相应应的的实实在参数:在参数:Function Function 过程名过程名(实在参数表实在参数表)1)1)调调用用FunctionFunction过过程程与与调调用用SubSub过过程程不不同同,必必须须给给参参数数加上括号,即使调用无参

11、函数,加上括号,即使调用无参函数,括号也不能缺省括号也不能缺省;2)2)Visual BasicVisual Basic也允许像调用也允许像调用SubSub过程那样调用过程那样调用FunctionFunction过程。过程。(即使用即使用callcall语句和把函数名当作一个语句使用。语句和把函数名当作一个语句使用。)7.3.3 7.3.3 调用调用FunctionFunction过程过程第十四张,PPT共五十页,创作于2022年6月例例7-3 编写程序,求两个正整数的最大公约数。编写程序,求两个正整数的最大公约数。Private Sub Form_Click()Dim N As Intege

12、r,M As Integer,G As Integer N=InputBox(输入N)M=InputBox(输入M)G=Gcd(N,M)Print N;和;M;的最大公约数是:;GEnd SubPrivate Function Gcd(ByVal A As Integer,ByVal B As Integer)As Integer Dim R As Integer R=A Mod B Do While R 0 A=B:B=R:R=A Mod B Loop Gcd=BEnd Function第十五张,PPT共五十页,创作于2022年6月1.1.调用调用窗体窗体模块中的模块中的公有公有过程过程 C

13、all Form1.ExamSubCall Form1.ExamSub(实参表实参表)2 2调用调用标准标准模块中的模块中的公有公有过程过程 Call CommonSub Call CommonSub(实在参数实在参数)或或 Call Module2.CommonSub(Call Module2.CommonSub(实实参表参表)7.3.4 7.3.4 调用其它模块中的公有过程调用其它模块中的公有过程(了解了解)第十六张,PPT共五十页,创作于2022年6月课堂练习课堂练习在调用过程中,下述说明中正确的是()A A)只能使用)只能使用CallCall语句调用语句调用SubSub过程过程B B)

14、调用)调用SubSub过程时,实在参数必须用括号括起来过程时,实在参数必须用括号括起来CC)在表达式中调用)在表达式中调用FunctionFunction过程时,过程时,可以不用括号把实在参数括起来可以不用括号把实在参数括起来D D)FunctionFunction过程也可用过程也可用CallCall语句调用语句调用第十七张,PPT共五十页,创作于2022年6月课堂练习课堂练习在Visual Basic中,以下说法正确的是()A A)过程的定义可以嵌套,但过程的调用不能嵌套)过程的定义可以嵌套,但过程的调用不能嵌套B B)过程的定义不可以嵌套,但过程的调用能嵌套)过程的定义不可以嵌套,但过程的

15、调用能嵌套CC)过程的定义和过程的调用均可以嵌套)过程的定义和过程的调用均可以嵌套D D)过程的定义和过程的调用均不可以嵌套)过程的定义和过程的调用均不可以嵌套第十八张,PPT共五十页,创作于2022年6月课堂练习课堂练习在语句Public Sub Sort(I As Integer)中,I是一个按()传递的参数A A)地址)地址B B)值)值CC)变量)变量D D)常量)常量第十九张,PPT共五十页,创作于2022年6月7.4 7.4 参数的传递参数的传递(重点、难点重点、难点)7.4.1 7.4.1 形参与实参形参与实参7.4.2 7.4.2 按值传递参数按值传递参数7.4.3 7.4.3

16、 按地址传递参数按地址传递参数7.4.4 7.4.4 数组参数数组参数7.4.5 7.4.5 对象参数对象参数第二十张,PPT共五十页,创作于2022年6月 在调用一个有参数的过程时在调用一个有参数的过程时,首先进行的是首先进行的是“形实结形实结合合”,即按传值传递或按地址传递方式,实现调用程序,即按传值传递或按地址传递方式,实现调用程序和被调用的过程之间的数据传递。和被调用的过程之间的数据传递。Private Sub command1_click()Dim a%,b%a=text1.text b=text2.text call swap(a,b)text1.text=a text2.text

17、=bEnd SubPrivate Sub Swap(X As Integer,Y As Integer)Dim temp As Integer Temp=X X=Y Y=TempEnd Sub实参实参形参形参7.4.1 7.4.1 形参与实参形参与实参第二十一张,PPT共五十页,创作于2022年6月1.1.形参形参 出出现现在在SubSub过过程程和和FunctionFunction过过程程的的形形参参表表中中的的变变量量名名、数数组组名名称称之之为为形形式式参参数数,过过程程被被调调用用之之前前,并并未未为为其其分分配配内存内存,其作用是,其作用是用来接收传送给子过程的数据用来接收传送给子过

18、程的数据 形参可以是:形参可以是:1)1)除定长字符串变量之外的合法变量名;除定长字符串变量之外的合法变量名;2)2)后后面面跟跟有有左左、右右圆圆括括号号(注注意意:不不含含下下标标)的的数组名。数组名。第二十二张,PPT共五十页,创作于2022年6月2.2.实参实参 实实际际参参数数是是指指包包含含在在过过程程调调用用的的实实参参表表中中的的变变量量,数数组组等等。其其作作用用是是将将它它们们的的数数据据(数数值值或或地地址址)传传送送给给Sub或或Function过程与其对应的形参变量。过程与其对应的形参变量。实实参参可可以以是是常常量量、表表达达式式、有有效效的的变变量量名名、数数组组

19、名名组成。组成。如如call test(x2,true,a,st)算术表达式算术表达式第二十三张,PPT共五十页,创作于2022年6月 参数传递是按对应参数传递是按对应“位置位置”结合而不是按名字结合,即第结合而不是按名字结合,即第一个实参与第一形参结合,第二个实参与第二个形参结合,一个实参与第一形参结合,第二个实参与第二个形参结合,依此类推。依此类推。3 3、参数传递(虚实结合)、参数传递(虚实结合)参数传递指主调过程的实参(调用时参数传递指主调过程的实参(调用时已有确定值和内存地址已有确定值和内存地址的参数的参数)传递给被调过程的形参,参数的传递有两种方式:)传递给被调过程的形参,参数的传

20、递有两种方式:按值传递、按地址传递。形参前加按值传递、按地址传递。形参前加“ByVal”关键字的是按关键字的是按值传递值传递,缺省缺省或加或加“ByRef”关键字的为按关键字的为按地址传递地址传递。第二十四张,PPT共五十页,创作于2022年6月例:例:Private Sub command1_click()Dim a%,b%a=text1.text b=text2.text call swap(a,b)text1.text=a text2.text=bEnd SubPrivate Sub Swap(X As Integer,Y As Integer)Dim temp As Integer T

21、emp=X X=Y Y=TempEnd Sub实参实参形参形参第二十五张,PPT共五十页,创作于2022年6月 说明:(说明:(1 1)形参表和实参表中的对应变量名可以不)形参表和实参表中的对应变量名可以不必相同。必相同。Private sub examsub(x as integer,y as single).End subPrivate sub form_click()dim x as integer,y as single .Call examsub(y,x)End sub第二十六张,PPT共五十页,创作于2022年6月形形 参参 实实 参参变量变量 变量、常数、表达式、数组元素、对象变

22、量、常数、表达式、数组元素、对象数组数组 数组数组(2 2)形参与实参的个数必须相同,对应位置的参)形参与实参的个数必须相同,对应位置的参数类型必须一致。对应关系如下表数类型必须一致。对应关系如下表第二十七张,PPT共五十页,创作于2022年6月 按按值值传递时,系统分配临时的变量单元给形参。系统传递时,系统分配临时的变量单元给形参。系统仅把实参的值复制一份,然后把这个仅把实参的值复制一份,然后把这个副本副本再传给形参。再传给形参。被调过程执行时,对形参的任何改变,都不会影响实被调过程执行时,对形参的任何改变,都不会影响实参变量。参变量。结论:按值传递,形参变,相应的实参不变。结论:按值传递,

23、形参变,相应的实参不变。7.4.2 7.4.2 按按值值传递参数传递参数第二十八张,PPT共五十页,创作于2022年6月分析下列程序的值 Private Sub Command1_Click()Dim M As Integer,N As Integer M=15:N=20 Call Value_Change(M,N)Print M,NEnd SubPrivate Sub Value_Change(ByVal X As Integer,ByVal Y As Integer)X=X+20 Y=X+Y Print“X=“;X,”Y=“;Y End Sub1520返回地址返回地址1520MNXY100

24、010021004100510031520返回地址返回地址3555MNXY10001002100410051003第二十九张,PPT共五十页,创作于2022年6月结论:按地址传递参数,形参变,相应的实结论:按地址传递参数,形参变,相应的实参也跟着变参也跟着变7.4.3 7.4.3 按按地址地址传递参数传递参数 按按地址地址传递参数是把实参变量的传递参数是把实参变量的地址地址传给形参,即传给形参,即系统并不分配临时的变量单元给形参,而是系统并不分配临时的变量单元给形参,而是形参与实参形参与实参共用同一存储单元共用同一存储单元,因此,被调过程执行时,形参变量的,因此,被调过程执行时,形参变量的任一

25、变化,实参也相应改变。任一变化,实参也相应改变。按按地址地址传递参数可节省内存,执行效率高,但也可传递参数可节省内存,执行效率高,但也可能对程序运行产生某些干扰。能对程序运行产生某些干扰。第三十张,PPT共五十页,创作于2022年6月分析下列程序的值分析下列程序的值 Private Sub Command1_Click()Dim M As Integer,N As Integer M=15:N=20 Call Value_Change(M,N)Print M,N End Sub Private Sub Value_Change(X As Integer,by value Y As Intege

26、r)X=X+20 Y=X+Y Print“X=“;X,”Y=“;Y End SubX=35 y=55M=35 N=20第三十一张,PPT共五十页,创作于2022年6月1520返回地址返回地址1000(地址地址)20MNXY100010021004100510033520返回地址返回地址1000(地址(地址)55MNXY10001002100410051003第三十二张,PPT共五十页,创作于2022年6月Private Sub Form_Click()Dim sum As Integer,i As Integer For i=5 To 1 Step-1 sum=sum+fact(i)Next

27、i Print sum=;sumEnd Sub编写程序计算编写程序计算5!+4!+3!+2!+1!的值的值调用函数,循环变调用函数,循环变量作为实参量作为实参Public Function fact(n As Integer)As Integer fact=1 Do While n 0 fact=fact*n n=n-1 LoopEnd Function按地址传递参数产生不良干扰的示例:按地址传递参数产生不良干扰的示例:(1)循环变量循环变量作为实参作为实参Why?如何修改?如何修改?结果:结果:120120正确结果应为:正确结果应为:153153第三十三张,PPT共五十页,创作于2022年6

28、月参数数据类型转换的例子Private SubPrivate Sub Form_Click()Form_Click()Dim S as Single Dim S as Single S=125.5 S=125.5 Call Convert(S),”12”+”.5”)Call Convert(S),”12”+”.5”)End SubEnd Sub如果为如果为Call Convert(S),”125a”)Call Convert(S),”125a”)呢?呢?Private Sub Convert(Inx As Integer,Sing As Single)Inx=Inx*2 Sing=Sing+2

29、3 Print“Inx+”;Inx,”sing=”;SingEnd Sub第三十四张,PPT共五十页,创作于2022年6月Private Sub Form_Click()Dim v1 As Integer,v2 As Integer,v3 As Integer v1=2:v2=3:v3=4 Print v1+v2+v3*f(v1,v2,v3)End SubPublic Function f(a As Integer,b As Integer,c As Integer)a=a+10 b=b+10 c=c+10 f=a+b+cEnd Function调用函数语句,调用函数语句,实参是传地址实参是传

30、地址的。的。实参变量又出现在表实参变量又出现在表达式中达式中结果是结果是571571,而非,而非161161。why?why?(2)实参出现在表达式中)实参出现在表达式中第三十五张,PPT共五十页,创作于2022年6月 因为因为在在print语句中语句中,计算表达式时,计算表达式时,优优先执行函数调用先执行函数调用。调用结束时。调用结束时f=39,而,而v1,v2,v3的值也变了,的值也变了,不是不是2,3,4 而是而是 12,13,14所以结果是:所以结果是:12+13+14*39=571第三十六张,PPT共五十页,创作于2022年6月Private Sub Form_Click()Dim

31、v1 As Integer,v2 As Integer,v3 As Integer v1=2:v2=3:v3=4 V4=v1+v2+v3*f(v1,v2,v3)Print v4End Sub修改成赋值语句修改成赋值语句结果为结果为161 因为因为执行赋值语句执行赋值语句时,计算右侧表达式的值不是首先时,计算右侧表达式的值不是首先调用函数,而是调用函数,而是按从左到右的顺序按从左到右的顺序进行的,即计算进行的,即计算2+3+4*39第三十七张,PPT共五十页,创作于2022年6月如果修改成如果修改成:Private Sub Form_Click()Dim v1 As Integer,v2 As

32、Integer,v3 As Integer v1=2:v2=3:v3=4 V4=v1+v2+v3*f(v1,v2,v3)*1.0)Print v4End Sub这是一个非整型的这是一个非整型的()也叫实型表达式也叫实型表达式 结果又是结果又是571了,因为了,因为计算实型表达式时优先调用函数计算实型表达式时优先调用函数第三十八张,PPT共五十页,创作于2022年6月 结论结论:函数调用的优先级是不确定的,函数调用的优先级是不确定的,与诸多因素有关。编程时尽量不把按地址与诸多因素有关。编程时尽量不把按地址传递的实参变量放在函数调用的前面,可传递的实参变量放在函数调用的前面,可能会使算术表达式的值

33、难以预料。能会使算术表达式的值难以预料。第三十九张,PPT共五十页,创作于2022年6月 形参数组形参数组只能是按只能是按地址地址传递的参数。传递的参数。对应实参对应实参必须也是必须也是数组数组且数据类型必须和形且数据类型必须和形参数组的数据类型相一致参数组的数据类型相一致。7.4.4 7.4.4 数组参数数组参数第四十张,PPT共五十页,创作于2022年6月对数组作形参作几点说明:对数组作形参作几点说明:1)如果形参数组的类型是变长字符串型,)如果形参数组的类型是变长字符串型,则对应的实参数组的类型也必须是变长字则对应的实参数组的类型也必须是变长字符串型。符串型。第四十一张,PPT共五十页,

34、创作于2022年6月Private sub form_click()Dim array(5)as string*8 Call changedim(array)End subPrivate sub changedim(a()as string)Dim i as integer Redim preserve a(7)For i=1 to 7 a(i)=i Next IEnd sub形参是变形参是变长数组长数组 错误:实参错误:实参是定长数组是定长数组第四十二张,PPT共五十页,创作于2022年6月Private sub form_click()Dim array(5)as string*10 Ca

35、ll changedim(array)End subPrivate sub changedim(a()as string*8)Dim i as integer Redim preserve a(7)For i=1 to 7 a(i)=i Next IEnd sub形参是定形参是定长数组长数组实参也是实参也是定长数组定长数组 2)如果形参数组的类型定长字符串型,则对应的实参数)如果形参数组的类型定长字符串型,则对应的实参数组的类型也必须是定长字符串型,但长度可以不同。组的类型也必须是定长字符串型,但长度可以不同。第四十三张,PPT共五十页,创作于2022年6月3)调用过程时,只要把传递的数组名放

36、在)调用过程时,只要把传递的数组名放在实参表中即可,数组名后面不跟圆括号。实参表中即可,数组名后面不跟圆括号。Private sub form_click()Dim array(5)as string*8 Call changedim(array)End sub第四十四张,PPT共五十页,创作于2022年6月4)在过程中不可以用)在过程中不可以用dim语句对形参数组语句对形参数组进行声明,否则将产生进行声明,否则将产生“重复声明重复声明”的错的错误误,但是使用动态数组时,可以用,但是使用动态数组时,可以用redim语句改变形参数组的维界,重新定义数组语句改变形参数组的维界,重新定义数组的大小。

37、当控制返回调用程序时,对应参的大小。当控制返回调用程序时,对应参数的维界也跟着发生变化。数的维界也跟着发生变化。第四十五张,PPT共五十页,创作于2022年6月Private sub form_click()Dim array()as integer,i as integer Redim array(5)Print“调用前数组上界:调用前数组上界:”;ubound(array)Call changedim(array)Print“调用后数组上界:调用后数组上界:”;ubound(array)Print“数组各元素的值为:数组各元素的值为:”For i=1 to ubound(array)pri

38、nt array(i);Next IEnd subPrivate sub changedim(a()as interger)Dim i as integer Redim preserve a(7)For i=1 to 7 a(i)=i Next IEnd sub第四十六张,PPT共五十页,创作于2022年6月 在在Visual BasicVisual Basic中也可以把对象作为参数向过程中也可以把对象作为参数向过程传递。传递。在形参表中,把形参变量的类型声明为在形参表中,把形参变量的类型声明为“ControlControl”就就可以向过程传递可以向过程传递控件控件。若把类型声明为若把类型声明

39、为“FormForm”则可向过程传递则可向过程传递窗体窗体。对象的传递只能是按对象的传递只能是按地址地址传递。传递。7.4.5 7.4.5 对象参数对象参数第四十七张,PPT共五十页,创作于2022年6月Private Sub frmarg(f As Form)f.Left=(Screen.Width-f.Width)/2 f.Top=(Screen.Height-f.Height)/2 frmfirst.Hide f.ShowEnd SubPrivate Sub objarg(lad As Control)lad.BackColor=vbRed lad.ForeColor=vbGreen l

40、ad.Font=14 lad.FontItalic=True lad.Caption=对象参数的传递对象参数的传递End Sub传窗体传窗体传控件传控件第四十八张,PPT共五十页,创作于2022年6月Private Sub cmd1_Click()Call objarg(lab1)End SubPrivate Sub cmd2_Click()Call frmarg(frmsecond)End SubPrivate Sub Form_Load()frmfirst.Left=2000frmfirst.Top=1500End Sub将将lab1作为实参传作为实参传递给过程递给过程将窗体将窗体2作为实参传作为实参传递给过程递给过程第四十九张,PPT共五十页,创作于2022年6月感感谢谢大大家家观观看看第五十张,PPT共五十页,创作于2022年6月

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 资格考试

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁