河北工業(yè)大學(xué).NET程序設(shè)計C#實驗報告實驗三.docx_第1頁
河北工業(yè)大學(xué).NET程序設(shè)計C#實驗報告實驗三.docx_第2頁
河北工業(yè)大學(xué).NET程序設(shè)計C#實驗報告實驗三.docx_第3頁
河北工業(yè)大學(xué).NET程序設(shè)計C#實驗報告實驗三.docx_第4頁
河北工業(yè)大學(xué).NET程序設(shè)計C#實驗報告實驗三.docx_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、. C#.net 實驗報告:王璐學(xué)號:142871日期:2016/04/24實驗名稱 :面向?qū)ο缶幊坛煽儯篴.實驗一類和對象編程一、實驗?zāi)康募耙蟆緦嶒災(zāi)康摹?.如何創(chuàng)建類和對象。2.如何為定義的類編寫相應(yīng)的方法。3.如何通過屬性訪問對象中的數(shù)據(jù)【實驗要求】1.寫出程序,并調(diào)試程序,要給出測試數(shù)據(jù)和實驗結(jié)果。2.整理上機步驟,總結(jié)經(jīng)驗和體會。3.完成實驗日志和上交程序。二、實驗環(huán)境Windows 7 操作系統(tǒng), Visual Studio 2005及以上版本三、實驗內(nèi)容(題目、源代碼、關(guān)鍵代碼解釋、運行結(jié)果、實驗總結(jié))【實驗 1-1-1 】編寫一個控制臺應(yīng)用程序,定義并使用一個時間類,該類包含

2、時、分、秒字段與屬性,具有將時間增加 1 秒、 1 分和 1 小時的方法,具有分別顯示時、分、秒和同時顯示時分秒的方法。1 、源代碼:using System;public class Time/ 字段private int hour;private int minite;private int second;/ 屬性public int Hourgeta.return hour;sethour= value;public int Minitegetreturn minite;setminite= value;public int Secondgetreturn second;setsecon

3、d= value ;/ 方法/ 加時方法public void SAdd()second+;if(second60)minite+;second=second%60;if(minite60)hour+;a.minite=minite%60;if(hour24)hour=hour%24;public void MAdd()minite+;if(minite60)hour+;minite=minite%60;if(hour24)hour=hour%24;public void HAdd()hour+;if(hour24)hour=hour%24;/ 輸出方法public void HPrint()

4、Console .WriteLine( 現(xiàn)在時為 :0,hour);public void MPrint()Console .WriteLine( 現(xiàn)在分為 :0,minite);public void SPrint()Console .WriteLine( 現(xiàn)在秒為 :0,second);public void TimePrint()Console .WriteLine( 得出準(zhǔn)確時間為 :0時 1分 2秒,hour,minite,second);a./ 主函數(shù)public class Textpublic static void Main()Time time= new Time();Co

5、nsole .WriteLine( 獲取系統(tǒng)時間中 .);time.Hour= DateTime .Now.Hour;time.Minite= DateTime .Now.Minute; / 剛剛發(fā)現(xiàn)前面的minute 全寫成 minute 了.英語不太 .time.Second= DateTime .Now.Second;time.TimePrint();Console .WriteLine( 現(xiàn)在加一秒功能:);time.SAdd();time.TimePrint();Console .WriteLine( 現(xiàn)在加一分功能:);time.MAdd();time.TimePrint();Co

6、nsole .WriteLine( 現(xiàn)在加一時功能:);time.HAdd();time.TimePrint();Console .WriteLine( 現(xiàn)在依次調(diào)用三個方法輸出時分秒:);time.HPrint();time.MPrint();time.SPrint();2、關(guān)鍵代碼解釋:1)時鐘循環(huán)需要取模運算,如第25 時為 25%24=1,即 1 時;另外還要注意秒的增加帶給分、時的影響等。2)加時功能直接使用time+ ,并注意判斷對其他時間的影響3)獲取時間采用了DataTime 里的函數(shù),直接獲取系統(tǒng)時間。3、運行結(jié)果a.4、實驗總結(jié)結(jié)合實踐明白了屬性的用法與含義,并且通過百度了

7、解了怎么從系統(tǒng)中讀取現(xiàn)在的時間?!緦嶒?1-1-2 】編寫一個控制臺應(yīng)用程序,程序中有兩個類定義,一個是創(chuàng)建程序時系統(tǒng)自動創(chuàng)建的類Class1,一個是用戶自定義的 Student 類,要求該類包含私有字段:學(xué)號(字符串 )、(字符串)和性別(字符),具有三個屬性:學(xué)號(讀寫)、(只讀)、性別(讀寫),具有有參構(gòu)造方法、具有同時顯示學(xué)生個人信息的方法。在 Class1中完成以下功能:1)從鍵盤上輸入一個學(xué)生的個人信息(學(xué)號、性別)。2)修改該學(xué)生的學(xué)號和性別。3)打印修改前后該學(xué)生的個人信息。1、源代碼using System;public class Student/ 字段private st

