c#網(wǎng)絡(luò)編程及應(yīng)用課后答案(劉瑞新 著) 機(jī)械工業(yè)出版社

上傳人:馬*** 文檔編號(hào):81527527 上傳時(shí)間:2022-04-27 格式:DOC 頁數(shù):55 大小:251.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
c#網(wǎng)絡(luò)編程及應(yīng)用課后答案(劉瑞新 著) 機(jī)械工業(yè)出版社_第1頁
第1頁 / 共55頁
c#網(wǎng)絡(luò)編程及應(yīng)用課后答案(劉瑞新 著) 機(jī)械工業(yè)出版社_第2頁
第2頁 / 共55頁
c#網(wǎng)絡(luò)編程及應(yīng)用課后答案(劉瑞新 著) 機(jī)械工業(yè)出版社_第3頁
第3頁 / 共55頁

下載文檔到電腦,查找使用更方便

16 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《c#網(wǎng)絡(luò)編程及應(yīng)用課后答案(劉瑞新 著) 機(jī)械工業(yè)出版社》由會(huì)員分享,可在線閱讀,更多相關(guān)《c#網(wǎng)絡(luò)編程及應(yīng)用課后答案(劉瑞新 著) 機(jī)械工業(yè)出版社(55頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 1. C/S結(jié)構(gòu)模式與B/S結(jié)構(gòu)模式的主要區(qū)別是什么?   【解答】   首先,在系統(tǒng)的性能方面。只要擁有可上網(wǎng)的瀏覽器,就可以使用B/S系統(tǒng)。不過,B/S結(jié)構(gòu)的客戶端只能完成瀏覽、查詢、數(shù)據(jù)輸入等簡(jiǎn)單功能,絕大部分工作要由服務(wù)器承擔(dān),這就對(duì)服務(wù)器提出了很高的要求,無形中增加了用戶在這一方面的投入。采用C/S結(jié)構(gòu)時(shí),客戶端和服務(wù)器都承擔(dān)部分工作,有效利用了客戶端和服務(wù)器端的資源,使用戶不必在硬件上有更多的投入。另外,瀏覽器頁面不便于修改,這為用戶定制自己的文件時(shí)帶來了不便,比如用戶想自定義一個(gè)報(bào)表,用B/S結(jié)構(gòu)的系統(tǒng)就比較難完成。   其次,在系統(tǒng)的開發(fā)方面,C/S結(jié)構(gòu)的開發(fā)對(duì)開發(fā)

2、者提出了較高的要求,整個(gè)開發(fā)過程比較復(fù)雜。與B/S結(jié)構(gòu)相比,C/S技術(shù)的歷史更為“悠久”,從技術(shù)成熟度和開發(fā)人員普遍掌握的水平來看更為成熟。   第三,系統(tǒng)升級(jí)方面。C/S結(jié)構(gòu)中若有某一模塊發(fā)生改變,可能要關(guān)聯(lián)到其它模塊的變動(dòng),使系統(tǒng)升級(jí)的成本較大;而B/S結(jié)構(gòu)在開發(fā)、維護(hù)階段幾乎所有的工作都集中在服務(wù)器端,只需更新服務(wù)器端的軟件就可以了。如果系統(tǒng)升級(jí)比較頻繁,那么B/S架構(gòu)的產(chǎn)品就具有維護(hù)工作量少的優(yōu)勢(shì)。   第四,安全性方面。在安全性上,B/S結(jié)構(gòu)則略顯不足,畢竟現(xiàn)在網(wǎng)絡(luò)安全系數(shù)不高,只要擁有密碼,任何人都可以進(jìn)入到用戶的系統(tǒng)中;而C/S結(jié)構(gòu)由于需要特定的客戶端軟件,并且一般來說都要對(duì)

3、客戶端加密,甚至可以限定只有某一臺(tái)計(jì)算機(jī)可以使用這個(gè)客戶端,因而對(duì)安全性有更多的保障。   2. 可以用C#編寫哪些類型的應(yīng)用程序?   【解答】   1) 控制臺(tái)應(yīng)用程序。   2) Windows應(yīng)用程序。   3) 水晶報(bào)表應(yīng)用程序。   4) ASP.NET Web應(yīng)用程序。   5) ASP.NET Web服務(wù)應(yīng)用程序。   6) ASP.NET 水晶報(bào)表Web應(yīng)用程序。   7) 智能設(shè)備應(yīng)用程序。   3. 什么是命名空間?命名空間和類庫的關(guān)系是什么?   【解答】   1) 名稱空間是對(duì)類的一種邏輯上的分組,即將類按照某種關(guān)系或聯(lián)系劃分到不同的名稱空間下

