资源描述
福建农林大学植物保护学院
(程序设计类课程)
实验报告
课程名称:
Visual Basic程序设计教程
姓 名:
李珠蓬
系:
生物安全
专 业:
植物保护学院
年 级:
10级
学 号:
102251001045
指导教师:
黄红兵
职 称:
讲师
2012年 5月 20 日
实验项目列表
序号
实验项目名称
成绩
指导教师
1
Visual Basic环境和程序设计初步
黄红兵
2
顺序程序设计
黄红兵
3
选择结构程序设计
黄红兵
4
循环结构程序设计及数组的运用
黄红兵
5
过 程
黄红兵
6
窗体和常用控件(一)
黄红兵
7
常用控件(二)
黄红兵
8
循环结构程序设计及动态数组的应用
黄红兵
9
综合实例(一)
黄红兵
10
综合实例(二)
黄红兵
系: 生物安全 专业: 生物安全 年级: 10级
姓名: 李珠蓬 学号: 102251001045 计算机号
实验时间: 2012、4、4 实验地点: 综南附307 指导教师签字: 黄红兵
实验一 Visual Basic 环境和简单应用程序设计
一、 实验目的及要求
1、了解Visual Basic系统对计算机软件、硬件的要求。
2、掌握启动与退出Visual Basic的方法。
3、熟悉Visual Basic的集成开发环境(IDE)。
4、掌握在窗体上添加控件的各种方法。
5、掌握建立、编辑、运行和保存一个简单的Visual Basic应用程序的全过程。
二、 实验内容
1、 启动Visual Basic 6.0,熟悉其集成开发环境。
2、 请按图所示在标题为“第一个应用程序”的窗体Forml上添加两个标题分别为“欢迎使用Visual Basic ”和 “请输入您的姓名“的表签(Label 1和Label2),Label1的字体为隶书,并且能根据文本大小自动调整尺寸,Label2的字型为倾斜,然后再添加一个初始文本为空的文本框Text1。
操作如下:
3、 请按图所示在标题为“命令按钮设置“的窗体Forml 上添加三个标题为”禁止用C3”、 “允许用C3”和“C3”的命令按钮。运行时,如果单击“禁止用C3”按钮,则C3按钮无效,如果单击“允许用C3”按钮,则C3按钮有效。
操作如下:
代码如下:
Private Sub Command1_Click()
Command3.Enabled = False
End Sub
Private Sub Command2_Click()
Command3.Enabled = True
End Sub
4、 请按图所示在标题为“文本复制”的窗体Forml上添加两个文本框,其初始文本为空,设置适当的属性是文本框Text2可以显示多行文本,有一个垂直滚动条,而且Text2不可编辑文本。运行时,在文本框Text1中输入一个字符串,单击窗体,则将Text1的文本复制到Text2中。
操作如下:
代码如下:
Private Sub Form_Click()
Text2.Text = Text1.Text
End Sub
5、 请按图所示在标题为“标题内容显示“的窗体Forml1上添加一个标题为空、带有单边框的标签Label1,再添加两个标题分别为“显示”和“清空”的命令按钮。运行时,单击“显示”按钮,则再Label1中显示“欢迎使用Visual Basic 6.0!”;单击“清空”按钮,则在Label1的标题为空。
操作如下:
代码如下:
Private Sub Command1_Click()
Label1.Caption = "欢迎使用Visual Basic 6.0!"
End Sub
Private Sub Command2_Click()
Label1.Caption = ""
End Sub
三、总结
通过本次实验熟悉了Visual Basic的集成开发环境(IDE)。掌握在窗体上添加控件的各种方法。掌握建立、编辑、运行和保存一个简单的Visual Basic应用程序的全过程。
系: 生物安全 专业: 生物安全 年级: 10级
姓名: 李珠蓬 学号: 102251001045 计算机号
实验时间: 2012、4、4 实验地点: 综南附307 指导教师签字: 黄红兵
第二章 顺序结构程序设计
一、实验目的和要求
1.掌握常用内部函数的使用
2.掌握表达式 赋值语句的正确书写规则
3.掌握InputBox和MsgBox的使用
二、实验内容和原理
1、设计图所示的窗体Forml,其标题为“Print”方法。运行时,自动在窗体上显示图所示图。
代码如下:
Private Sub Form_Activate()
Print Tab(10); "※" '输出第一行※号
Print Tab(10); "※※" '输出第二行※号
Print Tab(10); "※"; Spc(2); "※" '输出第三行※号
Print Tab(10); "※"; Spc(4); "※" '输出第四行※号
Print Tab(10); "※"; Spc(6); "※" '输出第五行※号
Print Tab(10); "※"; Spc(8); "※" '输出第六行※号
Print Tab(10); "※"; Spc(10); "※" '输出第七行※号
Print Tab(10); "※"; Spc(12); "※" '输出第八行※号
Print Tab(10); "※※※※※※※※※" '输出第九行※号
End Sub
2、请按图所示在窗体Forml上创建一个初始文本为“Visual Basic”的文本框Text1以及两个标题分别为“放大”和“还原”的命令按钮。运行时,单击“放大”按钮,将文本框显示的字符串放大2倍或3倍(随机数);单击“还原”按钮,则文本框中显示的字符串大小还原。
代码如下:
Dim x As Integer
Dim y
Private Sub Command1_Click()
y = Text1.FontSize '保存原来的字号
x = Int(Rnd * 2 + 2) '随即产生2或3
Text1.FontSize = x * y '放大字体
End Sub
Private Sub Command2_Click()
Text1.FontSize = y
End Sub
3、按图所示在标题为“日期时间函数应用”的窗体上添加两个标题分别为“当前日期”“当前星期”的标签,两个初始文本为空的文本框,再添加两个标题分别为“确定”“退出命令按钮。运行时,单击“确定”,则在Text1和Text2中分别显示当前系统日期和当前星期;单击“退出”,则结束程序运行。
代码如下:Private Sub Command1_Click()
Text1.Text = Format(Now, "ddddd")
Text2.Text = Weekday(Now)
Select Case Weekday(Now)
Case 1
Text2.Text = "日"
Case 2
Text2.Text = "一"
Case 3
Text2.Text = "二"
Case 4
Text2.Text = "三"
Case 5
Text2.Text = "四"
Case 6
Text2.Text = "五"
Case 7
Text2.Text = "六"
End Select
End Sub
Private Sub Command2_Click()
End
End Sub
4、如图在标题“计算”的窗体上添加三个标题分别为“半径”“周长”“面积”的标签,一个标题为空的标签Lr,添加两个初始文本为空的文本框,两个标题分别为“输入半径”“计算”的命令按钮。运行时,单击“输入半径”,则出现图所示的输入框,输入半径并按“确定”按钮,则在标签Lr中显示刚才输入的半径;单击“计算”按钮,则计算圆的周长和面积,并分别在Text1和Text2中显示
代码如下:
Dim r!, c!, s! '定义半径、周长、面积分别为单精度r、c、s
Private Sub Command1_Click()
r = InputBox("请输入圆的半径", "圆半径", 3) '输入圆的半径
Lr.Caption = r '在标签Lr中显示输入放入半径
End Sub
Private Sub Command2_Click()
c = 2 * 3.1415 * r '计算圆的周长
s = 3.1415 * r ^ 2 '计算圆的面积
Text1.Text = c '输出圆的周长
Text2.Text = s '输出圆的面积
End Sub
系: 生物安全 专业: 生物安全 年级: 10级
姓名: 李珠蓬 学号: 102251001045 计算机号
实验时间: 2012、4、4 实验地点: 综南附307 指导教师签字: 黄红兵
第三章 选择结构程序设计
一、实验目的和要求
1、掌握If条件语句的使用。
2、掌握情况语句的使用,以及情况语句与多分支条件语句的使用区别。
二、实验内容和原理
1、按图早窗体Form1上添加两个标题分别为“行李重量”“应付款”的标签,两个初始文本为空的文本框,两个标题分别为“计算”“清除”的命令按钮。运行时,在Text1中输入行李重量,单击计算,计算出应付的行李费(行李费的收费标准是50Kg以内(包括50kg)为0.20元每千克,超过部分为0.50元每千克),并在Text2中显示计算结果;单击“清除”按钮,将文本框Text1,Text2文本清空
代码如下
Private Sub Command1_Click()
Dim b!, p! '定义行李重量和应付款分别为单精度b和p
b = Text1.Text '把行李重量存储于变量b中
If b <= 50 Then '如果行李重量不超过50kg,
p = 0.2 * b '按公式0.2*b计算
Else
p = 0.2 * 50 + 0.5 * (b - 50) '若行李重量超过50kg,则按公式0.2*50+(b-50)*0.5计算
End If
Text2.Text = Format(p, "00.00") '将计算结果p在文本框2显示
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
End Sub
2、在窗体上添加两个标题分别为“百分制”“五分制”的标签,两个初始文本为空的文本框以及两个标题分别为“鉴定”“退出”的命令按钮。运行时,在Text1中输入百分制成绩,单击“鉴定”按钮,将百分制成绩转化为五分制,并在Text2中显示结果;单击“退出”,则结束程序运行。
Private Sub Command1_Click()
Dim score!
score = val(Text1.Text)
Select Case score
Case 90 To 100
Text2.Text = "优秀" '90-100分为优秀
Case 80 To 89
Text2.Text = "良好" '80-89分为良好
Case 70 To 79
Text2.Text = "中等" '70-79分为中等
Case 60 To 69
Text2.Text = "及格" '60-69分为及格
Case Else
Text2.Text = "不及格" '少于60分为不及格
End Select
End Sub
Private Sub Command2_Click()
End
End Sub
3、在标题为“成绩查询”的窗体上添加两个标题分别为“请输入您的成绩”“总分”的标签,以及一个标题为空的标签,三个初始文本为空的文本框,一个标题为“请查询”的命令按钮。运行时,在文本框1,2,3中输入成绩,单击“请查询”按钮,根据输入的成绩,通过输出对话框显示奖励情况。条件:三门总分不低于270分(含270分)为特等奖;三门总分在240分(含240)——270(不含270)之间的为优秀奖;总分低于240,但某一科成绩不低于95分为特等奖。
代码如下:
Private Sub Command1_Click()
Dim a!, b!, c!, s! '定义三科成绩和总分分别为单精度a,b,c,s
a = Text1.Text '存储三科成绩
b = Text2.Text
c = Text3.Text
s = a + b + c '计算总分
Label3.Caption = s '总分在标签3上显示
If s >= 270 Then '根据输入成绩,显示奖励情况
MsgBox "您获得特等奖", 0 + 48, "获奖通知"
ElseIf s >= 240 And s < 270 Then
MsgBox "您获得优秀奖", 0 + 48, "获奖通知"
ElseIf s < 240 And a >= 95 Or b >= 95 Or c >= 95 Then
MsgBox "您获得特别奖", 0 + 48, "获奖通知"
End If
End Sub
4、.在标题为“简易计算器”的窗体上添加五个标题分别为“操作数1”“操作符”“操作数2”“计算结果”“=”的标签,四个初始文本为空的文本框,两个标题分别为“计算”“结束”的命令按钮。运行后,在文本框1,3输入两个操作数,在文本框2输入操作符,单击“计算”,则根据操作符对操作数1和操作数2进行+,-,*,/四种运算,并将计算结果显示在文本框4中,且具有基本的数据合法性和运算符合法性检验报错能力;单击“结束”,则结束程序运行。
代码如下:
Private Sub Command1_Click()
Dim a!, b!, c!, f$ '把输入数值定义为单精度,输入符号定义为字符
a = Text1.Text
f = Text2.Text
b = Text3.Text
Select Case f '计算符号为加号
Case Is = "+"
c = a + b
Case Is = "-" '计算符号为减号
c = a - b
Case Is = "*" '计算符号为乘号
c = a * b
Case Is = "/" '计算符号为除号
If b = 0 Then
MsgBox "除数为0,出错", 5 + 16, "停止消息" '提示错误
Else
c = a / b
End If
End Select
Text4.Text = c '计算结果在文本框4中显示
End Sub
Private Sub Command2_Click()
End
End Sub
系: 生物安全 专业: 生物安全 年级: 10级
姓名: 李珠蓬 学号: 102251001045 计算机号
实验时间: 2012、4、4 实验地点: 综南附307 指导教师签字: 黄红兵
实验四 循环结构程序设计及数组的运用
一、实验目的和要求
1、 掌握FOR语句的使用。
2、 掌握DO语句的各种形式的使用。
3、 掌握如何控循环条件,防止死循环或不循环。
二、实验内容和原理
1、在窗体上添加一个标题为“请输入N的值”的标签,一个标题为“N!=”的命令按钮,两个初始文本为空的文本框。运行时,在Text1中输入一个自然数,单击“N!=”按钮,求出该自然数的阶乘,并在Text2 中显示。
代码如下:
Private Sub Command1_Click()
Dim n%, j!, k% '定义输入值为整型n,计算结果为单精度j,循环变量为整型k
n = val(Text1.Text)
j = 1
For k = 1 To n '计算阶乘
j = j * k
Next k
Text2.Text = j '将计算结果显示在文本框2中
End Sub
2、在标题为“最大公约数求解”的窗体上添加三个标题分别为“整数M”“整数N”“最大公约数”的标签,三个初始文本为空的文本框,一个标题为“求解”的命令按钮。运行时,在文本框1,2中输入两个正整数,单击“求解”按钮,求出这两个数的最大公约数,并在Text3中显示。
代码如下:
Private Sub Command1_Click()
Dim a as long , b as long, c as long, max as long, min as long '定义变量
a = Cint(Text1.Text)
b = Cint(Text2.Text)
max = a '求a,b中的最大值和最小值
min = b
If a < b Then
max = b
min = a
End If
c = max Mod min
Do While c <> 0 '用辗转相除法求出最大公约数
max = min
min = c
c = max Mod min
Loop
Text3.Text = min '最大公约数在文本框3中显示
End Sub
3、.在标题为“问题求解”窗体上添加一个标题为“求值”的命令按钮,一个标题为空,带有边框的标签。运行后,单击求值,计算S=1+1/2+1/4+1/7+1/11……,直到第i项的值小于0.0001为止,并将计算结果显示在标签1
代码如下:
Private Sub Command1_Click()
Dim k%, m%, s# '定义式中有分母的项为整型k,第k项的分母为m,和为双精度s
s = 1 '和的初值为1
k = 1 'k的初值为1
m = 1 'm的初值为1
Do While 1 / m >= 10 ^ -4 '[计算s的值
m = m + k
s = s + 1 / m
k = k + 1
Loop
Label1.Caption = s '在标签1中显示结果
End Sub
系: 生物安全 专业: 生物安全 年级: 10级
姓名: 李珠蓬 学号: 102251001045 计算机号
实验时间: 2012、4、12 实验地点: 综南附307 指导教师签字: 黄红兵
实验五 数组
一、实验目的
1、掌握数组的声明以及数组元素的引用;
2、掌握静态数组和动态数组的使用差别;
3、掌握与数组有关的常用算法。
二、实验内容
1、在标题为“最值求解”的窗体Form1上添加两个标题分别为“最大值”和“最小值”标签,两个初始文本为空的文本框,以及一个标题为“确定”的命令按钮。运行时,单击确定按钮,将生成10个10~99的随机数并存储在数组a中,求出这10个整数的最大值和最小值,并在文本框中显示结果。
代码如下
Private Sub Command1_Click()
Dim a(1 To 10) As Integer, t As Integer, max%, min%
randomize
For t = 1 To 10 '产生随机数存储于数组a中
a(t) = Int(Rnd * 90) + 10
Next t
max = a(1) '假定最大值为数组中的第一个数
For t = 2 To 10 '逐一比较找出最大值
If max < a(t) Then
max = a(t)
End If
Next t
min = a(1) '假定最小值为数组中的第一个数
For t = 2 To 10 '逐一比较找出最小值
If min > a(t) Then
min = a(t)
End If
Next t
Text1.Text = max
Text2.Text = min
End Sub
2、在标题为“排序算法”的窗体Form1上添加一个标题为“排序”的命令按钮。运行时,单击“排序”按钮,将生成10个1~100之间的随机数存储在数组a中,并用print方法将数组中数据在窗体上输出,然后将这10个整数按从小到大的进行顺序并在窗体上输出。
代码如下
Private Sub Command1_Click()
Cls
Dim a(1 To 10) As Integer, t As Integer, k%, p%, w%
Print "生成10个整数为:"
randomize
For t = 1 To 10 '生成10个整数
a(t) = Int(Rnd * 100) + 1
Print a(t); '在窗体上打印输出
Next t
For t = 1 To 9 '进行9趟比较
k = t '对第一趟比较,初始假设第1个元素为最小值
For p = t + 1 To 10 '在数组t到10个元素中选最小值的下标
If a(k) > a(p) Then '如果当前元素比最小值小,记下其下标p
k = p
End If
Next p
If k <> t Then '如果t到10中,最小值不是第t个元素,将其与第t个元素交换
w = a(t)
a(t) = a(k)
a(k) = w
End If
Next t
Print Tab(0); "排序后的结果为:"
For t = 1 To 10 '排序结果输出
Print a(t);
Next
End Sub
3、在窗体Form1上添加一个标题为“N=”的标签Label1、一个标题为“S=”的命令按钮以及两个初始文本为空的文本框。运行时,在Text1中输入一个大于1的自然数数,单击“S=”按钮,计算N项Fibonacci数列,存储于数组Fib()中,然后计算前N项的和,并将计算结果显示在Text2中。
代码如下:
Private Sub Command1_Click()
Dim fib() As Variant '定义一个动态数组fib为变体型
Dim n As Integer '定义变量n表示前n项
Dim sum As double
sum = 0
n = CInt(Text1.Text)
If n <= 1 Then '如果输入值小于1,则退出程序
Exit Sub
Else
ReDim fib(1 To n) '定义数组fib的大小
fib(1) = 1
fib(2) = 1
For i = 3 To n
fib(i) = fib(i - 1) + fib(i - 2)
Next i
End If
For i = 1 To n '计算前N项和
sum = sum + fib(i)
Next i
Text2.Text = sum
End Sub
4、在标题为“矩阵元素求和”的窗体Form1上添加两个标题分别为“5*6”矩阵和“元素和”的标签,然后再添加一个文本框text1,其初始文本为空,可以显示多行文本,且有一个垂直滚动条,接着添加两个标题分别为“随机数”和“求解”的命令按钮,最后添加一个标题为空,带有单边框的标签3。运行时,单击“随机数”按钮,自动生成30个10-99之间的随机数,赋值给二维数组的每一个元素,并在文本框1中显示,单击“求和”按钮,计算二维数组所有元素的和,并在标签4中显示计算结果。
代码如下:
Dim i As Integer
Dim j As Integer
Dim a(5,6) as integer
Private Sub Command1_Click()
Text1.Text =””
Randomize
For i = 0 To 4 '使用两重循环生成矩阵各个元素的值
For j = 0 To 5
a(i, j) = Int(Rnd * 90) + 1
Text1.Text = Text1.Text & a(i, j) & Space(2)
Next j
Text1.Text = Text1.Text & vbCrLf
Next i
End Sub
Private Sub Command2_Click()
Dim sum As Integer '计算数组所有元素的和
sum = 0
For i = 0 To 4
For j = 0 To 5
sum = sum + a(i, j)
Next j
Next i
Label3.Caption = sum
End Sub
5、随机产生六个数,按从大到小排列。插入14,按从大到小排列。随机删除一个数,求出最大值,最小值,平均值。
代码如下
Dim a() As Integer
Private Sub Command1_Click()
Randomize
Print "数据"
ReDim Preserve a(1 To 10)
For i = 1 To 9 '生产九个数据
a(i) = Int(Rnd * 100 + 1)
Print a(i);
Next i
For i = 1 To 8 '冒泡法降序排列数据
For j = 9 To i + 1 Step -1
If a(j) > a(j - 1) Then '与相邻的数比较,当次序不对就交换位置
t = a(j)
a(j) = a(j - 1)
a(j - 1) = t
End If
Next j
Next i
Print
Print "降序排列"
For i = 1 To 9
Print a(i);
Next i
For k = 1 To 9 '插入14,仍降序排列
If 14 > a(k) Then Exit For '找到插入的位置k
Next k
For i = 9 To k Step -1 'k以后的数逐一向后移动一个位置
a(i + 1) = a(i)
Next i
a(k) = 14 '数据插入k位置
Print
Print "插入后"
For i = 1 To 10
Print a(i);
Next i
End Sub
Private Sub Command2_Click()
y = Int(Rnd * 10 + 1) '随机产生一个下标
For j = y + 1 To 10 '下标后的数逐一向前移动
a(j - 1) = a(j)
Next j
Print
Print "删除一个后"
ReDim Preserve a(1 To 9) '重定义数组
For i = 1 To 9
Print a(i);
Next i
Max = a(1) '假定第一个数为最大值
Min = a(1) '假定第一个数为最小值
ave = a(1)
For i = 2 To 9 '逐一比较最大值和最小值
If a(i) > Max Then Max = a(i)
If a(i) < Min Then Min = a(i)
ave = ave + a(i)
Next i
Print
系: 生物安全 专业: 生物安全 年级: 10级
姓名: 李珠蓬 学号: 102251001045 计算机号
实验时间: 2012、4、19 实验地点: 综南附307 指导教师签字: 黄红兵
实验六 过程
一、实验目的
1、掌握sub过程和function过程的定义和调用方法。
2、掌握形参和实参的对应关系。
3、掌握值传递和地址传递的传递方式。
4、掌握递归的概念和使用方法。
二、实验内容
1、在标题为“函数调用”的窗体Form1上添加一个“求解”的命令按钮1和一个初始文本为空的文本框1。编写一个求n!的函数过程fac,运行时,单击“求解”按钮,则调用fac()函数来计算7!+11!—10!的值,并将计算结果显示在text1中。
代码如下:
Private Function Fac(n As Integer) As double '参数n为整形,函数fac为double型
Dim i%
Fac = 1 '保存阶乘值
For i = 1 To n
Fac = Fac * i
Next i
End Function
Private Sub Command1_Click()
Dim s as double
s = Fac(7) + Fac(11) - Fac(10) '调用函数计算
Text1.Text =str(s)
End Sub
2、在标题为“过程调用”的窗体Form1上添加一个“计算”的命令按钮和一个初始文本为空的文本框。编写一个求n!的子过程jch,运行时,单击“计算”按钮,则调用jch子过程来计算7!+11!—10!的值,并将计算结果显示在text1中。
代码如下:
Private Sub jch(n As Integer, p As double) '参数n为整形,p为长整形
Dim i%
p = 1 '保存阶乘值
For i = 1 To n
p = p * i
Next i
End Sub
Private Sub Command1_Click()
Dim s as double, a as double, b as double, c as double
jch 7, a '调用子过程计算
jch 11, b
jch 10, c
s = a + b - c
Text1.Text = s
End Sub
3、在窗体Fom1上添加两个标题分别为“参数x”和“参数n”标签,三个初始文本为空的文本框以及一个标题为“计算”的命令按钮。编写一个函数fc(x as integer,n as integer) as single,计算1+x+x^2+···+x^n的值。运行时,在文本框1中输入x的值,在文本框2中输入n的值,单击“计算”按钮,则调用函数计算上式,并将计算结果在文本框3中。
代码如下:
Private Function fc!(x%, n%) '定义函数fc
fc = 1
For i = 1 To n
fc = fc + x ^ i
Next i
End Function
Private Sub Command1_Click()
Dim x As Integer, n As Integer '调用函数fc
x = Text1.Text
n = Text2.Text
Text3.Text = fc(x, n)
End Sub
4、在标题为“最小公倍数求解”的窗体Form1上添加三个标题分别为“整数M”、“整数N”、“最小公倍数”的标签,以及三个初始文本为空的文本框,在添加一个标题“求解”的命令按钮。要求编写一个球最大公约数函数Gcd(ByVal m%,ByVal n%) As Integer,运行时,在文本框1和2中输入两个正整数,单击“求解”按钮,使用函数Gcd()求出这两个整数的最小公倍数,并在texte3中显示。
代码如下:
Private Function gcd(ByVal m%, ByVal n%) As Integer '定义函数gcd
Dim a as integer, s as integer
If m < n Then
a = m
m = n
n = a
End If
s = m Mod n '用辗转相除法求最大公约数
Do While s <> 0
m = n
n = s
s = m Mod n
Loop
gcd = n
End Function
Private Sub Command1_Click()
Dim m as integer
Dim n as integer
m = Text1.Text
n = Text2.Text
Dim gbs As Integer '调用函数
gbs = m * n / gcd( m, n)
Text3.Text = str(gbs)
End Sub
系: 生物安全 专业: 生物安全 年级: 10级
姓名: 李珠蓬 学号: 102251001045 计算机号
实验时间: 2012、4、26 实验地点: 综南附307 指导教师签字: 黄红
展开阅读全文