




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualBasic概述1.1VisualBasic的特點
VB是一個快速可視化程式開發工具,是極有特色和功能強大的軟體。
1.可視化設計
2.事件驅動編程
3.面向對象的程式設計
4.VB6.0是一種32位的開發工具
5.易學易用、開發週期短返回目錄1.2VisualBasic基本概念
在VB中,對象是一個非常重要概念。世界上存在的任何事物都可以稱之為對象。
類則是具有相同性質的對象的集合,對象可理解為類的具體化。如人可以稱之為類,而每一個人,卻只能看做是對象。
返回目錄1.窗體
圖1-1啟動VB後的窗體2.控件圖1-2工具箱3.屬性對象的屬性是指對象本身的特性,不同的對象具有不同的屬性。4.事件事件是指在對象上發生的事情,大部分控件都有自己的事件。當觸發對象的事件時,事件就得到回應,完成特定的工作。5.方法在VB中,方法是對象的一個重要組成部分,它反映了對象本身的功能,這些功能由特定的內部函數和過程完成。
6.面向對象編程日常生活中的對象,如氣球同樣具有屬性、方法和事件。
7.事件驅動
VB是基於
Windows開發環境下的開發語言,與
Windows環境保持一定的相似性。
(1)Windows的工作機制Windows的工作機制簡單地說是三個概念:窗口、事件和消息。(2)事件驅動模型在傳統的或“過程化”的應用程式中,應用程式自身控制了代碼的執行過程和代碼的執行順序。
(3)互動式開發傳統的應用程式開發過程可以分為三個步驟:編碼、編譯和測試代碼。
(4)事件驅動應用程式的工作方式1.3VisualBasic簡單示例1.3.1設計步驟1.啟動VB
單擊“開始”按鈕,在“程式”菜單中找到VB程式項並單擊,即可啟動VB。返回目錄
在“工具箱”中雙擊“標籤”控件,將“標籤”控件添加到窗體上,此時可以在窗體上拖動“標籤”控件,將“標籤”控件調整到適當位置,也可調整它的大小,進而得到如圖1-3所示的結果。2.向窗體添加“標籤”控件圖1-3添加“標籤”控件
與步驟2相似,向窗體添加一個“命令按鈕”控件,如圖1-4所示。3.向窗體添加“命令按鈕”控件圖1-4添加“命令按鈕”的窗體
在“屬性窗口”找到“命令按鈕”控件的“Caption”屬性。該屬性用於設置對象的標題,如圖1-5所示,將它的值改為“走進VISUALBASIC”。4.修改“標籤”控件和“命令按鈕”控件的屬性圖1-5屬性窗口
接著在“屬性窗口”找到“標籤”控件的“Caption”屬性,將其值改為“VB是一門面向對象語言”,如圖1-6所示。
圖1-6窗體設計結果2.1啟動和退出VisualBasic6.0中文版1.VB6.0的啟動正確安裝VB6.0後,依次單擊“開始”/“程式”/“MicrosoftVisualBasic6.0中文版”/“MicrosoftVisualBasic6.0中文版”,就會啟動VB6.0中文版,如圖2-1所示。返回目錄圖2-1VB6.0中文版的啟動畫面2.退出VB6.0
使用菜單欄中“檔”菜單的“退出”命令或單擊窗口右上角的“關閉”按鈕,即可退出VB6.0。2.2VB的集成開發環境2.2.1標題欄在集成開發環境的最上邊是標題欄,題為“工程1—MicrosoftVisualBasic[設計]”表示VB6.0的工作模式為“設計模式”,此外還有“運行模式”和“中斷模式”兩種工作模式。
返回目錄2.2.2菜單欄菜單欄是最常使用的工具之一,通過它可以執行VB的所有操作。如圖2-4所示,VB6.0菜單欄共有13個菜單項,每個菜單項有一個下拉菜單。圖2-4菜單欄2.2.3工具欄圖2-6所示為VB6.0的集成開發環境中的標準工具欄。圖2-6工具欄2.2.4工具箱
在設計階段,通過使用工具箱中的快捷鍵可以提高編程的效率,工具箱常用快捷鍵及其功能如表2-1所示。快捷鍵功能Enter把所選控件放到活動窗體中DownArrow選擇與已選工具同一列中下一個工具UPArrow選擇與已選工具同一列中上一個工具LeftArrow選擇已選工具左邊的工具RightArrow選擇已選工具右邊的工具Tab從左到右依次通過工具箱Shift+Tab從右到左依次通過工具箱End選擇工具箱的最後一個工具Home選擇指針工具Alt+F4關閉工具箱表2-1 工具箱中常用快捷鍵
同樣也可以把一些自己需要的控件加載到工具箱中,選擇菜單“工程”/“部件”,就會彈出如圖2-9所示的對話框。圖2-9添加控件對話框2.2.5代碼編輯器窗口
VB6.0中的代碼編輯器窗口(或稱代碼窗口、代碼編輯窗口)是輸入程式代碼和進行程式調試的地方。圖2-10代碼編輯器窗口代碼窗口由以下幾個部分組成:
標題條:用來顯示應用程式的專案名稱和窗體名稱。
對象框:用來顯示和選擇窗體中現有的對象列表和當前正在編輯的對象名。
事件框:用來顯示和選擇對象可用的事件。
代碼框:用來輸入代碼。表2-2 代碼窗口中常用的快捷鍵快捷鍵功能
快捷鍵功能F7查看代碼窗口
Ctrl+Shift+F2到以前游標處F2查看“對象流覽器”
Ctrl+Home到模組開頭處Ctrl+F查找
Ctrl+End到模組結尾處Ctrl+H替換
Ctrl+RightArrow右移一個單詞F3查找下一個
Ctrl+FeftArrow左移一個單詞Shift+F3查找前一個
Ctrl+Y刪除當前行Ctrl+DownArrow下一個過程
Ctrl+Delete刪至行尾Ctrl+UpArrow前一個過程
Ctrl+Shift+f9清除所有中斷點Shift+F2查看定義
Ctrl+F2切換書簽Ctrl+PageDown到下一個螢幕
Shift+F10查看快捷鍵菜單Ctrl+PageUp到上一個螢幕
2.2.6專案窗口專案窗口有時也稱作工程資源窗口,它主要用來顯示專案檔中包含的所有檔,圖2-11所示即為一個典型的專案窗口。圖2-11專案窗口2.2.7屬性窗口屬性窗口就是用來描述對象屬性的窗口,其中列出選定窗體和控件的屬性設置值。
圖2-12屬性窗口一個典型的屬性窗口由以下幾個部分組成:
標題條:顯示專案名稱和窗體名稱。
對象列表框:用來顯示和選擇當前窗體中所有對象。
設置框:用戶可以在其中設置和修改對象的屬性。2.2.8窗體窗體是定制應用程式介面的窗口,或用做用戶收集資訊的對話框。
圖2-14窗體2.2.9窗體佈局窗口從窗體佈局窗口中能觀察到所創建的窗體在螢幕(即顯示器)上的位置,從而能控制整個應用程式的佈局。如圖2-15所示。圖2-15窗體佈局窗口2.3創建VisualBasic專案1.VB應用程式嚮導
VB應用程式嚮導用來幫助用戶構建新應用程式的框架。其步驟如下。返回目錄(1)啟動VB6.0之後,彈出“新建工程”對話框,如圖2-16所示。圖2-16“新建工程”對話框(2)雙擊“VB應用程式嚮導”,彈出如圖2-17所示“應用程式嚮導—介紹”對話框。圖2-17“應用程式嚮導—介紹”對話框(3)根據提示,可以加載自己的設置。圖2-18“應用程式嚮導—介面類型”對話框(4)如果選擇單文檔,此工程就和“標準EXE”一樣。圖2-19“應用程式嚮導—菜單”對話框(5)根據這個對話框,可以選擇在MDI窗體中所需要的菜單項。圖2-20“應用程式嚮導—自定義工具欄”對話框(6)如果用戶自己設計工具欄,只要單擊“重新設置”按鈕便可設計所需工具欄。圖2-21“應用程式嚮導—資源”對話框(7)圖2-21對話框是用來選擇是否使用資源檔,兩個單選項可選擇其中一個。單擊“下一步”,彈出如圖2-22所示的“應用程式嚮導—Internet連接”對話框。圖2-22“應用程式嚮導—Internet連接”對話框(8)通過圖2-22對話框的選擇,可以為應用程式添加Internet流覽器,如果不用建立流覽器,單擊“下一步”按鈕即可。同時彈出圖2-23所示的“應用程式嚮導—標準窗體”對話框。圖2-23“應用程式嚮導—標準窗體”對話框(9)如果應用程式中需要圖2-23中所列的對話框,在複選框中選中需要的對話框;如果不需要上述對話框,單擊“下一步”按鈕,彈出如圖2-24所示的“應用程式嚮導—數據訪問窗體”對話框。圖2-24“應用程式嚮導—數據訪問窗體”對話框(10)單擊“創建新窗體”按鈕,依次彈出一些對話框,這些對話框在以後的學習中將會介紹。單擊“下一步”按鈕,彈出如圖2-25所示“應用程式嚮導—已完成!”對話框。
圖2-25“應用程式嚮導—已完成!”對話框(11)此時完成了專案的建立。回答完對話框的問題之後,單擊“完成”按鈕,彈出如圖2-26所示的“工程1”窗體。圖2-26“工程1”窗體圖2-27是ActiveXDLL的創建介面。
圖2-27ActiveXDLL的創建介面2.4菜單的詳細介紹
啟動VB,在“新建工程”對話框中選中“標準EXE”圖示,然後打開。在“工程”菜單中選擇“添加模組”菜單項,會彈出一個對話框,選中“模組”項,單擊“打開”按鈕。便在工程流覽器中添加了一個模組,而且會彈出一個模組代碼編輯窗口,如圖2-28所示。圖2-28模組代碼編輯窗口返回目錄
然後將模組代碼編輯窗口關閉。在Form窗體中添加兩個命令按鈕,如圖2-29所示。圖2-29窗體設計
在運行菜單中單擊“啟動”,便可運行。單擊Command1,便會顯示結果,如圖2-30所示。圖2-30執行結果1.檔(File)(1)新建專案(Newproject)(2)打開專案(Openproject)(3)刪除專案(Removeproject)(4)添加專案(Addproject)(5)保存專案(Saveproject)和另存項目(Saveprojectas)(6)保存當前專案(Savecurrentobject)和另存當前專案(Savecurrentobjectas)(7)生成工程.exe(Makeprojectname.exe)(8)生成工程組(Makeprojectgroup)2.編輯(Edit)(1)撤銷(Undo)(2)重複(Redo)(3)剪切(Cut)(4)拷貝(Copy)(5)粘貼(Paste)(6)粘貼連接(Pastelink)(7)刪除(Delete)(8)從資料庫刪除表(Deletetablefromdatabase)(9)查找(Find)(10)查找下一項(Findnext)(11)退換(Replace)(12)全選(Selectall)(13)全選所有列(Selectallcolumn)(14)表(Table)(15)縮進(Indent)(16)凸出(Outdent)(17)插入檔(Insertfile)(18)屬性和方法列表(Listproperties/method)(19)常量列表(Listconstant)(20)快速資訊(Quickinfo)(21)參數資訊(Parameterinfo)(22)自動完成關鍵字(Completeword)(23)到行(Reachrow)(24)書簽(Bookmarks)3.視圖(View)(1)代碼窗口(CodeWindow)只剩下如圖2-32的介面,圖2-32關閉所有的窗口的編輯器(2)對象窗口(Objectwindow)(3)定義(Definition)(4)最後位置(Lastposition)(5)對象流覽器(Objectbrowser)(6)立即窗口(Immediatewindow)(7)局部變數窗口(Localswindow)(8)監視窗口(Watchwindow)(9)調用堆疊(Callstack)(10)專案資源管理器(Projectexplorer)(11)屬性窗口(Propertieswindow)(12)窗體佈局窗口(Formlayoutwindow)(13)屬性頁(Protertypages)(14)表(Table)(15)縮放(Zoom)(16)顯示窗格(Showwindowgrid)(17)工具箱(Toolbox)(18)數據視圖窗口(Dataviewwindow)(19)調色板(Colorpalette)(20)工具欄(Toolbar)(21)可視化部件管理器(Visualcomponentmanager)4.工程(Project)(1)添加窗體(Addform)(2)添加MDI窗體(AddMDI)(3)添加模組(Addmodual)(4)添加類模組(Addclassmodual)(5)添加用戶控件(Addusercontrol)(6)添加屬性頁(Addprotertypage)(7)添加外接類(Addaddinclass)(8)添加微軟用戶連接(AddMicrosoftuserconnection)(9)添加環境(Adddataenviroment)(10)添加DHTML頁(AddDHTMLpage)(11)添加ActiveX設計器(AddActiveXdesigner)(12)添加檔(Addfile)(13)刪除窗體(Removeform)(14)引用(Reference)(15)組件(Component)(16)專案屬性(Projectnameproperty)5.格式(Format)(1)對齊(Align)(2)按同樣大小製作(Makesamesize)(3)按網格大小調整(Sizetogrid)(4)水準距離(Horizontalspacing)(5)垂直距離(Verticalspacing)(6)窗體居中對齊(Centerinform)(7)順序(Order)(8)鎖住控件(Lockcontrols)6.調試(Debug)(1)逐語句(Stepinto)(2)逐過程(Stepproducer)(3)跳出(Stepout)(4)運行到游標處(Runtocursor)(5)添加監視(Addwatch)(6)編輯監視(Editwatch)(7)快速監視(Quickwatch)(8)切換中斷點(Togglebreakpoint)(9)清除所有中斷點(Clearallbreakpoints)(10)執行下一條語句(Setnextstatement)(11)顯示下一條語句(Shownextstatement)7.運行(Run)(1)開始運行(Start)(2)全編譯運行(Startwithfullcompile)(3)中斷(Break)(4)結束(End)(5)重新運行(Restart)8.查詢(Find)(1)運行(Run)(2)清除結果(Clearresult)(3)驗證SQL語法(Testsql)(4)分組(Group)(5)改變類型(Changetype)(6)添加到輸出(Addtooutput)(7)排序(Sort)(8)刪除篩檢程式(Removefilter)9.工具(Tool)(1)添加過程(Addproducer)(2)過程屬性(Producerattribute)(3)菜單編輯器(Menueditor)(4)選項(Options)(5)發佈(Broadcast)10.外接程式(Add-ins)(1)可視化數據管理器(Visualdatamanager)(2)外接程式管理器(Add–insmanager)11.窗口(Windows)12.幫助(Help)2.5應用程式開發實例創建VB應用程式有四個主要步驟:(1)創建應用程式介面;(2)設置屬性;(3)編寫代碼;(4)編譯運行。返回目錄2.5.1創建應用程式介面1.用工具箱繪製控件步驟如下:(1)單擊工具箱中控件——此時是“文本框”。(2)將指針移到窗體上。該指針變成十字線,如圖2-33所示。(3)將十字線放在控件的左上角所在處。(4)拖動十字線畫出適合要求的控件大小的方框(拖動的意思是按住滑鼠左鍵用滑鼠指針移動對象)。(5)釋放滑鼠按鈕,控件出現在窗體上。圖2-33用工具箱繪製文本框2.調整控件大小、移動和鎖定控件(1)單擊需要調整尺寸的控件,選定的控件上出現尺寸句柄。(2)將滑鼠指針定位到尺寸句柄上,拖動該尺寸句柄直到控件達到所希望的大小為止。(3)釋放滑鼠按鈕。2.5.2設置屬性屬性窗口包含如下的元素:(1)對象框:顯示選中要設置屬性的對象的名字。單擊對象框右邊的箭頭,顯示當前窗體的對象列表。(2)排序:從按字母順序排列的屬性列表中進行選取,或從按邏輯(諸如與外觀、字體或位置有關的)分類的層次結構視圖中進行選取。(3)屬性列表:左列顯示所選對象的屬性,右列可以編輯和查看設置值。圖2-35屬性窗口2.5.3編寫代碼1.打開代碼編輯器窗口圖2-36顯示了在雙擊“命令按鈕”控件後彈出的代碼編輯器窗口,以及該命令的事件。圖2-36代碼編輯器窗口2.事件過程的創建
VB應用程式的代碼被分為若干小的代碼塊,一個代碼塊稱為過程。
(1)在“對象”列表框中,選定活動窗體中的一個對象名。(2)在“過程”列表框中,選擇指定對象的事件名。(3)在Sub和EndSub語句之間輸入下麵的代碼:Text1.Text="Hello,world!"(4)這個事件過程應該是:
PrivateSubCommand1_Click()Text1.Text="Hello,world!"EndSub2.5.4保存應用程式在窗體和代碼都設計好以後,應該保存檔,以防止調試或運行程式時發生死機或別的原因引起檔丟失。
2.5.5調試、運行應用程式為了運行應用程式,可以從“運行”菜單中選擇“啟動”,或者單擊工具欄中的“啟動”按鈕,或按F5鍵。
VB中的數據又以四種形式存儲:變數、常量、數組和記錄,如表3-1所示。每一種都適合於不同的特定任務。名字能夠存儲的數據變數常量數組記錄一個可以改變的單值一個固定的單值多個同一數據類型的值多個不同數據類型的數據值表3-1 數據存儲形式3.1變數與常量3.1.1變數變數是指在程式運行過程中可以改變的量。一個變數有一個名字,在內存中佔據一定的存儲單元,在該存儲單元中存放變數的值。
1.變數命名為便於程式設計時使用變數,應根據變數代表的意義,給變數起個易讀、明瞭的名字,如MyName,MyAge,Total,Sum等。2.變數聲明在VB中使用變數,除了正確給變數命名之外,還要聲明其數據類型。變數名的聲明有兩種方法:隱式聲明和顯式聲明。返回目錄
還有一種方式就是在窗體的對象列表中選擇“(通用)”,然後在“聲明區”(Declarations)中聲明OptionExplicit,如圖3-1所示。
圖3-1顯示聲明變數表3-2 VB的標準數據類型數據類型類型名稱類型聲明字元字節有效值位元組型Byte
10~255布爾型Boolean
2True或False整型Integer%2–32768~32767長整型Long&4–2147483648~2147483647單精確度型Single!4負數:–3.402823E38~–1.40298E–45正數:1.401298E–45~3.402823E38雙精度型Double#8負數:–1.79769313486232E308~–4.94065645841247E–324正數:4.94065645841247E–324~1.79769313486232E308貨幣型Currency@8–922337203685477.5808~
922337203685477.5807日期型Date
8January1100~December319999對象型Object
4任何對象的引用變長字串型String$字串長度,1位元組/字元
定長字串型String*Num$Num
可變類型Variant
不定
添加OptionExplicit語句的方法:(1)自動添加OptionExplicit語句(2)手工添加OptionExplicit語句3.全局變數的聲明
Public聲明的變數可以被工程中的任一窗體、任一模組中的任一過程程式使用。
4.變數的作用域變數在程式中的位置不同,變數的作用域就不同,有窗體變數、模組變數、過程變數、類變數及語句變數。圖3-3窗體變數的定義(1)窗體變數(2)模組變數(3)過程變數在過程中使用的變數可以是它的窗體或模組Declaration變數,也可以是Public變數或過程裏聲明的變數。
(4)類模組中的變數在類模組變數中的[Public|Private]類型,Public已說過,可以被其他窗體或模組訪問,而Private變數只能被類模組中的其他過程或函數訪問。(5)語句變數變數的聲明不一定要在窗體、模組、過程的頂部進行,可以在程式的任何地方進行聲明,語句變數就是在窗體、模組、過程的語句塊中聲明的變數。
5.變數名衝突程式可以在不同地方聲明變數,上面已經講過。
6.變數的賦值聲明完變數後,就可以給變數賦值。
7.變數的精度每個變數都有其類型,每種類型都有其自身的存儲定義(在後面會講到),因而每個變數都有其範圍。
3.1.2常量(1)系統內在常量這種常量是系統提供的自身擁有的常量。例如,表3-3所示是VB中的表示顏色的常量,可在代碼中的任何地方代替實際值。表3-3 系統常量中的顏色值常量值描述VbBlack0x0黑色VbRed0xFF紅色VbGreen0xFF00綠色VbYellow0xFFFF黃色VbBlue0xFF0000藍色VbMagenta0xFF00FF紫紅色VbCyan0xFFFF00青色VbWhite0xFFFFFF白色(2)符號常量(自定義常量)
在程式設計中使用Const聲明的常量。在聲明一個常量後就可以用常量名來引用其代表的常量,常量的定義語法如下:[Public|Private]Const變數名[As數據類型]=運算式注意以下幾點:
①用Const聲明的常量在程式運行的過程中是不能被重新賦值的。
②在常量聲明的同時賦值。
③可以為聲明的常量指定類型,如ConstconValAsCurrency=3.78,缺省時為所賦值的類型。
④
用常量為常量初始化時,注意迴圈引用易出錯。
3.2數值數據類型
數值數據類型有整型、長整型、單精確度型、雙精度型及貨幣型。
3.2.1整型整型以Integer表示,變數存儲為16位(2個位元組),數值範圍為–32768~32767之間,當給Integer類型的變數賦值時,如果值大於32767或小於–32768便會溢出,因此當某個整數的值超出Integer的範圍時,必須用Long類型。3.2.2長整型
Long(長整型)變數存儲為32位(4個位元組),1個符號位,31個數據位。
返回目錄3.2.3單精確度型單精確度型也稱為Single數據類型。
Single(單精確度浮點型)變數存儲為
IEEE32位(4個位元組)浮點數值形式,一個符號位,8個指數位,23個數據位。3.2.4雙精度型雙精度型也稱Double數據類型。
3.2.5貨幣型貨幣型也稱currency數據類型
Currency變數存儲為
64位(8個位元組)整型數值形式,然後除以10000給出一個定點數,其小數點左邊有
15位數字,右邊有
4位數字。
3.3字符串
字串是保持字元資訊的基本數據類型。字串變數可以包含大約65535位元組(64KB),可以為定長,也可以為變長,每個位元組包含一個字元。
3.3.1可變長字串大多數字串變數是可變長字串類型,存儲在其中的字串長度可以為0~65535個字元之間。可變長字串變數一次只能存儲一個字串,但其長度可以隨程式運行而改變。
3.3.2定長字串定長字串類型的變數,可以定義從0~32767個字元的固定長度。程式可以改變定長字串變數的內容,但是不能改變其長度。
返回目錄3.3.3使用字串應注意的問題(1)0結束字串有些WindowsAPI介面函數是用C++編寫的,字串最後一個字元是CHR(0),因而要將WindowsAPI函數轉換到VB中來,必須經過包裝轉換。(2)字串中的大小區別
VB對其語法的大小寫沒有區別,但在字串中,VB對大小寫有區別,如果想忽視字串大小的區別,可以加上Optioncomparetext語句。
(3)字串函數3.4Variant數據類型Variant數據類型是沒被顯式聲明(用如Dim、Private、Public或Static等語句)為其他類型變數的數據類型,Variant數據類型沒有類型聲明字元。
Variant是一種特殊的數據類型,除了定長String數據及用戶定義類型外,可以包含任何種類的數據。
返回目錄3.5Date數據類型Date變數存儲為IEEE64位(8個位元組)浮點數值形式,其表示的日期範圍為100年1月1日~9999年12月31日,時間範圍為0∶00∶00~23∶59∶59。
返回目錄3.6Decimal數據類型
Decimal變數存儲為96位(12個位元組)無符號的整型形式,值為除以一個10的冪數所得結果。
Decimal數據類型只能在Variant中使用,也就是說,不能聲明變數為Decimal類型。
返回目錄3.7數據類型轉換一些編程語言對不同類型數據的處理比較嚴格。將不同類型的值賦給了變數,可能會產生邏輯錯誤。
返回目錄3.8數組數組是有序數據的集合。數組中的元素屬於同一數據類型。數組的下標是有界的,分為下界和上界。數組可以用Dim、Private、Public或Static來聲明,它們的語法格式相同。下麵只講用Dim聲明數組。返回目錄表3-4 數據類型轉換函數函數轉換後的類型
函數轉換後的類型CboolBoolean
CSngSingleCbyteByte
CStrStringCcurCurrency
CvarVariantCdateDate
CVErrErrorCDblDouble
Hex十六進制數Chr返回字元碼對應的字元
Oct八進制數CintInteger
Str將字串以數字返回CLngLong
Val返回字串內的數字3.8.1固定大小數組固定大小數組是指數組元素的個數是固定不變的。根據固定大小數組的維數,可以將它分為一維數組和多維數組。1.一維數組2.多維數組Dim數組名([下標邊界列表])[As數據類型]下標邊界的定義形式:[下標下界]To[下標上界]下標邊界列表指用逗號分開的數組各維的下標邊界,即[下標下界]To[下標上界],[下標下界]To[下標上界],……,[下標下界]To[下標上界](第一維)(第二維)(第n維)3.8.2動態數組如果把數組的大小定義到足夠大來滿足任意的實際應用需要,這種方法效率很低且浪費記憶體空間。
在聲明數組時,若不給出維數列表,則是將數組聲明為動態數組。例如:
DimMyArry()AsInteger1.LBound函數和UBound函數
LBound函數和UBound函數都是返回一個Long型數據,前者得到的值為指定數組維可用的最小下標,而後者得到的是最大下標。它們的語法為:
LBound(數組名,[指定的維數])UBound(數組名,[指定的維數])2.數組的高級功能數組常用來存儲成組的變數,但在別的一些方面數組也是很有用的。
(1)數組賦值給維數或數據類型不同的數組賦值,成功或失敗取決於以下幾個因素:①賦值符左邊的數組類型(固定數組或動態數組)是否與右邊匹配。②賦值符左邊數組的維數是否和賦值符右邊數組的維數匹配。③賦值符兩邊數組的每一維的數組元素個數是否匹配。④賦值符兩邊所有元素的數據類型是否相容。(2)從函數返回數組從一個函數返回一組值是可能實現的。
3.9記錄
至此,已經介紹了基本類型的變數,也介紹了構造類型數據——數組。但是只有這些數據類型是不夠的,有時需要將不同類型的數據組合成一個有機的整體,以便於引用。1.定義記錄類型記錄數據類型用Type…EndType語句定義。定義一個記錄數據類型的一般形式為:[Private|Public]Type記錄類型名
成員列表EndType
返回目錄4.1算術運算符
在VB中,算術運算符與其他語言基本相同,有加、減、乘、除、指數(冪)及求餘運算等。表4-1列出VB中用到的算術運算符。
返回目錄運算符(名稱)示例結果運算元類型^(指數)2^38Integer,Long,Single,Double,Currency+(加或取正值)2.1+3.15.2Integer,Long,Single,Double,Currency–(減或取負值)5–23Integer,Long,Single,Double,Currency*(乘)2*510Integer,Long,Single,Double,Currency/(除)4.5/2.51.8Integer,Long,Single,Double,Currency\(整數除法)5\31Integer,LongMod(求餘)5Mod32Integer,Long表4-1 VB的算術運算符1.指數運算示例本示例使用^運算符來表示某數的乘方的指數值。DimMyValueMyValue=2^2'返回4。
MyValue=3^3^3'返回19683。
MyValue=(–5)^3'返回–125。^運算符一般用於整數的冪運算。
2.乘法運算示例當給一個已經定義的數據類型的變數進行賦值時,不但要考慮溢出,而且要考慮精度問題。
3.除法運算示例除法運算是生活當中常見的一種運算,但在程式設計時也是最容易出錯的一種運算,因乘法和除法在運算中會產生較大的數據有效位變動。
(1)溢出問題(2)精度問題4.整除示例5.求餘運算運算結果為1,求餘運算換句話說就是在進行整數的除法運算時被略去的餘數。求餘運算一般在整數集合中進行運算。4.2字串運算符
字串運算符有兩個:“&”和“+”,都用於字串的連接。當運算符連接的兩個運算式都是字串時,它們的作用是一樣的。區別在於:&強制兩個運算式(它們的類型可能不同)作字串連接;而當+運算符兩邊的運算式中混著字串及數值的話,其結果會是數值的求和,如果都是字串作“相加”,則返回串接起來的字串。
返回目錄4.3關係運算符
關係運算符用於兩個值的比較,其結果為True或False。它既可用於字串也可以用於數值。
返回目錄4.4邏輯運算符邏輯運算符處理Boolean類型運算元,運算結果也為Boolean類型。
表4-5 邏輯運算規則運算符(名稱)示例Not(邏輯非)And(邏輯與)Or(邏輯或)Xor(異或)Eqv(邏輯相等)Imp(蘊涵)Nota若a為True,則Nota為FalseaAndb當且僅當a,b同為True時,aAndb為True,否則為FalseaOrb當且僅當a,b同為False時,aAndb為False,否則為TrueaXorba,b不同時,aXorb為True,否則為FalseaEqvba,b相同時,aEqvb為True,否則為FalseaImpb當且僅當a為True,同時b為False時,aImpb為False,否則為True返回目錄4.5特殊運算符
VB提供了兩種特殊運算符:Is和Like。
Is運算符比較兩個對象變數,並返回True或False結果。
Like運算符把一個字串運算式與一個給定模式(Pattern)相比較,並返回True或False結果。
返回目錄4.5.1Is運算符Is運算符用來比較兩個對象的引用變數。其語法為:
result=object1Isobject2Is運算符的語法具有以下幾個部分:result必需的,可為任何數值變數。object1必需的,可為任何對象名稱。object2必需的,可為任何對象名稱。4.5.2Like運算符Like運算符用來比較兩個字串。其語法為:
result=stringLikepatternLike運算符的語法具有以下幾個部分:result必需的,可為任何數值變數。string必需的,可為任何字串運算式。pattern必需的,可為任何字串運算式,遵循下麵“說明”中的模式匹配約定。
下麵列舉的是模式匹配的其他重要規則:(1)charlist開頭的驚嘆號(!)意味著,如果在string中找到任何不屬於charlist的字元,則存在一個匹配。(2)連字元(–)可以出現在charlist的開頭(如果使用驚嘆號,則在驚嘆號之後),也可以出現在charlist的結尾與自身匹配。(3)當指定了字元範圍時,這些字元必須按照昇冪(從最小到最大)順序來顯示。(4)字元序列[]被看作是長度為零的字串("")。4.6運算符的優先順序運算符的優先順序有以下規則:(1)當運算式中有多個運算符時,較高優先順序的運算先進行。(2)當運算式中有多個運算符的優先順序相同時,運算按從左到右的順序進行。(3)當運算式中有括弧時,先計算括弧內的值,再計算括弧外的值。(4)按運算符優先順序進行運算。返回目錄表4-7 優先順序優先級運算符
優先級運算符1^
8Not2–
9And3*,/
10Or4\
11Xor5Mod
12Equ6+,–
13Imp7=,>,<,<>,>=,<=
5.1賦值語句賦值語句的語法為:
[Let]變數或屬性=運算式Let是可選項,在早期Basic語言賦值語句中被要求使用,在VB程式的賦值語句中通常被省略。
對對象的賦值一般方法是:
object.attribute=value其中object是對象名,attribute是屬性,value是值。
返回目錄5.2注釋語句注釋是在程式中加入一些評注,往往起提供編寫程式的日期、編寫人、解釋程式代碼的作用。其根本目的是為程式的閱讀和修改提供資訊,提高程式的可讀性。
返回目錄5.3程式續行當一條語句過長時,為編寫及閱讀方便,可以將它分為多行書寫,在行尾加一個空格和一個續行符(_)表示該語句在本行未寫完,轉到下一行繼續。
返回目錄5.4一行中的多條語句多條較短語句可以寫在一行,語句之間加冒號(:)隔開。
返回目錄5.5程式流程
程式流指在一個子過程或函數中指令的執行次序。一般情況程式流從程式的頂端一行一行地向下流動。
返回目錄5.5.1順序結構順序結構的流程如圖5-1所示,從上往下,依次執行。圖5-1順序結構的流程5.5.2Goto語句分支是從程式的某一行到另一行的直接轉移。它有兩種形式:無條件分支和條件分支。無條件分支用Goto語句實現。下麵介紹Goto語句及用Goto語句構成的迴圈。Goto語句為無條件轉向語句,它的一般形式為
Goto語句標號或Goto行號5.5.3條件判斷在VB中由以下語句實現:
If<條件運算式>Then<一條語句>
If<條件運算式>Then<語句塊>EndIf
If<條件運算式>Then<語句塊>Else<一條語句>
If<條件運算式>Then<語句塊>ElseIf
SelectCase<測試運算式>Case運算式1
程式段
Case運算式2
程式段
…………Caseelse
程式段
Endselect1.If…Then語句If…Then的語法規則如下:
If條件式Then語句2.If…Then…EndIf語句If…Then…EndIf語句的語法規則如下:If條件式Then
語句EndIf3.If…Then…Else語句If…Then…Else語句的語法規則如下:If條件式Then
語句1Else
語句2EndIf4.If…Then…ElseIf語句If…Then…ElseIf語句的語法規則如下:If條件式1Then
語句1ElseIf條件式2Then
語句2EndIf5.SelectCase語句多重判斷雖然可以用If…Then…Else來完成,但是判斷的層次太多時,不僅編寫困難,而且可讀性差,不易維護。
5.5.4迴圈迴圈是一組重複執行的指令,重複次數由條件決定。如果是無條件迴圈,循環體代碼將永無休止地執行下去(即死迴圈),這種情況當然應該避免。指定迴圈的方法有以下兩種,一是指定一個條件式,一旦運算式的值為True(或者是False)就退出迴圈;另一種是指定迴圈次數。
VB採用下列語句實現迴圈:
Do…Loop
For…Next
ForEach…Next1.Do…Loop語句
Do…Loop語句是最常用且最有效的迴圈結構。它有當型迴圈和直到型迴圈兩種形式。(1)當型迴圈(先判斷,後執行)語法規則如下:Do[{While|Until}條件式][語句][ExitDo]'在特定條件下退出迴圈
[語句]Loop(2)直到型迴圈(先迴圈,後判斷)語法規則如下:Do[語句][ExitDo]'在特定條件下退出迴圈
[語句]Loop[{While|Until}條件式](3)Do…Loop語句的四種結構①DoWhile條件式
[語句]Loop②DoUntil條件式
[語句]Loop③Do [語句]LoopWhile條件式④Do [語句]LoopUntil條件式2.For…Next(1)For…Next語法使用迴圈時,若不知道程式中迴圈的次數,可用Do…Loop語句,若知道迴圈的次數,可用For…Next語句。
(2)For迴圈的嵌套迴圈語句和If…Then…EndIf結構一樣有嵌套結構,For迴圈的嵌套結構很簡單,就是在Next後一定要加上相應的標號。
3.ForEach…NextForEach…Next迴圈是重複集合對象或數組中的每一個元素,執行迴圈的語句。其語法規則如下:ForEach元素In集合
[語句][ExitFor]'在特定條件下退出迴圈
[語句]Next[元素](1)新建文本檔(2)啟動新工程、添加代碼(3)運行程式4.While…Wend語句它的語法為:While條件式 語句Wend6.1模塊6.1.1VCR應用程式的結構
VCR是一個對電視機和錄影機組合體進行模擬的應用程式。它具有播放電視,選電視頻道,對電視節目錄影,顯示時間等功能。
圖6-1VCR程式包含的模組返回目錄VCR應用程式的主窗體(frmVCR)是
VCR與電視螢幕組合的可視圖像。它包括幾個對象,這些對象以現實世界中的圖景為模型。一組命令按鈕(cmdPlay、cmdRecord等等)模仿的是操作
VCR的按鈕。圖6-2VCR應用程式的主窗體6.1.2各種模組類型
VB代碼存儲在模組中。模組有三種類型:窗體模組、標準模組和類模組。(1)聲明。可將常數、類型、變數和DLL(動態鏈接庫)過程的聲明放在窗體、類或標準模組的模組級。(2)過程。子過程、函數過程或者屬性過程,過程包含可以作為單元來執行的代碼片段。1.窗體模組窗體模組(檔擴展名為
.FRM)是大多數
VB應用程式的基礎。
2.標準模組標準模組(檔擴展名為
.BAS)是應用程式內其他模組訪問的過程和聲明的容器。
(1)使用標準模組當編寫較長的程式時,很可能會遇到一些使用相同變數和例程的窗體及事件過程。
(2)創建標準模組要在程式中創建新的標準模組,那麼單擊工具條“添加窗體”(AddForm)按鈕上的下箭頭並單擊“模組”(Module),或者單擊“工程”菜單中的“添加模組”(AddModule)菜單項。6.1.3使用“代碼編輯器”1.自動完成編碼
VB能自動填充語句、屬性和參數,這些性能使編寫代碼更加方便。
2.書簽在“代碼編輯器”中書簽可用來標記代碼的某些行,以便以後可以很容易地返回這些行。
3.模組級別在模組的聲明部分中描述代碼。
6.2過程6.2.1過程概述將程式分割成較小的邏輯部件就可以簡化程式設計任務,稱這些部件為過程,它們可以變成增強和擴展
VB的構件。
返回目錄VB中有如下的過程:函數過程。
子過程。
屬性過程。
通用過程。用過程編程有如下的好處:消除了重複語句行。使程式更易閱讀。
簡化了程式開發。
其他程式可重複使用該通用過程。
擴展VB語言。6.2.2Sub過程1.子過程的語法(1)子過程語法說明[Private|Public|Friend][Static]SubName[(Arglist)][語句][ExitSub][語句]
EndSub(2)調用子過程在程式中調用子過程需要指明該過程的名稱,然後列出該子過程所要求的參數。
2.通用過程通用過程告訴應用程式如何完成一項指定的任務。
3.事件過程當VB中的對象對一個事件的發生做出認定時,便自動用相應事件的名字調用該事件的過程。
6.2.3Function(函數)過程1.函數過程的語法在Sub過程與Function過程之間有三點區別:(1)一般說來,讓較大的語句或運算式的右邊包含函數過程名和參數(returnvalue=function),這就調用了函數。(2)與變數完全一樣,函數過程有數據類型。(3)給
procedurename自身賦一個值,就可返回這個值。
2.調用函數過程在事件過程中調用函數TotalTax時,使用與下文相類似的語句:lblTaxes.Caption=TotalTax(500)(一般來說,函數都賦值給某些變數或屬性)。該語句計算價值500美元的貨物應納稅額的總計,然後將結果賦值給lblTaxes對象的標題(Caption)屬性。3.遞歸函數過程遞歸是函數直接調用自己或函數之間相互調用的一種演算法。遞歸能使程式變的簡潔易讀。
6.3過程的使用6.3.1過程的創建與使用
1.創建新過程要創建新的通用過程,在代碼編輯窗口輸入過程頭,並按下“回車”鍵。
2.選擇現有過程如果想在當前模組中查看過程,在代碼編輯窗口的“對象框”中選擇“通用”,然後在“過程框”中選擇過程。
3.調用過程調用過程有諸多技巧,它們與過程的類型、位置以及在應用程式中的使用方式有關。返回目錄4.使用標準模組中的過程如果過程名是唯一的,則不必在調用時加模組名。5.GoSub…Return過程
GoSub...Return語句,在一個過程中跳到另一個副程式中執行,執行後再返回。
6.3.2向過程傳遞參數過程中的代碼通常需要某些關於程式狀態的資訊才能完成它的工作,資訊包括在調用過程時傳遞到過程內的變數,當將變數傳遞到過程時,稱變數為參數。1.參數的數據類型過程的參數缺省為Variant數據類型,不過,也可以聲明參數為其他數據類型。2.按值傳遞參數按值傳遞參數時,傳遞的只是變數的副本。3.按地址傳遞參數按地址傳遞參數是讓過程用變數的記憶體地址去訪問實際變數的內容。4.使用可選的參數在過程的參數列表中列入Optional關鍵字,就可以指定過程的參數為可選的。
5.傳值參數在討論子過程時,已經介紹了傳遞給過程的參數的兩種傳遞方式:按地址傳遞和按值傳遞。
6.ByVal關鍵字避免上述問題的一個明顯做法是在過程中對所傳遞的變數不做修改,但是這一解決方案會增加程式代碼長度,並且當多名程式員一同工作時這種方法也被證明是不可靠的。
6.4常見標準函數6.4.1數學函數6.4.2日期函數6.4.3字串操作函數返回目錄6.4.4數據轉換函數
asc(s):將字串的第一個字母的代碼返回。
Chr(n):根據字元代碼n返回相應的字元構成的字串.例如:chr(65)的結果為A.Format(e,s):e代表字串,s代表格式指令,根據s的指令將e格式化。
Hex(n):返回n的16進制的字串。
Oct(n):返回n的8進制的字串。
RGB(n,n,n):返回一個代表RGB顏色的常整數。
Str(n):返回數字運算式n相等的字串。
Val(string):返回一個string所代表的數字串的數字。6.4.5用戶互動式函數1.Inputbox
許多應用程式要求用戶輸入數據,Inputbox()函數提供了一種較好的方法,在前面的章節中已經提到過,現在對Inputbox函數進行詳細說明。圖6-27Inputbox函數建立的輸入對話框2.Msgbox函數Inputbox是輸入函數,Msgbox是輸出函數。(1)Msgbox函數的語法說明
Msgbox函數的語法如下:
Msgbox(Prompt,[ButtonsasVbmsgboxstle=Vbokonly],[Title],[Helpfile],[Context])_asVbmsgboxresult
(2)Msgbox函數舉例6.4.6其他常用函數1.Array()返回含有數組的變體。
2.Callbyname()執行對象的一個方法或設定返回對象的屬性。
3.Choose()在參數列表中選擇一個數據,並返回該數據。4.Command()返回啟動VB系統或用VB開發的可執行程式的命令行中的參數。5.Dir()
返回指定範本或檔屬性的檔,目錄檔夾的名稱,或驅動器的卷標。6.Filter()
基於指定的過濾標誌,返回字串數組的子集。7.Getobject()
返回ActiveX組件提供對象的引用。8.Getsetting()
返回應用程式專案的所有註冊表設置及其對應值。9.Input()
返回字串變數,包含的字串取自以input或binary方式打開的檔。10.Ismissing()
返回布爾型數據,表示是否已經把可選的參數傳遞給某個過程。
11.Int()
返回數值的整數部分,這個函數結合Rnd()函數能產生在某個範圍的整數。
12.Join()
把包含在數組中的字串合成一個字串,並返回這個字串。13.Loadpicture()
把圖片裝入窗體的某些控件中。14.Partition()
返回字元型數據,表示一個數值在一個系列範圍中的位置。15.Qbcolor()
返回長整型,表示對應於指定顏色號的RGB顏色代碼。16.Replace()
返回一個字串中指定的子串被另一個子串替換指定次數的結果。17.Round()
返回一個數舍入到指定小數位後的結果。18.Rnd()
產生0~1亂數。
19.Shell()
運行可執行程式。20.Switch()
計算一系列的運算式,並返回與第一個為True的運算式相關的變體數據或運算式。21.Typename()
返回字串型數據,表示變數的資訊。22.Isnull()
這個函數用來判斷指針是否為空。23.Isempty()
判斷字串是否為空。
7.1標籤(Label)
標籤主要用來顯示提示資訊,可用作標題、欄目名或輸入輸出區域的標識,也可作為結果資訊輸出區域,它常與Text控件一起使用。返回目錄7.1.1常用屬性1.Caption屬性Caption屬性的內容就是標籤所要顯示的字串內容。
2.Font屬性Font表示控件的字體、字形樣式、字體大小。3.ForColor屬性決定字串本身的顏色。4.BackColor屬性決定字串的背景顏色。5.BackStyle屬性決定字串的背景模式。6.BorderStyle屬性決定標籤要不要加框。0表示無邊框,1表示單線框,缺省為0。7.Enabled屬性表示控件是否能使用,它的可能取值有兩個:True:表示能使用。False:表示禁止使用(控件顯示為灰色)。8.Visible屬性表示控件是否可見,它有兩個取值:True表示控件可見;False表示控件不可見。9.Top,Left,Width,Height屬性表示控件在窗體中的位置和尺寸。10.Alignment屬性設置或返回控件中文本的對齊方式。0代表左對齊,1代表右對齊,2代表居中。11.Autosize屬性返回或設置控件是否自動改變大小以顯示全部內容。12.UseMnemonic屬性返回或設置用以指定是否要在label控件的caption屬性的文本中定義訪問鍵。7.1.2常用事件1.Click事件
Click事件在單擊滑鼠或按下快捷鍵時發生,常與TextBox控件一起使用,已獲得輸入焦點。
2.Change事件Change事件指示label控件的內容已經改變。
7.2文本框(TextBox)
文本框既可接受用戶的輸入,又可顯示程式的資訊。
7.2.1MultiLine屬性
MultiLine屬性用於設置TextBox控件能否輸入和顯示多行文本,它的語法結構如下所示:object.MultiLine[=boolean]True:設為“多行文本框”,即允許輸入和顯示多行文本。
False:設為“單行文本框”,即所有的文本都限制在一行之內。返回目錄
將TextBox控件的MultiLine屬性設置為True,就可以在控件中輸入和顯示多行文本,如果同時設置了控件的ScrollBars屬性,那麼就可以在TextBox控件上定制垂直和水準的滾動條。表7-2 TextBox控件常用的屬性Alignment屬性MouseIcon屬性Appearance屬性MousePointer屬性BackColor屬性ForeColor屬性MultiLine屬性BorderStyle屬性Name屬性Container屬性OLEDragMode屬性DataChanged屬性OLEDropMode屬性DataField屬性OLEDropMode屬性DataSource屬性Parent屬性DragIcon屬性PasswordChar屬性DragMode屬性ScrollBars屬性Enabled屬性SelLength屬性SelStart屬性SelText屬性Font屬性FontBold屬性FontItalic屬性FontStrikethru屬性FontUnderline屬性TabIndex屬性FontName屬性TabStop屬性FontSize屬性Tag屬性Height屬性Width屬性Text屬性HelpContextID屬性ToolTipText屬性HideSelection屬性Visible屬性hWnd屬性WhatsThisHelpID屬性Index屬性Left屬性Top屬性LinkItem屬性LinkMode屬性Locked屬性LinkTimeout屬性LinkTopic屬性MaxLength屬性
7.2.2SelStart屬性SelStart屬性用於設置所選擇的文本的起始點。它的語法結構如下所示:object.SelStart[=index]7.3命令按鈕(CommandButton)CommandButton控件可以開始、中斷或者結束一個進程,當控件處於有效的狀態時,單擊CommandButton控件就會產生一種被按下的感覺,所以通常情況下CommandButton控件都是作為一個按鈕的形式出現在窗體中,但是有些時候還可以把它作為其他控件的容器。
返回目錄7.3.1常用屬性1.DisabledPicture屬性
DisabledPicture屬性用於設置在控件無效時對一個圖片的引用,該圖片在控件處於無效狀態時顯示在控件中。圖7-18程式運行的結果2.DownPicture屬性
DownPicture屬性用於設置在控件被單擊並處於壓下狀態時對一個圖像檔的引用,該圖像在控件處於壓下的狀態時顯示在控件中。圖7-19程式運行結果3.UserMaskColor屬性、MaskColor屬性
MaskColor屬性用於返回或設置一個在CommandButton控件的圖像檔中作為透明的顏色。圖7-20設置控件的透明區域7.4圖片框(PictureBox)
圖片框在工具箱中的圖示是,可以顯示來自位圖、圖示或者元檔以及來自增強的元檔、JPEG或GIF檔的圖形。元檔將圖像作為與線、圓或多邊形一樣的圖形對象來存儲,而
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园科学活动常规
- 广西南宁市二模数学试卷
- 广东省中专数学试卷
- 医院诚信宣传课件
- 中国锥面由任行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 设计院社会实践报告(共10)
- 掌上音频工作站项目投资可行性研究分析报告(2024-2030版)
- 2025年中国电卡表行业市场发展现状及投资战略咨询报告
- 湖北眼科医疗设备项目可行性研究报告模板范本
- 2025年7月浙江高中学业水平考试数学试卷真题(含答案详解)
- 四年级上册语文生字注音练习
- 中华人民共和国产品质量法培训
- 我镇征兵工作面临的困难与对策课件
- 亚马逊联合运营合同范例
- 医学资料档案管理制度
- 2024年税务师考试《财务与会计》试题及解答参考
- 儿童肾脏疾病的流行病学
- 羽毛球教学教学案
- 浙教版七年级上科学第1章探索自然的科学单元测试卷
- 安徽省蚌埠二十六中学2024-2025学年七年级上学期入学语文试题
- 山东省低温热水地面辐射供暖技术规程
评论
0/150
提交评论