河北工业大学.NET程序设计_第1页
河北工业大学.NET程序设计_第2页
河北工业大学.NET程序设计_第3页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河北工业大学.NET程序设计-C#-实验报告实验三C# net实验报告姓名:王璐学号: 142871日期:2016/04/24实验名称:面向对象编程成绩:实验一类和对象编程、实验目的及要求【实验目的】1. 如何创建类和对象。2. 如何为定义的类编写相应的方法。3. 如何通过属性访问对象中的数据【实验要求】1. 写出程序,并调试程序,要给出测试数据和实验结 果。2. 整理上机步骤,总结经验和体会。3. 完成实验日志和上交程序。二、实验环境Windows 7操作系统,Visual Studio 2005及以上版本三、实验内容(题目、源代码、关键代码解释、运行结果、实验总结)【实验i-i-i】编写一

2、个控制台应用程序,定义并使用一个时间 类,该类包含时、分、秒字段与属性,具有将时间增加 1秒、1分和1小时的方法,具有分别显示时、分、秒 和同时显示时分秒的方法。1、源代码:using System;public classTime/字段private int hour;private int minite;private int second;/属性public int Hourgetreturn hour;sethour=value;public int Minitegetreturn minite;setminite=value;public int Secondgetreturn se

3、cond;setsecond=value;II方法/加时方法public void SAdd()second+;if(second60)minite+; second=second%60;if(minite60)hour+;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

4、HPrint()Console.WriteLine(现在时为:0,hour);public void MPrint()Console.WriteLine(现在分为:0 ,minite);public void SPrint()ConsoleWriteLine(现在秒为:0 ,second);public void TimePrint()Console.WriteLine(得出准确时间为:0时1分2秒,hour,minite,second);/主函数public classTextpublic static void Main()Time time= new Time();ConsoleWrit

5、eLine(获取系统时间中”);time.Hour= DateTime .Now.Hour;刚刚发现前面的 minute 全写成 minute 了.英语不太.time.Second=DateTime .Now.Second;time.TimePrint();Console.WriteLine(现在加一秒功能:”);time.SAdd();time.TimePrint();Console.WriteLine(现在加一分功能:”);time.MAdd();time.TimePrint();Console.WriteLine(现在加一时功能:”);time.HAdd();time.TimePrint

6、();Console.WriteLine(现在依次调用三个方法输出时分秒:”);time.HPrint();time.MPrint();time.SPrint();2、关键代码解释:1)时钟循环需要取模运算,如第 25时为25%24=1,即1时;另外还要注意秒的增加带给分、时的影响等2)加时功能直接使用time+,并注意判断对其他时 间的影响3)获取时间采用了 DataTime里的函数,直接获取系 统时间。3、运行结果Ie: US2O05安装UA实验1巧获取系统时间中*得出准确时间为:16时心分了秒现在剂一秒功能:得出准确时间为&时2分&秒孤在加一并功能!得出准确时间为:16时心分8秒现在加一

7、时功能:隔出准确时间为时19分8秒现在依次调用三个方法输出时分秒:现在时为:订现在分为:19现在秒为用4、实验总结结合实践明白了属性的用法与含义,并且通 过百度了解了怎么从系统中读取现在的时间。【实验1-1-2】编写一个控制台应用程序,程序中有两个类定义,一个是创建程序时系统自动创建的类Classi,一个是用户自定义的Student类,要求该类包含私有字段:学号(字符 串)、姓名(字符串)和性别(字符),具有三个属性: 学号(读写)、姓名(只读)、性别(读写),具有有 参构造方法、具有同时显示学生个人信息的方法。在 Classi 中完成以下功能:1)从键盘上输入一个学生的个人信息(学号、姓 名

8、、性别)。2)修改该学生的学号和性别。3)打印修改前后该学生的个人信息。1、源代码using System;public classStudent/字段private string num;private string name;private char sex;private string oldnum;private char oldsex;/属性public string Numgetreturn num;setnum= value;public string Namegetreturn name;setname=value;public char Sexgetreturn sex;se

