版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. C#.net 实验报告:王璐学号:142871日期:2016/04/24实验名称 :面向对象编程成绩:a.实验一类和对象编程一、实验目的及要求【实验目的】1.如何创建类和对象。2.如何为定义的类编写相应的方法。3.如何通过属性访问对象中的数据【实验要求】1.写出程序,并调试程序,要给出测试数据和实验结果。2.整理上机步骤,总结经验和体会。3.完成实验日志和上交程序。二、实验环境Windows 7 操作系统, Visual Studio 2005及以上版本三、实验内容(题目、源代码、关键代码解释、运行结果、实验总结)【实验 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( 现在时为 :0,hour);public void MPrint()Console .WriteLine( 现在分为 :0,minite);public void SPrint()Console .WriteLine( 现在秒为 :0,second);public void TimePrint()Console .WriteLine( 得出准确时间为 :0时 1分 2秒,hour,minite,second);a./ 主函数public class Textpublic static void Main()Time time= new Time();Co
5、nsole .WriteLine( 获取系统时间中 .);time.Hour= DateTime .Now.Hour;time.Minite= DateTime .Now.Minute; / 刚刚发现前面的minute 全写成 minute 了.英语不太 .time.Second= DateTime .Now.Second;time.TimePrint();Console .WriteLine( 现在加一秒功能:);time.SAdd();time.TimePrint();Console .WriteLine( 现在加一分功能:);time.MAdd();time.TimePrint();Co
6、nsole .WriteLine( 现在加一时功能:);time.HAdd();time.TimePrint();Console .WriteLine( 现在依次调用三个方法输出时分秒:);time.HPrint();time.MPrint();time.SPrint();2、关键代码解释:1)时钟循环需要取模运算,如第25 时为 25%24=1,即 1 时;另外还要注意秒的增加带给分、时的影响等。2)加时功能直接使用time+ ,并注意判断对其他时间的影响3)获取时间采用了DataTime 里的函数,直接获取系统时间。3、运行结果a.4、实验总结结合实践明白了属性的用法与含义,并且通过百度了
7、解了怎么从系统中读取现在的时间。【实验 1-1-2 】编写一个控制台应用程序,程序中有两个类定义,一个是创建程序时系统自动创建的类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 】编写一个控制台应用程序,程序中有两个类定义,一个是创建程序时系统自动创建的类Clas
12、s1,一个是用户自定义的Student 类,要求该类包含私有实例字段:学号 (字符串 )、(字符串) 、成绩( double )以 及 私 有 静 态 字 段 :学 生 人 数 、学 生 总 成 绩 、学 生 平 均 成绩,具有有参构造方法、显示学生个人信息的公有实例方法和显示学生人数、总成绩及平均成绩的公有静态方法。在Class1 类的 Main 方法中完成以下功能:1)从键盘上依次输入三个学生的个人信息(学号、成绩)。2)统计全部学生的人数、总成绩和平均成绩。3)打印学生们的个人信息及全部学生的人数、总成绩和平均成绩。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、入的学生总人数为:0,count);Console .WriteLine( 同学们的总成绩为:0,addscore);Console .WriteLine( 同学们的平均成绩为:0,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();/ 是否可以建立类数组?2、关键代码解释有关关键代码的解释后面的实验都直接写在代码的/ 备注里了。3、实验结果a.4、实验总结:学会了在readline 里面使用类型转换。认为也许可以使用类的数组来定义这三个学生,但没有实现。实验二继承与多态编程一、实验目的及要求【实验目的】1.理解
17、继承的含义,掌握派生类的定义方法和实现;2.理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单a.程序写出程序结果。3.编写体现类的继承性(成员变量,成员方法,成员变量隐藏)的程序;4.编写体现类多态性(成员方法重载,构造方法重载)的程序。【实验要求】1.写出程序,并调试程序,要给出测试数据和实验结果。2.整理上机步骤,总结经验和体会。3.完成实验日志和上交程序。二、实验环境Windows 7 操作系统, Visual Studio 2005及以上版本三、实验内容(题目、源代码、关键代码解释、运行结果、实验总结)【实验 1-2-1 】创建一个描述图书信息的
18、类并测试。类中应保存有图书的书号、标题、作者、价格等信息。1)定义图书类Book , Book 类中包含isbn(书号 )、 title (标题)、 author( 作者 )、 press()、 price (价格)等私有字段。由于对一本书来说,书号是唯一的,因此,isbn 字段应声明为只读的。2)为 Book 类中的每个字段定义相应的属性,由于isbn 字段只读的,其相应属性也应该是只读的。3)为 Book 类定义两个构造函数,其中,一个构造函数将所有字段都初始化为用户指定的值,另一个构造函数只要求用户指定有关书号的信息,它将调用上一个构造函数初始化对象,初始化时,价格取0,除书号的其他信息
19、取“未知”。4)为 Book 类定义方法 Show, Show 方法用于显示图书的所有信息。5)编写 Main 方法测试 Book 类, Main 方法中分别使用上述两个构造函数创建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./ 定义构造函数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;/ 继承第一个构造函数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、实验总结:学会了用构造函数继承构造函数,另外经过查阅还明白了this 指针可以代替对象来调用对象的字段。还实践了可以在构造函数调用时调用输入函数。【实验 1-2-2 】编
24、写一个程序计算出球、圆柱和圆锥的表面积和体积。1)定义一个基类圆,至少含有一个数据成员:半径;2)定义基类的派生类:球、圆柱、圆锥,都含有求体积函数,可以都在构造函数中实现,也可以将求体积和输出写在一个函数中,或者写在两个函数中,请比较使用。3)定义主函数,求球、圆柱、圆锥的和体积。3、设计一个图书卡片类Card,用来保存图书馆卡片分类记录。1)这个类的成员包括书名、作者、馆藏数量。2)至少提供两个方法,store 书的入库处理,show 显示图书信息。a.3)程序运行时,可以从控制台上输入需要入库图书的总量,根据这个总数创建 Card 对象数组,然后输入数据。4)可以选择按书名、作者、入库量
25、进行排序。1、源代码using System;public class Circle/ 定义基类圆protecteddouble R;public const double PI=3.14;/ 定义继承类球 ,继承圆public class Ball:Circle/ 定义表面积、体积字段protecteddouble Vol;protecteddouble Area;/ 构造函数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;/ 构造函数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/ 字段已经定义,构造函数不继承public Cone( double r,double h)R=r;this .h=h;/
28、 重写基类中的表面积、体积函数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个参数的重载:说明参数不能为空,错误出在把Convert.ToDouble (Console.ReadLine()
31、括号里和括号外的内容写反了a.另外很粗心在WriteLine 里里面忘记加0,编译没出错但抛出了异常,又找了半天才修改好。【实验 1-2-3 】设计一个图书卡片类Card ,用来保存图书馆卡片分类记录。1)这个类的成员包括书名、作者、馆藏数量。2)至少提供两个方法,store 书的入库处理,show 显示图书信息。3)程序运行时,可以从控制台上输入需要入库图书的总量,根据这个总数创建Card 对象数组,然后输入数据。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,馆藏数量 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();/ 学会了定义对象的数组,应该先创建数组,再依次对里面的所有成员进行创建。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+)./ 学会了比较函数的使用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、实验总结学会了定义对象的数组,应该先创建数组,再依次对里面的所有成员进行创建。
37、经过查阅学会了比较函数的使用。类的多态性练习【实验 1-2-4 】设计雇员系统。1)定义雇员基类,共同的属性,、地址和出生日期;2)派生类:程序员,秘书,高层管理,清洁工,他们有不同的工资算法,其中高级主管和程序员采用底薪加提成的方式,高级主管和程序员的底薪分别是5000 元和 2000 元 ,秘书和清洁工采用工资的方式,工资分别是3000 和 1000 ,以多态的方式处理程序。1、源代码using System;public class Employeeprivate string name; / 定义雇员基类的姓名、地址、出生日期、底薪、提成以及其属性。/ 属性为可读可写,实验结果中为了简
38、练没有调用姓名地址出生日期等,不过调用了底薪、提成及其属性以体现多态。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() / 工资算法不同,所以定义虚函数工资计算方法 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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵阳职业技术学院《试验设计与数据处理》2023-2024学年第一学期期末试卷
- 2025上海市安全员-C证考试(专职安全员)题库附答案
- 2025江苏省安全员《B证》考试题库及答案
- 2025海南省建筑安全员C证考试(专职安全员)题库附答案
- 广州中医药大学《形体训练(Ⅱ)》2023-2024学年第一学期期末试卷
- 广州应用科技学院《环境艺术专题设计》2023-2024学年第一学期期末试卷
- 广州现代信息工程职业技术学院《运动解剖学》2023-2024学年第一学期期末试卷
- 广州铁路职业技术学院《针织物设计与试织》2023-2024学年第一学期期末试卷
- 2025四川建筑安全员B证(项目经理)考试题库
- 2025年福建建筑安全员《A证》考试题库及答案
- 2024年时事政治试题【有答案】
- 2024年信息系统项目管理师(综合知识、案例分析、论文)合卷软件资格考试(高级)试题与参考答案
- 2024年认证行业法律法规及认证基础知识
- MT 285-1992缝管锚杆
- GB 18613-2020 电动机能效限定值及能效等级
- 水稻幼穗分化八个时期的划分表
- 卡特彼勒生产体系手册(PDF62页)
- 消防工程物业移交书
- 支部委员候选人表
- 美国标准公司章程范本
- CRAC无线电技术观摩交流大会业余无线电应急通信演练基本规则
评论
0/150
提交评论