收藏 分享(赏)

第4课 选择结构程序设计.ppt

上传人:jw66tk88 文档编号:10200878 上传时间:2019-10-18 格式:PPT 页数:63 大小:399KB
下载 相关 举报
第4课 选择结构程序设计.ppt_第1页
第1页 / 共63页
第4课 选择结构程序设计.ppt_第2页
第2页 / 共63页
第4课 选择结构程序设计.ppt_第3页
第3页 / 共63页
第4课 选择结构程序设计.ppt_第4页
第4页 / 共63页
第4课 选择结构程序设计.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

1、第4章 选择结构程序设计,第4章 选择结构程序设计,选择结构是计算机科学用来描述自然界和社会生活中分支现象的重要手段。其特点是根据所给定的条件为真(即条件成立)与否,而决定从各实际可能的不同分支中执行某一分支的相应操作,并且任何情况下总有:“无论分支多寡,必择其一;纵然分支众多,仅选其一”。,4.1 选择结构程序设计的概念在VB中,实现选择结构的语句有:If.Then.Else、If.Then.ElseIf、Select Case语句。这些语句又称为条件语句,条件语句的功能都是根据表达式的值有选择地执行一组语句。 4.2 条件表达式在条件语句中作为判断依据的表达式称为“条件表达式”,条件表达式

2、的取值为布尔值:真(True)或假(False)。在VB中,True的值等于1,False的值等于0。根据“条件”的简单或者复杂程度,条件表达式可以分为两类:关系表达式以及布尔表达式。,4.2.1 关系运算符与关系表达式关系表达式是指用关系运算符将两个表达式连接起来的式子(例如a + b 0),关系运算符又称比较运算符,用来对两个表达式的值进行比较,比较的结果是一个布尔值(True或False),这个结果就是关系表达式的值。,1. 关系运算符VB提供的关系运算符有以下6种,见表4-1。 表4-1 关系运算符,2. 关系表达式关系表达式的格式为表达式1关系运算符表达式2关系运算符表达式3关系表达

3、式的运算次序为:先分别求出关系运算符两侧表达式的值,然后再把二者进行比较,二者的关系若与关系运算符指示的一样,则关系运算的结果为真True,否则为假False。,4.2.2 布尔运算符与布尔表达式对于较为复杂的条件,必须使用布尔表达式。布尔表达式是指用布尔运算符连接若干关系表达式或布尔值而成的式子。布尔表达式的值也是一个布尔值。VB提供的布尔运算符有:And、Or、Not、Xor、Eqv、Imp等6种,其中常用的为前3种,见表4-2。,表4-2 布尔运算符说明:1) 布尔运算符两侧若有数值数据出现,则将数值数据转换为二进制数(补码形式)进行按位运算。此时,1为真,0为假。2) 布尔运算真值表见

4、表4-3。,表4-3 布尔运算真值表a b a And b a Or b Not aTrue True True True FalseTrue False False True FalseFalse True False True TrueFalse False False False True Not由真变假,由假变真。And对两个布尔值进行比较,如果两个值均为真,则结果为真,否则为假。Or对两个布尔值进行比较,如果其中一个值为真,则结果为真,只有两个值都为假时,结果才为假。运算布尔表达式时,先运算关系表达式,再运算布尔表达式。,4.2.3 运算符的优先顺序在一个表达式中进行多种操作时,VB

5、会按一定的顺序进行求值,称这个顺序为运算符的优先顺序。运算符的优先顺序见表4-4。 表4-4 运算符的优先顺序,【例4-1】设变量x = 4,y = 1,a = 7.5,b = 6.2,求表达式x + y a + b And Not y 1.3 And Not y b2) 再作关系运算: True And Not False3) 作非运算: True And True4) 最后得: True,【例4-2】判断某个年份是闰年的根据是年份数满足下述条件之一。条件1:能被4整除,但不能被100整除的年份都是闰年。条件2:能被100整除,又能被400整除的年份都是闰年。设变量y表示年份,写出判断y是否