9、tsex=value;II方法public Student(string cptring n,char s)num=c;name=n;sex=s;public void Println()Console.WriteLine(学号);num= ConsoleReadLine();Console.WriteLine(姓名);name=ConsoleReadLine();Console.WriteLine(性别);sex=Convert.ToChar(Console.ReadLine();public void Revise()Console.WriteLine(请对输入的学号重新进行编辑:”);o

10、ldnum=num;num = Console.ReadLine();Console.WriteLine(请对输入的性别重新进行编辑:”);oldsex=sex;sex =Convert.ToChar( ConsoleReadLine();public void PrintOut()Console.WriteLine(修改前的信息为:学号: 0,姓名:1,性别:2 ,oldnum,name,oldsex);Console.WriteLine(修改后的信息为:学号: 0,姓名:1,性别:2 ,num,name,sex);public classclass1public static void M

11、ain()Console.WriteLine(在本信息中男为 Q女为N); Student studentl = new Student(123,王兰, N); student1.Println();student1.Revise(); student1.PrintOut();2、关键代码解释引入了字段1)为了能同时输出修改前修改后的名称,old num,oldsex,将修改前的传给这两个值,并将新值覆盖原字段num和sex。3、实验结果:| : US20Q5安装实验 1 -2在本信息中男为a女为n学号142871II请对输入的学号重新进行编辑: 142870请对输入的性别重新进行编辑;修改前

12、的信息为;学号:142871姓名:王璐,性别:修改后的信息为:学号:142870,姓名:王璐,性别:4、实验分析:虽然设置了属性,但没用实际用到,感觉可能没有编另外为了满足第3个实验条件,同时输出,所以引入了新字段,不知道是否符合要求。【实验1-1-3】编写一个控制台应用程序,程序中有两个类定义, 一个是创建程序时系统自动创建的类Classi,一个是用户自定义的Student类,要求该类包含私有实例字 段:学号(字符串)、姓名(字符串)、成绩(double) 以及私有静态字段:学生人数、学生总成绩、学生 平均成绩,具有有参构造方法、显示学生个人信息的公有 实例方法和显示学生人数、总成绩及平均成

13、绩的公有静态 方法。在Classi类的Main方法中完成以下功能:1)从键盘上依次输入三个学生的个人信息(学号、 姓名、成绩)。2)统计全部学生的人数、总成绩和平均成绩。3)打印学生们的个人信息及全部学生的人数、总 成绩和平均成绩。i、源代码using System;public classStudentII字段private string num;private string name;private double score;public static int count;public static double addscore;public static double average;

