共32页,第1页《C#.net》实验报告姓名:王璐学号:142871日期:2016/04/24实验名称:面向对象编程成绩:共32页,第2页实验一类和对象编程一、实验目的及要求【实验目的】1.如何创建类和对象。2.如何为定义的类编写相应的方法。3.如何通过属性访问对象中的数据【实验要求】1.写出程序,并调试程序,要给出测试数据和实验结果。2.整理上机步骤,总结经验和体会。3.完成实验日志和上交程序。二、实验环境Windows7操作系统,VisualStudio2005及以上版本三、实验内容(题目、源代码、关键代码解释、运行结果、实验总结)【实验1-1-1】编写一个控制台应用程序,定义并使用一个时间类,该类包含时、分、秒字段与属性,具有将时间增加1秒、1分和1小时的方法,具有分别显示时、分、秒和同时显示时分秒的方法。1、源代码:usingSystem;publicclassTime{//字段privateinthour;privateintminite;privateintsecond;//属性publicintHour{get{returnhour;}set{hour=value;}}共32页,第3页publicintMinite{get{returnminite;}set{minite=value;}}publicintSecond{get{returnsecond;}set{second=value;}}//方法//加时方法publicvoidSAdd(){second++;if(second60){minite++;second=second%60;}if(minite60){hour++;minite=minite%60;}if(hour24){hour=hour%24;}}publicvoidMAdd()共32页,第4页{minite++;if(minite60){hour++;minite=minite%60;}if(hour24){hour=hour%24;}}publicvoidHAdd(){hour++;if(hour24){hour=hour%24;}}//输出方法publicvoidHPrint(){Console.WriteLine(现在时为:{0},hour);}publicvoidMPrint(){Console.WriteLine(现在分为:{0},minite);}publicvoidSPrint(){Console.WriteLine(现在秒为:{0},second);}publicvoidTimePrint(){Console.WriteLine(得出准确时间为:{0}时{1}分{2}秒,hour,minite,second);}}//主函数publicclassText{publicstaticvoidMain(){共32页,第5页Timetime=newTime();Console.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();Console.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、运行结果4、实验总结结合实践明白了属性的用法与含义,并且通过百度了解了怎么从系统中读取现在的时间。共32页,第6页【实验1-1-2】编写一个控制台应用程序,程序中有两个类定义,一个是创建程序时系统自动创建的类Class1,一个是用户自定义的Student类,要求该类包含私有字段:学号(字符串)、姓名(字符串)和性别(字符),具有三个属性:学号(读写)、姓名(只读)、性别(读写),具有有参构造方法、具有同时显示学生个人信息的方法。在Class1·中完成以下功能:1)从键盘上输入一个学生的个人信息(学号、姓名、性别)。2)修改该学生的学号和性别。3)打印修改前后该学生的个人信息。1、源代码usingSystem;publicclassStudent{//字段privatestringnum;privatestringname;privatecharsex;privatestringoldnum;privatecharoldsex;//属性publicstringNum{get{returnnum;}set{num=value;}}publicstringName{get{returnname;}set{name=value;共32页,第7页}}publiccharSex{get{returnsex;}set{sex=value;}}//方法publicStudent(stringc,stringn,chars){num=c;name=n;sex=s;}publicvoidPrintIn(){Console.WriteLine(学号);num=Console.ReadLine();Console.WriteLine(姓名);name=Console.ReadLine();Console.WriteLine(性别);sex=Convert.ToChar(Console.ReadLine());}publicvoidRevise(){Console.WriteLine(请对输入的学号重新进行编辑:);oldnum=num;num=Console.ReadLine();Console.WriteLine(请对输入的性别重新进行编辑:);oldsex=sex;sex=Convert.ToChar(Console.ReadLine());}publicvoidPrintOut(){Console.WriteLine(修改前的信息为:学号:{0},姓名:{1},性别:{2},oldnum,name,oldsex);Console.WriteLine(修改后的信息为:学号:{0},姓名:{1},性别:{2},num,name,sex);}共32页,第8页}publicclassclass1{publicstaticvoidMain(){Console.WriteLine(在本信息中男为Q女为N);Studentstudent1=newStudent(123,王兰,'N');student1.PrintIn();student1.Revise();student1.PrintOut();}}2、关键代码解释1)为了能同时输出修改前修改后的名称,引入了字段oldnum,oldsex,将修改前的传给这两个值,并将新值覆盖原字段num和sex。3、实验结果:4、实验分析:虽然设置了属性,但没用实际用到,感觉可能没有编好。。。另外为了满足第3个实验条件,同时输出,所以引入了新字段,不知道是否符合要求。共32页,第9页【实验1-1-3】编写一个控制台应用程序,程序中有两个类定义,一个是创建程序时系统自动创建的类Class1,一个是用户自定义的Student类,要求该类包含私有实例字段:学号(字符串)、姓名(字符串)、成绩(double)以及私有静态字段:学生人数、学生总成绩、学生平均成绩,具有有参构造方法、显示学生个人信息的公有实例方法和显示学生人数、总成绩及平均成绩的公有静态方法。在Class1类的Main方法中完成以下功能:1)从键盘上依次输入三个学生的个人信息(学号、姓名、成绩)。2)统计全部学生的人数、总成绩和平均成绩。3)打印学生们的个人信息及全部学生的人数、总成绩和平均成绩。1、源代码usingSystem;publicclassStudent{//字段privatestringnum;privatestringname;privatedoublescore;publicstaticintcount;publicstaticdoubleaddscore;publicstaticdoubleaverage;//方法publicStudent(){count++;}publicvoidPrintIn(){Console.WriteLine(请输入一位同学的信息:);Console.WriteLine(学号:);num=Console.ReadLine();Console.WriteLine(姓名:);name=Console.ReadLine();Console.WriteLine(成绩:);score=Convert.ToDouble(Console.ReadLine());addscore+=score;}publicstaticvoidAverage(){average=addscore/count;}共32页,第10页publicvoidPrint1(){Console.WriteLine(学号:{0},姓名{1},成绩{2},num,name,score);}publicstaticvoidPrint2(){Console.WriteLine(输入的学生总人数为:{0},count);Console.WriteLine(同学们的总成绩为:{0},addscore);Console.WriteLine(同学们的平均成绩为:{0},average);}}publicclassclass1{publicstaticvoidMain(){Console.WriteLine(在本信息记录中,性别男为Q,女为N);Studentstudent1=newStudent();student1.PrintIn();Studentstudent2=newStudent();student2.PrintIn();Studentstudent3=newStudent();student3.PrintIn();Student.Average();Console.WriteLine(同学们的信息为:);student1.Print1();student2.Print1();student3.Print1();Student.Print2();//是否可以建立类数组?}}2、关键代码解释有关关键代码的解释后面的实验都直接写在代码的//备注里了。3、实验结果共32页,第11页4、实验总结:学会了在readline里面使用类型转换。认为也许可以使用类的数组来定义这三个学生,但没有实现。共32页,第12页实验二继承与多态编程一、实验目的及要求【实验目的】1.理解继承的含义,掌握派生类的定义方法和实现;2.理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。3.编写体现类的继承性(成员变量,成员方法,成员变量隐藏)的程序;4.编写体现类多态性(成员方法重载,构造方法重载)的程序。【实验要求】1.写出程序,并调试程序,要给出测试数据和实验结果。2.整理上机步骤,总结经验和体会。3.完成实验日志和上交程序。二、实验环境Windows7操作系统,VisualStudio2005及以上版本三、实验内容(题目、源代码、关键代码解释、运