6、闰年的布尔表达式。解:判断y是否满足条件1的布尔表达式是y Mod 4 = 0 And y Mod 100 0判断y是否满足条件2的布尔表达式是y Mod 100 = 0 And y Mod 400 = 0两者取“或”,即得判断闰年的布尔表达式:y Mod 4 = 0 And y Mod 100 0 Or y Mod 100 = 0 And y Mod 400 = 0,4.3 单条件选择语句IF单条件选择结构是最常用的双分支选择结构,其特点是:所给定条件(条件表达式)的值如果为真,则执行a1块;如果为假则执行a2块。其一般形式如图4-1所示。图4-1 单条件选择结构的流程图实现单条件选择结构的

7、语句是If语句,在VB中有行If语句和块If语句两种。,4.3.1 单行结构条件语句IFTHENELSE单行If语句的语法格式为 If 条件 Then 语句序列1 Else 语句序列2说明:1) 条件可以是关系表达式、布尔表达式或数值表达式。如果以数值表达式作条件,则非0值为真,0为假。2) 如果没有Else子句,语句序列1为必要参数,在条件为True时执行。,【例4-3】输入x,计算y的值。其中:,流程图4-2所示。图4-2 计算y值的流程图根据流程图,写出命令按钮Command1的单击(Click)事件代码为:,图4-3 计算函数的值Private Sub Command1_Click()

8、Dim x As Single, y As Singlex = Val(Text1.Text)If x = 0 Then y = 1 + x Else y = 12 * xText2.Text = y End Sub,【例4-4】学校对学习成绩优良的学生进行奖励,获奖的条件如下:1) 所考5门课的总分超过450分;2) 每门课的成绩都在88分以上;3) 前3门(主课)的成绩都在95分以上,其他两门(非主课)的成绩都在80分以上。输入某学生5门课的成绩s1、s2、s3、s4、s5,判断他是否能够获奖。分析:依题意列出3个条件表达式:1) s1 + s2 + s3 + s4 + s5 = 4502