8、ring num;private string name;private char sex;private string oldnum;private char oldsex;/ 屬性public string Numgetreturn num;a.setnum= value;public string Namegetreturn name;setname= value ;public char Sexgetreturn sex;setsex=value;/ 方法public Student( string c,string n,char s)num=c;name=n;sex=s;public

9、 void PrintIn()Console .WriteLine( 學(xué)號 );num= Console .ReadLine();Console .WriteLine( );name= Console .ReadLine();Console .WriteLine( 性別 );sex=Convert .ToChar(Console .ReadLine();a.public void Revise()Console .WriteLine( 請對輸入的學(xué)號重新進行編輯:);oldnum=num;num = Console .ReadLine();Console .WriteLine( 請對輸入的性別

10、重新進行編輯:);oldsex=sex;sex = Convert .ToChar(Console .ReadLine();public void PrintOut()Console .WriteLine( 修改前的信息為:學(xué)號:0,: 1,性別: 2,oldnum,name,oldsex);Console .WriteLine( 修改后的信息為:學(xué)號:0,: 1,性別: 2,num,name,sex);public class class1public static void Main()Console .WriteLine( 在本信息中男為Q 女為 N );Student student1

11、 =new Student( 123 , 王蘭 , N );student1.PrintIn();student1.Revise();student1.PrintOut();2、關(guān)鍵代碼解釋1)為了能同時輸出修改前修改后的名稱,引入了字段oldnum , oldsex ,將修改前的傳給這兩個值,并將新值覆蓋原字段num 和 sex。3、實驗結(jié)果:a.4、實驗分析:雖然設(shè)置了屬性,但沒用實際用到,感覺可能沒有編好。另外為了滿足第3 個實驗條件,同時輸出,所以引入了新字段,不知道是否符合要求?!緦嶒?1-1-3 】編寫一個控制臺應(yīng)用程序,程序中有兩個類定義,一個是創(chuàng)建程序時系統(tǒng)自動創(chuàng)建的類Clas

12、s1,一個是用戶自定義的Student 類,要求該類包含私有實例字段:學(xué)號 (字符串 )、(字符串) 、成績( double )以 及 私 有 靜 態(tài) 字 段 :學(xué) 生 人 數(shù) 、學(xué) 生 總 成 績 、學(xué) 生 平 均 成績,具有有參構(gòu)造方法、顯示學(xué)生個人信息的公有實例方法和顯示學(xué)生人數(shù)、總成績及平均成績的公有靜態(tài)方法。在Class1 類的 Main 方法中完成以下功能:1)從鍵盤上依次輸入三個學(xué)生的個人信息(學(xué)號、成績)。2)統(tǒng)計全部學(xué)生的人數(shù)、總成績和平均成績。3)打印學(xué)生們的個人信息及全部學(xué)生的人數(shù)、總成績和平均成績。1、源代碼using System;public class Stude

13、nt/ 字段a.private string num;private string name;private double score;public static int count;public static double addscore;public static double average;/ 方法public Student()count+;public void PrintIn()Console .WriteLine( 請輸入一位同學(xué)的信息:);Console .WriteLine( 學(xué)號: );num = Console .ReadLine();Console .WriteLi

14、ne( :);name = Console .ReadLine();Console .WriteLine( 成績: );score = Convert .ToDouble( Console .ReadLine();addscore += score;public static void Average()average = addscore / count;public void Print1()Console .WriteLine( 學(xué)號: 0 ,1,成績 2,num, name, score);public static void Print2()Console .WriteLine( 輸

15、入的學(xué)生總?cè)藬?shù)為:0,count);Console .WriteLine( 同學(xué)們的總成績?yōu)椋?,addscore);Console .WriteLine( 同學(xué)們的平均成績?yōu)椋?,average);public class class1public static void Main()Console .WriteLine( 在本信息記錄中,性別男為Q,女為 N);Student student1 =new Student();a.student1.PrintIn();Student student2 =new Student();student2.PrintIn();Student stud

