Visual Basic程序設(shè)計(jì)教程 第2版 教學(xué)課件作者 劉瑞新 電子教案 第8章 變量與過(guò)程的作用范圍
《Visual Basic程序設(shè)計(jì)教程 第2版 教學(xué)課件作者 劉瑞新 電子教案 第8章 變量與過(guò)程的作用范圍》由會(huì)員分享,可在線閱讀,更多相關(guān)《Visual Basic程序設(shè)計(jì)教程 第2版 教學(xué)課件作者 劉瑞新 電子教案 第8章 變量與過(guò)程的作用范圍(43頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、在線教務(wù)輔導(dǎo)網(wǎng):在線教務(wù)輔導(dǎo)網(wǎng)::/教材其余課件及動(dòng)畫(huà)素材請(qǐng)查閱在線教務(wù)輔導(dǎo)網(wǎng)教材其余課件及動(dòng)畫(huà)素材請(qǐng)查閱在線教務(wù)輔導(dǎo)網(wǎng)QQ:349134187 或者直接輸入下面地址:或者直接輸入下面地址:第第8 8章章 變量與過(guò)程的作用范圍變量與過(guò)程的作用范圍第第8 8章章 變量與過(guò)程的作用范圍變量與過(guò)程的作用范圍 在在VB中,應(yīng)用程序是由假設(shè)干個(gè)過(guò)程組成的,這些過(guò)中,應(yīng)用程序是由假設(shè)干個(gè)過(guò)程組成的,這些過(guò)程一般保存在窗體文件程一般保存在窗體文件.frm或標(biāo)準(zhǔn)模塊文件或標(biāo)準(zhǔn)模塊文件.bas中。變量在過(guò)程中是必不可少的。根據(jù)變量或過(guò)程所處的中。變量在過(guò)程中是必不可少的。根據(jù)變量或過(guò)程所處的不同位置,可被訪問(wèn)的
2、范圍是不相同的。變量與過(guò)程可被不同位置,可被訪問(wèn)的范圍是不相同的。變量與過(guò)程可被訪問(wèn)的范圍稱為變量與過(guò)程的作用域。訪問(wèn)的范圍稱為變量與過(guò)程的作用域。v8.1 代碼模塊的概念代碼模塊的概念 在建立在建立VB的應(yīng)用程序時(shí),應(yīng)首先設(shè)計(jì)代碼的結(jié)構(gòu)。的應(yīng)用程序時(shí),應(yīng)首先設(shè)計(jì)代碼的結(jié)構(gòu)。VB應(yīng)用程序的結(jié)構(gòu)通常如圖應(yīng)用程序的結(jié)構(gòu)通常如圖8-1所示。所示。圖圖8-1 VB應(yīng)用程序的結(jié)構(gòu)應(yīng)用程序的結(jié)構(gòu)函數(shù)過(guò)程(Function)Sub過(guò)程事件過(guò)程窗體模塊.Frm類模塊.ClsSub過(guò)程函數(shù)過(guò)程(Function)標(biāo)準(zhǔn)模塊.BasVB應(yīng)用程序.VBP VB將代碼存儲(chǔ)在將代碼存儲(chǔ)在3種不同的模塊中:窗體模塊種不同的
3、模塊中:窗體模塊(窗體窗體)、標(biāo)準(zhǔn)模塊模塊和類模塊。在這標(biāo)準(zhǔn)模塊模塊和類模塊。在這3種模塊中都可以包含種模塊中都可以包含聲明常數(shù)、變量、動(dòng)態(tài)鏈接庫(kù)聲明常數(shù)、變量、動(dòng)態(tài)鏈接庫(kù)DLL的聲明和過(guò)程的聲明和過(guò)程Sub、Function、Property過(guò)程。它們形成了工程的一過(guò)程。它們形成了工程的一種模塊層次結(jié)構(gòu),可以較好地組織工程,同時(shí)也便于代碼種模塊層次結(jié)構(gòu),可以較好地組織工程,同時(shí)也便于代碼的維護(hù),如圖的維護(hù),如圖8-2所示。所示。圖圖8-2 工程中的模塊工程中的模塊8.1.1 8.1.1 窗體模塊窗體模塊 每個(gè)窗體對(duì)應(yīng)一個(gè)窗體模塊,窗體模塊包每個(gè)窗體對(duì)應(yīng)一個(gè)窗體模塊,窗體模塊包含窗體及其控件的
4、屬性設(shè)置、窗體變量的說(shuō)含窗體及其控件的屬性設(shè)置、窗體變量的說(shuō)明、事件過(guò)程、窗體內(nèi)的通用過(guò)程、外部過(guò)明、事件過(guò)程、窗體內(nèi)的通用過(guò)程、外部過(guò)程的窗體級(jí)聲明。程的窗體級(jí)聲明。窗體模塊保存在擴(kuò)展名為窗體模塊保存在擴(kuò)展名為.frm.frm的文件中。默的文件中。默認(rèn)時(shí)應(yīng)用程序中只有一個(gè)窗體,因此有一個(gè)認(rèn)時(shí)應(yīng)用程序中只有一個(gè)窗體,因此有一個(gè)以以.frm.frm為擴(kuò)展名的窗體模塊文件。如果應(yīng)用程為擴(kuò)展名的窗體模塊文件。如果應(yīng)用程序有多個(gè)窗體,就會(huì)有多個(gè)以序有多個(gè)窗體,就會(huì)有多個(gè)以.frm.frm為擴(kuò)展名的為擴(kuò)展名的窗體模塊文件。窗體模塊文件。如果要在文本編輯器中觀察窗體模塊,那如果要在文本編輯器中觀察窗體模塊
5、,那么還會(huì)看到窗體及其控件的描述,包括它們么還會(huì)看到窗體及其控件的描述,包括它們的屬性設(shè)置值,如圖的屬性設(shè)置值,如圖8-38-3所示。窗體模塊中也所示。窗體模塊中也可以引用該應(yīng)用程序內(nèi)的其他窗體或?qū)ο蟆?梢砸迷搼?yīng)用程序內(nèi)的其他窗體或?qū)ο?。從從“工程菜單中?zhí)行工程菜單中執(zhí)行“添加窗體命令,可添加窗體命令,可以添加新窗體模塊。以添加新窗體模塊。8.1.2 8.1.2 標(biāo)準(zhǔn)模塊標(biāo)準(zhǔn)模塊 標(biāo)準(zhǔn)模塊保存在擴(kuò)展名為標(biāo)準(zhǔn)模塊保存在擴(kuò)展名為.bas.bas的文件中,的文件中,缺省時(shí)應(yīng)用程序中不包含標(biāo)準(zhǔn)模塊。標(biāo)準(zhǔn)模缺省時(shí)應(yīng)用程序中不包含標(biāo)準(zhǔn)模塊。標(biāo)準(zhǔn)模塊可以包含公有或模塊級(jí)的變量、常數(shù)、類塊可以包含公有或模塊
6、級(jí)的變量、常數(shù)、類型、外部過(guò)程和全局過(guò)程的全局聲明或模塊型、外部過(guò)程和全局過(guò)程的全局聲明或模塊級(jí)聲明。缺省時(shí),標(biāo)準(zhǔn)模塊中的代碼是公有級(jí)聲明。缺省時(shí),標(biāo)準(zhǔn)模塊中的代碼是公有的,任何窗體或模塊中的事件過(guò)程或通用過(guò)的,任何窗體或模塊中的事件過(guò)程或通用過(guò)程都可以調(diào)用它。寫入標(biāo)準(zhǔn)模塊的代碼不必程都可以調(diào)用它。寫入標(biāo)準(zhǔn)模塊的代碼不必綁在特定的應(yīng)用程序上,在許多不同的應(yīng)用綁在特定的應(yīng)用程序上,在許多不同的應(yīng)用程序中可以重用標(biāo)準(zhǔn)模塊。在標(biāo)準(zhǔn)模塊中可程序中可以重用標(biāo)準(zhǔn)模塊。在標(biāo)準(zhǔn)模塊中可以存儲(chǔ)通用過(guò)程,但不能存儲(chǔ)事件過(guò)程。以存儲(chǔ)通用過(guò)程,但不能存儲(chǔ)事件過(guò)程。從從“工程菜單中執(zhí)行工程菜單中執(zhí)行“添加模塊命令,可添
7、加模塊命令,可以在工程中添加標(biāo)準(zhǔn)模塊。以在工程中添加標(biāo)準(zhǔn)模塊。8.1.3 8.1.3 類模塊類模塊 在在VBVB中,類模塊文件擴(kuò)展名為中,類模塊文件擴(kuò)展名為.cls.cls是是面向?qū)ο缶幊痰母?。程序員可在類模塊中面向?qū)ο缶幊痰母?。程序員可在類模塊中編寫代碼建立新對(duì)象,這些新對(duì)象可以包含編寫代碼建立新對(duì)象,這些新對(duì)象可以包含自定義的屬性和方法,可以在應(yīng)用程序內(nèi)的自定義的屬性和方法,可以在應(yīng)用程序內(nèi)的過(guò)程中使用。實(shí)際上,窗體本身正是這樣一過(guò)程中使用。實(shí)際上,窗體本身正是這樣一種類模塊,在其上可安放控件、可顯示窗體種類模塊,在其上可安放控件、可顯示窗體窗口。窗口。類模塊與標(biāo)準(zhǔn)模塊的不同之處在于標(biāo)
8、準(zhǔn)模類模塊與標(biāo)準(zhǔn)模塊的不同之處在于標(biāo)準(zhǔn)模塊僅僅含有代碼,而類模塊既含有代碼又含塊僅僅含有代碼,而類模塊既含有代碼又含有數(shù)據(jù),類模塊可以視為沒(méi)有物理表示的對(duì)有數(shù)據(jù),類模塊可以視為沒(méi)有物理表示的對(duì)象。象。v8.2 變量的作用范圍變量的作用范圍v 變量的作用范圍作用域指變量能變量的作用范圍作用域指變量能被某一過(guò)程識(shí)別的范圍。當(dāng)一個(gè)應(yīng)用程序被某一過(guò)程識(shí)別的范圍。當(dāng)一個(gè)應(yīng)用程序中出現(xiàn)多個(gè)過(guò)程或函數(shù)時(shí),在它們各自的中出現(xiàn)多個(gè)過(guò)程或函數(shù)時(shí),在它們各自的子程序中都可以定義自己的常量、變量。子程序中都可以定義自己的常量、變量。這時(shí),自然會(huì)提出一個(gè)問(wèn)題,這些常量或這時(shí),自然會(huì)提出一個(gè)問(wèn)題,這些常量或變量是否在程序
9、中到處可用?答復(fù)是否認(rèn)變量是否在程序中到處可用?答復(fù)是否認(rèn)的。的。v 在在VB中,可以在過(guò)程或模塊中聲明中,可以在過(guò)程或模塊中聲明變量,根據(jù)聲明變量的位置,變量分為兩變量,根據(jù)聲明變量的位置,變量分為兩類:過(guò)程級(jí)變量類:過(guò)程級(jí)變量Procedure level和和模塊級(jí)變量模塊級(jí)變量Module level。v 按照作用范圍分類,過(guò)程級(jí)變量屬于按照作用范圍分類,過(guò)程級(jí)變量屬于局部變量,而模塊級(jí)變量那么屬于全局變局部變量,而模塊級(jí)變量那么屬于全局變量。量。8.2.1 8.2.1 過(guò)程級(jí)變量過(guò)程級(jí)變量 在一個(gè)過(guò)程內(nèi)部使用在一個(gè)過(guò)程內(nèi)部使用DimDim或或StaticStatic關(guān)鍵字聲關(guān)鍵字聲明變
10、量時(shí),只有該過(guò)程內(nèi)部的代碼才能訪問(wèn)明變量時(shí),只有該過(guò)程內(nèi)部的代碼才能訪問(wèn)或改變?cè)撟兞康闹担虼吮环Q為或改變?cè)撟兞康闹?,因此被稱為“過(guò)程級(jí)變量過(guò)程級(jí)變量。過(guò)程級(jí)變量的作用范圍限制在該過(guò)程內(nèi)。過(guò)程級(jí)變量的作用范圍限制在該過(guò)程內(nèi)部。例如:部。例如:Dim a As Integer,b As SingleDim a As Integer,b As SingleStatic s As StringStatic s As String 如果在過(guò)程中未作說(shuō)明而直接使用某個(gè)變?nèi)绻谶^(guò)程中未作說(shuō)明而直接使用某個(gè)變量,該變量也被當(dāng)成過(guò)程級(jí)變量。用量,該變量也被當(dāng)成過(guò)程級(jí)變量。用StaticStatic說(shuō)說(shuō)明的變量
11、在應(yīng)用程序的整個(gè)運(yùn)行過(guò)程中都一明的變量在應(yīng)用程序的整個(gè)運(yùn)行過(guò)程中都一直存在,而用直存在,而用DimDim說(shuō)明的變量只在過(guò)程執(zhí)行時(shí)說(shuō)明的變量只在過(guò)程執(zhí)行時(shí)存在,退出過(guò)程后,這類變量就會(huì)消失。存在,退出過(guò)程后,這類變量就會(huì)消失。過(guò)程級(jí)變量屬于局部變量,只能在建立的過(guò)程級(jí)變量屬于局部變量,只能在建立的過(guò)程內(nèi)有效,即使是在主程序中建立的變量,過(guò)程內(nèi)有效,即使是在主程序中建立的變量,也不能在被調(diào)用的子過(guò)程中使用。也不能在被調(diào)用的子過(guò)程中使用?!纠纠?-1】過(guò)程級(jí)局部變量例如?!窟^(guò)程級(jí)局部變量例如。Private Sub Form_Activate()Dim a As Integer,b As Inte
12、ger,c As Integer 過(guò)程過(guò)程級(jí)局部變量級(jí)局部變量 a=5:b=3 Print Print Tab(15);a;Tab(25);b;Tab(35);c=a*b Print 調(diào)用調(diào)用Prod前前;Tab(14);a;Tab(24);b;Tab(34);c Call Prod Print 調(diào)用調(diào)用Prod后后;Tab(14);a;Tab(24);b;Tab(34);c Print Print 調(diào)用調(diào)用Sum前前;Tab(14);a;Tab(24);b;Tab(34);c Call Sum Print 調(diào)用調(diào)用Sum后后;Tab(14);a;Tab(24);b;Tab(34);cEnd
13、SubSub Prod()通用過(guò)程通用過(guò)程Dim a As Integer,b As Integer,c As Integer 過(guò)程過(guò)程級(jí)局部變量級(jí)局部變量圖圖8-7 程序運(yùn)行結(jié)果程序運(yùn)行結(jié)果 c=a*b Print Prod子過(guò)程;Tab(14);a;Tab(24);b;Tab(34);cEnd SubSub Sum()通用過(guò)程 Dim a As Integer,b As Integer,c As Integer 過(guò)程級(jí)局部變量 c=a+b Print Sum子過(guò)程;Tab(14);a;Tab(24);b;Tab(34);cEnd Sub 程序的運(yùn)行結(jié)果如圖程序的運(yùn)行結(jié)果如圖8-7所示。從上
14、面程序的運(yùn)行結(jié)果可所示。從上面程序的運(yùn)行結(jié)果可以看出,主程序中的變量沒(méi)有帶到子過(guò)程中。以看出,主程序中的變量沒(méi)有帶到子過(guò)程中。8.2.2 8.2.2 模塊級(jí)變量模塊級(jí)變量 在模塊的通用段中聲明的變量屬于模塊級(jí)變量。模塊級(jí)在模塊的通用段中聲明的變量屬于模塊級(jí)變量。模塊級(jí)變量分為私有和公有。變量分為私有和公有。1.私有的模塊級(jí)變量私有的模塊級(jí)變量 私有的模塊級(jí)變量在聲明它的整個(gè)模塊的所有過(guò)程中都私有的模塊級(jí)變量在聲明它的整個(gè)模塊的所有過(guò)程中都能使用,但其他模塊卻不能訪問(wèn)該變量。聲明方法是在模能使用,但其他模塊卻不能訪問(wèn)該變量。聲明方法是在模塊的通用段中使用塊的通用段中使用Private或或Dim關(guān)
15、鍵字聲明變量。例如:關(guān)鍵字聲明變量。例如:Private s As StringDim a As Integer,b As Single 在模塊的通用段中使用在模塊的通用段中使用Private或或Dim作用相同,但使用作用相同,但使用Private會(huì)提高代碼的可讀性。會(huì)提高代碼的可讀性。2.公有的模塊級(jí)變量公有的模塊級(jí)變量 公有的模塊級(jí)變量在所有模塊中的所有過(guò)程中都公有的模塊級(jí)變量在所有模塊中的所有過(guò)程中都能使用。它的作用范圍是整個(gè)應(yīng)用程序,因此公有能使用。它的作用范圍是整個(gè)應(yīng)用程序,因此公有模塊級(jí)變量屬于全局變量。聲明方法是在模塊的通模塊級(jí)變量屬于全局變量。聲明方法是在模塊的通用段中使用用段
16、中使用Public關(guān)鍵字聲明變量。例如:關(guān)鍵字聲明變量。例如:Public a As Integer,b As Single 全局變量是指在所有程序包括主程序和過(guò)程全局變量是指在所有程序包括主程序和過(guò)程中都可以使用的內(nèi)存變量。就像在一個(gè)過(guò)程中定義中都可以使用的內(nèi)存變量。就像在一個(gè)過(guò)程中定義的變量一樣,在子過(guò)程中可以任意改變和調(diào)用全局的變量一樣,在子過(guò)程中可以任意改變和調(diào)用全局變量,當(dāng)子過(guò)程執(zhí)行完后,其值又帶回主程序。變量,當(dāng)子過(guò)程執(zhí)行完后,其值又帶回主程序。把變量定義為全局變量雖然很方便,但這樣會(huì)增把變量定義為全局變量雖然很方便,但這樣會(huì)增加變量在程序中被無(wú)意修改的時(shí)機(jī),因此,如果有加變量在程
17、序中被無(wú)意修改的時(shí)機(jī),因此,如果有更好的處理變量的方法,就不要聲明全局變量。另更好的處理變量的方法,就不要聲明全局變量。另外,用外,用Const語(yǔ)句定義的符號(hào)常量也能聲明為全局語(yǔ)句定義的符號(hào)常量也能聲明為全局的。的?!纠纠?-2】公有的模塊級(jí)全局變量例如?!抗械哪K級(jí)全局變量例如。Public a As Integer,b As Integer,c As Integer 寫在寫在“(通用通用)的的“(聲明聲明)中中Private Sub Form_Activate()事件事件過(guò)程過(guò)程 a=5:b=3 Print Tab(15);a;Tab(25);b;Tab(35);c=a*b Print
18、 調(diào)用調(diào)用Prod前前;Tab(14);a;Tab(24);b;Tab(34);c Call Prod Print 調(diào)用調(diào)用Prod后后;Tab(14);a;Tab(24);b;Tab(34);c Print Print Tab(15);a;Tab(25);b;Tab(35);c=a+b Print 調(diào)用調(diào)用Sum前前;Tab(14);a;Tab(24);b;Tab(34);c Call Sum Print 調(diào)用調(diào)用Sum后后;Tab(14);a;Tab(24);b;Tab(34);cEnd Sub圖圖8-8 程序運(yùn)行結(jié)果程序運(yùn)行結(jié)果Sub Prod()通用過(guò)程 c=a*b Print Pro
19、d子過(guò)程;Tab(14);a;Tab(24);b;Tab(34);cEnd SubSub Sum()通用過(guò)程 c=a+b Print Sum子過(guò)程;Tab(14);a;Tab(24);b;Tab(34);cEnd Sub 程序的運(yùn)行結(jié)果如圖程序的運(yùn)行結(jié)果如圖8-8所示。從程序的運(yùn)行結(jié)果可以看所示。從程序的運(yùn)行結(jié)果可以看出,在模塊級(jí)中用出,在模塊級(jí)中用Public聲明的全程變量聲明的全程變量a、b、c,在各過(guò),在各過(guò)程中都能訪問(wèn)和修改。程中都能訪問(wèn)和修改。8.2.3 8.2.3 變量的生存期變量的生存期 從變量的作用空間來(lái)說(shuō),變量有作用范圍;從變量的作用空間來(lái)說(shuō),變量有作用范圍;從變量的作用時(shí)間
20、來(lái)說(shuō),變量有生存期。從變量的作用時(shí)間來(lái)說(shuō),變量有生存期。假設(shè)過(guò)程內(nèi)部有一個(gè)變量,當(dāng)程序運(yùn)行進(jìn)假設(shè)過(guò)程內(nèi)部有一個(gè)變量,當(dāng)程序運(yùn)行進(jìn)入該過(guò)程時(shí),要分配給該變量一定的內(nèi)存單入該過(guò)程時(shí),要分配給該變量一定的內(nèi)存單元,一旦程序退出該過(guò)程,變量占有的內(nèi)存元,一旦程序退出該過(guò)程,變量占有的內(nèi)存單元是釋放還是保存,根據(jù)變量在程序運(yùn)行單元是釋放還是保存,根據(jù)變量在程序運(yùn)行期間的生命周期,把變量分為靜態(tài)變量期間的生命周期,把變量分為靜態(tài)變量StaticStatic和動(dòng)態(tài)變量和動(dòng)態(tài)變量DynamicDynamic。靜態(tài)變。靜態(tài)變量不釋放內(nèi)存單元,動(dòng)態(tài)變量釋放內(nèi)存單元,量不釋放內(nèi)存單元,動(dòng)態(tài)變量釋放內(nèi)存單元,有時(shí)候可
21、能需要某些局部變量是靜態(tài)變量,有時(shí)候可能需要某些局部變量是靜態(tài)變量,而其他變量那么為動(dòng)態(tài)變量。而其他變量那么為動(dòng)態(tài)變量?!纠纠?-3】下面程序說(shuō)明了】下面程序說(shuō)明了Static關(guān)鍵字的作用。關(guān)鍵字的作用。Private Sub Form_Activate()Dim i As Integer For i=1 To 6 TestSub Next iEnd SubSub TestSub()Dim x As Integer,m As String圖圖8-9 程序運(yùn)行結(jié)果程序運(yùn)行結(jié)果 Static y,n x=x+1:y=y+1 m=m&*:n=n&*Print x=;x;y=;y,m=;m,n=;n
22、End Sub 程序的運(yùn)行結(jié)果如圖程序的運(yùn)行結(jié)果如圖8-9所示。所示。說(shuō)明:說(shuō)明:x、y、m、n都是過(guò)程都是過(guò)程TestSub中的局部變量,中的局部變量,y、n被說(shuō)明為被說(shuō)明為Static變量,每次調(diào)用保持上一次的值,變量,每次調(diào)用保持上一次的值,y、n的的值會(huì)變化;值會(huì)變化;x、m是動(dòng)態(tài)變量,每次調(diào)用都被重新初始化是動(dòng)態(tài)變量,每次調(diào)用都被重新初始化為為0或或,它們的值總是不變。,它們的值總是不變。為使過(guò)程中所有的局部變量為靜態(tài)變量,可在過(guò)程頭的為使過(guò)程中所有的局部變量為靜態(tài)變量,可在過(guò)程頭的起始處加上起始處加上Static關(guān)鍵字。例如:關(guān)鍵字。例如:Static Function Runni
23、ngTotal(num)這就使過(guò)程中的所有局部變量都變?yōu)殪o態(tài),無(wú)論它們是這就使過(guò)程中的所有局部變量都變?yōu)殪o態(tài),無(wú)論它們是用用Static、Dim或或Private聲明的還是隱式聲明的。聲明的還是隱式聲明的。v8.3 過(guò)程的作用范圍過(guò)程的作用范圍v 過(guò)程也有作用的范圍作用域,在過(guò)程也有作用的范圍作用域,在VB中,過(guò)程的作用域分為模塊級(jí)或稱中,過(guò)程的作用域分為模塊級(jí)或稱文件級(jí)和全局級(jí)或稱工程級(jí)。文件級(jí)和全局級(jí)或稱工程級(jí)。v8.3.1 模塊級(jí)過(guò)程模塊級(jí)過(guò)程v 模塊級(jí)過(guò)程是在某個(gè)模塊文件內(nèi)模塊級(jí)過(guò)程是在某個(gè)模塊文件內(nèi)定義的過(guò)程。如果在定義的過(guò)程。如果在Sub或或Function前加前加關(guān)鍵字關(guān)鍵字Pr
24、ivate,那么該過(guò)程只能被在本,那么該過(guò)程只能被在本模塊文件中定義的過(guò)程調(diào)用。即其作模塊文件中定義的過(guò)程調(diào)用。即其作用域?yàn)楸灸K文件。用域?yàn)楸灸K文件。8.3.2 8.3.2 全局級(jí)過(guò)程全局級(jí)過(guò)程 全局級(jí)過(guò)程是在定義過(guò)程時(shí),在全局級(jí)過(guò)程是在定義過(guò)程時(shí),在SubSub或或FunctionFunction前加關(guān)鍵字前加關(guān)鍵字PublicPublic可以默認(rèn)。全可以默認(rèn)。全局級(jí)過(guò)程可被整個(gè)應(yīng)用程序所有模塊文件局級(jí)過(guò)程可被整個(gè)應(yīng)用程序所有模塊文件中定義的過(guò)程調(diào)用。即其作用域?yàn)檎麄€(gè)應(yīng)用中定義的過(guò)程調(diào)用。即其作用域?yàn)檎麄€(gè)應(yīng)用程序工程。程序工程。8.3.3 8.3.3 調(diào)用其他模塊中的過(guò)程調(diào)用其他模塊中的
25、過(guò)程 在工程中的任何地方都能調(diào)用其他模塊中在工程中的任何地方都能調(diào)用其他模塊中的全局過(guò)程。調(diào)用其他模塊中的過(guò)程的各種的全局過(guò)程。調(diào)用其他模塊中的過(guò)程的各種技巧,取決于該過(guò)程是在窗體模塊中、類模技巧,取決于該過(guò)程是在窗體模塊中、類模塊中還是標(biāo)準(zhǔn)模塊中。塊中還是標(biāo)準(zhǔn)模塊中。(1)(1)調(diào)用窗體中的過(guò)程調(diào)用窗體中的過(guò)程 所有窗體模塊的外部調(diào)用必須指向包含此所有窗體模塊的外部調(diào)用必須指向包含此過(guò)程的窗體模塊。如果在窗體模塊過(guò)程的窗體模塊。如果在窗體模塊Form1Form1中包中包含含SomeSubSomeSub過(guò)程,那么可使用下面的語(yǔ)句調(diào)過(guò)程,那么可使用下面的語(yǔ)句調(diào)用用Form1Form1中的過(guò)程:中
26、的過(guò)程:Call Form1.SomeSub(arguments)Call Form1.SomeSub(arguments)(2)調(diào)用類模塊中的過(guò)程調(diào)用類模塊中的過(guò)程 與窗體中調(diào)用過(guò)程類似,在類模塊中調(diào)用過(guò)程要調(diào)用與與窗體中調(diào)用過(guò)程類似,在類模塊中調(diào)用過(guò)程要調(diào)用與過(guò)程一致并且指向類實(shí)例的變量。例如,過(guò)程一致并且指向類實(shí)例的變量。例如,DemoClass是類是類Class1的實(shí)例:的實(shí)例:Dim DemoClass as New Class1 不同于窗體的是,在引用一個(gè)類的實(shí)例時(shí),不能用類名不同于窗體的是,在引用一個(gè)類的實(shí)例時(shí),不能用類名作限定符。必須首先聲明類的實(shí)例為對(duì)象變量在這個(gè)例作限定符。
27、必須首先聲明類的實(shí)例為對(duì)象變量在這個(gè)例子中是子中是DemoClass,并用變量名引用它。,并用變量名引用它。(3)調(diào)用標(biāo)準(zhǔn)模塊中的過(guò)程調(diào)用標(biāo)準(zhǔn)模塊中的過(guò)程 如果過(guò)程名是唯一的,那么不必在調(diào)用時(shí)加模塊名。無(wú)如果過(guò)程名是唯一的,那么不必在調(diào)用時(shí)加模塊名。無(wú)論是在模塊內(nèi),還是在模塊外調(diào)用,結(jié)果總會(huì)引用這個(gè)唯論是在模塊內(nèi),還是在模塊外調(diào)用,結(jié)果總會(huì)引用這個(gè)唯一過(guò)程。如過(guò)程僅出現(xiàn)在一個(gè)地方,這個(gè)過(guò)程就是唯一的。一過(guò)程。如過(guò)程僅出現(xiàn)在一個(gè)地方,這個(gè)過(guò)程就是唯一的。如果兩個(gè)以上的模塊都包含同名的過(guò)程,那就有必要用模如果兩個(gè)以上的模塊都包含同名的過(guò)程,那就有必要用模塊名來(lái)限定了。塊名來(lái)限定了。例 如,假 設(shè)
28、在例 如,假 設(shè) 在 M o d u l e 1 中 調(diào) 用中 調(diào) 用 M o d u l e 2 中 的中 的CommonName過(guò)程,要用下面的語(yǔ)句:過(guò)程,要用下面的語(yǔ)句:Module2.CommonName(arguments)【例【例8-4】全局級(jí)過(guò)程的調(diào)用,如圖】全局級(jí)過(guò)程的調(diào)用,如圖8-10所示。所示。應(yīng)用程序工程中包括兩個(gè)窗體應(yīng)用程序工程中包括兩個(gè)窗體Forml、Form2和一和一個(gè)標(biāo)準(zhǔn)模塊個(gè)標(biāo)準(zhǔn)模塊Module1。在。在Forml窗體中定義了一個(gè)計(jì)算矩窗體中定義了一個(gè)計(jì)算矩形面積的全局級(jí)形面積的全局級(jí)Function過(guò)程,在標(biāo)準(zhǔn)模塊過(guò)程,在標(biāo)準(zhǔn)模塊Module1中定中定義了一個(gè)
29、計(jì)算矩形周長(zhǎng)的全局級(jí)義了一個(gè)計(jì)算矩形周長(zhǎng)的全局級(jí)Function過(guò)程。過(guò)程。兩個(gè)窗體中的命令按鈕組的兩個(gè)窗體中的命令按鈕組的Click事件過(guò)程功能相同,差事件過(guò)程功能相同,差異是調(diào)用異是調(diào)用Function過(guò)程時(shí)所使用的名字。過(guò)程時(shí)所使用的名字。圖圖8-10 不同窗體對(duì)過(guò)程的調(diào)用不同窗體對(duì)過(guò)程的調(diào)用 Form1窗體模塊中的過(guò)程代碼如下:窗體模塊中的過(guò)程代碼如下:Public Function Area(x As Single,y As Single)As Single Area=x*yEnd FunctionPrivate Sub Command1_Click(index As Integer
30、)Dim a As Single,b As Single a=Val(Text1(0).Text)b=Val(Text1(1).Text)n=index If n=0 Then Label2(0).Caption=Area(a,b)Else Label2(1).Caption=Perimeter(a,b)End IfEnd SubPrivate Sub Form_Load()End Sub Form2窗體模塊中的過(guò)程代碼如下:窗體模塊中的過(guò)程代碼如下:Private Sub Command1_Click(index As Integer)Dim a As Single,b As Single
31、a=Val(Text1(0).Text)b=Val(Text1(1).Text)n=index If n=0 Then Label2(0).Caption=Form1.Area(a,b)Else Label2(1).Caption=Perimeter(a,b)End IfEnd Sub 標(biāo)準(zhǔn)模塊標(biāo)準(zhǔn)模塊Module1中的過(guò)程代碼:中的過(guò)程代碼:Public Function Perimeter(x As Single,y As Single)As Single Perimeter=2*(x+y)End Functionv8.4 用戶定義類型用戶定義類型v8.4.1 用戶定義類型的概念用戶定義類
32、型的概念v 假設(shè)某校的學(xué)生成績(jī)見(jiàn)表假設(shè)某校的學(xué)生成績(jī)見(jiàn)表8-1。v表表8-1 學(xué)生成績(jī)表學(xué)生成績(jī)表v表中每列的數(shù)據(jù)類型相同,都是前面介表中每列的數(shù)據(jù)類型相同,都是前面介紹過(guò)的根本數(shù)據(jù)類型,在每一行中卻有著紹過(guò)的根本數(shù)據(jù)類型,在每一行中卻有著不同的數(shù)據(jù)類型。雖然使用不同的數(shù)據(jù)類型。雖然使用VB的的Variant數(shù)組允許數(shù)組內(nèi)的元素有不同的數(shù)據(jù)類型,數(shù)組允許數(shù)組內(nèi)的元素有不同的數(shù)據(jù)類型,但卻比較浪費(fèi)內(nèi)存。此時(shí),但卻比較浪費(fèi)內(nèi)存。此時(shí),VB允許將根允許將根本數(shù)據(jù)類型按需要組合起來(lái),創(chuàng)立自定義本數(shù)據(jù)類型按需要組合起來(lái),創(chuàng)立自定義的數(shù)據(jù)類型:用戶定義類型的數(shù)據(jù)類型:用戶定義類型User Defined
33、Type。學(xué) 號(hào)姓 名性 別出生日期語(yǔ) 文數(shù) 學(xué)總 分99310李小華男1985年2月22日859518099103張紅玉女1986年5月18日73.587160.599311樊利友男1984年9月21日8279161 用戶定義類型又被稱為用戶定義類型又被稱為“記錄類型,類似于記錄類型,類似于C語(yǔ)言中語(yǔ)言中的的“結(jié)構(gòu)。它是一個(gè)由假設(shè)干個(gè)根本類型的數(shù)據(jù)項(xiàng)組合結(jié)構(gòu)。它是一個(gè)由假設(shè)干個(gè)根本類型的數(shù)據(jù)項(xiàng)組合而成的組合項(xiàng)。如表而成的組合項(xiàng)。如表8-1中的每一列都是根本類型的數(shù)據(jù)中的每一列都是根本類型的數(shù)據(jù)項(xiàng),分別描述同一對(duì)象學(xué)生的不同屬性,稱為字段項(xiàng),分別描述同一對(duì)象學(xué)生的不同屬性,稱為字段或稱為數(shù)據(jù)項(xiàng)
34、,字段的名稱,如學(xué)號(hào)、姓名、性別、或稱為數(shù)據(jù)項(xiàng),字段的名稱,如學(xué)號(hào)、姓名、性別、出生日期等稱為字段名或稱數(shù)據(jù)項(xiàng)名。表中的記錄類出生日期等稱為字段名或稱數(shù)據(jù)項(xiàng)名。表中的記錄類型就是由這型就是由這7個(gè)數(shù)據(jù)項(xiàng)組成,其中每個(gè)學(xué)生的個(gè)數(shù)據(jù)項(xiàng)組成,其中每個(gè)學(xué)生的7個(gè)具體屬性個(gè)具體屬性值的集合就是記錄值簡(jiǎn)稱記錄,表中共有值的集合就是記錄值簡(jiǎn)稱記錄,表中共有3個(gè)記錄值,個(gè)記錄值,每位學(xué)生有每位學(xué)生有1個(gè)記錄。如果該校有個(gè)記錄。如果該校有2000名學(xué)生,那么該校名學(xué)生,那么該校學(xué)生成績(jī)數(shù)據(jù)文件中就應(yīng)該有學(xué)生成績(jī)數(shù)據(jù)文件中就應(yīng)該有2000個(gè)記錄。個(gè)記錄。8.4.2 8.4.2 創(chuàng)立用戶定義類型創(chuàng)立用戶定義類型 可
35、以用可以用TypeType語(yǔ)句創(chuàng)立用戶定義的類型,該語(yǔ)句創(chuàng)立用戶定義的類型,該語(yǔ)句必須置于模塊的聲明局部。其格式為:語(yǔ)句必須置于模塊的聲明局部。其格式為:Private|Public Type Private|Public Type 用戶類型名用戶類型名 字段名字段名1 1 As As 類型類型1 1 字段名字段名2 2 As As 類型類型2 2 字段名字段名n n As As 類型類型n n End TypeEnd Type 8.4.2 8.4.2 創(chuàng)立用戶定義類型創(chuàng)立用戶定義類型例如,要建立一個(gè)學(xué)生成績(jī)處理程序,由于例如,要建立一個(gè)學(xué)生成績(jī)處理程序,由于每一位學(xué)生都需要學(xué)號(hào)、姓名、學(xué)分和
36、平均每一位學(xué)生都需要學(xué)號(hào)、姓名、學(xué)分和平均成績(jī)等數(shù)據(jù)項(xiàng)字段,那么可以使用成績(jī)等數(shù)據(jù)項(xiàng)字段,那么可以使用TypeType語(yǔ)句來(lái)定義一個(gè)名稱為語(yǔ)句來(lái)定義一個(gè)名稱為studentrecstudentrec的記錄。的記錄。Private Type studentrecPrivate Type studentrec stunum As String stunum As String*6 6 學(xué)號(hào)元素學(xué)號(hào)元素為為6 6個(gè)字符的定長(zhǎng)字符串個(gè)字符的定長(zhǎng)字符串 names As String names As String*8 8 姓名元素姓名元素為為8 8個(gè)字符的定長(zhǎng)字符串個(gè)字符的定長(zhǎng)字符串 credit A
37、s Integer credit As Integer 學(xué)學(xué)分元素為整型分元素為整型 avg As Single avg As Single 平平均成績(jī)?yōu)閱尉刃途煽?jī)?yōu)閱尉刃虴nd TypeEnd Type8.4.3 8.4.3 建立和使用用戶定義類型變量建立和使用用戶定義類型變量 在使用用戶定義類型之前,必須用在使用用戶定義類型之前,必須用TypeType語(yǔ)語(yǔ)句創(chuàng)立數(shù)據(jù)類型。句創(chuàng)立數(shù)據(jù)類型。1.1.建立用戶定義類型變量建立用戶定義類型變量 用戶定義類型被創(chuàng)立后,可以用用戶定義類型被創(chuàng)立后,可以用DimDim、RedimRedim、StaticStatic建立一個(gè)具有這種數(shù)據(jù)類型的建立一個(gè)
38、具有這種數(shù)據(jù)類型的變量。例如定義一個(gè)具有變量。例如定義一個(gè)具有studentrecstudentrec類型類型的變量的變量stustu:Dim stu AS studentrecDim stu AS studentrec 用戶定義類型也可以作為數(shù)組元素的數(shù)據(jù)用戶定義類型也可以作為數(shù)組元素的數(shù)據(jù)類型。例如,定義一個(gè)擁有類型。例如,定義一個(gè)擁有100100個(gè)記錄元素的個(gè)記錄元素的數(shù)組數(shù)組studentstudent:Dim student(1 To 100)As studentrecDim student(1 To 100)As studentrec2.使用用戶定義類型變量使用用戶定義類型變量 如
39、果要存取用戶定義類型變量中的某個(gè)字段的數(shù)如果要存取用戶定義類型變量中的某個(gè)字段的數(shù)據(jù),其格式如下。據(jù),其格式如下。用戶數(shù)據(jù)類型變量名用戶數(shù)據(jù)類型變量名.字段名字段名 例如,要存取用戶定義類型變量例如,要存取用戶定義類型變量stu中中names這這個(gè)字段的數(shù)據(jù),要寫為:。個(gè)字段的數(shù)據(jù),要寫為:?!纠纠?-5】把數(shù)據(jù)值分別賦給】把數(shù)據(jù)值分別賦給stu變量中的各個(gè)字段。變量中的各個(gè)字段。首先在窗體模塊的通用段創(chuàng)立用戶定義類型:首先在窗體模塊的通用段創(chuàng)立用戶定義類型:Private Type studentrec stunum As String*6 學(xué)號(hào)元素學(xué)號(hào)元素為為6個(gè)字符的定長(zhǎng)字符串個(gè)字符的
40、定長(zhǎng)字符串 names As String*8 姓名元素姓名元素為為8個(gè)字符的定長(zhǎng)字符串個(gè)字符的定長(zhǎng)字符串 credit As Integer 學(xué)分元素為整型學(xué)分元素為整型 avg As Single 平均成績(jī)?yōu)閱尉骄煽?jī)?yōu)閱尉刃投刃虴nd Type 編寫命令按鈕的編寫命令按鈕的Click事件代碼:事件代碼:Private Sub Command1_Click()Dim stu As studentrec 定義一個(gè)具有studentrec類型的變量stu =990001 =王 平 =65 =88 Text1(0).Text=Text1(1).Text=Text1(2).Text=Text1
41、(3).Text=End Sub圖圖8-11 運(yùn)行結(jié)果運(yùn)行結(jié)果 程序運(yùn)行結(jié)果如圖程序運(yùn)行結(jié)果如圖8-11所示。所示。8.4.4 8.4.4 用戶定義類型數(shù)組用戶定義類型數(shù)組 如果一個(gè)數(shù)組中元素的數(shù)據(jù)類型是用戶定如果一個(gè)數(shù)組中元素的數(shù)據(jù)類型是用戶定義類型,那么稱為用戶定義類型數(shù)組或記錄義類型,那么稱為用戶定義類型數(shù)組或記錄數(shù)組數(shù)組Array of recordsArray of records。存取記錄數(shù)組元。存取記錄數(shù)組元素的某個(gè)字段數(shù)據(jù)的語(yǔ)法為:素的某個(gè)字段數(shù)據(jù)的語(yǔ)法為:記錄數(shù)組元素記錄數(shù)組元素.字段名字段名 例如,存取第例如,存取第1 1、第、第2828位學(xué)生的平均分?jǐn)?shù),位學(xué)生的平均分?jǐn)?shù),
42、要寫為要寫為student(1).avgstudent(1).avgstudent(28).avgstudent(28).avg8.4.4 8.4.4 用戶定義類型數(shù)組用戶定義類型數(shù)組【例【例8-68-6】假設(shè)某班有】假設(shè)某班有5050位學(xué)生,每位學(xué)生一位學(xué)生,每位學(xué)生一個(gè)記錄,定義一個(gè)包含個(gè)記錄,定義一個(gè)包含5050個(gè)元素的用戶定義個(gè)元素的用戶定義數(shù)組,并給第數(shù)組,并給第3232位學(xué)生賦值。位學(xué)生賦值。首先在窗體模塊的通用段創(chuàng)立用戶定義類首先在窗體模塊的通用段創(chuàng)立用戶定義類型:型:Private Type studentrecPrivate Type studentrec stunum As
43、 String stunum As String*6 6 names As String names As String*8 8 credit As Integer credit As Integer avg As Single avg As SingleEnd TypeEnd Type 編寫命令按鈕的編寫命令按鈕的Click事件代碼:事件代碼:Private Sub Command1_Click()Dim student(1 To 50)As studentrec 定義記錄數(shù)組定義記錄數(shù)組 student(32).stunum=960001 student(32).names=張大力張大力
44、student(32).credit=65 student(32).avg=88 Text1(0).Text=student(32).stunum Text1(1).Text=student(32).names Text1(2).Text=student(32).credit Text1(3).Text=student(32).avgEnd Sub8.4.5 8.4.5 程序舉例程序舉例【例【例8-78-7】輸入學(xué)生的姓名、學(xué)號(hào)、語(yǔ)文分?jǐn)?shù)、】輸入學(xué)生的姓名、學(xué)號(hào)、語(yǔ)文分?jǐn)?shù)、英語(yǔ)分?jǐn)?shù)、數(shù)學(xué)分?jǐn)?shù),計(jì)算每名學(xué)生的個(gè)人英語(yǔ)分?jǐn)?shù)、數(shù)學(xué)分?jǐn)?shù),計(jì)算每名學(xué)生的個(gè)人平均成績(jī),并顯示學(xué)生的各科成績(jī),如圖平均成績(jī),
45、并顯示學(xué)生的各科成績(jī),如圖8-8-1212所示。所示。首先在窗體的通用段創(chuàng)立用戶定義類型并首先在窗體的通用段創(chuàng)立用戶定義類型并且聲明變量:且聲明變量:Private Type studentRecordPrivate Type studentRecord name As String name As String*6 6 姓姓名變量定義為名變量定義為6 6個(gè)字符長(zhǎng)度個(gè)字符長(zhǎng)度 studentNum As String studentNum As String*5 5 學(xué)號(hào)變量定義為學(xué)號(hào)變量定義為5 5個(gè)字符長(zhǎng)度個(gè)字符長(zhǎng)度 chinese As Single chinese As Single
46、語(yǔ)語(yǔ)文變量定義為單精度數(shù)文變量定義為單精度數(shù) english As Single english As Single 英英語(yǔ)變量定義為單精度數(shù)語(yǔ)變量定義為單精度數(shù) math As Single math As Single 數(shù)學(xué)變量數(shù)學(xué)變量定義為單精度數(shù)定義為單精度數(shù) average As Single average As Single 平平均成績(jī)定義為單精度數(shù)均成績(jī)定義為單精度數(shù)End TypeEnd TypeDim stu()As studentRecordDim stu()As studentRecord 定定義記錄數(shù)組義記錄數(shù)組 編寫窗體的編寫窗體的Load事件代碼:事件代碼:Pri
47、vate Sub Form_Load()ReDim stu(0)End Sub編寫編寫“輸入按鈕輸入按鈕Command1的的Click事件代碼:事件代碼:圖圖8-12 顯示學(xué)生成績(jī)顯示學(xué)生成績(jī)Private Sub Command1_Click()n=UBound(stu)ReDim stu(n+1)With stu(n+1).studentNum=Text1(0).Text .name=Text1(1).Text .chinese=Text1(2).Text .english=Text1(3).Text .math=Text1(4).Text .average=Int(.chinese+.e
48、nglish+.math)/3*100)/100 cc=Format(.chinese,)&Format(.english,)&_ Format(.math,)&Format(Str(.average),)List1.AddItem Format(RTrim(.studentNum),)&_ Format(RTrim(.name),)&cc End With Text1(0).SetFocusEnd Sub 編寫編寫“刪除按鈕刪除按鈕Command2的的Click事件代碼:事件代碼:Private Sub Command2_Click()If List1.ListIndex=1 Then Ms
49、gBox 請(qǐng)選定欲刪除的項(xiàng)!請(qǐng)選定欲刪除的項(xiàng)!Exit Sub End If n=List1.ListIndex+1 For i=n To UBound(stu)1 stu(i)=stu(i+1)Next List1.RemoveItem n-1 Text1(0).Text=stu(1).studentNum Text1(1).Text=stu(1).name Text1(2).Text=stu(1).chinese Text1(3).Text=stu(1).english Text1(4).Text=stu(1).mathEnd Sub 編寫列表框編寫列表框List1的的Click事件代碼:
50、事件代碼:Private Sub List1_Click()n=List1.ListIndex+1 Text1(0).Text=stu(n).studentNum Text1(1).Text=stu(n).name Text1(2).Text=stu(n).chinese Text1(3).Text=stu(n).english Text1(4).Text=stu(n).mathEnd Sub 另外編寫文本框組的事件代碼,使之方便輸入:另外編寫文本框組的事件代碼,使之方便輸入:Private Sub Text1_GotFocus(Index As Integer)Text1(Index).SelStart=0 Text1(Index).SelLength=Len(Text1(Index).Text)End SubPrivate Sub Text1_KeyPress(Index As Integer,KeyAscii As Integer)If KeyAscii=13 Then i=IIf(Index=4,0,Index+1)Text1(i).SetFocus End IfEnd Sub
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案