版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualBasic
(程序选Wl
第8章过程
江苏省计算机等级考试
VisualBasic
教学要求程序送
“掌握VB的两种过程:事件过程和通用过程
“掌握Sub过程的定义
“掌握Function过程的定义
今掌握过程的调用
“掌握参数的传递—按值传递和按地址传递
“掌握递归算法
今掌握变量的作用域
2江苏计算机等
级考试
VisualBasic
教学内容(程序送山|
8.1Sub过程
8.2Fimction过程
8.3过程调用
8.4参数传递
8.5速归过程
8.6变量的作用域
8.7程序示例
3江苏计算机等
级考试
VisualBasic
模块化程序设计程序送
今基本思想:将一个大的程序按功能分割成一些小模块
”特点:
A各模块相对独立、功能单一、结构清晰、接口简单
»控制了程序设计的复杂性
A提高元件的可靠性
»缩短开发周期
A避免程序开发的重复劳动
»易于维护和功能扩充
今开发方法:自上向下,逐步分解,分而治之
4江苏计算机等
级考试
5江苏计算机等
级考试
VisualBasic
8.1Sub过程程序设计/
8.1.1事件过程
•当对象识别某事件后,进行的操作处理——以代码的形式存
储在事件过程中。
•分类:
A窗体事件过程
A控件事件过程
江苏计算机等
级考试
VisualBasic
1定义事件过程程序送H/
•[形式]:
PrivateSubForm_事件名([参数列表])
[局部变量木常数声明]完全由系统
决定,用户
语句块___________________无权修改
EndSub窗体的事件过程名
中不使用其具体名
称,而固定用Form
窗体事件固定有“Private”
关键字,说明它是模块级的
7江苏计算机等
级考试
VisualBasic
2窗体的Initialize、Load、Activate、Gotfocus事省■啰设
•Initialize(初始化)事件——配置窗体时触发
•Load(加载)事件——窗体装入内存时触发
•Activate(激活)事件——窗体被激活时触发
•Gotfocus事件(得到焦点)事件——窗体成为当前焦点时触发
“窗体上无可视控件时,触发窗体的Gotfocus事件;
“窗体上有可视控件时,触发控件的Gotfocus事件;
•执行次序:
Initialize-►Load-►Activate-►Gotfocus
8江苏计算机等
级考试
注意VisualBasic
程序送H/
•窗体的Initialize、Load事件发生在窗体被显示之前,其中可放置
系统初始化命令,但其中语句有所限制;
•窗体加载后,只要不被卸载,就不会再执行Initialize、Load事件,
但Activate事件会多次发生;
•当访问另一窗体上的“非可视”数据或调用其中定义的全局过
程时,只会触发该窗体的Initialize事件,而Load事件不触发;
•当访问另一窗体上的“可视”数据时,会同时触发该窗体的
Initialize和Load事件;
9江苏计算机等
级考试
VisualBasic
3定义控件的事件过程程序山41
•[一般形式]:
PrivateSub控件名—事件名([参数列表])
[局部变量和常数声明]由系统决定,
语句块用户无权修改
EndSub
控件的事件过程名中必须
使用其具体名称
控件事件固定有“Private”
关键字,说明它是模块级的
ro江苏计算机等
级考试
VisualBasic
4建立事件过程程序送H/
•打开“代码编辑器”窗口;
•先选定某对象,再选定事件过程;
•编辑代码;Hi工程1-Forml(Code)_]口国I
三]Load三1
Activate
Click
PrivateSubForm_Load()DblClick
Deactivate
EndSubDragDrop
Di-agOver
GotFocus
Initialize
KeyDown
KeyPress
KeyUp
LinkClose过程
算机等
VisualBasic
PrivateSubCommand1Click。程序山41
使用函数DimmAsInteger,nAsInteger
DimiAsInteger,kAsInteger
DimtAsLong,sAsLong
函数调用(三次)n=Val(Textl.Text)
m=Val(Text2.Text)
~~~fact(n)/(fact(m)*fact(n-m))
Text3.Text=Str(s)
<、EndSub
函数定义PrivateFunctionfact(kAsInteger)AsLong
计算k!DimiAsInteger
<_______fact=1
Fori=1Tok
fact=fact*i
Nexti
EndFunction算机等
级芍依
VisualBasic
过程的引入:程序送
在以下两种情况下,经常使用自定义过程:
(1)应用程序中出现较频繁的处理,仅仅是每次处理的数据不
同而已;
(2)程序中比较复杂的算法,独立出来,增强程序的可读性;
“过程”的引入使得整个程序的结构更加清晰,模块化更强。
14江苏计算机等
级考试
VisualBasic
8.1.2通用过程程序送
•完成某一特定功能的程序段
——通用过程(自定义)
•必须显式调用方可执行;
•分为:
今公有过程(Public)
今私有过程(Private)
15江苏计算机等
级考试
VisualBasic
1通用Sub过程的定义程序送H/
。[一般形式]:
[PrivateIPublic][static]Sub<过程名>([<参数列表>])
<过程体)
EndSub
❖[说明]:
(1)以Sub开头,EndSub结束,,中间是过程体——包括变量声
明和语句块;
(2)以Private为前缀的过程是模块级的,以Public为前缀的过
程是应用程序级的,缺省默认是Public;
(3)Static选项说明过程中的局部变量是静态变量;
(4)过程名的命名规则和变量名相同,在同一个模块中,过程
名必须是唯一的;16江苏计算机等
级考试
说明VisualBasic
程序送H/
(5)参数列表中的参数称为形式参数,可以没有,但无参数时圆
括号不能省略;有多个参数时,参数之间用逗号间隔;
(6)参数说明格式:
[Optional][ByVal|ByRef]v变量名>[()][Asv数据类型刁
其中:
a)若参数是数组,则在变量名后面加一对圆括号,但无维界定义
b)ByVai:指明参数传递方式是传值;
c)ByRef:指明参数传递方式是传地址,为缺省值;
d)若参数是字符型的,必须是不定长字符串;
e)Optional:参数是可选的,必须定义在必选参数后面。
(7)当过程调用结束,即执行到EndSub语句,系统自动返回调
用程序的调用语句处,执行调用语句的下一条语句;
(8)过程不能嵌套定义,但可嵌套调用;
(9)ExitSub语句的功能是提前退出过程调用,返回调用语句。
VisualBasic
程序送H/
伤J:PrivateSubExchange(xAsInteger,yAsInteger)
DimTempAsInteger
Temp=x:x=y:y=Temp
EndSub
该通用过程实现交换功能,包含两
个参数,均是ByRef形式的参数。
18江苏计算机等
级考试
2建立通用Sub过程VisualBasic
方法一:在“代码编辑窗口”的“通用”中自行输入;
方法二:进入代码编辑器窗口,执行“工具”菜单的“添加
过程”,在“添加过程”对话框中输入定义过程的名称、类型
和范围后单击“确定”按钮,系统会自动在代码窗口添加自定
义过程的框架C
19江苏计算机等
级考试
VisualBasic
3Sub过程调用____________________程序送
必须在事件过程或其它通用过程中显示调用。
PrivateSubsubl()PrivateSubsub2(形参表)
......I①
CallSub2(实参表口过程语句
■"■"I5I■■的
EndSub1-EndSub
主调程序被调过程
注意:一个过程或函数可以被调用多次:
20江苏计算机等
级考试
Sub过程调用P164VisualBasic
程序山41
[格式一]:Call<过程名>[(<实在参数表))]
[格式二]:<过程名>[<实在参数表》]
[功能]:对已定义的过程进行调用。
如:
1.CallFact(x)
2.Factx
江苏计算机等
级考试
VisualBasic
说明程序送
(1)调用的过程必须是已经定义的,否则系统会出现“子程
序或函数未定义”的信息提示;
(2)实在参数可以是常量、变量或表达式;
(3)实在参数的数目及类型要和定义时必选参数保持一致,
否则系统会出现“参数不可选”的信息提示,参数之间用逗号
间隔;
(4)若子程序没有参数,则格式一中的括号可以省略;
(5)格式一和格式二的区别在于:格式二的参数表无须括号,
而是和过程名之间用空格隔开;
江苏计算机等
22
级考试
VisualBasic
"程序选id
例8・2试编写一个找出任意一个正整数的因子的程序
P165
23江苏计算机等
级考试
程序说明:
OptionExplicit定义子程序factor
PrivateSubCommandl_Click()求因子,该子程序定义
DimintaAsInteger,stAsString
了两个参数,来传递求
inta=Textl
Callfactorfinta^st)因子实现前的原始数据
Text2=st过程factor和返回功能实现后的结
EndSub果数据;
PrivateSubfactor/ByValnAsInteger,iAsString)
DimiAsInteger定义过程
Fori=1Ton-1
IfnModi=0Thens=s&Str(i)
Nexti
EndSub
优点:程序即Sub过程的使用不仅可以缩短程序的长度,还能
24江苏计算机等
够使程序的结构更加清楚。级考试
VisualBasic
程序设计)
例:定义一个通用过程用以求一维数组中的最小值
PrivateSubvalue(a()AsInteger,minAsInteger)
DimiAsInteger
min=a(l)
Fori=2ToUBound(a)
Ifa(i)<minThenmin=a(i)
Nexti
EndSub
25江苏计算机等
级考试
VisualBasic
8•2Function过程程序送H/
Function过程的特点是返回一个值,因此我们通常也称之
为自定义函数。通常我们利用Function过程得到一个数值或一个
字符串或一个逻辑值。
函数返回值的类型
[格式]:
[Private|Public]Functionv函数名〉([参数歹]表D[Asv娄I据类型>]
v函数体〉
EndFunction函数名=表达式
江苏计算机等
26
级考试
VisualBasic
说明程声殳%!
(1)以Function开头,以EndFunction结束,中间是函数体;
(2)函数名命名规则、参数列表的表示都和Sub过程相同;
(3)As数据类型:函数过程修由函数名返回一个值,值的类型
由[As数据类型]定义;★
(4)函数体中一定要有对函数名赋值的语句——函数名=表达式,
否则返回相应类型的初值;★
(5)函数体内可有ExitFunction语句---无条件退出函数过程,
返回主程序。
(6)Function过程不能嵌套定义,但可嵌套调用。
27江苏计算机等
级考试
VisualBasic
程序送H/
例:定义函数:/(x)=3x3—2x2+6x—l
函数返回值的类型
PrivateFunctionf(ByValxAsInteger)AsInteger
f=3*xA3-2*xA2+6*x・l__________
EndFunction函数名=表达式
28江苏计算机等
级考试
ExitFunction
Else
ForK=1ToN
Fact=Fact*K函数名=表达式
NextK
EndIf
EndFunction
江苏计算机等
29
级考试
VisualBasic
2调用Function过程______________程声殳%!
[格式]:〈函数名〉([实在参数表])
♦:♦[功能]:返回一个函数值。
♦:♦[说明]:
(1)一般情况下,函数的调用出现在赋值语句中,并且在赋值号
的右侧;
(2)若函数没有参数,函数名后的括号不能省略;
(3)虽然VB允许象调用Sub过程那样调用Function过程,但这样
调用时系统不返回函数值,建议大家不要使用这种调用方法。
例Callfact(x)
如:Factx这两种方法均放弃函数的返回值
30江苏计算机等
级考试
VisualBasic
例:用函数实现求一维数组中的最小值,对比前例(Sub)
PrivateFunctionmin(a()AsInteger)AsInteger
DimiAsInteger
min=a⑴回数类型
Fori=2ToUBound(a)
Ifa(i)<minThenmin=a(i)
函数名=表达式
Nexti
EndSub
31江苏计算机等
级考试
VisualBasic
程序送H/
例:定义函数用以判断一个数是否是素数一
PrivateFunctionPrime(NAsInteger)AsBoolean
DimiAsInteger
Prime=False-------1----
可省略,因Prime的初始值就是fake
Fori=2ToN-l
IfNModi=0ThenExitFor
Nexti
Ifi=NthenPrime=True-------
函数名=表达式
EndFunction
32江苏计算机等
级考试
VisualBasic
[例]:S=l!+2!+…+10!对比P171
PrivateSubForm_Click()
DimSAsLong,iAsInteger
Fori=1To10
Nexti函数调用:s=s+Fg电。
Print"S=";S
EndSub
江苏计算机等
级考试
VisualBasic
例8-3:利用函数过程编写一个求两个正整数的最大公约数的程序
P166
PrivateFunctionGcd(ByValAAsInteger,ByVaiBAsInteger)AsInteger
DimRAsInteger
R=AModB
DoWhileR<>0PrivateSubForm_Click(),上调过程
A=BDimNAsInteger,MAsInteger,GAsInteger
输入
B=RN=InputBoxC'N")
M=InputBoxC'输入M")
R=AModB
G=Gcd(N,M)
LoopPrintN;"和";M;”的最大公约数是:";G
Gcd=BEndSub
EndFunction
34江苏计算机等
级考试
VisualBasic
834调用其他模块中的过程程序送
1、调用其他窗体模块中的公有过程
[格式]:CallV窗体名>.V过程名>[(V实在参数表,)]
[功能]:调用其他窗体模块中定义的公有过程。
PrivateSubForm_Click()在Form2
中调用
DimaAsInteger
a=10
PrintFurml.Fact(a)
EndSub
江苏计算机等
级考试
VisualBasic
2、调用标准模块中的公有过程程序送H/
[格式]:Call卜标准模块名>.]<过程名刁(v实参表>)]
[功能]:调用其他标准模块中定义的公有过程。
♦[说明]:
♦:♦若公有过程唯一,则直接调用,不加模块名。
♦:♦若存在同名的公有过程,贝上
A调用本模块中过程:直接调用,不加模块名
A调用其它模块中过程:必须加模块名。
A被调用的函数和过程必须是公有的;
A函数也可以这样调用。
36江苏计算机等
级考试
VisualBasic
3调用类模块中的过程程序送H/
*[格式]:(不做要求、
dimdemoclassasnewclassl/—
calldemoclass,clssub([实参表]KZ
♦:♦[注意]:
调用类模块中的共有过程,须用该类的某一实例修饰过程。
37江苏计算机等
级考试
VisualBasic
8.4参数的传递程序送H/
8.4.1形式参数和实在参数
①形式参数:
米过程定义时,在过程名后面的圆括号里的一系列变量;
*过程被调用执行时,系统才给形参分配存储空间;
*可以是除定长字符串外的任一简单变量;
*可以是数组,变量名后接吠
米简称,形参"1stAsString*3X
St()AsString^3N
StAsString<
江苏计算机等
级考试
VisualBasic
①实在参数程序送H/
米主调程序中,调用语句中,出现在过程名后面圆括号里的变
量,是实在参数,可以是常量、变量或表达式;
*过程调用传递参数时,实参按“位置”和形参结合;
*实在参数和形式参数,要求个数一样,位置对应,类型一
致,否则会出错;
*定长字符串变量可以作为实在参数;
*简称“实参”
39江苏计算机等
级考试
VisualBasic
参数结合:(程序送山|
形参实参
变量变量、常量、表达式、数组元素
数组数组
40江苏计算机等
级考试
VisualBasic
举例:程序送H/
常量
41江苏计算机等
级考试
VisualBasic
举例:写出下列程序执行的结果(程序送山|
PrivateSubExamSubf\asinteger,y^asinteger)
x=x+10:y=y-10
过程的先
EndSub后顺序无
PrivateSubForm-click()
o
Dimxasinteger,yasinteger
x=10:y=100—
CallExamSub(y,x)--------------
调用子过程时,进行的实
Print“x=”;x;"y=”;y际操作是丫=丫+10双=乂-10
EndSub
42江苏计算机等
级考试
VisualBasic
842按值传递参数程序送H/
[格式]:ByVaiv变量说明》
[传递方式]:
调用时,系统为形参分配一个临时存储单元,并修实参
的值存储到该临时单元中。
若在被调用的过程体中改变了形参的值,只是改变了临时
存储单元中的数据,对实参的值无任何影响。
43江苏计算机等
级考试
[参数传值传递]举例:VisualBasic
程序送H/
PrivateSubForm_Click()
DimMAsInteger,NAsInteger
M=15:N=20
CallValue_change(M,N)
Print,,M金;MJ,N=,,;N
EndSub
PrivateSubValue_change(ByValxAsInteger,ByVaiyAsInteger)
x=x+20
y=y+20
PrintnX=n;x,"Y=";y
EndSub
44江苏计算机等
级考试
VisualBasic
传值是单向的:(程序送山|
实在参数
形式参数
调用时,实参将值传递给形参,两者就无任何关联。过
程中形参的值发生变化,对实参无任何影响。
45江苏计算机等
级考试
VisualBasic
843按地址传递参数程序送H/
[格式]:ByRefv变量说明》
[传递方式]:
系统在调用执行过程时,为形参分配临时存储单元,并修实
参的内存单元地址传送给形参,存储在临时存储单元中
在被调用的过程体中一切对形参的操作,都是直接对地址保
存在形参中的内存单元中的数据进行的,而实参就是保存在此内
存单元中的数据,所以任何对形参的操作也就是对实参的操作;
按地址传递时,形式参数和实在参数共用同一“内存单元”。
江苏计算机等
级考试
VisualBasic
[参数传址传递]举例:(对比前例)(程序送山|
PrivateSubForm_Click()
DimMAsInteger,NAsInteger
M=15:N=20
CallValue(M9N)
PrintMM=M;M,nN=M;N
EndSub
PrivateSubValue(xAsInteger,yAsInteger)
x=x+20
y=y+20
PrintnX=n;x,nY=n;y
EndSub
47江苏计算机等
级考试
VisualBasic
传地址是双向的:(程序送山|
实在参数
形式参数
48江苏计算机等
级考试
举例:计算5!+4!+3!+2!+1!P171VisualBasic
PrivateSubForm_Click()
DimSumAsInteger,IAsInteger
ForI=5To1Step-1
Sum=Sum+Fact(I)
NextI
PrintnSum=n;Sum
EndSub
PrivateFunctionFact(nAsInteger)AsInteger
DoWhilen>0修改:
Fact=Fact*n方法一:在形参n前加ByVai
n=n-1
Loop方法二:将调用语句中fact⑴改为
EndFunctionfact(⑴)
a人y
注意VisualBasic
程序送H/
参数有两种传递方式:传值(ByVai)和传地址(ByRef)o
若调用时实参为常量或表达式,这两种方式没有区另山无论形
参定义的是按值传递还是按地址传递,系统都是按传值方式传递
系统在调用时为形参分配一个临时存储单元,圈表达式的值
计算出来,存储到该临时单元;调用结束,系统收回临时单元。
调用函数或过程时,将单个变量转换成表达式的方法:将变
量放在一对括号中。如用Fact((I))的方式调用函数,系统会按传
值来处理。
50江苏计算机等
级考试
VisualBasic
注意程声殳%!
♦按地址传递时,当实参是变量时,实参与形参必须类型完
全一致;
♦按地址传递时,当实参是常量或表达式时,VB会自动进
行类型转换,然后再传递相应的值(即类型无须完全一致)函
♦在算术表达式中,函数的优先级最高,若表达式中有函数
的实参,而函数的参数又是按地址传递的,则函数中有可能改变
了实参的值,即改变了表达式中变量的值,会引起混淆。见树
51江苏计算机等
级考试
举例:VisualBasic
程序送H/
PrivateSubForm_Click()
DimSAsSingle
S=125.5
CallConvert(⑸,”12笛.5”)
EndSub
实际的参数传递方式是按
Sing=Sing+23值传递,强制转换后,
Print“Inx=";Inx,"Sing=";Singinx=126sing=12・5
EndSub
52TT77F
级考
练习
4-
(1)写出程序运行结果(2)若改为按值传递,结果又如何?
DimpAsinteger,qAsinteger,rAsinteger
PrivateSubForm_Click()
p=2:q=3
Printp9q,r
Callpq(p,q,r)
Printp,q,r
EndSub
PrivateSubpq(xAsinteger,yAsinteger,zAsinteger)
x=p+q
y=p-q
z=x+y
EndSub
级芍讽
VisualBasic
(程序送山|
写程序运行的结果:------
OptionExplicit・Forml
PrivateSubcommandl_click()二叵区I
工二11产2K=43
DimiAsInteger,jAsInteger
DimkAsInteger
i=l:j=2
k=fun(i,fun(i,j))+i+j.笄逋
Print"1='';i;f,J=n;j;"K='';k
EndSub
PrivateFunctionfun(aAsInteger,ByVaibAsInteger)AsInteger
a=a+b
b=b+a
fun=a+b
EndFunction学
VisualBasic
844数组参数____________________程序送H/
VB允许把数组作为形式参数,声明数组的格式是:
v数组名〉()Asv数据类型〉
[注意]:
(1)数组参数只能按地址传递,即不能用ByVa]来4多饰数组参数
(2)定义数组参数时无须说明数组的维数和下标变化范围;
(3)调用过程时,对应的实在参数也必须是数组,但只需要数
组名,无须后跟括号,且数据类型也要一致。'
(4)在过程体或函数体中无须对数组参数再次说明;
(5)若实参是动态数组,在过程体或函数体中可以使用重定义
语句修改数组的维界;
56江苏计算机等
级考试
举例VisualBasic
PrivateSubForm_Click()PrivateSubPrintArray(x()AsInteger)
Dima()AsInteger,iAsIntegerDimiAsInteger
DimnAsIntegerFori=LBound(x)ToUBound(x)
n=InputBox("请输入数组的初始大小,Printx(i);
ReDima(n)Nexti
Fori=1TonPrint
a(i)=iEndSub
NextiPrivateSubArrayl(a()AsInteger)
CallPrintArray(a)DimmAsInteger,nAsInteger
CallArrayl(a)n=UBound(a)
CallPrintArray(a)m=InputBox—请输入新大小”)
EndSubReDimPreservea(m)
输入5和8,程序执行结果为:DimiAsInteger
Fori=n+1Tom
a(i)=0
Nexti
EndSub
举例:自定义一个将一维数组按从小到大排序的通用过程。
PrivateSubsort(a()AsInteger)PrivateSubCommandl_Click()
DimiAsInteger,jAsIntegerDimiAsInteger,jAsInteger
Fori=1ToUBound(a)-1Dima(10)AsInteger
Forj=i+1ToUBound(a)Fori=1To10
Ifa(i)>aO)Thena(i)=Int(8*Rnd)
temp=a(i)Picturel.Printa(i);
a(i)=a(j)Nexti
a(j)=tempCallsort(a)
EndIfFori=1To10
NextjPicturel.Printa(i);
NextiNexti
EndSubEndSub
厂江苏计算机廿
级考试
练习
4-
完善程序:本程序的功能是找出100〜200之间的所有素数。
PrivateSubForm_Click()
DimiAsInteger,xAsInte
若不希望实参随形参
Fori=100To200改变,就将参数传递
IfPrimed)Then
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 露点温度和组成的计算
- 汽车发动机构造与维修 教案 6.3认识发动机油耗高、动力不足与气缸磨损的直接关系
- 苏教版二年级数学下册全册教案教学设计
- 记账实操-胶水加工厂的账务处理分录
- 《跳水》危机处理教案
- 《将相和》宽容与合作教案
- 企业公司组织架构图模板
- 专升本(高等数学一)模拟试卷6(共252题)
- 学习两弹一星精神的时代价值(今年我国第一颗原子弹爆炸成功60周年)
- 离散行业MES解决方案
- 固体废弃物管理标准-
- 02S404防水套管图集总目录
- 物业满意分析报告
- 2022年天津市和平区中考一模考试 英语 试卷(含答案)
- 扶贫农产品购销合同协议
- 医务科依法执业自查表
- 17中国大唐集团公司发电设备检修管理办法大唐集团制〔2023〕94号
- 2023年天线工程师年度总结及下年工作展望
- 高处作业风险及隐患排查(安全检查)清单
- 临床心理护理现状
- 小学扎染社团活动记录教案
评论
0/150
提交评论