14、II方法public Student()count+;public void PrintIn()Console.WriteLine(请输入一位同学的信息:”);Console.WriteLine(学号:);num = Console.ReadLine();Console.WriteLine(姓名:);name = ConsoleReadLine();Console.WriteLine(成绩:);score =Convert.ToDouble(Console.ReadLine(); addscore += score;public static void Average()average = a

15、ddscore / count;public void Print1()ConsoleWriteLine(” 学号:0,姓名1,成绩2 ,num, name, score);public static void Print2()Console.WriteLine(输入的学生总人数为:0”,count);Console.WriteLine(同学们的总成绩为:0 ,addscore);Console.WriteLine(同学们的平均成绩为:0average);public classclasslpublic static void Main()Console.WriteLine(在本信息记录中,性

16、别男为Q,女为N);Student studentl = new Student();student1.Println();Student student2 = new Student();student2.Println();Student student3 = new Student();student3.Println();Student.Average();Console.WriteLine(同学们的信息为:”);student1.Print1();student2.Print1();student3.Print1();Student.Print2();/是否可以建立类数组?2 、关键

17、代码解释有关关键代码的解释后面的实验都直接写在代码 的备注里了。3 、实验结果屬 苣理员:Visual Studio 2005命令提示在本信息记录中,性别男为4女为N请输入一位同学的倍息: 学号:14287Q名绩输号28名绩 姓红成88请学14姓蓝成99谙输入一位同学的信息:学号;142872姓名:黄成绩:60同学们的信息为:学号142870,姓名红,成绩備学号:142871,姓名蓝,成绩99学号:1屹站初 姓名黄,成绩列输入的学生总人数为:3同学们的总成绩为:247可学们的平均成绩为:82 3333333333333:US2005安装UC4、实验总结:学会了在readline里面使用类型转换

18、。认为也许可 以使用类的数组来定义这三个学生,但没有实现。实验二继承与多态编程一、实验目的及要求【实验目的】1. 理解继承的含义,掌握派生类的定义方法和实现;2. 理解虚函数在类的继承层次中的作用,虚函数的引 入对程序运行时的影响,能够对使用虚函数的简单程 序写出程序结果。3. 编写体现类的继承性(成员变量,成员方法,成员 变量隐藏)的程序;4. 编写体现类多态性(成员方法重载,构造方法重载) 的程序。【实验要求】1. 写出程序,并调试程序,要给出测试数据和实验结 果。2. 整理上机步骤,总结经验和体会。3. 完成实验日志和上交程序。二、实验环境Windows 7操作系统,Visual Stu

19、dio 2005及以上版本三、实验内容(题目、源代码、关键代码解释、运行结果、实验总结)【实验1-2-1】创建一个描述图书信息的类并测试。类中应保存有 图书的书号、标题、作者、出版社、价格等信息。1)定义图书类 Book, Book类中包含isbn(书号)、title(标题)、author(作者)、press (出版社)、price(价格)等私有字段。由于对一本书来说,书号是唯一 的,因此,isbn字段应声明为只读的。2)为Book类中的每个字段定义相应的属性,由于 isbn字段只读的,其相应属性也应该是只读的。3)为Book类定义两个构造函数,其中,一个构造函数将所有字段都初始化为用户指定的

20、值,另一个构造 函数只要求用户指定有关书号的信息,它将调用上一个 构造函数初始化对象,初始化时,价格取0,除书号的其他信息取“未知”。4)为Book类定义方法Show Show方法用于显示图 书的所有信息。5)编写Main方法测试Book类,Main方法中分别 使用上述两个构造函数创建 Book对象。1、源代码using System;public classBook定义私有字段private readonly string isbn;private string title;private string author;private string press;private double p