4、。   2) 名稱空間又可以包含其它的名稱空間,例如System.Windows.Forms,是指System名稱空間下有Windows名稱空間,Windows名稱空間下有Forms名稱空間。 3) 所有類庫都在規(guī)定的名稱空間下。 1. C#支持的數(shù)據(jù)類型有那些?與C++相比有哪些特點(diǎn)?   【解答】   C#支持的數(shù)據(jù)類型有:   (1) 值類型   包括:簡(jiǎn)單類型、結(jié)構(gòu)類型、枚舉類型。其中,簡(jiǎn)單類型又分為:整型、布爾型、字符型、浮點(diǎn)型、小數(shù)型。   (2) 引用類型   包括:對(duì)象類型、類類型、接口、元數(shù)據(jù)、字符串類型、數(shù)組。   與C++相比,C#的主要特點(diǎn)有:

5、   1) C#語言自C/C++演變而來。但是,它是完全按照面向?qū)ο蟮乃枷雭碓O(shè)計(jì)的,并保證了類型的安全性。   2) C#簡(jiǎn)化了C++在類、名稱空間、方法重載和異常處理等方面的使用。摒棄了C++的復(fù)雜性,使它更易用、更少出錯(cuò)。   3) C#減少了C++的一些特性,不再有宏、多重繼承。特別對(duì)企業(yè)開發(fā)者來說,上述功能只會(huì)產(chǎn)生更多的麻煩而不是效益。   4) C#采用嚴(yán)格的類型安全、版本控制、垃圾收集(garbage collect)等等。所有的這些功能的目標(biāo)都是瞄準(zhǔn)了開發(fā)面向組件的軟件開發(fā)。   5) C#中不再有“::”、“.”、和“->”操作符,僅使用單個(gè)操作符“.”。   6)

6、 C#使用統(tǒng)一的類型系統(tǒng),摒棄了C++多變的類型系統(tǒng)。   7) 在C#中,不能在類的外部定義全局函數(shù)、變量或者是常量等。所有的東西都必須封裝在類中,包括實(shí)例成員或靜態(tài)成員。從而使C#代碼更加易讀且有助于減少潛在的命名沖突。   8) 在C#中,不能使用沒有初始化的變量。從而避免了由于使用不經(jīng)初始化的變量而導(dǎo)致的計(jì)算結(jié)果錯(cuò)誤。   2. C#語言中,值類型和引用類型有何不同?   【解答】   值類型和引用類型的區(qū)別在于,值類型的變量直接存放實(shí)際的數(shù)據(jù),而引用類型的變量存放的則是數(shù)據(jù)的地址,即對(duì)象的引用。   值類型變量直接把變量的值保存在堆棧中,引用類型的變量把實(shí)際數(shù)據(jù)的地址保存

7、在堆棧中,而實(shí)際數(shù)據(jù)則保存在堆中。注意,堆和堆棧是兩個(gè)不同的概念,在內(nèi)存中的存儲(chǔ)位置也不相同,堆一般用于存儲(chǔ)可變長(zhǎng)度的數(shù)據(jù),如字符串類型;而堆棧則用于存儲(chǔ)固定長(zhǎng)度的數(shù)據(jù),如整型類型的數(shù)據(jù)int(每個(gè)int變量占用四個(gè)字節(jié))。由數(shù)據(jù)存儲(chǔ)的位置可以得知,當(dāng)把一個(gè)值變量賦給另一個(gè)值變量時(shí),會(huì)在堆棧中保存兩個(gè)完全相同的值;而把一個(gè)引用變量賦給另一個(gè)引用變量,則會(huì)在堆棧中保存對(duì)同一個(gè)堆位置的兩個(gè)引用,即在堆棧中保存的是同一個(gè)堆的地址。在進(jìn)行數(shù)據(jù)操作時(shí),對(duì)于值類型,由于每個(gè)變量都有自己的值,因此對(duì)一個(gè)變量的操作不會(huì)影響到其它變量;對(duì)于引用類型的變量,對(duì)一個(gè)變量的數(shù)據(jù)進(jìn)行操作就是對(duì)這個(gè)變量在堆中的數(shù)據(jù)進(jìn)行操

8、作,如果兩個(gè)引用類型的變量引用同一個(gè)對(duì)象,實(shí)際含義就是它們?cè)诙褩V斜4娴亩训牡刂废嗤?,因此?duì)一個(gè)變量的操作就會(huì)影響到引用同一個(gè)對(duì)象的另一個(gè)變量。   3. 結(jié)構(gòu)和類的區(qū)別是什么?   【解答】   1) 結(jié)構(gòu)是一個(gè)值類型,保存在棧上,而類是一個(gè)引用類型,保存在受管制的堆上。   2) 對(duì)結(jié)構(gòu)中的數(shù)據(jù)進(jìn)行操作比對(duì)類或?qū)ο笾械臄?shù)據(jù)進(jìn)行操作速度要快。   3) 一般用結(jié)構(gòu)存儲(chǔ)多種類型的數(shù)據(jù),當(dāng)創(chuàng)建一個(gè)很多類或?qū)ο蠊灿玫男⌒蛯?duì)象時(shí),使用結(jié)構(gòu)效率更高。   4. C#中的數(shù)組類型有何特點(diǎn)?   【解答】   1) 數(shù)組一般用于存儲(chǔ)同一種類型的數(shù)據(jù),包括Object類型。   2) 數(shù)組