16、ent3 =new Student();student3.PrintIn();Student.Average();Console .WriteLine( 同學(xué)們的信息為:);student1.Print1();student2.Print1();student3.Print1();Student.Print2();/ 是否可以建立類數(shù)組?2、關(guān)鍵代碼解釋有關(guān)關(guān)鍵代碼的解釋后面的實驗都直接寫在代碼的/ 備注里了。3、實驗結(jié)果a.4、實驗總結(jié):學(xué)會了在readline 里面使用類型轉(zhuǎn)換。認為也許可以使用類的數(shù)組來定義這三個學(xué)生,但沒有實現(xiàn)。實驗二繼承與多態(tài)編程一、實驗?zāi)康募耙蟆緦嶒災(zāi)康摹?.理解

17、繼承的含義,掌握派生類的定義方法和實現(xiàn);2.理解虛函數(shù)在類的繼承層次中的作用,虛函數(shù)的引入對程序運行時的影響,能夠?qū)κ褂锰摵瘮?shù)的簡單a.程序?qū)懗龀绦蚪Y(jié)果。3.編寫體現(xiàn)類的繼承性(成員變量,成員方法,成員變量隱藏)的程序;4.編寫體現(xiàn)類多態(tài)性(成員方法重載,構(gòu)造方法重載)的程序。【實驗要求】1.寫出程序,并調(diào)試程序,要給出測試數(shù)據(jù)和實驗結(jié)果。2.整理上機步驟,總結(jié)經(jīng)驗和體會。3.完成實驗日志和上交程序。二、實驗環(huán)境Windows 7 操作系統(tǒng), Visual Studio 2005及以上版本三、實驗內(nèi)容(題目、源代碼、關(guān)鍵代碼解釋、運行結(jié)果、實驗總結(jié))【實驗 1-2-1 】創(chuàng)建一個描述圖書信息的

18、類并測試。類中應(yīng)保存有圖書的書號、標(biāo)題、作者、價格等信息。1)定義圖書類Book , Book 類中包含isbn(書號 )、 title (標(biāo)題)、 author( 作者 )、 press()、 price (價格)等私有字段。由于對一本書來說,書號是唯一的,因此,isbn 字段應(yīng)聲明為只讀的。2)為 Book 類中的每個字段定義相應(yīng)的屬性,由于isbn 字段只讀的,其相應(yīng)屬性也應(yīng)該是只讀的。3)為 Book 類定義兩個構(gòu)造函數(shù),其中,一個構(gòu)造函數(shù)將所有字段都初始化為用戶指定的值,另一個構(gòu)造函數(shù)只要求用戶指定有關(guān)書號的信息,它將調(diào)用上一個構(gòu)造函數(shù)初始化對象,初始化時,價格取0,除書號的其他信息

19、取“未知”。4)為 Book 類定義方法 Show, Show 方法用于顯示圖書的所有信息。5)編寫 Main 方法測試 Book 類, Main 方法中分別使用上述兩個構(gòu)造函數(shù)創(chuàng)建Book 對象。1、源代碼using System;public class Book/ 定義私有字段private readonly string isbn;private string title;private string author;private string press;private double price;/ 定義屬性public string Isbngetreturn isbn;a.pub

20、lic string Titlegetreturn title;setTitle = value;public string Authorgetreturn author;setAuthor = value;public string Pressgetreturn press;setPress = value;public double Pricegetreturn price;setPrice = value;a./ 定義構(gòu)造函數(shù)public Book( string isbn, string title, string author, string press, double price)

