版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Web 程序设计第 3 章VBScript脚本语言Web 程序设计VBScript脚本语言目标VBScript的数据类型 变量和常量,运算符用户交互函数和过程的使用流程控制结构创建VBScript过程使用VBScript内置函数重点: 流程控制,子过程和函数过程2目标VBScript的数据类型 23.1 脚本语言概念脚本(script)语言的概念源于Unix系统,在Unix系统中,将主要以行命令组成的命令集称为Shell脚本程序。常用脚本语言有:JavaScript、VbScript、和用于编写CGI脚本的Perl,Shell Script 等。脚本语言分为客户端脚本语言和服务器端脚本语言,前
2、者在客户端执行,后者在服务器端执行。客户端默认脚本语言为JavaScript,服务器端默认的脚本语言为VbScript。使用客户端脚本可以:为用户提供交互、动态修改内容、检验数据、集成33.1 脚本语言概念脚本(script)语言的概念源于UniVBScript语言VBScript语言是一种与Visual Basic相类似的程序设计语言,与Visual Basic语法基本相同,但功能上限制比较多; VBScript与JavaScript一样,是嵌入于HTML中的,可以设计出生动活泼、互动的Web pages和Web-based应用程序 ;VBScript可以在客户端和服务器端执行; VBScr
3、ipt是面向对象的程序设计语言,在VBScript的服务器端程序中,ASP对象很重要。4VBScript语言VBScript语言是一种与Visual3.2 在网页中嵌入VBScript代码的方法 动态网页示例 script代码块,默认由客户浏览器执行 !- document.write 欢迎您学习VBscript & - 图3-1 动态网页浏览结果 53.2 在网页中嵌入VBScript代码的方法 在网页中嵌入VBScript代码的方法 说明:(1)标记的作用是嵌入VBScript代码。该标记的一般格式如下: VBScript代码序列 标记可以出现在HTML文档的任何地方(body或head部
4、分之中),但最好将所有的一般目的的脚本代码放在head部分中,使所有脚本代码集中放置。这样可以确保在body部分调用代码之前所有脚本代码都被读取并解释。 一般将标记中的代码块放在HTML的注释符号“”之间。(2)网页代码中的标记“”的作用是嵌入ASP代码,可以根据需要在其中编写VBScript脚本程序。注意:“”之间的代码将由服务器解释执行。 6在网页中嵌入VBScript代码的方法 说明:63.3 VBScript语言的写书规则 (1)程序代码中不区分字母的大小写;(2)一行可以写多条语句,语句之间用“:”分隔;(3)一条语句也可以写在若干行上,但需在每行末尾加上续行标记空格和下划线“ _”
5、;(4)一行的长度不得超过255个字符;(5)在代码中可合理地使用注释,注意以“”开头,可以自占一行,也可以直接出现在语句的后面。73.3 VBScript语言的写书规则 (1)程序代码中不区3.4 数据类型可变型数据类型Variant 由各种子数据类型构成可存储任何子类型的值支持自动转换各种子类型83.4 数据类型可变型数据类型Variant 83.5 变量和常量一、变量定义程序执行时可以改变的量语法命名规则Dim x Dim a, b, Left, Right (1) 变量名只能由字母、数字和下划线组成。(2) 变量名的第一个字符必须是字母。(3) 变量名中间不能有空格。(4) 变量名中不
6、能包含小数点。(5) 变量名的字符数目不得超过255个字符。(6) 不能用VB的关键字作变量名。 (7) 变量名不能与过程名和符号常量名相同。(8) 变量名在同一个作用域内必须是惟一的。93.5 变量和常量一、变量Dim x (1) 变量名只能由3.5 变量和常量二、常量定义程序执行时保持不变的数据分类直接常量符号常量(内部常量、用户声明常量)Const mystring=这是一个常量 Const myage=100Const CutoffDate =#3-16-2003 13:20:15# 103.5 变量和常量二、常量Const mystring=这例1 求圆的周长。常量 const Pi
7、 = 3.14 定义圆周率为常量 dim r,length r = 3 length = 2* Pi*r MsgBox “圆的半径为:” & r & vbCrLf & “圆的周长为:” & length11例1 求圆的周长。113.5 变量和常量三、数组定义一组相同类型的变量的集合分类静态数组动态数组Dim 数组名(最大下标) Dim array1(2)Dim array2(2,3) Dim 数组名( ) Dim myarray( )Redim preserve 数组名(新的最大下标值)Dim datanum()Redim datanum(10) 123.5 变量和常量三、数组Dim 数组名(
8、最大下标) Dim3.5 变量和常量三、数组示例 Dim A(10) A(0)=256 A(1)=324 A(10)=55 Document.write(A(0) Document.write(“”) Document.write(A(9) Document.write(“”) Document.write(A(10) Dim A( ) Redim A(25) A(0)=256 A(1)=324 Redim Preserve A(30) A(30)=30 Document.write(A(0) Document.write(“”) Document.write(A(1) Document.wr
9、ite(“”) Document.write(A(30) 用于向当前网页输出内容,其内容可以是纯文本,也可以是文本与HTML标记的组合 133.5 变量和常量三、数组script language=例2 动态数组示例。14例2 动态数组示例。143.6 运算符一、算术运算符:+、-、*、/、(整除)、Mod(取余)、(乘方)二、字符串运算符“&”与“+”的区别 三、比较运算符: = 、 、 、 =“计算机” & 1234 结果为”计算机1234”“22” & 1234 结果为”221234” 22 + 1234 结果为1256“计算机” + 1234 出错153.6 运算符一、算术运算符:+、
10、-、*、/、(整除)、M3.6 运算符运算符含义示例描述And与A And B当A和B同时为True时,结果为True,否则为FalseOr或A Or B 只要A或B之一为True,结果为True,否则为FalseNot非Not A 若A为True,则结果为False;若A为False,则结果为TrueXor异或A Xor B 若A和B取值相同时,结果为False,否则结果为TrueImp蕴涵A Imp B A为True且B为False时,结果为False,否则结果为TrueEqv等价A Eqv B A和B同时为True或同时为False时,结果为True,否则结果为False四、逻辑运算符1
11、63.6 运算符运算符含义示例描述And与A And B当A和3.7 用户交互函数和过程一、InputBox函数作用产生一个输入框,等待用户输入文本或选择一个按钮,当用户单击确定按钮或按回车键,函数返回文本框中输入的内容。 语法 InputBox(“提示”,“标题” ,“缺省值” ,“x坐标位置” ,“y坐标位置”) useraccount= InputBox(请输入您的账号,账号输入框,”A31007”) 173.7 用户交互函数和过程一、InputBox函数Input3.7 用户交互函数和过程二、MsgBox函数和MsgBox过程作用产生一个信息框,等待用户选择一个按钮。MsgBox函数会
12、返回一个值指示用户选择的按钮,若不需返回值,则可用MsgBox过程。 语法 “图标名称”和“按钮名称”的含义MsgBox函数:MsgBox(“显示内容”,图标名称|按钮名称,“标题”)MsgBox过程:MsgBox “显示内容”,图标名称|按钮名称,“标题”183.7 用户交互函数和过程二、MsgBox函数和MsgBox3.7 用户交互函数和过程三、例4 利用InputBox函数提供一个输入框输入姓名,然后用MsgBox显示输入的姓名。用户交互函数的应用 dim strnamestrname=InputBox(请输入您的姓名,姓名输入框“Msgbox 您的姓名是 & strname,显示姓名1
13、93.7 用户交互函数和过程三、例4 利用InputBox四、例5 判断输入帐号用户交互函数的应用 dim account,i Do account=InputBox(请输入账号,输入账号对话框) i=Msgbox(你的账号是:& account &vbCrLf &是否重输?,vbYesNo+VbExclamation,显示账号) Loop until i=vbNo 20四、例5 判断输入帐号203.8 流程控制结构一、选择结构If语句单分支结构的If语句双分支结构的If语句多分支结构的If语句Select Case语句语法:If 表达式 Then 语句块End If或:If 表达式 Then
14、 语句 213.8 流程控制结构一、选择结构语法:21例6 改变网页背景颜色 单分支结构的If语句 If time=#0:0:0# and time=#12:0:0# Then document.write End If上午和下午网页的背景颜色不同22例6 改变网页背景颜色 223.8 流程控制结构一、选择结构If语句单分支结构的If语句双分支结构的If语句多分支结构的If语句Select Case语句语法:If 表达式 Then 语句块Else 语句块End If233.8 流程控制结构一、选择结构语法:23例7 判断是否输入姓名。双分支结构的If语句dim name, messagenam
15、e = InputBox(请输入您的姓名:)If name= Then message = 您未输入您的姓名! Else message = 您的姓名是: & name & 。End IFMsgBox message24例7 判断是否输入姓名。243.8 流程控制结构一、选择结构If语句单分支结构的If语句双分支结构的If语句多分支结构的If语句Select Case语句语法:If 表达式1 Then语句块1ElseIf 表达式2 Then语句块2 Else语句块nEnd If 253.8 流程控制结构一、选择结构语法:25例8 当用户浏览网页时,能根据浏览时间的不同显示不同的问候语:26例8
16、 当用户浏览网页时,能根据浏览时间的不同显示不同的问3.8 流程控制结构一、选择结构If语句单分支结构的If语句双分支结构的If语句多分支结构的If语句Select Case语句语法:Select Case 表达式 Case 值1 语句块1Case 值2 语句块2Case Else 语句块nEnd Select273.8 流程控制结构一、选择结构语法:27例9 根据成绩显示不同的字句。 Select Case语句 option explicitdim score, messagescore = InputBox(“请输入成绩:”) 等待用户输入成绩Select Case True case S
17、core 60 message=非常遗憾,您没有通过考试! case Score 70 message=您通过了考试,不过成绩一般噢! case Score 90 message=您通过了考试,成绩还不错! case Else message=恭喜您,取得了好成绩! End SelectMsgBox message 28例9 根据成绩显示不同的字句。 3.8 流程控制结构二、循环结构计数循环语句ForNext 适用用于循环次数确定的循环结构语法 功能执行循环体中的程序代码指定次数,在循环中使用循环变量,该变量值随每一次循环增加步长,步长缺省为1。 For 循环变量=初始值 to终止值 Step
18、 步长程序代码Next 293.8 流程控制结构二、循环结构For 循环变量=初始值 t例10 实现求1到100的和。 for i=1 to 100 sum=sum+i next例11 输出九九乘法表。 30例10 实现求1到100的和。303.8 流程控制结构二、循环结构数组循环语句For EachNext 适用常用于数组或对象集合 语法 功能用“变量名”代替数组中的每一个元素或对象集合中的每一项,对于数组中的每一个元素或对象集合中的每一项重复执行循环体中的程序代码。 For Each 变量名 In 数组名或对象集合 程序代码Next 313.8 流程控制结构二、循环结构For Each 变
19、量名 例13 用For EachNext循环输出数组中各元素的值。 dim score,i,message score=Array(97, 83, 68, 90, 70,54) 创建一个有6个元素的成绩数组 用循环输出每个成绩 For Each i In score 此时数组只需写数组名,不必须加括号 message=message & i & chr(13) & chr(10) next MsgBox message 32例13 用For EachNext循环输出数组中各元素3.8 流程控制结构二、循环结构条件式循环语句DoLoop适用常用于循环次数未知的循环结构 分类 当型DoLoop 直
20、到型 DoLoop 333.8 流程控制结构二、循环结构33当型DoLoopDoLoop While执行循环代码并对循环条件进行求值, 重复执行直到循环条件为 FalseDo WhileLoop只有在循环条件为 True 时才执行循环代码,重复执行直到循环条件为 False如果想在条件表达式为 True(而不是False)时才执行循环语句,可使用 While 关键字。 34当型DoLoopDoLoop While如果想在条件表达当型DoLoop对比流程图循环条件代码假真循环条件代码真假DoLoop WhileDo While Loop注意都是在循环条件为假时退出35当型DoLoop对比流程图循
21、环条件代码假真循环条件代码真假直到型DoLoopDoLoop Until执行循环代码并对循环条件进行求值, 重复执行直到循环条件为 True。注意代码至少会执行一次Do UntilLoop只有在循环条件为 False 时才执行循环代码,重复执行直到循环条件为 True。循环结构中的代码可能一次都不执行36直到型DoLoopDoLoop Until36直到型DoLoop对比流程图循环条件代码假真循环条件代码真假DoLoop UntilDo Until Loop注意都是在循环条件为真时退出37直到型DoLoop对比流程图循环条件代码假真循环条件代码真例14 用Do Loop循环语句求1到100的平
22、方和。 DoLoop循环n=1s=0Do while n=100s=s+n2n=n+1LoopMsgbox 1的平方到100的平方的累加和为: & s38例14 用Do Loop循环语句求1到100的平方和。3.8 流程控制结构二、循环结构WhileWend循环 适用常用于循环次数未知的循环结构 语法 功能先判断表达式的值,若值为True,则执行循环体中的程序代码,否则退出循环,执行Wend后的语句。 While 表达式程序代码Wend393.8 流程控制结构二、循环结构While 表达式39例15 用WhileWend循环语句求1到100的平方和。WhileWend循环n=1s=0While
23、 n=100s=s+n2n=n+1WendMsgbox 1的平方到100的平方的累加和为: & s40例15 用WhileWend循环语句求1到100的平方3.9 VBScript过程定义:过程是完成某种特定功能的一组独立的程序代码 分类:子过程和函数过程区别:函数过程可以在执行结束的时候返回一个值给调用它的程序,而子过程不返回值。 413.9 VBScript过程定义:过程是完成某种特定功能的一3.9 VBScript过程一、子过程例16 子过程的定义。子过程 msgbox 现在执行子过程外的语句 Sub a msgbox 现在执行子过程内的语句 End Sub423.9 VBScript过
24、程一、子过程423.9 VBScript过程一、子过程调用子过程语法方式一: Call 子过程名(参数1,参数2,)方式二: 子过程名参数1,参数2, 433.9 VBScript过程一、子过程方式一:433.9 VBScript过程一、子过程调用子过程例17 无参数子过程的定义及调用。无参数子过程的定义及调用 a msgbox 现在执行子过程外的语句 Sub a msgbox 现在执行子过程内的语句 End Sub443.9 VBScript过程一、子过程443.9 VBScript过程一、子过程调用子过程例18 有参数子过程的定义及调用。有参数子过程的定义及调用 dim a,b,c a=1
25、5 b=20 c=4 maxnum a,b,c 调用子过程 Sub maxnum(x,y,z) 定义子过程 dim max if xy then max=x else max=y end if if zmax then max=z msgbox “最大的数为:” & max End Sub 453.9 VBScript过程一、子过程453.9 VBScript过程一、子过程终止执行子过程(Exit Sub)例19 子过程的中止。子过程的中止 b Sub b document.write “子过程被中止前” exit sub document.write 子过程被中止后 该语句不会执行到 End
26、 Sub463.9 VBScript过程一、子过程463.9 VBScript过程二、函数过程定义函数过程语法调用函数过程直接引用函数过程名Function 函数过程名(参数1,参数2,)程序代码函数过程名=返回值 End Function 473.9 VBScript过程二、函数过程Function 函3.9 VBScript过程二、函数过程例20 函数过程的定义及调用。 dim a,b,c a=15 b=20 c=4 msgbox(“最大数是:” & maxnum(a,b,c) Function maxnum(x,y,z) dim max if xy then max=x else max
27、=y end if if zmax then max=z maxnum=max End Function483.9 VBScript过程二、函数过程483.9 VBScript过程三、变量的作用域定义指变量的有效范围 ,变量的作用域由它声明或出现的位置决定分类局部变量全局变量 例21 变量作用域示例:局部变量是在过程内部声明或出现的变量,其作用域仅局限于定义它的过程,只在该过程内有效,离开相应过程,变量会失效而变为空。 全局变量是在过程外部声明或出现的变量,其作用域为当前整个ASP网页,在当前网页的各个脚本程序块内有效。 493.9 VBScript过程三、变量的作用域局部变量是在过程3.10
28、 VBScript的内置函数一. 字符串函数 二. 数学函数 三. 转换函数 四.日期和时间函数 五.检验函数 六.数组相关的函数 503.10 VBScript的内置函数一. 字符串函数 503.10 内置函数一. 字符串函数函数名语法功能LenLen(str)求字符串str的长度TrimTrim(str)去掉字符串str两边的空格LcaseLcase(str)将大写字母转化为小写字母UcaseUcase(str)将小写字母转化为大写字母LeftLeft(str,n)从字符串str的左边取n个字符RightRight(str,n)从字符串str的右边取n个字符MidMid(str,n1,n2
29、)从字符串str左边第n1个位置开始向右取n2个字符StrcompStrcomp(str1,str2)比较字符串str1和str2的大小。str1大于str2,返回1;str1小于str2,返回-1;相同,返回0。InstrInstr(n,str1,str2,m)在str1字符串中从n位置开始搜索str2字符串,返回str2在str1中出现的位置,未找到返回0。m=1,不区分大小写;m=0或省略m,区分大小写SplitSplit(str,char)将str字符串根据分隔符char拆分成字符串数组,省略char用空格作为分隔符JionJion(a,char)将字符串数组a用分隔符char连接成一
30、个字符串,省略char用空格作为分隔符ReplaceReplace(str,str1,str2)在str字符串中用str2字符串替代str1字符串513.10 内置函数一. 字符串函数函数名语法功能LenLen3.10 字符串函数举例x=一二三四五六七八九十/一个汉字长度为1document.write len(x) & for i=16 to 87/显示各区汉字x=for j=1 to 94x=x & & chr(160+i)*256 +160+j) /在Unicode码中(双字节),一个汉字只占一个字符位if j mod 20 =0 then x=x & nextdocument.writ
31、e x & next523.10 字符串函数举例script language=3.10 内置函数二. 数学函数函数名语法功能AbsAbs(n)求n的绝对值SqrSqr(n) 求n的平方根CosCos(n)求n的余弦SinSin(n)求n的正弦LogLog(n)求n以e为底的自然对数ExpExp(n)求e的n次幂SgnSgn(n)求n的符号RndRnd(n)产生一个01之间的随机数IntInt(n)取n的整数部分,返回不大于n的最大整数FixFix(n)取n的整数部分,小数部分不四舍五入HexHex(n)将八进制数转换成十进制数OctOct(n)将十进制数转换成八进制数533.10 内置函数二
32、. 数学函数函数名语法功能AbsAbs(产生随机数例22 产生五个1100之间的随机整数。Rnd函数产生5个1-100的随机整数 for i=1 to 5 randomize document.write Int(Rnd*100+1) & next54产生随机数例22 产生五个1100之间的随机整数。543.10 内置函数三. 转换函数函数名语法功能AscAsc(c)将字符c转换成ASCII码值Chr$Chr$(n) 将ASCII码值n转换成字符CstrCstr(exp)将exp转换为String类型CdateCdate(exp)将exp转换为Date类型CintCint(exp)将exp转换
33、为Int型ClngClng(exp)将exp转换为Long类型CsngCsng(exp)将exp转换为Single类型CdblCdbl(exp)将exp转换为Double类型CboolCbool(exp)将exp转换为Boolean类型553.10 内置函数三. 转换函数函数名语法功能AscAsc(3.10 内置函数四.日期和时间函数函数名语法功能DateDate()返回系统日期TimeTime()返回系统时间NowNow()返回系统日期和时间DayDay(date)返回给定日期是几号MonthMonth(date)返回给定日期的月份YearYear(date)返回给定日期的年份HourHou
34、r(time)返回给定时间的小时部分MinuteMinute(time)返回给定时间的分钟SecondSecond(time)返回给定时间的秒钟MonthNameMonthName(month)返回月份名称WeekdayWeekday(date)返回给定日期的星期代号WeekdaynameWeekdayname(weekday)返回星期名称DatediffDatediff(interval, date1, date2)返回两个日期或时间的间隔DateAddDateAdd(interval,number, date)对日期添加或减去指定时间间隔563.10 内置函数四.日期和时间函数函数名语法功
35、能DateD利用日期时间函数求日期或时间例23 日期时间函数示例。时期时间函数 document.write 现在是: & now() & document.write 今天的日期是: & date() & document.write 现在的时间是: & time() & document.write 今天是: & year(date)& 年 & month(date) & 月 & day(date) & 日 & document.write 现在是 & hour(now) & 时 & minute(now) & 分 & second(now) & 秒 & document.write 今天
36、的星期代号是: & weekday(date) & document.write 今天是: & weekdayname(weekday(date) & document.write 到五一节还有 & datediff(d,date,#2006-5-1#) & 天 & 57利用日期时间函数求日期或时间例23 日期时间函数示例。53.10 内置函数五.检验函数 函数名语法功能IsNumericIsNumeric (var)检查var的值,若是数字,则返回trueIsDateIsDate(var) 检查var的值,若是日期,则返回trueIsArrayIsArray(var)检查var的值,若是数组
37、,则返回trueIsObjectIsObject(var)检查var的值,若是对象,则返回trueIsEmptyIsEmpty(var)检查var的值,若是empty,则返回trueIsNullIsNull(var)检查var的值,若是Null,则返回true583.10 内置函数五.检验函数 函数名语法功能IsNumer例24 用IsNumeric函数判断一个变量中的数据是否由数字组成。IsNumeric函数检验变量中的值是否数字 dim myvar myvar=53 mycheck=IsNumeric(myvar) MsgBox mycheck 显示True myvar=459.95 my
38、check=IsNumeric(myvar) MsgBox mycheck 显示True myvar=45Help mycheck=IsNumeric(myvar) MsgBox mycheck 显示False59例24 用IsNumeric函数判断一个变量中的数据是否3.10 内置函数六.数组相关的函数函数名语法功能UboundUbound(a,d)返回数组a的指定维d的可用最大下标LboundLbound(a,d) 返回数组a的指定维d的可用最小下标ArrayArray(arglist)返回一个数组,数组元素为arglist中的值603.10 内置函数六.数组相关的函数函数名语法功能Ubo
39、un例25 数组相关函数示例。 数组相关函数创建一个数组并输出数组中的元素 dim myweek, myday myweek = Array(Mon, Tue, Wed, Thu, Fri, Sat, Sun) For i=Lbound(myweek) to Ubound(myweek) document.write myweek( & i & )= & myweek(i) & Next61例25 数组相关函数示例。61JavaScript 有六种数据类型。主要的类型有 number、string、object 以及 Boolean 类型,其他两种类型为 null 和 undefined。变量命名:JavaScript 是一种区分大小写的语言,因此将一个变量命名为 computer 和将其命名为 Computer是不一样的。变量命名规则: 1.第一个字符必须是一个字母(大小写均可)、或一个下划线(_)或一个美元符 ($)。 2.后续的字符可以是字母、数字、下划线或美元符。 3.变量名称不能是保留字。 补充:了解JavaScript62JavaScript 有六种数据类型。补充:了解JavaScJavaScript所提供的语句分为以下几大类: 1、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2020年房地产年度工作总结报告
- 代办转学合同范例
- 波司登委托加工合同范例
- 水果批发合伙合同范例
- 承接演出合同范例
- 代收房产贷款合同范例
- 工程农民工保证金合同范例
- 柴油代销合同范例
- 包月维修合同范例
- 工程装修人工合同范例
- 免疫规划接种程序
- 供应链的未来发展趋势和预测报告
- 志愿服务课件教学课件
- 2023年四川省林业和草原局直属事业单位招聘考试真题
- 临床输血知识培训
- DB11T 2103.2-2023 社会单位和重点场所消防安全管理规范 第2部分:养老机构
- 合肥市包河区2024年八年级上学期《生物》期中试题与参考答案
- 24年追觅在线测评28题及答案
- 2024年医务科工作总结标准范本(二篇)
- “一老一小”服务体系协同高质量发展对策研究
- 《白描人物摹神韵》 课件 2024-2025学年岭南美版(2024) 初中美术七年级上册
评论
0/150
提交评论