9、是一種引用類型,而不是值類型。   3) C#中除了可以有一維數(shù)組、多維數(shù)組外,還有交錯(cuò)型數(shù)組。   5. C#中不同整型之間進(jìn)行轉(zhuǎn)換的原則是什么?   【解答】   在整型之間進(jìn)行轉(zhuǎn)換時(shí),小范圍類型可以隱式轉(zhuǎn)換為大范圍類型,但大范圍類型轉(zhuǎn)換為小范圍類型時(shí)需要使用顯式轉(zhuǎn)換。   6. 簡(jiǎn)述裝箱和拆箱的過程。   【解答】   裝箱是將值類型隱式地轉(zhuǎn)換為object類型或者轉(zhuǎn)換為由該值類型實(shí)現(xiàn)了的接口類型。裝箱一個(gè)數(shù)值會(huì)為其分配一個(gè)對(duì)象實(shí)例,并把該數(shù)值拷貝到新對(duì)象中。拆箱是顯式地把object類型轉(zhuǎn)換成值類型,或者把值類型實(shí)現(xiàn)了的接口類型轉(zhuǎn)換成該值類型。   7. 下列寫法哪些是

10、錯(cuò)誤的?為什么?   1) if (nMyValue1=5) i=1;   2) if(nMyValue2==1)i=1;   3) int[] myInt={1,2,3};   foreach(int test in myInt)   {   test++;   Console.WriteLine(temp);   }   4) int[] myInt1={1,2,3};   foreach(int test in myInt1)   {   Console>WriteLine(test);   }   【解答】   1) 錯(cuò)誤。if中的條件表達(dá)式結(jié)果不是布爾型

11、。   2) 正確。   3) 錯(cuò)誤一:temp沒有定義。   錯(cuò)誤二:在foreach塊內(nèi),test作為枚舉成員是只讀的,不能使用test++修改其值。   4) 錯(cuò)誤。Console后應(yīng)該是點(diǎn),而不應(yīng)該是大于號(hào)。   8. 錯(cuò)誤和異常有什么區(qū)別,為什么要進(jìn)行異常處理,用于異常處理的語句有哪些?   【解答】   錯(cuò)誤是指在執(zhí)行代碼過程中發(fā)生的事件,它中斷或干擾代碼的正常流程并創(chuàng)建異常對(duì)象。當(dāng)錯(cuò)誤中斷流程時(shí),該程序?qū)L試尋找異常處理程序(一段告訴程序如何對(duì)錯(cuò)誤做出響應(yīng)的代碼),以幫助程序恢復(fù)流程。換句話說,錯(cuò)誤是一個(gè)事件,而異常是該事件創(chuàng)建的對(duì)象。   當(dāng)使用短語“產(chǎn)生異?!?/p>

12、時(shí),表示存在問題的方法發(fā)生錯(cuò)誤,并創(chuàng)建異常對(duì)象(包含該錯(cuò)誤的信息及發(fā)生的時(shí)間和位置)來響應(yīng)該錯(cuò)誤。導(dǎo)致出現(xiàn)錯(cuò)誤和隨后異常的因素包括用戶錯(cuò)誤、資源失敗和編程邏輯失敗。這些錯(cuò)誤與代碼實(shí)現(xiàn)特定任務(wù)的方法有關(guān),而與該任務(wù)的目的無關(guān)。   如果不進(jìn)行異常處理,即不對(duì)錯(cuò)誤做出響應(yīng),程序的健壯性就會(huì)大打折扣,甚至無法保證正常運(yùn)行,所以必須要進(jìn)行異常處理。   用于異常處理的語句有:try-catch語句、try-catch-finally語句、throw語句。   9. 編寫一個(gè)控制臺(tái)應(yīng)用程序,輸出1到5的平方值,要求:   1) 用for語句實(shí)現(xiàn)。   2) 用while語句實(shí)現(xiàn)。   3)