21、this .isbn = isbn;this .title = title;this .author = author;this .press = press;this .price = price;/ 繼承第一個構(gòu)造函數(shù)public Book( string isbn):this (isbn,未知 ,未知 ,未知 ,0)public void Show()Console .WriteLine( 這本書的信息如下:);Console .WriteLine( 書號: 0, isbn);Console .WriteLine( 標(biāo)題: 0, title);Console .WriteLine( 作者

22、: 0, author);Console .WriteLine( :0, press);Console .WriteLine( 價格: 0, price);class BookTestpublic static void Main()Console .WriteLine( 請按 依次輸入第一個書本信息,依次為書號,標(biāo)題,作者,價格);Book book1 =newBook( Convert .ToString( Console .ReadLine(),Convert .ToString( Console .ReadLine(),Convert .ToString( Console .ReadL

23、ine(),Conver t .ToString( Console .ReadLine(),Convert .ToDouble( Console .ReadLine();book1.Show();Console .WriteLine( 請輸入第二個書本的書號);Book book2 =new Book(Convert .ToString( Console .ReadLine();book2.Show();2、 實驗結(jié)果a.3、實驗總結(jié):學(xué)會了用構(gòu)造函數(shù)繼承構(gòu)造函數(shù),另外經(jīng)過查閱還明白了this 指針可以代替對象來調(diào)用對象的字段。還實踐了可以在構(gòu)造函數(shù)調(diào)用時調(diào)用輸入函數(shù)?!緦嶒?1-2-2 】編

24、寫一個程序計算出球、圓柱和圓錐的表面積和體積。1)定義一個基類圓,至少含有一個數(shù)據(jù)成員:半徑;2)定義基類的派生類:球、圓柱、圓錐,都含有求體積函數(shù),可以都在構(gòu)造函數(shù)中實現(xiàn),也可以將求體積和輸出寫在一個函數(shù)中,或者寫在兩個函數(shù)中,請比較使用。3)定義主函數(shù),求球、圓柱、圓錐的和體積。3、設(shè)計一個圖書卡片類Card,用來保存圖書館卡片分類記錄。1)這個類的成員包括書名、作者、館藏數(shù)量。2)至少提供兩個方法,store 書的入庫處理,show 顯示圖書信息。a.3)程序運行時,可以從控制臺上輸入需要入庫圖書的總量,根據(jù)這個總數(shù)創(chuàng)建 Card 對象數(shù)組,然后輸入數(shù)據(jù)。4)可以選擇按書名、作者、入庫量

25、進行排序。1、源代碼using System;public class Circle/ 定義基類圓protecteddouble R;public const double PI=3.14;/ 定義繼承類球 ,繼承圓public class Ball:Circle/ 定義表面積、體積字段protecteddouble Vol;protecteddouble Area;/ 構(gòu)造函數(shù)public Ball(double r)R=r;/ 求表面積和體積的方法。采用先求表面積和體積再輸出public double GetArea()Area=4*PI*R*R;return Area;public do

26、uble GetVol()Vol=(4.0/3.0)*PI*R*R*R;return Vol;public void Print()Console .WriteLine( 球的表面積為: 0,Area);Console .WriteLine( 球的體積為: 0,Vol);/ 定義繼承類圓柱,繼承圓,比較兩種輸出體積的方法(圓錐采用不繼承圓,直接繼承圓柱的做法)public class Cyl:Circlea./ 定義表面積、體積字段protecteddouble Vol;protecteddouble Area;protecteddouble h;/ 構(gòu)造函數(shù)public Cyl() publ

27、ic Cyl(double r,double h)R=r;this .h=h;/ 采用直接輸出體積和表面積public virtual void GetArea()Area=h*2*PI*R+2*PI*R*R;Console .WriteLine( 圓柱的表面積為:0,Area);public virtual void GetVol()Vol=h*PI*R*R;Console .WriteLine( 圓柱的體積為: 0,Vol);public class Cone:Cyl/ 字段已經(jīng)定義,構(gòu)造函數(shù)不繼承public Cone( double r,double h)R=r;this .h=h;/

28、 重寫基類中的表面積、體積函數(shù)public override void GetArea()Area=PI*R*R+0.5*2*PI*R*System. Math .Sqrt(R*R+h*h);Console .WriteLine( 圓錐的表面積為:0,Area);public override void GetVol()Vol = (1.0 / 3.0) * h * PI * R * R;Console .WriteLine( 圓錐的體積為: 0,Vol);class Texta.public static void Main()Console .WriteLine( 請輸入球的半徑:);do

29、uble count =Convert .ToDouble( Console .ReadLine();Ball ball = new Ball(count);double A=ball.GetArea();double V=ball.GetVol();ball.Print();Console .WriteLine( 請按 行 依次輸入圓柱的半徑、高);Cyl cyl = new Cyl(Convert .ToDouble( Console .ReadLine(), Convert .ToDouble( Console .ReadLine();cyl.GetArea();cyl.GetVol()

30、;/ 相比較兩種輸出方法,直接輸出法更簡單。Console .WriteLine( 請按 行 依次輸入圓錐的半徑、高);Cone cone = new Cone(Convert .ToDouble( Console .ReadLine(), Convert .ToDouble( Console .ReadLine(); cone.GetArea();cone.GetVol();2、實驗結(jié)果3、實驗總結(jié)在計算圓錐表面積時學(xué)會了System.Math.Sqrt() 的使用方法沒有采用0個參數(shù)的重載:說明參數(shù)不能為空,錯誤出在把Convert.ToDouble (Console.ReadLine()

31、括號里和括號外的內(nèi)容寫反了a.另外很粗心在WriteLine 里里面忘記加0,編譯沒出錯但拋出了異常,又找了半天才修改好?!緦嶒?1-2-3 】設(shè)計一個圖書卡片類Card ,用來保存圖書館卡片分類記錄。1)這個類的成員包括書名、作者、館藏數(shù)量。2)至少提供兩個方法,store 書的入庫處理,show 顯示圖書信息。3)程序運行時,可以從控制臺上輸入需要入庫圖書的總量,根據(jù)這個總數(shù)創(chuàng)建Card 對象數(shù)組,然后輸入數(shù)據(jù)。4)可以選擇按書名、作者、入庫量進行排序。1、源程序using System;public class Librarypublic static int Num=0;public

32、static void Show()Console .WriteLine( 圖書館共入庫了 0 本書 , Num);public class Cardprivate string name;public string Namegetreturn name;private string author;public string Authorgetreturn author;a.private int num=0;public int Numgetreturn num;public void Store()Console .WriteLine( 輸入要入庫的書信息,包括書名、作者、入庫量);thi

33、s .name = Convert .ToString( Console .ReadLine();this .author = Convert .ToString( Console .ReadLine();this .num= Convert .ToInt32( Console .ReadLine();Library.Num+=num;public void Show()Console .WriteLine( 圖書信息如下: );Console .WriteLine( 書名: 0 ,作者: 1,館藏數(shù)量 2,name,author,num);public class Textpublic st

34、atic void Main()int i;Card temp;Card card =new Card3;for (i = 0; i 3; i+)cardi = new Card();/ 學(xué)會了定義對象的數(shù)組,應(yīng)該先創(chuàng)建數(shù)組,再依次對里面的所有成員進行創(chuàng)建。cardi.Store();Library.Show();Console .WriteLine( 請選擇按什么排序:、書名 2、作者 3 、存庫量 ); int a = Convert .ToInt32( Console .ReadLine(); switch (a)case 1:Console .WriteLine( 按書名從小到大排序)

35、;afor (i = 0; i 2; i+)for (int j = i; j 0)temp = cardi;cardi = cardi + 1;cardi + 1 = temp;for (i = 0; i 3; i+)cardi.Show();break ;case 2:Console .WriteLine( 按作者從小到大排序);for (i = 0; i 2; i+)for (int j = i; j 0)temp = cardi;cardi = cardi + 1;cardi + 1 = temp;for (i = 0; i 3; i+)cardi.Show();break ;case

36、 3:Console .WriteLine( 按存庫量從小到大排序 ); for (i = 0; i 2; i+)./ 學(xué)會了比較函數(shù)的使用a.for (int j = i; j 0)temp = cardi;cardi = cardi + 1;cardi + 1 = temp;for (i = 0; i 3; i+)cardi.Show();break ;default :Console .WriteLine( 輸入錯誤。 );break ;2、實驗結(jié)果(實驗結(jié)果檢測時選擇了用2 號- 按作者從小到大排序)a.3、實驗總結(jié)學(xué)會了定義對象的數(shù)組,應(yīng)該先創(chuàng)建數(shù)組,再依次對里面的所有成員進行創(chuàng)建。

37、經(jīng)過查閱學(xué)會了比較函數(shù)的使用。類的多態(tài)性練習(xí)【實驗 1-2-4 】設(shè)計雇員系統(tǒng)。1)定義雇員基類,共同的屬性,、地址和出生日期;2)派生類:程序員,秘書,高層管理,清潔工,他們有不同的工資算法,其中高級主管和程序員采用底薪加提成的方式,高級主管和程序員的底薪分別是5000 元和 2000 元 ,秘書和清潔工采用工資的方式,工資分別是3000 和 1000 ,以多態(tài)的方式處理程序。1、源代碼using System;public class Employeeprivate string name; / 定義雇員基類的姓名、地址、出生日期、底薪、提成以及其屬性。/ 屬性為可讀可寫,實驗結(jié)果中為了簡

38、練沒有調(diào)用姓名地址出生日期等,不過調(diào)用了底薪、提成及其屬性以體現(xiàn)多態(tài)。public string Namegetreturn name;setname= value ;string address;public string Addressgeta.return address;setaddress= value ;string birth;public string Birthgetreturn birth;setbirth= value;double salary;/ 底薪public virtual double Salarygetreturn salary;setsalary = va

39、lue;double ticheng; / 提成public virtual double Tichenggetreturn ticheng;setticheng =value ;a.public virtual void SumSalary() / 工資算法不同,所以定義虛函數(shù)工資計算方法 public virtual void Show() / 工資輸出名稱不同,所以定義了可重寫的打印方法public class Programmer : Employee/ 程序員,繼承雇員基類public Programmer()Salary=2000;Console .WriteLine( 請輸入程序員提成);Ticheng= Convert .ToDouble( Console .ReadLine();public override void SumSalary()/ 重寫工資計算方法,下面幾個類同Salary+=Ticheng;public override void Show()/ 重寫打印方法

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論