21、rice;/定义属性public string Isbngetreturn isbn;public string Titlegetreturn title;setTitle = value;public string Authorgetreturn author;setAuthor = value;public string Pressgetreturn press;setPress = value;public double Pricegetreturn price;setPrice = value;定义构造函数public Book(string isbn, string title, s

22、tring author, string press,double price)this.isbn = isbn;this.title = title;this.author = author;this.press = press;this.price = price;/继承第一个构造函数public Book(string isbn):this(isbn,未知,未知,未知,0)public void Show()Console.WriteLine(这本书的信息如下:”);Console.WriteLine(书号:0 , isbn);Console.WriteLine(标题:0 , title

23、);Console.WriteLine(作者:0 , author);Console.WriteLine(出版社:0 , press);Console.WriteLine(价格:0 , price);classBookTestpublic static void Main()Console.WriteLine(请按 行依次输入第一个书本信息,依次为书号,标题,作者,出版社,价格”);Book book1 = newBook(Convert.ToString(ConsoleReadLine(), Convert.ToString(Console.ReadLine(), Convert.ToStr

24、ing(ConsoleReadLine(), C onvert.ToString(ConsoleReadLine(), Convert.ToDouble(Console.ReadLine();book1.Show();Console.WriteLine(请输入第二个书本的书号 ”);Book book2 = new Book(Convert.ToString(Console.ReadLine();book2.Show();2、实验结果Z03言隹员:Visual Studio 2005命令援示L書肚槿八* W乂e:US2005S UCsyl-2-1*请按 |半:TJ3、实验总结:学会了用构造函数

25、继承构造函数,另外经过查阅还明 白了 this指针可以代替对象来调用对象的字段。还实践 了可以在构造函数调用时调用输入函数。【实验1-2-2】编写一个程序计算出球、圆柱和圆锥的表面积和体 积。1)定义一个基类圆,至少含有一个数据成员:半径;2)定义基类的派生类:球、圆柱、圆锥,都含有求 体积函数,可以都在构造函数中实现,也可以将求体积 和输出写在一个函数中,或者写在两个函数中,请比较 使用。3)定义主函数,求球、圆柱、圆锥的和体积。3、设计一个图书卡片类Card,用来保存图书馆卡片 分类记录。1)这个类的成员包括书名、作者、馆藏数量。2)至少提供两个方法,store书的入库处理,show 显示

26、图书信息。3)程序运行时,可以从控制台上输入需要入库图书 的总量,根据这个总数创建 Card对象数组,然后输入数 据。4)可以选择按书名、作者、入库量进行排序。1、源代码using System;public classCircle/定义基类圆protected double R;public constdouble Pl=3.14; /定义继承类球,继承圆public classBall:Circle定义表面积、体积字段protected double Vol;protected double Area;/构造函数public Ball(double r)R=r;/求表面积和体积的方法。采用

27、先求表面积和体积再输出public double GetArea()Area=4*PI*R*R;return Area;public double GetVol()Vol=(4.0/3.0)*PI*R*R*R;return Vol;public void Print()Console.WriteLine(球的表面积为:0 ,Area);Console.WriteLine(球的体积为:0 ,Vol);定义继承类圆柱,继承圆,比较两种输出体积的方法(圆锥采用不继承圆,直接继承圆柱的做法)public classCyl:Circle定义表面积、体积字段protected double Vol;pro

28、tected double Area;protected double h;/构造函数public Cyl() public Cyl(double r,double h)R=r;this.h=h;/采用直接输岀体积和表面积public virtual void GetArea()Area=h*2*PI*R+2*PI*R*R;ConsoleWriteLine(圆柱的表面积为:0 ,Area);public virtual void GetVol()Vol=h*PI*R*R;Console.WriteLine(圆柱的体积为:0 ,Vol);public classCone:Cyl 字段已经定义,构

29、造函数不继承public Cone(double r,double h) R=r;this.h=h;/重写基类中的表面积、体积函数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);classText public stati

30、c void Main()Console.WriteLine(请输入球的半径:);double 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.ReadL