13、用do-while語句實(shí)現(xiàn)。   【解答】 以下是引用片段:   using System;   using System.Collections.Generic;   using System.Text;   namespace outputSquareValue   {   class Program   {   static void Main()   {   //用for語句實(shí)現(xiàn)   for (int i = 1; i <= 5; i++)   {   Console.WriteLine("{0}的平方值為{1}", i, i *

14、i);   }   //用while語句實(shí)現(xiàn)   int j = 0;   while (j++ < 5)   {   Console.WriteLine("{0}的平方值為{1}", j, j * j);   }   //用do-while語句實(shí)現(xiàn)   int k = 1;   do   {   Console.WriteLine("{0}的平方值為{1}", k, k * k);   } while (k++ < 5);   Console.ReadLine();   }   }   }   10. 編寫一個(gè)控制臺(tái)應(yīng)

15、用程序,要求用戶輸入5個(gè)大寫字母,如果用戶輸入的信息不滿足要求,提示幫助信息并要求重新輸入。   【解答】 以下是引用片段:   using System;   using System.Collections.Generic;   using System.Text;   namespace inputCapitalLetter   {   class Program   {   static void Main()   {   bool ok = false;   while (ok == false)   {   Console.Wr

16、ite("請(qǐng)輸入5個(gè)大寫字母:");   string str = Console.ReadLine();   if (str.Length != 5)   {   Console.WriteLine("你輸入的字符個(gè)數(shù)不是5個(gè),請(qǐng)重新輸入。");   }   else   {   ok = true;   for (int i = 0; i < 5; i++)   {   char c = str[i];   if (c < 'A' || c > 'Z')   {   Console.WriteLine("第{0}個(gè)字符“{1}”不是大

17、寫字母,請(qǐng)重新輸入。", i + 1, c);   ok = false;   break;   }   }   }   }   }   }   }   11. 編寫一個(gè)控制臺(tái)應(yīng)用程序,要求完成下列功能。   1) 接收一個(gè)整數(shù)n。   2) 如果接收的值n為正數(shù),輸出1到n間的全部整數(shù)。   3) 如果接收的值為負(fù)值,用break或者return退出程序。   4) 轉(zhuǎn)到(1)繼續(xù)接收下一個(gè)整數(shù)。   【解答】 以下是引用片段:   using System;   using System.Collections.Generic;

18、  using System.Text;   namespace testOutput   {   class Program   {   static void Main()   {   while (true)   {   Console.Write("請(qǐng)輸入一個(gè)整數(shù)(負(fù)值結(jié)束):");   string str = Console.ReadLine();   try   {   int i = Int32.Parse(str);   if (i < 0) break;   for (int j = 1; j <= i; j++)

19、 Console.WriteLine(j);   }   catch   {   Console.WriteLine("你輸入的不是數(shù)字或超出整數(shù)的表示范圍,請(qǐng)重新輸入");   }   }   }   }   }   12. 編寫一個(gè)控制臺(tái)應(yīng)用程序,求1000之內(nèi)的所有“完數(shù)”。所謂“完數(shù)”是指一個(gè)數(shù)恰好等于它的所有因子之和。例如,6是完數(shù),因?yàn)?=1+2+3。   【解答】 以下是引用片段:   using System;   using System.Collections.Generic;   using System.Text;

20、   namespace completeNumber   {   class Program   {   static void Main(string[] args)   {   for (int i = 2; i <= 1000; i++)   {   int s = 1;   string str = "1";   for (int j = 2; j <= (int)Math.Sqrt(i); j++)   {   if (j * (i / j) == i)   {   if (j != i / j)   {   s

21、+= j + i / j;   str += string.Format("+{0}+{1}", j, i / j);   }   else   {   s += j;   str += string.Format("+{0}", j);   }   }   }   if (s == i) Console.WriteLine("{0}={1}", i, str);   }   Console.ReadLine();   }   }   } 1. 編寫一個(gè)控制臺(tái)應(yīng)用程序,完成下列功能。   1) 創(chuàng)建一個(gè)類,用無參數(shù)的構(gòu)造函數(shù)輸出該

22、類的類名。   2) 增加一個(gè)重載的構(gòu)造函數(shù),帶有一個(gè)string類型的參數(shù),在此構(gòu)造函數(shù)中將傳遞的字符串打印出來。   3) 在Main方法中創(chuàng)建屬于這個(gè)類的一個(gè)對(duì)象,不傳遞參數(shù)。   4) 在Main方法中創(chuàng)建屬于這個(gè)類的另一個(gè)對(duì)象,傳遞一個(gè)字符串“This is a string.”。   5) 在Main方法中聲明類型為這個(gè)類的一個(gè)具有5個(gè)對(duì)象的數(shù)組,但不要實(shí)際創(chuàng)建分配到數(shù)組里的對(duì)象。   6) 寫出運(yùn)行程序應(yīng)該輸出的結(jié)果。   【解答】 以下是引用片段:   using System;   class Test1   {   public Test1()

23、   {   Console.WriteLine(this);   }   public Test1(string str)   {   Console.WriteLine(str);   }   public static void Main()   {   Test1 t1 = new Test1();   Test1 t2 = new Test1("This is a string.");   Test1[] t3 = new Test1[5];   }   }   輸出結(jié)果:   Test1   This is a str

24、ing.   2. 編寫一個(gè)控制臺(tái)應(yīng)用程序,定義一個(gè)類MyClass,類中包含有public、private以及protected數(shù)據(jù)成員及方法。然后定義一個(gè)從MyClass類繼承的類MyMain,將Main方法放在MyMain中,在Main方法中創(chuàng)建MyClass類的一個(gè)對(duì)象,并分別訪問類中的數(shù)據(jù)成員及方法。要求注明在試圖訪問所有類成員時(shí)哪些語句會(huì)產(chǎn)生編譯錯(cuò)誤。   【解答】 以下是引用片段:   using System;   class MyClass   {   public int i;   private int j;   protected int k

25、;   public void method1()   {   Console.WriteLine("public method.");   }   private void method2()   {   Console.WriteLine("private method.");   }   protected void method3()   {   Console.WriteLine("protected method.");   }   }   class MyMain : MyClass   {   public sta

26、tic void Main()   {   MyClass t = new MyClass();   Console.WriteLine("i={0}", t.i);   Console.WriteLine("j={0}", t.j); //會(huì)出現(xiàn)編譯錯(cuò)誤,私有成員不允許在其它類中訪問   Console.WriteLine("k={0}", t.k); //會(huì)出現(xiàn)編譯錯(cuò)誤,應(yīng)該創(chuàng)建MyMain的對(duì)象,然   //后通過MyMain的對(duì)象訪問   t.method1();   t.method2(); //會(huì)出現(xiàn)編譯錯(cuò)誤,私有的方法不允許在其它類中調(diào)用   

27、t.method3(); //會(huì)出現(xiàn)編譯錯(cuò)誤,應(yīng)該創(chuàng)建MyMain的對(duì)象,然后通過MyMain的   //對(duì)象調(diào)用該方法   }   }   3. 創(chuàng)建一個(gè)類包含有protected數(shù)據(jù)。在相同的文件里創(chuàng)建第二個(gè)類,用一個(gè)方法操縱第一個(gè)類里的protected數(shù)據(jù)。   【解答】 以下是引用片段:   using System;   class Class1   {   protected int i = 5;   protected void MyMethod()   {   Console.WriteLine("protected method.

28、");   }   }   class Class2 : Class1   {   private void NewMethod()   {   Console.WriteLine(this.i);   this.i += 10;   Console.WriteLine(this.i);   }   public static void Main()   {   Class2 t = new Class2();   t.NewMethod();   }   }   4. 分別寫出下列語句執(zhí)行的結(jié)果。   1) Consol

29、e.WriteLine("{0}--{0:p}good",12.34F);   2) Console.WriteLine("{0}--{0:####}good",0);   3) Console.WriteLine("{0}--{0:00000}good",456);   【解答】   12.34--1,234.00%good   0--good   456--00456good   5. 編寫一個(gè)控制臺(tái)應(yīng)用程序,計(jì)算   要求精度為10-8。   【解答】 以下是引用片段:   using System;   class Test5   {   public

30、 static void Main()   {   int n = 50;   double x = 3;   double s = 0;   double a = 1;   for (int i = 1; i <= n; i++)   {   a *= i;   s += Math.Pow(-1, i + 1) * Math.Pow(x, i) / a;   }   Console.WriteLine("n={0},s={1:0.00000000}", n, s);   }   }   6. 編寫一個(gè)控制臺(tái)應(yīng)用程序,接收一個(gè)長(zhǎng)度大于3的字

31、符串,完成下列功能   1) 輸出字符串的長(zhǎng)度。   2) 輸出字符串中第一個(gè)出現(xiàn)字母a的位置。   3) 在字符串的第3個(gè)字符后面插入子串“hello”,輸出新字符串。   4) 將字符串“hello”替換為“me”,輸出新字符串。   5) 以字符“m”為分隔符,將字符串分離,并輸出分離后的字符串。   【解答】 以下是引用片段:   using System;   class Test6   {   public static void Main()   {   string str = "";   while (str.Length <= 3)

32、   {   Console.Write("請(qǐng)輸入一個(gè)長(zhǎng)度大于3的字符串:");   str = Console.ReadLine();   }   //(1)   Console.WriteLine("字符串的長(zhǎng)度為:{0}", str.Length);   //(2)   int i = str.IndexOf('a');   if (i > -1)   {   Console.WriteLine("第一個(gè)出現(xiàn)字母a的位置是:{0}", i);   }   else   {   Console.WriteLine("字符串中不包含字

33、母a。");   }   //(3)   string str1 = str.Insert(3, "hello"); //在第3個(gè)(初始序號(hào)為)字符前插入hello   Console.WriteLine("插入hello后的結(jié)果為:{0}", str1);   //(4)   string str2 = str1.Replace("hello", "me");   Console.WriteLine("將hello替換為me后的結(jié)果為:{0}", str2);   //(5)   string[] arr = str2.Split('m');   Co

34、nsole.WriteLine("以m為分隔符分離后的字符串有:");   for (int j = 0; j < arr.Length; j++)   {   Console.WriteLine(arr[j]);   }   }   } 1. 使用保持連接的方式編寫程序,計(jì)算各年級(jí)平均成績(jī),并顯示結(jié)果。   【解答】 以下是引用片段:   using System;   using System.Collections.Generic;   using System.ComponentModel;   using System.Data;   