9、) s1 = 88 AND s2 = 88 AND s3 = 88 AND s4 = 88 AND s5 = 883) s1 = 95 AND s2 = 95 AND s3 = 95 AND s4 = 80 AND s5 = 80,图4-4 判断能否获奖命令按钮Command1的单击(Click)事件代码为:Private Sub Command1_Click()Dim s1 As Single, s2 As Single, s3 As Single, s4 As Single, s5 As SingleDim p As Strings1 = Val(InputBox(“请输入第1门课的成绩:

10、“, “输入框“, 0)s2 = Val(InputBox(“请输入第2门课的成绩:“, “输入框“, 0)s3 = Val(InputBox(“请输入第3门课的成绩:“, “输入框“, 0)s4 = Val(InputBox(“请输入第4门课的成绩:“, “输入框“, 0)s5 = Val(InputBox(“请输入第5门课的成绩:“, “输入框“, 0),t1 = (s1 + s2 + s3 + s4 + s5 = 450)t2 = (s1 = 88 And s2 = 88 And s3 = 88 And s4 = 88 And s5 = 88)t3 = (s1 = 95 And s2 =

11、 95 And s3 = 95 And s4 = 80 And s5 = 80)If t1 Or t2 Or t3 Then p = “ 可以获奖!“ Else p = “ 不能获奖!“p = Str(s1) & “,“ & Str(s2) & “,“ & Str(s3) & “,“ & Str(s4) & “,“ & Str(s5) & Chr(13) & pLabel1.Caption = “ 该生五门课的成绩分别是:“ & Chr(13) & pEnd Sub,【例4-5】利用输入框函数输入3个不同的数,选出其中最大的数。命令按钮Command1的单击(Click)事件代码为:Priva

12、te Sub Command1_Click()Dim a As Single, b As Single, c As Singlea = Val(InputBox(“请输入第1个数:“, “输入框“, 0)b = Val(InputBox(“请输入第2个数:“, “输入框“, 0)c = Val(InputBox(“请输入第3个数:“, “输入框“, 0)p = “ “ & a & “,“ & b & “,“ & cp = p & “三个数中最大的数是:“If a b And a c Then p = p & aIf b a And b c Then p = p & bIf c a And c

13、b Then p = p & cLabel1.Caption = pEnd Sub,图4-5 求3个数中最大数 4.3.2 使用IIF函数还可以使用IIf函数来实现一些比较简单的选择结构。IIf函数的语法结构为:IIf(条件表达式,真部分,假部分)语句y = IIf(条件表达式,真部分,假部分) 相当于:If 条件表达式 then y =真部分 Else y =假部分,【例4-6】例4-3中命令按钮Command1的单击(Click)事件代码可以改为:Private Sub Command1_Click()Dim x As Single, y As Singlex = Val(Text1.Te

14、xt)y = IIf(x = 0, 1 + x, 12 * x)Text2.Text = yEnd Sub,4.3.3 块结构条件语句IFTHENELSEEND IFVB提供的块If语句,将一个选择结构用多个语句行来实现。其语法结构为:If 条件1 Then语句序列1Else语句序列2End If在块形式中,If语句必须是第1行语句。If块必须以一个End If语句结束。,【例4-7】将例4-3中命令按钮Command1的单击(Click)事件代码改为多行If语句:Private Sub Command1_Click()Dim x As Single, y As Singlex = Val(T

15、ext1.Text)If x = 0 Theny = 1 + x Elsey = 12 * xEnd IfText2.Text = yEnd Sub,4.3.4 IF语句的嵌套 1. IF语句的嵌套如果在If语句中操作块a1块(语句序列1)或a2块(语句序列2)本身又是一个If语句,则称为If语句的嵌套。 【例4-8】铁路托运行李,从甲地到乙地,规定每张客票托运费计算方法是行李重量不超过50kg时,0.25元/kg,超过50kg而不超过100kg时,其超过部分按0.35元/kg收费,超过100kg时,其超过部分按0.45元/kg收费。编写程序,输入行李重量,计算并输出托运的费用。,【例4-8】

16、铁路托运行李,从甲地到乙地,规定每张客票托运费计算方法是行李重量不超过50kg时,0.25元/kg,超过50kg而不超过100kg时,其超过部分按0.35元/kg收费,超过100kg时,其超过部分按0.45元/kg收费。编写程序,输入行李重量,计算并输出托运的费用。分析:设行李重量为wkg,应付运费为x元,则运费公式为:,命令按钮Command1的单击(Click)事件代码为:Private Sub Command1_Click()Dim w As Single, x As Singlew = Val(Text1.Text)If w = 50 Thenx = 0.25 * wElseIf w

17、= 100 Thenx = 0.25 * 50 + 0.35 * (w50)Elsex = 0.25 * 50 + 0.35 * 50 + 0.45 * (w100) 图4-7 计算托运费End IfEnd IfText2.Text = xEnd Sub,图4-8 计算优惠价 【例4-9】某百货公司为了促销,采用购物打折扣的优惠办法:每位顾客一次购物1) 在1000元以上者,按九五折优惠;2) 在2000元以上者,按九折优惠;3) 在3000元以上者,按八五折优惠;4) 在5000元以上者,按八折优惠。输入购物款数,计算并输出优惠价,如图4-8所示。分析:设购物款数为x元,优惠价为y元,付款公

18、式为:,命令按钮Command1的单击(Click)事件代码为:Private Sub Command1_Click()Dim x As Single, y As Singlex = Val(Text1.Text)If x 1000 Theny = xElseIf x 2000 Theny = 0.95 * xElseIf x 3000 Theny = 0.9 * xElse,If x 5000 Theny = 0.85 * xElsey = 0.08 * xEnd IfEnd IfEnd IfEnd IfText2.Text = y End Sub图4-8 计算优惠价,2. IF语句的嵌套格

19、式ELSEIF例4.8中出现的多层If语句嵌套,使程序冗长,不便阅读。为此VB提供了带ElseIf的块If语句来处理当条件为假时又内嵌块If语句的情形,以使程序简化易写。其语法结构为:If 条件1 Then语句序列1ElseIf 条件2 Then语句序列2 .Else其他语句序列End If,【例4-10】在例4-9中使用带ElseIf的块If语句来计算出优惠价,只需将其中命令按钮Command1的单击(Click)事件代码改为:Private Sub Command1_Click()Dim x As Single, y As Singlex = Val(Text1.Text)If x 100

20、0 Theny = xElseIf x 2000 Theny = 0.95 * xElseIf x 3000 Theny = 0.9 * x,ElseIf x 5000 Theny = 0.85 * xElsey = 0.08 * xEnd IfText2.Text = yEnd Sub,4.4 多分支条件选择语句SELECT CASE多分支选择结构的特点是:从多个选择结构中,选择第1个条件为真的路线作为执行的路线。即所给定的选择条件1为真时,执行a1块;如果为假则继续检查下一个条件。如果条件都不为真,就执行其他操作块,如果没有其他操作块,则不作任何操作就结束选择。如图4-9所示。图4-9 多

21、条件多分支选择结构的流程图,4.4.1 SELECT CASE结构与语法虽然使用嵌套的办法可以利用If语句实现多分支选择,但是最好还是使用VB提供的多分支选择结构(Select Case语句)来实现多分支选择。根据单一表达式来执行多种可能的动作时,Select Case更为简捷,它根据表达式的值,来决定执行几组语句中的一组。,4.4.1 SELECT CASE结构与语法Select Case语句的语法格式为Select Case 测试条件Case 表达式表1语句序列1Case 表达式表2语句序列2.Case Else其他语句序列End Select,Case子句中的表达式表是一个或多个如表4-

22、5所示形式表达式的列表。 表4-5 表达式的形式当使用多个表达式的列表时,表达式与表达式之间要用逗号“,”隔开。,4.4.2 SELECT CASE结构的应用 【例4-11】在例4-9中使用Select Case语句来计算优惠价,只需将其中命令按钮Command1的单击(Click)事件代码改为:,Private Sub Command1_Click()Dim x As Single, y As Singlex = Val(Text1.Text)Select Case xCase Is 1000y = xCase Is 2000y = 0.95 * xCase Is 3000y = 0.9 *

23、 x,Case Is 5000y = 0.85 * xCase Elsey = 0.08 * xEnd SelectText2.Text = y End Sub,【例4-12】某航空公司规定在旅游的旺季79月份,如果订票数超过20张,票价优惠15%,20张以下,优惠5%;在旅游的淡季15月份、10月份、11月份,如果订票数超过20张,票价优惠30%,20张以下,优惠20%;其他情况一律优惠10%。设计程序,根据月份和订票张数决定票价的优惠率。图4-11 计算优惠价,命令按钮Command1的单击(Click)事件代码为:Private Sub Command1_Click()Dim m As

24、Integer, n As Integer, r As Integerm = Val(Text1.Text)n = Val(Text2.Text)Select Case mCase Is = 5, 10, 11If n 20 Then r = 20 Else r = 30Case 7 To 9If n 20 Then r = 5 Else r = 15 Case Elser = 10End SelectLabel4.Caption = “所订机票的优惠率为:“ & Str(r) & “%“End Sub,为了使用更加方便,再增加如下代码。窗体的Load事件代码:Private Sub Form

25、_Load()Text1.Text = Month(Date) Text1中的默认值为当前月份End Sub文本框Text1的GotFocus事件代码:Private Sub Text1_GotFocus()Text1.SelStart = 0Text1.SelLength = Len(Text1.Text)End Sub,文本框Text1的按健(KeyPress)事件代码:Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then 在Text1按Enter键,光标跳到Text2If Text1.Text 0 And

26、 Text1.Text 13 ThenText2.SetFocusEnd IfEnd IfEnd Sub,文本框Text2的GotFocus事件代码:Private Sub Text2_GotFocus()Text2.SelStart = 0Text2.SelLength = Len(Text2.Text)End Sub文本框Text2的按健(KeyPress)事件代码:Private Sub Text2_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then 在Text2按Enter键,光标跳到Command1If Text2.Text 0 Th

27、en Command1.SetFocusEnd IfEnd Sub,4.5 使用计时器控件计时器(Timer)是Visual Basic提供的一个用于定时的特殊控件,当到达预定时间时,系统会自动触发其Timer事件,以便完成指定的操作。计时器控件在设计时显示为一个小时钟图标,而在运行时则不可见,常用来做一些后台处理。计时器的属性和事件都相当少,能响应的事件只有自身特有的一个Timer事件,其主要属性见表4-6。 表4-6 Timer控件的属性,【例4-13】为一个应用系统设计流动字幕板,如图4-12所示,标题“欲穷千里目,更上一层楼”在窗体中自右至左地反复移动。图4-12 电子标题板,命令按钮

28、Command1的Click事件代码:Private Sub Command1_Click()If Command1.Caption = “&S 暂停“ ThenCommand1.Caption = “&C 继续“Timer1.Enabled = FalseElseCommand1.Caption = “&S 暂停“Timer1.Enabled = TrueEnd IfEnd Sub,编写Timer1的Timer事件代码:Private Sub Timer1_Timer()If Label1.Left + Label1.Width 0 ThenLabel1.Move Label1.Left 2

29、0ElseLabel1.Left = Form1.ScaleWidthEnd IfEnd Sub,4.6 提供简单选择的控件成组使用的选项按钮以及复选框可以为用户提供简单的、事先准备的选项。 4.6.1 选项按钮选项按钮(OptionButton)又称单选按钮。一般来说,选项按钮总是作为一个组(选项按钮组)的组成部分工作的。选项按钮组是一组相互排斥的选项按钮,选择一个选项按钮就会立即清除该组中的其他按钮。在选项按钮组中只能单击一个选项,即选项按钮组只允许用户从选择菜单中选择一个选项。,1. 使用选项按钮组在窗体中定义的若干选项按钮可以组成一个选项组,一般常用框架(Frame)控件来组织一个选项

30、组。 【例4-14】设银行定期存款年利率为:1年期2.25%,2年期2.70%,3年期3.24%,5年期3.60%(不计复利)。今有本金a元,5年以后使用,共有以下6种存法: 存一次5年期;存一次3年期,一次2年期;存一次3年期,两次1年期;存两次2年期,一次1年期;存一次2年期,三次1年期;存五次1年期。 图4-14 计算利息,分别计算各种存法5年后到期时的本息合计,如图4-14所示。分析:设x1、x2、x3、x5分别表示1年、2年、3年、5年定期储蓄的利息,a表示本金,则定期的本息计算公式分别为:(1 + x1)a、(1 + 2x2)a、(1 + 3x3)a、(1 + 5x5)a。,编写命

31、令按钮Command1的单击(Click)事件代码: Private Sub Command1_Click()Dim a As Single, y As SingleDim x1 As Single, x2 As SingleDim x3 As Single, x5 As Singlea = Val(Text1.Text)x1 = 0.0225: x2 = 0.0270x3 = 0.0324: x5 = 0.0360Select Case TrueCase Option1.Valuey = (1 + 5 * x5) * aCase Option2.Valuey = (1 + 3 * x3) *

32、 (1 + 2 * x2) * a,Case Option3.Valuey = (1 + 3 * x3) * (1 + x1) 2 * aCase Option4.Valuey = (1 + 2 * x2) 2 * (1 + x1) * aCase Option5.Valuey = (1 + 2 * x2) * (1 + x1) 3 * aCase Option6.Valuey = (1 + x1) 5 * aEnd SelectText2.Text = yText1.SetFocus End Sub,编写文本框Text1的GotFocus事件代码:Private Sub Text1_GotF

33、ocus()Text1.SelStart = 0Text1.SelLength = Len(Text1.Text)End Sub,2. 使用图形选项按钮可以将选项按钮设计成图形按钮的形式。 【例4-15】用图形选项按钮组控制流动字幕中的字体,如图4-15所示。在例4-13中增加4个选项按钮Option1Option4,并修改Option1Option4的Style属性为:1 Graphical(图形方式),再依次修改其Caption属性,如图4-15所示。图4-15 图形选项按钮组,编写选项按钮Option1Option4的Click事件代码:Private Sub Option1_Click

34、()Text1.FontName = “宋体“End SubPrivate Sub Option2_Click()Text1.FontName = “隶书“End SubPrivate Sub Option3_Click()Text1.FontName = “黑体“End SubPrivate Sub Option4_Click()Text1.FontName = “楷体_GB2312“End Sub说明:可以为图形按钮添加图形文件,以创建真正的“图形按钮”。,4.6.2 复选框选项按钮组属于多项中选择一项的选择,若需要选择多项的情况,可以采用多个复选框(CheckBox)控件。当复选框被选定

35、时,复选框中出现一个“”。复选框的Caption属性可以指定出现在复选框旁边的文本,而Picture属性用来指定当复选框被设计成图形按钮时的图像。复选框的状态由其Value属性决定:0 假,1 真,2 暗。,1. 使用单个复选框单个的复选框是让用户在两个选项之间进行选择,如是或否,真或假。这有点儿像两个按钮的选项组,只是形式上要简单一些,操作更方便一些。 【例4-16】在上例中,增加复选框,控制选项按钮组的显示,如图4-16所示。图4-16 利用复选框控制选项按钮组的显示,复选框控件Check1的Click事件代码:Private Sub Check1_Click()Option1.Visib

36、le = Check1.ValueOption2.Visible = Check1.ValueOption3.Visible = Check1.ValueOption4.Visible = Check1.ValueEnd Sub,2. 使用多个复选框一般情况下,复选框总是成组出现,用户可以从中选择一个或多个选项。 【例4-17】设计一个个人资料输入窗口,使用选项按钮组输入性别与民族,使用复选框输入个人爱好,如图4-17所示。图4-17 使用多个复选框,编写命令按钮Command1的Click事件代码:Private Sub Command1_Click()If Text1.Text = “ T

37、hena = InputBox(“您忘了输入姓名!“, “注意“, “请在此输入姓名“)If a = “ Or a = “请在此输入姓名“ Then Exit SubText1.Text = aEnd Ifp1 = Text1.Text + “,“p2 = IIf(Option1, “男“, “女“) + “,“p3 = IIf(Option3, “汉族“, “少数民族“)p4 = “,喜欢:“If Check1.Value = 1 Then p4 = p4 + Check1.Caption + “、“If Check2.Value = 1 Then p4 = p4 + Check2.Capt

38、ion + “、“If Check3.Value = 1 Then p4 = p4 + Check3.Caption + “、“If Check4.Value = 1 Then p4 = p4 + Check4.Caption + “、“,aa = p1 + p2 + p3 + IIf(p4 = “,喜欢:“, “,无爱好。“, p4)Label4.Caption = Left(aa, Len(aa) 1) + “。“Text1.SetFocusEnd Sub编写文本框Text1的Change事件代码:Private Sub Text1_Change()Label4.Caption = “En

39、d Sub说明:框架Frame1不能少,否则4个选项按钮成为一组。,3. 复选框的图形方式也可以将复选框做成图形(即按钮)方式,这只要改变Style属性的设置,然后使用Picture、DownPicture和DisabledPicture属性。DownPicture 属性指的是按钮处于被按下状态时显示的一个图片对象。除非控件的Style属性设置为1(图形的),否则DownPicture属性将被忽略。 【例4-18】利用图形复选框来控制文本的字体风格,如图4-19所示。图4-19 使用图形复选框,设置对象属性。只介绍4个复选框Check1Check4的属性设置,其余参见图4-227所示。依次选中

40、4个复选框Check1Check4,将其Style属性改为:1 Graphical (图形方式),将图片(Picture)属性通过浏览按钮“”进行查找,并分别改为program filesmicrosoft visual studiocommongraphicsiconsmiscsecur01a.icoprogram filesmicrosoft visual studiocommongraphicsbitmapstlbr_w95bld.bmpprogram filesmicrosoft visual studiocommongraphicsbitmapstlbr_w95itl.bmpprog

41、ram filesmicrosoft visual studiocommongraphicsbitmapstlbr_w95undrln.bmpCheck1的DownPicture属性改为:program filesmicrosoft visual studiocommongraphicsiconsmiscsecur01b.ico,复选框控件Check1的Click事件代码:Private Sub Check1_Click()Check2.Enabled = Check1.ValueCheck3.Enabled = Check1.ValueCheck4.Enabled = Check1.Valu

42、eCheck1.Caption = IIf(Check4.Caption = “锁上“, “打开“, “锁上“)End Sub复选框控件Check2的Click事件代码:Private Sub Check2_Click()Text1.FontBold = Check2.ValueEnd Sub,复选框控件Check3的Click事件代码:Private Sub Check3_Click()Text1.FontItalic = Check3.ValueEnd Sub复选框控件Check4的Click事件代码:Private Sub Check4_Click()Text1.FontUnderline = Check4.ValueEnd Sub说明:DownPicture属性表示复选框被按下时的图形。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报