31、ine(); cyl.GetArea();cyl.GetVol();/相比较两种输岀方法,直接输岀法更简单。Console.WriteLine(”请按行依次输入圆锥的半径、高 );Cone cone = new Cone(Convert.ToDouble(Console.ReadLine(), Convert.ToDouble(ConsoleReadLine(); cone.GetArea();cone.GetVol();2、实验结果e: US26G5 安装UCsy1 -2-2球的表面积为:50.24球的体积为:33 斗933333333333 请按行依次输入圆柱的半径、高33圆柱的表面积为:

32、113.04 圆柱的体积为84.78 请按行依次输入圆锥的半径、高斗圆锥的表面积为;121.290(3893 了 32斗 圆锥的体积为:66.9866666G666673、实验总结在计算圆锥表面积时学会了System .M ath .Sqrt()的使方法没有采用0个参数的重载:说明参数不能为空,Convert.ToDouble (Console.ReadLine()括号里和括号外的内容写反了另外很粗心在 WriteLine里里面忘记加0,编译没出 错但抛出了异常,又找了半天才修改好。【实验1-2-3】设计一个图书卡片类Card ,用来保存图书馆卡片分 类记录。1 )这个类的成员包括书名、作者、

33、馆藏数量。2)至少提供两个方法,store书的入库处理,show 显示图书信息。3)程序运行时,可以从控制台上输入需要入库图书 的总量,根据这个总数创建Card对象数组,然后输入数 据。4 )可以选择按书名、作者、入库量进行排序。1、源程序using System;public classLibrarypublic static int Num=0;public static void Show()ConsoleWriteLine(图书馆共入库了 0本书,Num);public classCardprivate string name; public string Name getreturn

34、 name;private string author;public string Authorgetreturn author;private int num=0;public int Numgetreturn num;public void Store()ConsoleWriteLine(输入要入库的书信息,包括书名、作者、入库量”); =Convert .ToString(Console.ReadLine();this.author = Convert.ToString(Console.ReadLine();this.num=Convert.Tolnt32( Conso

35、leReadLine();Library.Num+=num;public void Show()Console.WriteLine(图书信息如下:);Console.WriteLine(书名:0,作者:1,馆藏数量2 ,name,author,num);public classTextpublic static void Main()int i;Card temp;Card card = new Card3;for (i = 0; i 3; i+)cardi = new Card(); /学会了定义对象的数组,应该先创建数组,再依次对里面的所有成员进行创建。cardi.Store();Libr

36、ary.Show();ConsoleWriteLine(请选择按什么排序:、书名2、作者3、存库量);int a = Convert .Tolnt32( ConsoleReadLine();switch (a)case1: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;case2:Console.WriteLine(按作者从小到大排序

37、);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;case3: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 &y1 -2-4请输入程序员提成102程序员的总工资是21

38、%请输入主管高层提成299主管高层总工资是5299秘书总工资是盹盹清洁工总工资是1酣e:US20O5 装UC3、实验总结使用virtual时下面实现多态要再次使用 override才能 重写,这里做实验时出了一些问题。另外在其他类中调 用了基类的属性,想到属性也可以重写,以后有空再拓 展一下。实验三接口编程【实验目的】1. 了解什么是接口,接口和抽象类的异同,掌握接口的 方法实现,接口方法的重定义。【实验要求】1. 写出程序,并调试程序,要给出测试数据和实验结果。2. 整理上机步骤,总结经验和体会。3. 完成实验日志和上交程序。【实验内容】分析实现接口的程序文件分析以下实现接口的程序文件并回答

39、问题:本程序中的接口包含方法的构成是哪些?CompareTo(Comparable comp)实现接口的类包含哪些元素?private ui nt totalSec on ds;public TimeSpa n()public TimeSpan(uint initialSeconds)public uint Secondspublic int CompareTo(IComparable comp)类实现接口方法的参数如何变换实现的?public int CompareTo(IComparable comp)TimeSpan compareTime = (TimeSpan)comp;if (to

40、talSeconds compareTime .Seconds) return 1;else if (compareTime .Seconds = totalSeconds) return 0;elsereturn -1;给出程序的输出结果Ie: US2G05安装UCsy3I spent more tim。 than the world record holder实验四委托编程【实验目的】1. 了解委托的概念,掌握委托的使用;【实验要求】1. 理解委托应用的程序;2. 写出委托应用程序;3. 调试程序,要给出测试数据和实验结果。4. 整理上机步骤,总结经验和体会。5. 完成实验日志和上交程序。

41、【实验内容】委托及其方法的实现程序程序功能:定义一个含有两个整型参数名叫 Calculation 返回类型为double的委托,分别实现两个匹配的求和、 求平均值的方法,并在主函数中测试它。1、源代码usingSystem;public delegatedoubleCalculation(double m, doublen);定义一个委托类型并在主函分别实现两个匹配的求和、求平均值的方法, 数中测试它。classTest public double plus(double m, double n) double val = m + n;return val;public double aver

42、(double m, doublen) double a = (m + n) / 2);return a;classTester public static void Main() Test t = new Test();Calculation call = new Calculation .plus);ConsoleWriteLine(两数之和为:+ cal1(5.0, 6.0);Calculation cal2 = new Calculation .aver);ConsoleWriteLine(两数的平均值为:+ cal2(5.0, 6.0);ConsoleReadKey(true);2、实验结果 : US2GG5安装UOsy4两数之和为匚11两数的平均值为 5.5实验五异常处理编程【实验目的】1、理解什么是异常及异常可能产生的原因;2、掌握异常抛出和捕获语句;3、理解专有catch块的使用;【实验要求】1. 调试程序,要给出测试数据和实验结果。2. 整理上机步骤,总结经验和体会。3. 完成实验日志和上交程序。【实验内容】异常处理设计类,实现异常处理。1) 建立一个名字为 Meteorologist 的类,其中含有 一个12个int类型元素的数组rainfall ,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论