35、using System.Drawing;   using System.Text;   using System.Windows.Forms;   using System.Data.SqlClient;   namespace 習(xí)題8_6_1   {   public partial class Form1 : Form   {   public Form1()   {   InitializeComponent();   }   //添加Button按鈕在ListBox中顯示結(jié)果   private void button1_Click

36、(object sender, EventArgs e)   {   listBox1.Items.Add("年級(jí) 平均成績(jī)");   string connectionString = Properties.Settings.Default.MyDatabaseConnectionString;   //根據(jù)連接字符串創(chuàng)建SqlConnection實(shí)例   SqlConnection conn = new SqlConnection(connectionString);   //創(chuàng)建SqlCommand實(shí)例,并設(shè)置SQL語句和使用的連接實(shí)例   SqlComman

37、d cmd = new SqlCommand();   cmd.CommandText = "select substring(學(xué)號(hào),1,2) as 年級(jí),avg(成績(jī)) as 平均成績(jī) from MyTable2 group by substring(學(xué)號(hào),1,2)";   cmd.Connection = conn;   try   {   conn.Open();   SqlDataReader r = cmd.ExecuteReader();   while (r.Read() == true)   {   listBox1.Items.Add(st

38、ring.Format("{0}級(jí) {1}", r[0], r[1]));   }   r.Close();   }   catch (Exception err)   {   MessageBox.Show(err.Message, "計(jì)算成績(jī)失敗");   }   finally   {   conn.Close();   }   }   }   }   2. 使用保持連接的方式編寫程序,查詢MyTable2中不及格學(xué)生的學(xué)號(hào),姓名,性別,成績(jī)。并將結(jié)果在ListBox中顯示出來。   【解答】 以下是引用片段:   usin

