




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、. C#.net 實驗報告:王璐學號:142871日期:2016/04/24實驗名稱 :面向對象編程成績:a.實驗一類和對象編程一、實驗目的及要求【實驗目的】1.如何創(chuàng)建類和對象。2.如何為定義的類編寫相應的方法。3.如何通過屬性訪問對象中的數(shù)據(jù)【實驗要求】1.寫出程序,并調試程序,要給出測試數(shù)據(jù)和實驗結果。2.整理上機步驟,總結經(jīng)驗和體會。3.完成實驗日志和上交程序。二、實驗環(huán)境Windows 7 操作系統(tǒng), Visual Studio 2005及以上版本三、實驗內(nèi)容(題目、源代碼、關鍵代碼解釋、運行結果、實驗總結)【實驗 1-1-1 】編寫一個控制臺應用程序,定義并使用一個時間類,該類包含
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( 得出準確時間為 :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)在依次調用三個方法輸出時分秒:);time.HPrint();time.MPrint();time.SPrint();2、關鍵代碼解釋:1)時鐘循環(huán)需要取模運算,如第25 時為 25%24=1,即 1 時;另外還要注意秒的增加帶給分、時的影響等。2)加時功能直接使用time+ ,并注意判斷對其他時間的影響3)獲取時間采用了DataTime 里的函數(shù),直接獲取系統(tǒng)時間。3、運行結果a.4、實驗總結結合實踐明白了屬性的用法與含義,并且通過百度了
7、解了怎么從系統(tǒng)中讀取現(xiàn)在的時間?!緦嶒?1-1-2 】編寫一個控制臺應用程序,程序中有兩個類定義,一個是創(chuàng)建程序時系統(tǒng)自動創(chuàng)建的類Class1,一個是用戶自定義的 Student 類,要求該類包含私有字段:學號(字符串 )、(字符串)和性別(字符),具有三個屬性:學號(讀寫)、(只讀)、性別(讀寫),具有有參構造方法、具有同時顯示學生個人信息的方法。在 Class1中完成以下功能:1)從鍵盤上輸入一個學生的個人信息(學號、性別)。2)修改該學生的學號和性別。3)打印修改前后該學生的個人信息。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( 學號 );num= Console .ReadLine();Console .WriteLine( );name= Console .ReadLine();Console .WriteLine( 性別 );sex=Convert .ToChar(Console .ReadLine();a.public void Revise()Console .WriteLine( 請對輸入的學號重新進行編輯:);oldnum=num;num = Console .ReadLine();Console .WriteLine( 請對輸入的性別
10、重新進行編輯:);oldsex=sex;sex = Convert .ToChar(Console .ReadLine();public void PrintOut()Console .WriteLine( 修改前的信息為:學號:0,: 1,性別: 2,oldnum,name,oldsex);Console .WriteLine( 修改后的信息為:學號: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、關鍵代碼解釋1)為了能同時輸出修改前修改后的名稱,引入了字段oldnum , oldsex ,將修改前的傳給這兩個值,并將新值覆蓋原字段num 和 sex。3、實驗結果:a.4、實驗分析:雖然設置了屬性,但沒用實際用到,感覺可能沒有編好。另外為了滿足第3 個實驗條件,同時輸出,所以引入了新字段,不知道是否符合要求?!緦嶒?1-1-3 】編寫一個控制臺應用程序,程序中有兩個類定義,一個是創(chuàng)建程序時系統(tǒng)自動創(chuàng)建的類Clas
12、s1,一個是用戶自定義的Student 類,要求該類包含私有實例字段:學號 (字符串 )、(字符串) 、成績( double )以 及 私 有 靜 態(tài) 字 段 :學 生 人 數(shù) 、學 生 總 成 績 、學 生 平 均 成績,具有有參構造方法、顯示學生個人信息的公有實例方法和顯示學生人數(shù)、總成績及平均成績的公有靜態(tài)方法。在Class1 類的 Main 方法中完成以下功能:1)從鍵盤上依次輸入三個學生的個人信息(學號、成績)。2)統(tǒng)計全部學生的人數(shù)、總成績和平均成績。3)打印學生們的個人信息及全部學生的人數(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( 請輸入一位同學的信息:);Console .WriteLine( 學號: );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( 學號: 0 ,1,成績 2,num, name, score);public static void Print2()Console .WriteLine( 輸
15、入的學生總人數(shù)為:0,count);Console .WriteLine( 同學們的總成績?yōu)椋?,addscore);Console .WriteLine( 同學們的平均成績?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( 同學們的信息為:);student1.Print1();student2.Print1();student3.Print1();Student.Print2();/ 是否可以建立類數(shù)組?2、關鍵代碼解釋有關關鍵代碼的解釋后面的實驗都直接寫在代碼的/ 備注里了。3、實驗結果a.4、實驗總結:學會了在readline 里面使用類型轉換。認為也許可以使用類的數(shù)組來定義這三個學生,但沒有實現(xiàn)。實驗二繼承與多態(tài)編程一、實驗目的及要求【實驗目的】1.理解
17、繼承的含義,掌握派生類的定義方法和實現(xiàn);2.理解虛函數(shù)在類的繼承層次中的作用,虛函數(shù)的引入對程序運行時的影響,能夠對使用虛函數(shù)的簡單a.程序寫出程序結果。3.編寫體現(xiàn)類的繼承性(成員變量,成員方法,成員變量隱藏)的程序;4.編寫體現(xiàn)類多態(tài)性(成員方法重載,構造方法重載)的程序?!緦嶒炓蟆?.寫出程序,并調試程序,要給出測試數(shù)據(jù)和實驗結果。2.整理上機步驟,總結經(jīng)驗和體會。3.完成實驗日志和上交程序。二、實驗環(huán)境Windows 7 操作系統(tǒng), Visual Studio 2005及以上版本三、實驗內(nèi)容(題目、源代碼、關鍵代碼解釋、運行結果、實驗總結)【實驗 1-2-1 】創(chuàng)建一個描述圖書信息的
18、類并測試。類中應保存有圖書的書號、標題、作者、價格等信息。1)定義圖書類Book , Book 類中包含isbn(書號 )、 title (標題)、 author( 作者 )、 press()、 price (價格)等私有字段。由于對一本書來說,書號是唯一的,因此,isbn 字段應聲明為只讀的。2)為 Book 類中的每個字段定義相應的屬性,由于isbn 字段只讀的,其相應屬性也應該是只讀的。3)為 Book 類定義兩個構造函數(shù),其中,一個構造函數(shù)將所有字段都初始化為用戶指定的值,另一個構造函數(shù)只要求用戶指定有關書號的信息,它將調用上一個構造函數(shù)初始化對象,初始化時,價格取0,除書號的其他信息
19、取“未知”。4)為 Book 類定義方法 Show, Show 方法用于顯示圖書的所有信息。5)編寫 Main 方法測試 Book 類, Main 方法中分別使用上述兩個構造函數(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./ 定義構造函數(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;/ 繼承第一個構造函數(shù)public Book( string isbn):this (isbn,未知 ,未知 ,未知 ,0)public void Show()Console .WriteLine( 這本書的信息如下:);Console .WriteLine( 書號: 0, isbn);Console .WriteLine( 標題: 0, title);Console .WriteLine( 作者
22、: 0, author);Console .WriteLine( :0, press);Console .WriteLine( 價格: 0, price);class BookTestpublic static void Main()Console .WriteLine( 請按 依次輸入第一個書本信息,依次為書號,標題,作者,價格);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、 實驗結果a.3、實驗總結:學會了用構造函數(shù)繼承構造函數(shù),另外經(jīng)過查閱還明白了this 指針可以代替對象來調用對象的字段。還實踐了可以在構造函數(shù)調用時調用輸入函數(shù)?!緦嶒?1-2-2 】編
24、寫一個程序計算出球、圓柱和圓錐的表面積和體積。1)定義一個基類圓,至少含有一個數(shù)據(jù)成員:半徑;2)定義基類的派生類:球、圓柱、圓錐,都含有求體積函數(shù),可以都在構造函數(shù)中實現(xiàn),也可以將求體積和輸出寫在一個函數(shù)中,或者寫在兩個函數(shù)中,請比較使用。3)定義主函數(shù),求球、圓柱、圓錐的和體積。3、設計一個圖書卡片類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;/ 構造函數(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;/ 構造函數(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)定義,構造函數(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、實驗結果3、實驗總結在計算圓錐表面積時學會了System.Math.Sqrt() 的使用方法沒有采用0個參數(shù)的重載:說明參數(shù)不能為空,錯誤出在把Convert.ToDouble (Console.ReadLine()
31、括號里和括號外的內(nèi)容寫反了a.另外很粗心在WriteLine 里里面忘記加0,編譯沒出錯但拋出了異常,又找了半天才修改好?!緦嶒?1-2-3 】設計一個圖書卡片類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();/ 學會了定義對象的數(shù)組,應該先創(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+)./ 學會了比較函數(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、實驗結果(實驗結果檢測時選擇了用2 號- 按作者從小到大排序)a.3、實驗總結學會了定義對象的數(shù)組,應該先創(chuàng)建數(shù)組,再依次對里面的所有成員進行創(chuàng)建。
37、經(jīng)過查閱學會了比較函數(shù)的使用。類的多態(tài)性練習【實驗 1-2-4 】設計雇員系統(tǒng)。1)定義雇員基類,共同的屬性,、地址和出生日期;2)派生類:程序員,秘書,高層管理,清潔工,他們有不同的工資算法,其中高級主管和程序員采用底薪加提成的方式,高級主管和程序員的底薪分別是5000 元和 2000 元 ,秘書和清潔工采用工資的方式,工資分別是3000 和 1000 ,以多態(tài)的方式處理程序。1、源代碼using System;public class Employeeprivate string name; / 定義雇員基類的姓名、地址、出生日期、底薪、提成以及其屬性。/ 屬性為可讀可寫,實驗結果中為了簡
38、練沒有調用姓名地址出生日期等,不過調用了底薪、提成及其屬性以體現(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度物業(yè)管理應急演練計劃
- 體育舞蹈專業(yè)實習總結范文
- 2025春統(tǒng)編版六年級語文教輔材料教學計劃
- 2025年小學四年級數(shù)學綜合實踐計劃
- 精密儀器主要材料供應及質量保障措施
- 中小學體育器材自檢自查整改措施
- 放射診斷儀器性能質量檢測計劃
- 第四次全國經(jīng)濟普查質量監(jiān)管先進個人事跡匯報范文
- 節(jié)日期間郵政快遞收派安排計劃
- 班主任危機干預育人能力提升培訓心得體會
- 2025年內(nèi)蒙古煤炭地質勘查(集團)一零九有限公司招聘筆試參考題庫含答案解析
- 中醫(yī)基礎學課件護理情志
- 小學三年級科學下冊教案
- T/CBMCA 039-2023陶瓷大板巖板裝修鑲貼應用規(guī)范
- 2025-2030中國美容美發(fā)行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025年中國不銹鋼蝕刻板數(shù)據(jù)監(jiān)測研究報告
- 免疫檢查點抑制劑相關肺炎診治和管理專家共識(2025)要點解讀
- (統(tǒng)編版2025)歷史七年級下冊新教材變化及教學建議
- 板式家具生產(chǎn)工藝流程
- 文化安全課件
- 蠶桑養(yǎng)殖知識培訓課件
評論
0/150
提交評論