實驗指導(dǎo)書 C#實驗指導(dǎo)書
《實驗指導(dǎo)書 C#實驗指導(dǎo)書》由會員分享,可在線閱讀,更多相關(guān)《實驗指導(dǎo)書 C#實驗指導(dǎo)書(34頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 實驗一 C#集成開發(fā)環(huán)境 ㈠實驗?zāi)康? (1)熟悉Visual Studio 2005的開發(fā)環(huán)境。 (2)操作工具欄和項目工作區(qū)窗口。 (3)創(chuàng)建控制臺應(yīng)用項目。 ㈡實驗準(zhǔn)備和說明 實驗報告采用A4紙,封面一般包含實驗?zāi)看?、實驗題目、班級、姓名、日期和機構(gòu)名稱。報告內(nèi)容一般包括實驗?zāi)康暮鸵?、實驗步驟、實驗思考和總結(jié)。 Visual Studio 2005 是Microsoft公司基于.NET框架和多語言開發(fā)推出的目前極為流行的可視化編程環(huán)境。目前最新版本是Visual Studio 2008,該環(huán)境靈活性、完全可擴展以及具有強有力的Internet支持。
2、 ㈢實驗步驟 ⒈ 啟動Windows操作系統(tǒng) ⒉ 啟動和操作Visual Studio 2005 選擇“開始”菜單里面的Microsoft Visual Studio 2005,啟動Visual Studio 2005,進(jìn)入開發(fā)環(huán)境。 由于Visual Studio.NET所包括的各個語言工具,都使用相同的集成開發(fā)環(huán)境,所以在啟動C#之前,要啟動整個Visual Studio.NET。 在開始菜單中選擇Microsoft Visual Studio 2005進(jìn)行啟動,啟動完畢后,打開“起始頁→Microsoft Visual Studio”窗口。要啟動C#開發(fā)
3、環(huán)境有兩種方式,一種是單擊“起始頁”上的“打開項目”,選擇現(xiàn)在已存在的C#項目文件;另一種是單擊“起始頁”上的“創(chuàng)建項目”,則打開一個“新建項目”對話框,如下圖。 在“項目類型”框中選擇“Visual C#項目”,然后在“模板”框中任意選擇一個項目模板(若是開發(fā)Windows應(yīng)用項目,則選擇“Windows應(yīng)用程序”),并在下面“名稱”文本框中設(shè)置新項目名稱,然后單擊“確定”按鈕,一個新的C#的項目就創(chuàng)建了,并進(jìn)入Visual Studio.NET的集成開發(fā)環(huán)境。 ⒊ C# 集成開發(fā)環(huán)境介紹 C#的集成開發(fā)環(huán)境集成了設(shè)計、開發(fā)、編輯、測試和調(diào)試的多種功能,使得開發(fā)
4、人員 能夠方便、快速地開發(fā)應(yīng)用程序。 集成開發(fā)環(huán)境標(biāo)題下面是菜單欄和工具欄。中央工作區(qū)是用來設(shè)計程序界面的窗體設(shè) 計器和代碼編輯窗口。除此之外,即成開發(fā)環(huán)境的四周,有很多浮動窗口。 ⑴菜單欄 在菜單欄中,有若干個菜單標(biāo)題,每個菜單標(biāo)題都有一個下拉式菜單,主要菜單標(biāo)題 如下。 文件:主要包括新建、打開、保存、新建項目以及打開和關(guān)閉解決方案等命令。 l 編輯:主要包含一些符合Windows操作風(fēng)格的進(jìn)行文件編輯的各項命令。如撤銷、復(fù)制、粘貼、刪除、查找和替換等命令。 l 視圖:包含顯示與隱藏工具欄、工具箱(Toolbox)和各種獨立的工具窗口的所有命令。 l 項
5、目:包括向當(dāng)前項目添加、改變和刪除組件、引用Windows對象和添加部件等命令。 l 生成:包含代碼生成的有關(guān)命令。 l 調(diào)試:包含調(diào)試程序的命令,啟動和中止當(dāng)前應(yīng)用程序運行的命令。 l 數(shù)據(jù):包含顯示數(shù)據(jù)源和添加新數(shù)據(jù)源命令。 l 格式:包括改變窗體上控件大小和對齊方式等命令。 l 工具:包括進(jìn)程調(diào)試、數(shù)據(jù)庫連接、宏和外接程序管理、設(shè)置工具箱和選項等命令。 l 窗口:包含一些屏幕窗口布局的命令。 l 幫助:包含方便開發(fā)人員使用幫助信息的命令。 ⑵工具欄 工具欄是由多個圖標(biāo)按鈕組成的,可提供對常用命令的快速訪問。除了在菜單欄下面 顯示的標(biāo)準(zhǔn)工具欄外,還有Web工具欄
6、、控件布局工具欄等多種特定功能的工具欄。要顯 示或隱藏這些工具欄,可選擇“視圖”菜單中的“工具欄”命令,或者在標(biāo)準(zhǔn)工具欄單擊鼠 標(biāo)右鍵,在彈出的菜單中選定所需的工具欄。 標(biāo)準(zhǔn)工具欄各按鈕如下圖所示。 在C#的集成開發(fā)環(huán)境中,可以顯示很多具有特定功能的窗口。為了方便程序開發(fā)人員的使用,通常可以將已打開的功能窗口重疊在同一位置上,通過切換其頂部或底部的選項標(biāo)簽就可以在不同的窗口之間切換??梢赃x擇“視圖”菜單下的相關(guān)命令顯示或關(guān)閉這些功能窗口。 單擊窗口右上角的按鈕可以把窗口固定在所在的位置,這時該按鈕變成,再次單擊這個按鈕,可以使窗口重新浮動。例如,集成開發(fā)環(huán)境中間的工
7、作區(qū)通常用來顯示窗體設(shè)計器和代碼編輯窗口(當(dāng)然也可以將別的功能窗口拖動到這個位置上來),在此例中,單擊其上方的“Form1.cs[設(shè)計]標(biāo)簽可以切換到代碼窗口,單擊“Form1.cs”標(biāo)簽可以切換到窗體設(shè)計器。工作區(qū)左側(cè)的兩個浮動功能窗口是工具箱與服務(wù)器資源管理器,可以單擊窗口下面的標(biāo)簽在兩個窗口之間切換。下面簡要介紹一下C#集成開發(fā)環(huán)境中的主要功能窗口。 ⑶ 工具箱 工具箱中包含了建立應(yīng)用程序的各種控件以及非圖形化的組件,如圖1—10所示。 工具箱由不同的選項卡組成,各類控件、組件分別放在“數(shù)據(jù)”、“組件”、“所有 Windows窗體”、“對話框”、“常規(guī)”等選項卡下面
8、。 l “數(shù)據(jù)”選項卡中主要放置訪問數(shù)據(jù)庫的控件。 l “組件”選項卡中放置一些系統(tǒng)提供的組件,如報表、消息隊列等。 l “對話框”選項卡中放置一些系統(tǒng)提供的對話框,如顏色、打開文件等。 l “常規(guī)”選項卡默認(rèn)為空,可以在這里保存常用的空間,包括自定義控件。 l “所有Windows窗體”選項卡是最常用的選項卡,這個選項卡主要放置開發(fā)Windows應(yīng)用程序所使用的控件,如文本框、標(biāo)簽框等,以后會陸續(xù)介紹這些控件。 ⑷ 解決方案資源管理器 在C#中,項目是一個獨立的編程單位,其中包含有窗體文件和其他一些相關(guān)的文件, 若干個項目就組成了一個解決方案?!敖鉀Q方案管理器”對話框
9、如下圖所示。它以樹狀的結(jié)構(gòu)顯示整個解決方案中包括哪些項目以及每個項目的組成信息。 在C#中所有包含C#代碼的源文件都是以*.cs為擴展名,而不管它們是包含窗體還是普通代碼,在解決方案資源管理器中顯示這個文件,然后就可以編輯它了。在每個項目的下面顯示了一個引用,在這里列出了該項目引用的組件。 解決方案資源管理器窗口的上邊有幾個選項按鈕,例如“刷新”、“顯示”和“屬性”等。通常,解決方案資源管理器隱藏了一些文件,單擊“顯示”選項按鈕,可以顯示出這些 隱藏的文件?!八⑿隆边x項按鈕的作用是可以對沒有保存的項目文件進(jìn)行刷新。單擊“屬性”選項按鈕,則可以打開“屬性”窗口,顯示所選擇對象的屬性。
10、 ⑸ 屬性窗口 屬性窗口如下圖所示,它用于顯示和設(shè)置所選定的控件或者窗體等對象的屬性。在應(yīng)用程序設(shè)計時,可通過屬性窗口設(shè)置或修改對象的屬性。屬性窗口由以下部分組成。 (1)對象列表框:標(biāo)識當(dāng)前所選定對象的名稱及所屬的類。單擊其右邊的下拉按鈕,可列出所含對象的列表,從中選擇要設(shè)置屬性的對象。 (2)選項按鈕:常用的左邊兩個分別是“按分類順序”、“按字母順序”選項按鈕,可選擇其中一種排列方式,顯示所選對象的屬性?!鞍捶诸愴樞颉笔歉鶕?jù)屬性的性質(zhì),分類列出對象的各個屬性;“按字母順序”是按字母順序列出所選對象的所有屬性。 (3)屬性列表框:屬性列表框由中間一條直線將其分為兩部分,左邊列
11、出所選對象的屬性名稱,右邊列出的是對應(yīng)的屬性值,可對該屬性值進(jìn)行設(shè)置或修改。如果屬性值右側(cè)有“…”或 按鈕,表示都有預(yù)定值可供選擇。 ⑹ 代碼編輯窗口 代碼編輯窗口是專門用來進(jìn)行代碼設(shè)計的窗口,各種事件過程、模塊和類等源程序代碼的編寫和修改均在此窗口進(jìn)行,如下圖所示。 從“視圖”菜單中選擇“代碼”命令、按F7鍵、用鼠標(biāo)雙擊窗體或者窗體上的一個控件均可以打開代碼編輯窗口。 代碼編輯窗口左上方為對象列表框,單擊其下拉按鈕,可顯示項目中全部對象的名 稱。右上方是事件、方法列表框,列出了所選定對象相關(guān)的事件、方法。通常,在編寫事件 過程時,在“對象列表框”中選擇對象名稱
12、,然后在“事件、方法列表框”中選擇對應(yīng)的事 件過程名稱,即可在代碼編寫區(qū)域中構(gòu)成所選定對象的事件過程模板,可在該事件過程模板 中編寫事件過程代碼。 在C#的代碼編輯窗口中有兩個顯著的特點。其一是表示項目窗體和控件的代碼,現(xiàn)在 均是可見的,上圖所示的代碼編輯器窗口中“Public Class Form1”就是窗體Form1的代碼段。其二是C#的代碼窗口就像Windows資源管理器左邊的樹狀目錄結(jié)構(gòu)一樣,一個代碼塊、一個過程,甚至是一段注釋都可以疊為一行,例如,在上圖代碼編輯窗口中,可以看到有幾行代碼左邊有個“+”號或“-”號,單擊“-”號可以將一段代碼隱藏起來,只顯示第一行,而單擊“+”
13、號,可以將其展開。這樣使得程序結(jié)構(gòu)一目了然,方便了代碼的管理,更有利于程序的開發(fā)和設(shè)計。 ⑺窗體設(shè)計器 當(dāng)創(chuàng)建和打開一個C#項目時,在其集成開發(fā)環(huán)境中的中間工作區(qū)域,將顯示一個窗體 設(shè)計器。窗體是一個容器,能夠放置應(yīng)用程序所需要的所有控件以及圖形、圖片,并可隨意 改變大小和移動方向。窗體設(shè)計器是用于設(shè)計和編制應(yīng)用程序的用戶接口,即設(shè)計應(yīng)用程序 的界面。C#應(yīng)用程序的設(shè)計,是以窗體為依托進(jìn)行設(shè)計的。應(yīng)用程序中的每一個窗口都有 它自己的窗體設(shè)計器,其中最常用的窗體設(shè)計器是Windows窗體設(shè)計器。在這個窗體設(shè)計 器上可以拖動各種控件,創(chuàng)建Windows應(yīng)用程序界面。除此之外,在C
14、#中創(chuàng)建項目時,還 會遇到用于創(chuàng)建Web界面的Web窗體設(shè)計器。 ⑻ 動態(tài)幫助窗口 動態(tài)幫助窗口是通過“幫助”菜單下的“動態(tài)幫助”命令打開的,這是一個與上下文相關(guān)的的幫助系統(tǒng)。當(dāng)單擊不同的控件或者將光標(biāo)在代碼的不同關(guān)鍵字上移動時,動態(tài)幫助窗口中顯示的內(nèi)容將會隨之發(fā)生變化。對于C#的初學(xué)者來說,利用這種“動態(tài)幫助”功能是非常有用的。 ⑼ 其他窗口 l 類視圖窗口:如下圖所顯示的類視圖窗口,按照樹狀結(jié)構(gòu)列出了解決方案里各個類以及其中包含的事件、方法和函數(shù)等。雙擊視圖中的一個元素,即可打開這個元素的代碼窗口,這對于瀏覽代碼是一種很方便的方式。 l 對象瀏覽器窗口:在對
15、象瀏覽器窗口中,可以方便地查找程序中使用的所有對象的信息,包括程序中引用的系統(tǒng)對象和用戶自定義的對象。 對象瀏覽器的左邊窗口以樹狀分層結(jié)構(gòu)顯示系統(tǒng)中所用到的所有類。雙擊其中一個 類,在右邊窗口中就顯示出這個類的屬性方法、事件等。對象瀏覽器窗口如下圖所示。 l 服務(wù)器資源管理器:C#是面向網(wǎng)絡(luò)的開發(fā)工具,在軟件開發(fā)中,利用服務(wù)器資源管理器可以方便地監(jiān)控和管理網(wǎng)絡(luò)上的其他服務(wù)器?!胺?wù)器資源管理器”窗口如下圖所示。 l “輸出”窗口:在“輸出”窗口中,可以輸出程序運行時產(chǎn)生的信息,包括應(yīng)用程序中設(shè)定要輸出的信息和編程環(huán)境給出的信息,如下圖所示。 l 命令窗口:
16、“命令窗口”為用戶提供了一個用命令方式與系統(tǒng)交互的環(huán)境,如下圖所示。在“命令窗口”中用戶可以直接使用C#的各種命令,例如直接輸入“toolbox”命令,就可以調(diào)出工具箱。 ⒋ 編制控制臺程序 ⑴結(jié)構(gòu)體和類 輸入以下程序并運行,從運行結(jié)果中可以看出結(jié)構(gòu)體和類有什么差別? using System; struct SContact { public string m_name; public int m_age; public string m_telephone; } class CContact { public stri
17、ng m_name; public int m_age; public string m_telephone = "Unknown"; } class ValueTypeVersusReferenceType { public static void Main( ) { //Struct SContact s1; s1.m_name = "李明"; s1.m_age = 20; s1.m_telephone = "Unknown"; SContact s2 = s1
18、; s2.m_name = "張鵬"; s2.m_age = 25; s2.m_telephone = "Unknown"; Console.WriteLine("修改結(jié)構(gòu)變量后:"); Console.WriteLine(s1.m_name); Console.WriteLine(s1.m_age); //Class CContact c1 = new CContact(); c1.m_name = "李明"; c
19、1.m_age = 20; CContact c2=c1; c2.m_name = "張鵬"; c2.m_age = 25; Console.WriteLine("修改類變量后: "); Console.WriteLine(c1.m_name); Console.WriteLine(c1.m_age); } } ⑵ 交互程序 輸入以下程序并運行,從運行結(jié)果中可以看出結(jié)構(gòu)體和類有什么差別? using System; namespace P2_4 { cl
20、ass SelectOutput { static void Main() { Console.WriteLine("請選擇要顯示的內(nèi)容:"); Console.WriteLine("1.開發(fā)環(huán)境"); Console.WriteLine("2.編程語言"); Console.WriteLine("3.項目類型"); Console.WriteLine("4.退出"); //讀取并判斷用戶輸入 int i=Console.Read(); if (i==1) Console.W
21、riteLine("Microsoft Visual Studio.NET"); else if (i==2) Console.WriteLine("C Sharp"); else if (i==3) Console.WriteLine("控制臺應(yīng)用程序"); } } } 這段程序本身不難理解,但有兩個值得注意的問題: u Console的Read方法返回值是整數(shù)類型int,但這個返回值和用戶輸入的整數(shù)并不相同!嘗試按下述方法修改代碼: if (i == 1) Console.Write
22、Line("Microsoft Visual Studio .NET"); 看看運算結(jié)果如何? u 使用Read方法讀取輸入并不立即響應(yīng),而是要等到用戶按下回車鍵之后。如果要即時做出響應(yīng),可以改用Console的ReadKey方法,如以下程序所示: using System; namespace P2_5 { class SelectOutput1 { static void Main() { Console.WriteLine("請選擇要顯示的內(nèi)容:"); Console.WriteLine("1.開發(fā)環(huán)境"); C
23、onsole.WriteLine("2.編程語言"); Console.WriteLine("3.項目類型"); Console.WriteLine("4.退出"); //讀取并判斷用戶輸入 ConsoleKeyInfo k=Console.ReadKey(); if (k.KeyChar==1) Console.WriteLine("Microsoft Visual Studio.NET"); else if (k.KeyChar==2) Console.WriteLine("C Sharp")
24、; else if (k.KeyChar==3) Console.WriteLine("控制臺應(yīng)用程序"); } } } 實驗二 C#基本程序設(shè)計 ㈠實驗?zāi)康? ⒈ 掌握常用的C#語句使用方法 ⒉ 掌握C#中存取修飾符號的使用方法。 ⒊ 熟悉C#中異常處理機制 ㈡實驗要求 實驗之前要認(rèn)真閱讀上課的課件以及教科書,針對性地熟悉以下要點: ⒈ 熟悉常用的C#語句 ⒉ 熟悉C#的封裝機制。 ⒊ 熟悉C#中異常處理機制。 ㈢實驗內(nèi)容 ⒈類的存取修
25、飾符的用法 輸入以下程序代碼,并調(diào)試結(jié)果,分析結(jié)果。 ①abstract、sealed 修飾符 using System; abstract class AbstractClass { abstract public void MyMethod( ); } sealed class DerivedClass:AbstractClass { public override void MyMethod() { Console.WriteLine("sealed class"); } } public class TestApp { publ
26、ic static void Main() { DerivedClass dc = new DerivedClass(); dc.MyMethod(); } } ②internal、virtual修飾符 using System; internal class Triangle { protected int m_a, m_b, m_c; public Triangle(int a, int b, int c) { m_a=a; m_b=b; m_c =c;
27、} public virtual double Area( ) { // Heronian formula double s=(m_a+m_b+m_c)/2.0; double dArea=Math.Sqrt(s*(s-m_a)*(s-m_b)*(s-m_c)); return dArea; } } internal class Prism:Triangle { private int m_h; public Prism(int a,int b,int c, int h):base(a,b,
28、c) { m_h=h; } public override double Area() { double dArea=base.Area()*2.0; dArea+=m_a*m_h-m_b*m_h+m_c*m_h; return dArea; } } class PrismApp { public static void Main() { Prism prism=new Prism(2,5,6,1); Console.WriteLine(prism.Area());
29、 } } ⒉ 程序異常時的處理 輸入并運行以下程序,顯然是會不正常的,寫出運行結(jié)果。 using System; class NotHandled { static void Main() { int a=0, b=5; Console. WriteLine("Before exception is generated. "); b=b/a; } } 當(dāng)有異常發(fā)生時,程序應(yīng)當(dāng)合理地處理異常,消除產(chǎn)生異常產(chǎn)生的原因,然后繼續(xù)運行。 C#通過throw、try、catch和final
30、ly語句實現(xiàn)結(jié)構(gòu)化、統(tǒng)一和安全的異常處理機制。 l 使用try…catch語句來捕獲異常 為了捕獲并處理異常,用戶把可能出現(xiàn)異常的語句放到try子句中。假如這些語句在執(zhí)行中出現(xiàn)異常時,try子句就會捕獲異常,然后轉(zhuǎn)移到相應(yīng)的catch子句中;如果try子句中沒有異常,就會執(zhí)行try…catch結(jié)構(gòu)后面的代碼。 在通常情況下,try子句伴隨著多個catch子句,每一個catch子句對應(yīng)一種特定的異常,就好像switch…case子句一樣。請輸入以下程序,調(diào)試并分析運行結(jié)果 using System; class ExceDemo2 { static vo
31、id Main( )
{ int[ ] arr1={2, 5, 8, 3,13,32,56,61}; //數(shù)組arr1比arr2長
int[ ] arr2={1, 0, 2, 3, 0, 4};
for (int j=0; j 32、Exception e) //捕獲異常
{ Console. WriteLine(" 除數(shù)不能為0"); }
catch( IndexOutOfRangeException e) //捕獲異常
{ Console. WriteLine(“數(shù)組訪問越界"); }
}
}
}
上面的程序不僅捕獲了除0錯誤也捕獲了數(shù)組訪問越界錯誤。
在上例中,每個catch語句只響應(yīng)類型相匹配的異常。有時,需要捕獲所有的異常,而不管它是什么 33、類型的異常。使用不帶參數(shù)的catch語句就可以做到這一點。
請輸入以下程序,調(diào)試并分析運行結(jié)果:
using System;
class ExceDemo2
{ static void Main( )
{ int[ ] arr1={2,5,8,3,13,32,56,61}; //數(shù)組arr1比arr2長
int[ ] arr2={1,0,2,3,0, 4};
for (int j=0; j 34、,arr1 [j], arr2[j], arr1[j]/arr2[j]); }
catch
{ Console.WriteLine(" 一些異常發(fā)生"); }
}
}
}
l 使用throw語句拋出異常
前面的程序一直捕獲由C#自動產(chǎn)生的異常。但使用throw可以人為拋出異常。throw的一般語法格式為: throw異常對象
請輸入以下程序,調(diào)試并分析運行結(jié)果:
using System;
class ThrowDemo
{ static void Main()
{ t 35、ry
{ Console.WriteLine("Before throw. ");
throw new DivideByZeroException(); }
catch (DivideByZeroException e)
{ Console.WriteLine("Exception caught. "); }
Console.WriteLine("After try/catch block. ");
}
36、}
以上程序是人為拋出DivideByZeroException異常。
l 使用finally語句
使用finally語句可以構(gòu)成try-finally或try-catch-finally的形式。當(dāng)與try塊一起使用時,不管是否發(fā)生了異常,都將執(zhí)行finally塊中的語句。因此,用戶可以在finally語句 中執(zhí)行一些清除資源的操作。
請輸入以下程序,調(diào)試并分析運行結(jié)果:
using System;
class finallyDemo
{ static void Main()
{ try
{ Console.WriteLine(" 37、try語句中拋出一個異常");
throw new NullReferenceException(); }
catch
{ Console.WriteLine("捕獲所有類型的異常"); }
finally
{ Console.WriteLine("執(zhí)行finally語句塊中的語句"); }
}
}
實驗三 窗體程序練習(xí)
㈠實驗?zāi)康?
⒈掌握常用控件的使用
⒉掌握類的定義及對象的創(chuàng) 38、建,掌握字段的聲明與使用,掌握構(gòu)造函數(shù)與重載構(gòu)造函數(shù)的聲明與使用,掌握方法的聲明與使用。掌握調(diào)用方法時的參數(shù)傳遞特別是對象參數(shù)的傳遞。
㈡實驗要求
設(shè)計一個Windows應(yīng)用程序,根據(jù)輸入的學(xué)生相關(guān)信息單擊“創(chuàng)建對象”按鈕,創(chuàng)建學(xué)生對象,并顯示所創(chuàng)建學(xué)生對象的信息,如圖2-1所示。如果學(xué)生信息被修改,單擊“修改對象值”按鈕,顯示修改后學(xué)生對象的信息,如圖2-2所示。如果學(xué)生信息未被修改,單擊“修改對象值”按鈕,則顯示對象未被修改的提示,如圖2-3所示。如果學(xué)生對象有成績信息,單擊“統(tǒng)計”按鈕,能對學(xué)生對象的成績進(jìn)行統(tǒng)計,并顯示學(xué)生的單科成績、總分與平均分,如圖2-4所示。
39、
圖2-1 創(chuàng)建對象 圖2-2 修改對象(己作修改)
圖2-3 修改對象(未作修改) 圖2-4 統(tǒng)計成績
㈢實驗步驟
⒈設(shè)計程序界面
新建一個C#項目,向窗體中添加六個文本框控件textBoxl~textBox6,3個按鈕控件button1~button3,7個標(biāo)簽控件label1~label7。適當(dāng)調(diào)整各控件的大小及位置,如圖2-5所示。
圖2-5 設(shè)計界面
圖2-6 對象的Text屬性值
⒉ 設(shè)置對象屬性
40、窗體與控件的Text屬性如圖2-6所示。代碼設(shè)計中使用到的控件的Name屬性見表2-1。
表2-1 控件對象名稱Name屬性設(shè)置
⒊ 編寫事件代碼
打開代碼設(shè)計視圖,在程序代碼最后一個大括號的上方定義類代碼如下:
public class Student //類名為Student
{ private string id,name,sex;
private int age,scor1,scor2;
public string ID //聲明屬性
{ get
{ return 41、 id;}
set
{ id=value; }
}
public string Name //聲明屬性~
{ get
{ return name; }
set
{ name=value; }
}
public string Sex //聲明屬性
{ get
{ return sex; 42、}
set
{ sex=value;}
}
public int Age
{ get
{ return age; }
set
{ age=value; }
}
public int Scor1
{
get
{ return scor1; }
set
43、 { scor1 =value; }
}
public int Scor2
{ get
{ return scor2; }
set
{ scor2=value; }
}
//定義初始化所有數(shù)據(jù)成員的構(gòu)造函數(shù)
public Student(string iid,string nname,string ssex,int aage,int sscor1,int sscor2)
44、{ id=iid;
name=nname;
sex=ssex;
age=aage;
scor1=sscor1;
scor2=sscor2;
}
//重載只初始化學(xué)號、姓名、性別、年齡的構(gòu)造函數(shù)
public Student(string iid,string nname,string ssex,int aage)
{ id=iid;
name=nname;
sex=ssex; 45、
age=aage;
}
public int Total( )
{ return scor1 +scor2; }
public float Average()
{ return (float)(scor1 + scor2) / 2; }
}
找到代碼public partial class Form1 : Form,在其下大括號的下方設(shè)計聲明Student類對象代碼如下:
private Student student;
同時再定 46、義聲明CreateStudent方法、SetStudent方法、CountScor方法與ShowStudent方法代碼如下:
public void CreateStudent(Student stu) //創(chuàng)建對象方法
{ student = stu; }
public void SetStudent(string id, string name, string sex, int age,int scor1, int scor2)
{
student.ID = id;
student.Name = name;
student.Age 47、 = age;
student.Sex = sex;
student.Scor1 = scor1;
student.Scor2 = scor2;
}
public string CountScor(Student s) //汁算成績方法
{
string result;
result = " 成績1:" + s.Scor1;
result += " 成績2:" + s.Scor2 + "\n";
result += " 總分:" + s.Total();
48、 result += " 平均分:" + s.Average();
return result;
}
public string ShowStudent(Student stu) //顯示學(xué)生信息方法
{
string result = "學(xué)號:" + stu.ID;
result += "姓名:" +stu.Name;
result += "性別:" +stu.Sex;
result += "年齡:" +stu.Age+"\n";
result += "成績1:"+s 49、tu.Scor1;
result += "成績2:"+stu.Scor2;
return result;
}
“創(chuàng)建對象”按鈕的 Click事件代碼為:
private void button1_Click(object sender, EventArgs e)
{ string s1=txtID.Text;
string s2=txtName.Text;
string s3=txtSex.Text;
string s4=txtAge.Text;
string s5=txtScor1.Text 50、;
string s6=txtScor2.Text;
if(s1==""||s2==""||s3==""||s4=="")
{ //判斷學(xué)號、姓名、性別與年齡文本框是否為空
lblResult.Text = "創(chuàng)建對象至少需要學(xué)號、姓名、性別與年齡等數(shù)據(jù),請輸入!";
return;
}
int ss4 = int.Parse(s4);
if (s5 == "" || s6 == "")
{ //如果成績1與成績2無信息,則調(diào)用四參數(shù)構(gòu)造函數(shù)
Stude 51、nt stu = new Student(s1, s2, s3, ss4);
CreateStudent(stu); //調(diào)用創(chuàng)建對象方法
}
else
{ //如果成績1與成績2有信息,則調(diào)用六參數(shù)構(gòu)造函數(shù)
int ss5 = int.Parse(s5);
int ss6 = int.Parse(s6);
Student stu = new Student(s1, s2, s3, ss4, ss5, ss6);
Create 52、Student(stu); //調(diào)用創(chuàng)建對象方法
}
lblResult.Text = "對象創(chuàng)建成功!\n";
lblResult.Text += ShowStudent(student); //調(diào)用顯示對象方法,顯示學(xué)生信息
}
“修改對象值”按鈕的Click事件代碼為:
string s1=txtID.Text;
string s2=txtName.Text;
string s3=txtSex.Text;
string s4=txtAge.Text 53、;
string s5=txtScor1.Text;
string s6=txtScor2.Text;
if(student.ID==s1&&smdent.Name==s2&&student.Sex==s3&&student.Age==int.Parse(s4)
&&student.Scor1==int.Parse(s5)&&student. Scor2==int.Parse(s6))
{//判斷文本框中的內(nèi)容是否有改動,如無改動則顯示提示信息
lblResult.Text="對象值未進(jìn)行任何修改";
}
else
{ //如文本框中的內(nèi)容有改動,則調(diào)用顯示學(xué)生信息 54、方法予以顯示
SetStudent(s1,s2,s3,int.Parse(s4),int.Parse(s5),int.Parse(s6));
lblResult.Text="修改完成!修改后的對象值為:\n";
lblResult.Text+=ShowStudent(student);
}
“統(tǒng)計”按鈕的Click事件代碼為:
lblResult.Text=student.Name+"的成績統(tǒng)計:\n";
lblResult.Text+=CountScor(student); //調(diào)用計算學(xué)生成績方法
程序代碼中的CreateS 55、tudent方法、SetStudent方法、CountScor方法與ShowStudent方法是可以省略的,即可以在按鈕的單擊事件中直接設(shè)計實現(xiàn)功能的代碼。本實驗中聲明這幾個方法是為了幫助理解方法的聲明,調(diào)用方法時的參數(shù)傳遞特別是對象參數(shù)的傳遞。
實驗四 常用控件應(yīng)用
㈠實驗?zāi)康?
⒈掌握常用控件的使用
⒉掌握數(shù)組與集合的應(yīng)用。數(shù)組與集合的聲明,數(shù)組與集合賦值。數(shù)組與集合的常用屬性與方法。靈活應(yīng)用列表框控件與組合框控件中的集合屬性。
㈡實驗要求
設(shè)計一個Windows應(yīng)用程序,能夠?qū)⒘斜碇械倪x定內(nèi)容顯示或刪除,可以將組合框中 預(yù)置的內(nèi)容添加到列表中 56、。要求添加預(yù)置內(nèi)容時,選擇“著作”、“作者”、“朝代”任一項內(nèi) 容,都能正確地將著作名稱加入列表,在加入前能檢測列表中是否已有該部著作,如有,則 不予添加。如圖3-1所示為程序運行結(jié)果。
圖3-1 程序運行結(jié)果
㈢實驗步驟
⒈設(shè)計程序界面
創(chuàng)建一個C#應(yīng)用程序,添加控件及布局如圖3-2所示。窗體與控件的Text屬性設(shè)置如圖3-3所示。
圖3-2 界面設(shè)計
圖3-3 Text屬性設(shè)置
⒉ 設(shè)置對象屬性
代碼中用到的控件的Name屬性見表3-1。
表3-1 控件的Name屬性設(shè)置
將三個組合框的DropDownStyle屬性 57、值均設(shè)置為DropDownList,即只允許選擇不允許輸入。
在窗體設(shè)計器視圖選擇bookList控件,在屬性窗口選擇Items屬性,單擊字符串集合編輯器按鈕,打開“字符串集合編輯器”對話框,輸入預(yù)置著作列表,如圖3-4所示。
圖3-4預(yù)置著作列表
在窗體設(shè)計器視圖選擇cmbBook控件,在屬性窗口選擇Items屬性,單擊字符串集合編輯器按鈕,打開“字符串集合編輯器”對話框,輸入待添加的著作列表,如圖3-5所示。
圖3-5 待添加著作列表
在窗體設(shè)計器視圖選擇cmbAuthor控件,在屬性窗口選擇Items屬性,單擊字符串集合編輯器按鈕,打開“字符串集合編輯 58、器”對話框,輸入與著作相關(guān)的待添加的作者列表,如圖3-6所示。
圖3-6 待添加作者列表
在窗體設(shè)計器視圖選擇cmbDynasty控件,在屬性窗口選擇Items屬性,單擊字符串集合編輯器按鈕,打開“字符串集合編輯器”對話框,輸入與著作相關(guān)的待添加的朝代列表,如圖3-7所示。
圖3-7 待添加朝代列表
3.編寫事件代碼
找到窗體類定義代碼“public class Form1:Form",在其下的大括號下面聲明兩個數(shù)組列表,用于存放著作的作者與朝代數(shù)據(jù),代碼如下:
ArrayList author, dynasty;
59、 在主方法的下面聲明Find方法,用于判斷添加的著作在列表中是否已經(jīng)存在,代碼為:
public bool Find( )
{
if(bookList.Items.Count==0) //如果列表框為空,則返回false(可以添加)
return false;
int idx=bookList. SelectedIndex; //保存列表框當(dāng)前選擇項索引值(下標(biāo))
for(int i=0;i 60、)
bookList.SelectedIndex=i;
if (bookList.SelectedItem.ToString() == cmbBook.Text)
return true;
}
bookList. SelectedIndex=idx; //恢復(fù)列表框當(dāng)前選項索引值
return false; //未找到相同著作名,返回false(可以添加)
}
窗體的Load事件代碼為:
{ //實例化數(shù)組列表
author=new ArrayList( );
d 61、ynasty=new ArrayList( );
//為數(shù)組列表賦值,這些值與預(yù)置的著作名稱相對應(yīng)
author.Add("\n作者:司馬遷");dynasty.Add("\n朝代:漢朝");
author.Add("\n作者:曹雪芹");dynasty.Add("\n朝代:清朝");
author.Add("\n作者:羅貫中");dynasty.Add("\n朝代:明朝");
author.Add("\n作者:施耐庵");dynasty.Add("\n朝代:明朝");
author.Add("\n作者:吳承恩");dynasty.Add("\n 62、朝代:明朝");
author.Add("\n作者:李汝珍");dynasty.Add("\n朝代:清朝");
author.Add("\n作者:吳敬梓");dynasty.Add("\n朝代:清朝");
}
“刪除”按鈕的Click事件代碼為:
if(bookList. SelectedIndex==- 1) //如果沒有選擇項則不進(jìn)行任何操作
return,
author. Remove(author[bookList. SelectedIndex] ); //刪除對應(yīng)的作者
dynasty. Remove(dynasty[bo 63、okList. SelectedIndex]); //刪除對應(yīng)的朝代
//如果把下面語句放在前面,刪除后bookList.Selectedlndex值將改變,從而造成著作與作者及朝代不對應(yīng)
bookList. Items.Remove(bookList. SelectedItem); /刪除列表框中的著作名稱
“添加”按鈕的Click事件代碼為:
if(cmbBook.Text==""||Find()) //如果組合框沒有選項或選項在列表框中已存在,則不操作
return;
if(bookList.SelectedIndex==-1) //如果列表框沒有選 64、擇項,則執(zhí)行追加操作
{
bookList.Items.Add(cmbBook.Text);
author.Add("\n作者:"+cmbAuthor.Text);
dynasty.Add("\n朝代:"+cmbDynasty.Text);
}
else //否則執(zhí)行插入操作。注意插入操作的語句順序與刪除操作相同
{ author.Insert(bookList.SelectedIndex,"\n作者: "+cmbAuthor.Text);
dynasty.Insert(bookList.Selectedlndex,"\n朝代:"+cmbD 65、ynasty.Text);
bookList.Items.Insert(bookList.SelectedIndex,cmbBook.Text);
}
“顯示”按鈕的Click事件代碼為:
if(bookList. Selectedlndex==-l) //如果列表框中沒有選擇項,則不進(jìn)行任何操作
return;
lblShow.Text="著作:《"+bookList.SelectedItem+"》"+author[bookList.SelectedIndex]+
dynasty[bookList. SelectedIndex]; //顯示著 66、作名稱、作者、朝代
組合框中的選項采用連動選擇方式,即選擇其中任一組合框中的選項,則另兩個組合框自動選擇相應(yīng)項。該功能通過組合框的SelectdIndexChanged事件代碼實現(xiàn)。
private void cmbBook_SelectedIndexChanged(object sender, System.EventArgs e)
{
cmbAuthor.SelectedIndex=cmbDynasty. SelectedIndex=cmbBook.SelectedIndex;
}
private void cmbAuthor_SelectedIndexChanged(object sender, System. EventArgs e)
{
cmbBook. SelecteIndex=cmbDynasty.SelectedIndex=cmbAuthor.SelectedIndex;
}
private void cmbDynasty_SelectedlndexChanged(object sender, Sy
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 領(lǐng)導(dǎo)班子2024年度民主生活會對照檢查材料范文(三篇)
- 金融工作主題黨課講稿范文(匯編)
- 鍋爐必備學(xué)習(xí)材料
- 鍋爐設(shè)備的檢修
- 主題黨課講稿:走中國特色金融發(fā)展之路加快建設(shè)金融強國(范文)
- 鍋爐基礎(chǔ)知識:啟爐注意事項技術(shù)問答題
- 領(lǐng)導(dǎo)班子2024年度民主生活會“四個帶頭”對照檢查材料范文(三篇)
- 正常運行時影響鍋爐汽溫的因素和調(diào)整方法
- 3.鍋爐檢修模擬考試復(fù)習(xí)題含答案
- 司爐作業(yè)人員模擬考試試卷含答案-2
- 3.鍋爐閥門模擬考試復(fù)習(xí)題含答案
- 某公司鍋爐安全檢查表
- 3.工業(yè)鍋爐司爐模擬考試題庫試卷含答案
- 4.司爐工考試題含答案解析
- 發(fā)電廠鍋爐的運行監(jiān)視和調(diào)整