39、g System;   using System.Collections.Generic;   using System.ComponentModel;   using System.Data;   using System.Drawing;   using System.Text;   using System.Windows.Forms;   using System.Data.SqlClient;   namespace 習(xí)題8_6_2   {   public partial class Form1 : Form   {   public

40、 Form1()   {   InitializeComponent();   }   private void button1_Click(object sender, EventArgs e)   {   listBox1.Items.Add(" 學(xué)號(hào) 姓名 性別 成績(jī)");   string connectionString = Properties.Settings.Default.MyDatabaseConnectionString;   //根據(jù)連接字符串創(chuàng)建SqlConnection實(shí)例   SqlConnection conn = new S

41、qlConnection(connectionString);   //創(chuàng)建SqlCommand實(shí)例,并設(shè)置SQL語句和使用的連接實(shí)例   SqlCommand cmd = new SqlCommand();   cmd.CommandText =   "Select 學(xué)號(hào),姓名,性別, 成績(jī) From MyTable2 Where (成績(jī)<60)";   cmd.Connection = conn;   try   {   conn.Open();   SqlDataReader r = cmd.ExecuteReader();   while (r.

42、Read() == true)   {   listBox1.Items.Add( string.Format("{0} {1} {2} {3}", r[0], r[1], r[2], r[3]));   }   r.Close();   }   catch (Exception err)   {   MessageBox.Show(err.Message, "查詢成績(jī)失敗");   }   finally   {   conn.Close();   }   }   }   }   3. 編寫程序,以“[編碼]名稱”的樣式在co

43、mboBox1中顯示MyTable1的內(nèi)容。   【解答】 以下是引用片段:   using System;   using System.Collections.Generic;   using System.ComponentModel;   using System.Data;   using System.Drawing;   using System.Text;   using System.Windows.Forms;   using System.Data.SqlClient;   namespace 習(xí)題8_6_3   {   pu

44、blic partial class Form1 : Form   {   public Form1()   {   InitializeComponent();   }   private void Form1_Load(object sender, EventArgs e)   {   string connectionString = Properties.Settings.Default.MyDatabaseConnectionString;   //根據(jù)連接字符串創(chuàng)建SqlConnection實(shí)例   SqlConnection conn =

45、new SqlConnection(connectionString);   //創(chuàng)建SqlCommand實(shí)例,并設(shè)置SQL語句和使用的連接實(shí)例   SqlCommand cmd = new SqlCommand();   cmd.CommandText = "Select * From MyTable1";   cmd.Connection = conn;   try   {   conn.Open();   SqlDataReader r = cmd.ExecuteReader();   while (r.Read() == true)   {

46、  comboBox1.Items.Add(string.Format("[{0}] {1}", r[0], r[1]));   }   comboBox1.SelectedIndex = 0;   r.Close();   }   catch (Exception err)   {   MessageBox.Show(err.Message, "顯示數(shù)據(jù)失敗");   }   finally   {   conn.Close();   }   }   }   }   4. 在畫線處填上合適的內(nèi)容,使程序變得正確完整。 以下是引用

47、片段:   string connString="server=localhost;Integrated Security=SSPI;database=pubs";   SqlConnection conn=____________________________   string strsql="select * from MyTable2";   SqlDataAdapter adapter=new SqlDataAdapter(_____________);   dataset=new DataSet();   adapter.Fill(______________

48、__,"MyTable2");   this.dataGridView1.DataSource=dataset.Tables["MyTable2"];   【解答】 以下是引用片段:   string connString="server=localhost;Integrated Security=SSPI;database=pubs";   SqlConnection conn= new SqlConnection(Properties.Settings.Default.MyDatabaseConnectionString);   string strsql="sele

49、ct * from MyTable2";   SqlDataAdapter adapter=new SqlDataAdapter(conn);   dataset=new DataSet();   adapter.Fill(dataset,"MyTable2");   this.dataGridView1.DataSource=dataset.Tables["MyTable2"];   5. 已知數(shù)據(jù)庫中定義了一張person表,表的數(shù)據(jù)結(jié)構(gòu)如下:   字段名稱字段類型字段含義   id數(shù)字編號(hào)   xm文本姓名   xb文本性別   nl數(shù)字年齡   zip

50、文本郵政編碼   用編寫代碼的方法在DataGridView中顯示該數(shù)據(jù)表中年齡大于18的所有紀(jì)錄,顯示時(shí)以編號(hào)的升序排序,要求禁止用戶編輯數(shù)據(jù)。   【解答】 以下是引用片段:   using System;   using System.Collections.Generic;   using System.ComponentModel;   using System.Data;   using System.Drawing;   using System.Text;   using System.Windows.Forms;   using Syste

51、m.Data.SqlClient;   namespace 習(xí)題8_6_5   {   public partial class Form1 : Form   {   public Form1()   {   InitializeComponent();   }   private void button1_Click(object sender, EventArgs e)   {   string connectionstring = Properties.Settings.Default.MyDatabaseConnectionString ;

52、   SqlConnection conn = new SqlConnection(connectionstring);   try   {   conn.Open();   SqlDataAdapter adapter = new SqlDataAdapter(   "select id,xm,xb,nl from person where nl > 18 order by id", conn);   DataSet dataset = new DataSet();   //如果不指定表名,則系統(tǒng)自動(dòng)生成一個(gè)默認(rèn)的表名   adapter.Fill(data

53、set, "person");   //可以使用索引引用生成的表   dataGridView1.DataSource = dataset.Tables["person"];   adapter.Dispose();   }   catch (Exception err)   {   MessageBox.Show(err.Message);   }   finally   {   conn.Close();   }   }   private void Form1_Load(object sender, EventArgs e)  

54、 {   //不允許用戶直接在最下面的行添加新行   dataGridView1.AllowUserToAddRows = false;   //不允許用戶直接按Delete鍵刪除行   dataGridView1.AllowUserToDeleteRows = false;   }   }   }   6.例8-18的存儲(chǔ)過程定義中,將“@surname nvarchar(2),”改為“@surname nchar(2),”,是否仍然能夠得到正確結(jié)果,為什么?   【解答】   不一定。因?yàn)槿绻麄鬟f的參數(shù)值為“王”,在存儲(chǔ)過程中會(huì)自動(dòng)變?yōu)椤巴?”。   7

55、. 調(diào)用存儲(chǔ)過程,設(shè)計(jì)程序完成下列功能:任意給出一個(gè)漢字,統(tǒng)計(jì)MyTable2中所有包含該漢字的人數(shù),并顯示統(tǒng)計(jì)結(jié)果。   【解答】 以下是引用片段:   using System;   using System.Collections.Generic;   using System.ComponentModel;   using System.Data;   using System.Drawing;   using System.Text;   using System.Windows.Forms;   using System.Data.SqlClien

56、t;   namespace 習(xí)題8_6_7   {   public partial class Form1 : Form   {   public Form1()   {   InitializeComponent();   }   private void button1_Click(object sender, EventArgs e)   {   SqlConnection conn =   new SqlConnection(Properties.Settings.Default.MyDatabaseConnectionString)

57、;   SqlCommand cmd = new SqlCommand();   cmd.Connection = conn;   //設(shè)置SQL語句為存儲(chǔ)過程名,命令類型為存儲(chǔ)過程   cmd.CommandText = "SelectFilterStudentsNum";   cmd.CommandType = CommandType.StoredProcedure;   //添加存儲(chǔ)過程中參數(shù)需要的初始值,注意參數(shù)名要和存儲(chǔ)過程定義的參數(shù)名相同   if( textBox1.Text=="")   {   MessageBox.Show("請(qǐng)輸入有效信

58、息","錯(cuò)誤");   textBox1.Focus();   return ;   }   cmd.Parameters.AddWithValue("@surname", textBox1.Text);   cmd.Parameters.AddWithValue("@record", 0);   //指定哪些參數(shù)需要返回結(jié)果   cmd.Parameters["@record"].Direction = ParameterDirection.Output;   try   {   conn.Open();   //執(zhí)行存儲(chǔ)過程   cmd.Ex

59、ecuteNonQuery();   //顯示返回的結(jié)果   MessageBox.Show(string.Format("有{0}條含 {1} 的記錄",   cmd.Parameters["@record"].Value,textBox1.Text));   }   catch (Exception err)   {   MessageBox.Show(err.Message);   }   finally   {   conn.Close();   }   }   }   } 1. 簡(jiǎn)述三類二維坐標(biāo)系統(tǒng)之間的相同點(diǎn)和區(qū)別。

60、   【解答】   GDI+中的二維笛卡兒坐標(biāo)系統(tǒng)分為三類:全局坐標(biāo)系統(tǒng)、頁面坐標(biāo)系統(tǒng)和設(shè)備坐標(biāo)系統(tǒng)。   三類坐標(biāo)系統(tǒng)的相同點(diǎn):它們都有坐標(biāo)原點(diǎn)以及向右和向下的x軸和y軸。   三類坐標(biāo)系統(tǒng)的區(qū)別:全局坐標(biāo)系統(tǒng)可以進(jìn)行旋轉(zhuǎn)、平移等操作。頁面坐標(biāo)系統(tǒng)與設(shè)備坐標(biāo)系統(tǒng)都是以設(shè)備的左上角為坐標(biāo)原點(diǎn),X水平向右為正,Y垂直向下為正。頁面坐標(biāo)系統(tǒng)與設(shè)備坐標(biāo)系統(tǒng)的差異在于X,Y的單位不同:頁面坐標(biāo)系中的X,Y單位可以任意設(shè)定,如英寸、毫米等;而設(shè)備坐標(biāo)系中,只有一種單位,那就是點(diǎn)(point)或者像素(pixel)。頁面坐標(biāo)系是不能更改的,它是一個(gè)參照標(biāo)準(zhǔn),將全局坐標(biāo)最終轉(zhuǎn)換為設(shè)備坐標(biāo)。   2

61、. 簡(jiǎn)述創(chuàng)建Graphics類對(duì)象的三種方法。   【解答】   (1) 在窗體或控件的Paint事件中直接引用Graphics對(duì)象。在為窗體創(chuàng)建繪制代碼時(shí),一般使用此方法獲取對(duì)圖像的引用。   (2) 從當(dāng)前窗體獲取對(duì)Graphics對(duì)象的引用。注意這種對(duì)象只有在處理當(dāng)前Windows窗體消息的過程中有效。如果想在已經(jīng)存在的窗體或控件中繪圖,可以使用此種方法。   (3) 從繼承自圖像的任何對(duì)象創(chuàng)建Graphics對(duì)象。這個(gè)方法適用于需要更改已經(jīng)存在的   圖像。   3. 同時(shí)創(chuàng)建多個(gè)矩形并用紅黑相間的顏色進(jìn)行填充。   【解答】   (1) 新建一個(gè)Windows應(yīng)用程序

62、,命名為“FillMultiRectangle”,調(diào)整窗體到適當(dāng)大小。更改“Form1.cs”為“FormFillMultiRectangle.cs”。   (2) 切換到代碼方式,添加名稱空間引用:   using System.Drawing.Drawing2D;   (3) 雙擊窗體的屬性面板里事件頁中的Paint事件,添加FormFillMultiRectangle_Paint事件代碼。 以下是引用片段:   private void FormFillMultiRetangle_Paint(object sender, PaintEventArgs e)   {   

63、 Graphics g = e.Graphics;   HatchBrush mybrush=new HatchBrush (HatchStyle.Cross,Color .Red,Color .Black);   Rectangle[] rect=   {   new Rectangle( 0, 0, 50, 100),   new Rectangle(50,100, 100, 50),   new Rectangle(150, 150, 50, 100),   };   g.FillRectangles(mybrush, rect);   g.Dispo

64、se();   }   (4) 結(jié)果如圖所示。   4. 使用Label控件分別以矩形、橢圓和圓形的方式顯示圖片,并保證圖片完全由繪制對(duì)象的邊框決定。   【解答】   (1)新建一個(gè)Windows應(yīng)用程序,命名為“ShowImageExe”,調(diào)整窗體到適當(dāng)大小。更改“Form1.cs”為“FromShowImageExe.cs”。   (2)切換到代碼方式,添加名稱空間引用:   using System.Drawing.Drawing2D;   (3) 添加四個(gè)Button控件分別命名為“buttonOpenFile”、“buttonRectangle”、“but

65、tonEllipse”、“buttonRound”,以及一個(gè)openFileDiolog和label控件。   (4)在Form類下聲明兩個(gè)私有變量filename和flag,分別用來記錄打開的文件名和判斷哪個(gè)按鈕的click時(shí)間被觸發(fā)。   private string filename = "";   private int flag = 0;   (5) 添加【打開文件】按鈕的click事件 以下是引用片段:   private void buttonOpenFile_Click(object sender, EventArgs e)   {   openFileDi

66、alog1.ShowDialog();   filename = openFileDialog1.FileName;   label1.Refresh();   } (6) 在label1控件的paint事件下添加如下代碼: 以下是引用片段:   private void label1_Paint(object sender, PaintEventArgs e)   {   if (filename.Trim() == "")   return;   Bitmap mybitmap = new Bitmap(filename);   Graphics g = e.Graphics;   TextureBrush mybrush = new TextureBrush(mybitmap,WrapMode.Clamp);   //保證圖片完全由繪制對(duì)象的邊框決定   switch (flag)   {   case 1:   g.FillRectangle(mybrush, label1.ClientRectangle);  

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!